nlopt 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c779a5c494c4f27159c477063ddf7574c40b9813936d25ca24a0e9b72a6c897c
4
- data.tar.gz: dc7dd6083dfc4696ad9795fcb3565d7a67ecd150ca14b56bc99afdc171908335
3
+ metadata.gz: d86d2057d5924c05984301bdd330d1ff775bef10d7f2e96200ef9b8173760b05
4
+ data.tar.gz: babcd047a506a8a232360391f3fcbfbc729e87f405491c067f06328dfb28853a
5
5
  SHA512:
6
- metadata.gz: f9dde169b1604d8a2c4a726aff6faecfde7d63180a936ec4f0d640d02bb6f36cee1833718f3486c926da8332b34e0a6cdcf34518b853c1cbcf7a386873ccb378
7
- data.tar.gz: 37b4f469c22ff6e21d4e1012ad1fcd7f6c09cc478cc215917d01a73c9aef04003dbce4c95f44f836dbf6b71c82e604acf43dddc8f9b8bb6ff510a871e6d3bd69
6
+ metadata.gz: b231f7df8f4f4eb546fd67c09b8bc2e502740ef4f97b309c0ba7cfd2a4b74835ebf27ca53b3b8bf9b6c3c80286145fd632a277af9e3f512f1f34b55f07cb9642
7
+ data.tar.gz: 1fbd0ae321752a3405c654a16e1fe09796a56dabfa0a076674bd1dfbbfc33d11b431a556dafb38ff6a9918d33912d2066c63cc80e46b24f7daf0b1184a2d6c2c
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 0.2.0 (2026-04-04)
2
+
3
+ - Dropped support for Ruby < 3.3
4
+
5
+ ## 0.1.3 (2025-05-04)
6
+
7
+ - Fixed memory leaks
8
+
1
9
  ## 0.1.2 (2024-12-16)
2
10
 
3
11
  - Added `add_inequality_constraint` and `add_equality_constraint` methods
data/LICENSE.txt CHANGED
@@ -1,5 +1,5 @@
1
1
  Copyright (c) 2007-2024 Massachusetts Institute of Technology
2
- Copyright (c) 2024 Andrew Kane
2
+ Copyright (c) 2024-2026 Andrew Kane
3
3
 
4
4
  Permission is hereby granted, free of charge, to any person obtaining
5
5
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -12,7 +12,7 @@ First, install NLopt. For Homebrew, use:
12
12
  brew install nlopt
13
13
  ```
14
14
 
15
- And for Ubuntu 22.04+, use:
15
+ And for Ubuntu, use:
16
16
 
17
17
  ```sh
18
18
  sudo apt-get install libnlopt0
data/lib/nlopt/opt.rb CHANGED
@@ -3,7 +3,7 @@ module NLopt
3
3
  attr_reader :last_optimum_value
4
4
 
5
5
  def initialize(algorithm, n)
6
- algorithm = FFI.nlopt_algorithm_from_string(algorithm)
6
+ algorithm = FFI.nlopt_algorithm_from_string(+algorithm)
7
7
  if algorithm < 0
8
8
  raise ArgumentError, "Invalid algorithm"
9
9
  end
@@ -170,15 +170,15 @@ module NLopt
170
170
  end
171
171
 
172
172
  def set_param(name, val)
173
- check_res FFI.nlopt_set_param(@opt, name, val)
173
+ check_res FFI.nlopt_set_param(@opt, +name, val)
174
174
  end
175
175
 
176
176
  def param(name, defaultval)
177
- FFI.nlopt_get_param(@opt, name, defaultval)
177
+ FFI.nlopt_get_param(@opt, +name, defaultval)
178
178
  end
179
179
 
180
180
  def has_param?(name)
181
- FFI.nlopt_has_param(@opt, name) == 1
181
+ FFI.nlopt_has_param(@opt, +name) == 1
182
182
  end
183
183
 
184
184
  def num_params
@@ -192,12 +192,12 @@ module NLopt
192
192
 
193
193
  def optimize(init)
194
194
  x = alloc_dptr(init)
