omq 0.28.1 → 0.28.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: ec6bb2de8ced07ba0d20f272256c2d163bb2e192f01c292b6d8431c792c4a289
4
- data.tar.gz: 662ee0364dd2e6ac7ba28822cfc08d5746bcd3cdf862c41ed48a33472b254bce
3
+ metadata.gz: 4fdf548893d2ef3a060964a37aba4c6e7b28ef375376a98d1d609e8495801bf9
4
+ data.tar.gz: 3e0f418d932b6d1575dfeeae27b90faf70cddd1dcceeb47b82e9792164044e5c
5
5
  SHA512:
6
- metadata.gz: 82b84f4c8e9e4b54d7ec7a4f9d9beca5dc0666a9491220e84c47a8956f6c275ea2172d9dfb509e0f7dcfd16d6a9429dd902703ffbacfc7c28a5b03939818059a
7
- data.tar.gz: 26628cfdddb28d49bfbc47e4d7bb8cb9878f0e283f64c8669dd622db713f3fdbceac4776e184fd87cd6c691d92ebc729ead807bcf5e6a3a8e9338a31496e05d9
6
+ metadata.gz: 9310c7e4c955c5157a161032f93faadf9acc4a7beb0c20caf47470881de1a439354a728278016e79e16c9bd83eb2c1d99ebd5be6c9fef5f465a5b909c331328e
7
+ data.tar.gz: 48053e2af3a4a5925ff8adaacac87345dbf32dbceaa418035a945fa047752dd30d6dd0422a5947583b245aba754c04ae89e6e9415ee308cfbd4dbfa6b4c8e536
data/CHANGELOG.md CHANGED
@@ -2,6 +2,15 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## 0.28.2 - 2026-07-28
6
+
7
+ ### Fixed
8
+
9
+ - Made `OMQ.freeze_for_ractors!` freeze all global registries with
10
+ `Ractor.make_shareable`.
11
+ - Kept backend registration usable after a Ractor freeze via copy-on-write
12
+ registry updates.
13
+
5
14
  ## 0.28.1 - 2026-07-23
6
15
 
7
16
  ### Changed
data/lib/omq/backend.rb CHANGED
@@ -6,7 +6,13 @@ module OMQ
6
6
 
7
7
  class << self
8
8
  def register(name, engine_class)
9
- @engines[name.to_sym] = engine_class
9
+ key = name.to_sym
10
+
11
+ if @engines.frozen?
12
+ @engines = ::Ractor.make_shareable(@engines.merge(key => engine_class))
13
+ else
14
+ @engines[key] = engine_class
15
+ end
10
16
  end
11
17
 
12
18
 
@@ -18,6 +24,13 @@ module OMQ
18
24
  def registered?(name)
19
25
  @engines.key?(name.to_sym)
20
26
  end
27
+
28
+
29
+ def freeze_for_ractors!
30
+ return @engines if @engines.frozen?
31
+
32
+ @engines = ::Ractor.make_shareable(@engines)
33
+ end
21
34
  end
22
35
  end
23
36
  end
data/lib/omq/constants.rb CHANGED
@@ -60,9 +60,10 @@ module OMQ
60
60
  # Call this once before spawning any Ractors that create OMQ sockets.
61
61
  #
62
62
  def self.freeze_for_ractors!
63
- CONNECTION_LOST.freeze
64
- CONNECTION_FAILED.freeze
65
- Engine.transports.freeze
66
- Routing.registry.freeze
63
+ ::Ractor.make_shareable(CONNECTION_LOST)
64
+ ::Ractor.make_shareable(CONNECTION_FAILED)
65
+ Backend.freeze_for_ractors!
66
+ ::Ractor.make_shareable(Engine.transports)
67
+ ::Ractor.make_shareable(Routing.registry)
67
68
  end
68
69
  end
data/lib/omq/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OMQ
4
- VERSION = "0.28.1"
4
+ VERSION = "0.28.2"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omq
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.28.1
4
+ version: 0.28.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrik Wenger