osqp 0.4.0 → 0.4.2

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: eaa20f2fcffb79fc2ddea0547c9e2019aa63b710df8ba097809e096437f0eee4
4
- data.tar.gz: 2311853dfdbf7794e584cb6a305a4359906e9f41ae856a7882eb2a5394ee3611
3
+ metadata.gz: 466fcea42dc4aa67e6dff59d023e3960fe3d8bc75b6da18db639f0a526d8b378
4
+ data.tar.gz: cb8ba195ab795846d9a9663488a7a89e969172b76f93a9364394467b80d2035a
5
5
  SHA512:
6
- metadata.gz: 54bb5418bbbe93dcf7809441e1c0ab35c6e2f27891c54e3f2aae245fb4285d8805ed3909f0b8a6ad37ada5f174b70218a6e26a67116ec652a8fa2cfe8f6556ee
7
- data.tar.gz: 3c9691bb46452def08f7aeac289040d5bad84e9fea78c2968659e9abe4d7e7126bda82b894af5bd79e44dac18f3c8924d53f2766246d093d69f2b23689549886
6
+ metadata.gz: 2f1e6ee9cb503ff53022f27e5ca511e3b590866ec197fd421549b24a38f6f6ccf70ff6724650b427a663ec5ebe5f33d785257e786d919191cf82d4f96d12f1e3
7
+ data.tar.gz: fe1f3af18ab7c4d2685c473483288224627f1093859dcbb4fd300adef899aeece032ec983889e1975d96d1af015a522027d4c23970333f3d9a6bedde0b37e354
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ## 0.4.2 (2026-02-27)
2
+
3
+ - Fixed memory leak with exceptions
4
+
5
+ ## 0.4.1 (2025-04-26)
6
+
7
+ - Fixed memory leaks
8
+ - Fixed error messages for OSQP 1.0.0
9
+
1
10
  ## 0.4.0 (2025-04-01)
2
11
 
3
12
  - Updated OSQP to 1.0.0
data/lib/osqp/solver.rb CHANGED
@@ -17,8 +17,14 @@ module OSQP
17
17
  u = float_array(u)
18
18
 
19
19
  # work
20
- work = Fiddle::Pointer.malloc(Fiddle::SIZEOF_VOIDP)
21
- check_result FFI.osqp_setup(work.ref, matrix_ptr(p), q, matrix_ptr(a), l, u, a.m, a.n, set)
20
+ work_ptr = Fiddle::Pointer["\x00" * Fiddle::SIZEOF_VOIDP]
21
+ begin
22
+ check_result FFI.osqp_setup(work_ptr, matrix_ptr(p), q, matrix_ptr(a), l, u, a.m, a.n, set)
23
+ rescue => e
24
+ FFI.osqp_cleanup(work_ptr.ptr) unless work_ptr.ptr.null?
25
+ raise e
26
+ end
27
+ work = work_ptr.ptr
22
28
  work.free = FFI["osqp_cleanup"]
23
29
  @work = FFI::Solver.new(work)
24
30
  end
@@ -80,15 +86,23 @@ module OSQP
80
86
  when 2
81
87
  "Settings validation error"
82
88
  when 3
83
- "Linear system solver loading error"
84
- when 4
85
89
  "Linear system solver initialization error"
86
- when 5
90
+ when 4
87
91
  "Non-convex problem"
88
- when 6
92
+ when 5
89
93
  "Memory allocation error"
90
- when 7
94
+ when 6
91
95
  "Workspace not initialized"
96
+ when 7
97
+ "Error loading algebra library"
98
+ when 8
99
+ "Error opening file for writing"
100
+ when 9
101
+ "Error validating given code generation defines"
102
+ when 10
103
+ "Solver data not initialized"
104
+ when 11
105
+ "Function not implemented in current algebra"
92
106
  else
93
107
  "Error code #{ret}"
94
108
  end
@@ -154,14 +168,14 @@ module OSQP
154
168
 
155
169
  def dimensions
156
170
  # OSQP int = long long
157
- m = Fiddle::Pointer.malloc(Fiddle::SIZEOF_LONG_LONG)
158
- n = Fiddle::Pointer.malloc(Fiddle::SIZEOF_LONG_LONG)
171
+ m = Fiddle::Pointer.malloc(Fiddle::SIZEOF_LONG_LONG, Fiddle::RUBY_FREE)
172
+ n = Fiddle::Pointer.malloc(Fiddle::SIZEOF_LONG_LONG, Fiddle::RUBY_FREE)
159
173
  FFI.osqp_get_dimensions(@work, m, n)
160
174
  [read_int(m), read_int(n)]
161
175
  end
162
176
 
163
177
  def create_settings(settings)
164
- set = FFI::Settings.malloc
178
+ set = FFI::Settings.malloc(Fiddle::RUBY_FREE)
165
179
  FFI.osqp_set_default_settings(set)
166
180
 
167
181
  # hack for setting members with []=
data/lib/osqp/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module OSQP
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.2"
3
3
  end
data/lib/osqp.rb CHANGED
@@ -2,9 +2,9 @@
2
2
  require "fiddle/import"
3
3
 
4
4
  # modules
5
- require "osqp/matrix"
6
- require "osqp/solver"
7
- require "osqp/version"
5
+ require_relative "osqp/matrix"
6
+ require_relative "osqp/solver"
7
+ require_relative "osqp/version"
8
8
 
9
9
  module OSQP
10
10
  class Error < StandardError; end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: osqp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-04-01 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: fiddle
@@ -80,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
80
  - !ruby/object:Gem::Version
81
81
  version: '0'
82
82
  requirements: []
83
- rubygems_version: 3.6.2
83
+ rubygems_version: 4.0.3
84
84
  specification_version: 4
85
85
  summary: OSQP (Operator Splitting Quadratic Program) solver for Ruby
86
86
  test_files: []