From 17144d0b16730db7aa82f8cff92339e510f54e86 Mon Sep 17 00:00:00 2001 From: Daniel Azuma Date: Mon, 5 Jan 2026 18:26:32 +0000 Subject: [PATCH 1/2] release: Release ractor-wrapper 0.3.0 (was 0.2.0) --- CHANGELOG.md | 6 ++++++ lib/ractor/wrapper/version.rb | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f86468..6f5ddc8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Release History +### v0.3.0 / 2026-01-05 + +* ADDED: Updated for Ruby 4.0 +* ADDED: Support wrappers running in the current ractor +* ADDED: Support for running sequentially without worker threads + ### v0.2.0 / 2021-03-08 * BREAKING CHANGE: The wrapper now copies (instead of moves) arguments and return values by default. diff --git a/lib/ractor/wrapper/version.rb b/lib/ractor/wrapper/version.rb index 1da0b1d..2a1228d 100644 --- a/lib/ractor/wrapper/version.rb +++ b/lib/ractor/wrapper/version.rb @@ -7,6 +7,6 @@ class Wrapper # # @return [String] # - VERSION = "0.2.0" + VERSION = "0.3.0" end end From dcd9175b5a7ec2c39b720be7b5c6f169e11144be Mon Sep 17 00:00:00 2001 From: Daniel Azuma Date: Mon, 5 Jan 2026 10:44:46 -0800 Subject: [PATCH 2/2] Update CHANGELOG for v0.3.0 release --- CHANGELOG.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f5ddc8..5cb712a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,9 +2,17 @@ ### v0.3.0 / 2026-01-05 -* ADDED: Updated for Ruby 4.0 -* ADDED: Support wrappers running in the current ractor -* ADDED: Support for running sequentially without worker threads +This is a major update, and the library, while still experimental, is finally somewhat usable. The examples in the README now actually work! + +Earlier versions were severely hampered by limitations of the Ractor implementation in Ruby 3. Many of these were fixed in Ruby 4.0, and Ractor::Wrapper has been updated to take advantage of it. This new version requires Ruby 4.0.0 or later, and includes a number of enhancements: + +* Support for running a wrapper in the current Ractor, useful for wrapping objects that cannot be moved, or that must run in the main Ractor. (By default, wrapped objects are still moved into an isolated Ractor to maximize cleanliness and concurrency.) +* Support for running a wrapper sequentially without worker threads. This is now the default behavior, which does not spawn any extra threads in the wrapper. (Earlier behavior would spawn exactly one worker thread by default.) +* Limited support for passing blocks to a wrapped object. You can cause a block to run "in place" within the wrapper, as long as the block can be made shareable (i.e. does not access any outside data), or have the block run in the caller's context with the cost of some additional communication. You can also configure that communication to move or copy data. +* Provided Ractor::Wrapper#join for waiting for a wrapper to complete without asking for the wrapped object back. +* Some of the configuration parameters have been renamed. + +Some caveats remain, so please consult the README for details. This library should still be considered experimental, and not suitable for production use. I reserve the right to make breaking changes at any time. ### v0.2.0 / 2021-03-08