195
- opt_f = Fiddle::Pointer.malloc(Fiddle::SIZEOF_DOUBLE)
195
+ opt_f = Fiddle::Pointer.malloc(Fiddle::SIZEOF_DOUBLE, Fiddle::RUBY_FREE)
196
196
  res = FFI.nlopt_optimize(@opt, x, opt_f)
197
197
 
198
198
  if res < 0 && res != -4
199
199
  errmsg = FFI.nlopt_get_errmsg(@opt)
200
- msg = !errmsg.null? ? errmsg.to_s : "Bad result: #{FFI.nlopt_result_to_string(res).to_s}"
200
+ msg = !errmsg.null? ? errmsg.to_s : "Bad result: #{FFI.nlopt_result_to_string(res)}"
201
201
  raise Error, msg
202
202
  end
203
203
 
@@ -252,7 +252,7 @@ module NLopt
252
252
 
253
253
  def check_res(res)
254
254
  if res != 1
255
- raise Error, "Bad result: #{FFI.nlopt_result_to_string(res).to_s}"
255
+ raise Error, "Bad result: #{FFI.nlopt_result_to_string(res)}"
256
256
  end
257
257
  end
258
258
 
@@ -266,11 +266,11 @@ module NLopt
266
266
 
267
267
  def read_dptr(ptr, size = nil)
268
268
  size ||= ptr.size
269
- ptr.to_s(size).unpack("d*")
269
+ ptr.to_str(size).unpack("d*")
270
270
  end
271
271
 
272
272
  def out_dptr
273
- ptr = Fiddle::Pointer.malloc(dimension * Fiddle::SIZEOF_DOUBLE)
273
+ ptr = Fiddle::Pointer.malloc(dimension * Fiddle::SIZEOF_DOUBLE, Fiddle::RUBY_FREE)
274
274
  res = yield ptr
275
275
  check_res res
276
276
  read_dptr(ptr)
data/lib/nlopt/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module NLopt
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/nlopt.rb CHANGED
@@ -33,9 +33,9 @@ module NLopt
33
33
  autoload :FFI, "nlopt/ffi"
34
34
 
35
35
  def self.lib_version
36
- major, minor, bugfix = 3.times.map { Fiddle::Pointer.malloc(Fiddle::SIZEOF_INT) }
36
+ major, minor, bugfix = 3.times.map { Fiddle::Pointer.malloc(Fiddle::SIZEOF_INT, Fiddle::RUBY_FREE) }
37
37
  FFI.nlopt_version(major, minor, bugfix)
38
- [major, minor, bugfix].map { |v| v.to_s(v.size).unpack1("i") }.join(".")
38
+ [major, minor, bugfix].map { |v| v.to_str(v.size).unpack1("i") }.join(".")
39
39
  end
40
40
 
41
41
  def self.srand(seed)
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nlopt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-12-16 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: fiddle
@@ -24,7 +23,6 @@ dependencies:
24
23
  - - ">="
25
24
  - !ruby/object:Gem::Version
26
25
  version: '0'
27
- description:
28
26
  email: andrew@ankane.org
29
27
  executables: []
30
28
  extensions: []
@@ -42,7 +40,6 @@ homepage: https://github.com/ankane/nlopt-ruby
42
40
  licenses:
43
41
  - MIT
44
42
  metadata: {}
45
- post_install_message:
46
43
  rdoc_options: []
47
44
  require_paths:
48
45
  - lib
@@ -50,15 +47,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
50
47
  requirements:
51
48
  - - ">="
52
49
  - !ruby/object:Gem::Version
53
- version: '3.1'
50
+ version: '3.3'
54
51
  required_rubygems_version: !ruby/object:Gem::Requirement
55
52
  requirements:
56
53
  - - ">="
57
54
  - !ruby/object:Gem::Version
58
55
  version: '0'
59
56
  requirements: []
60
- rubygems_version: 3.5.22
61
- signing_key:
57
+ rubygems_version: 4.0.6
62
58
  specification_version: 4
63
59
  summary: Nonlinear optimization for Ruby
64
60
  test_files: []