- Expose
Pool#sizeandLocalPool#sizeand addshutdownaliases for connection pool compatibility.
- Prevent
Map#computefrom deadlocking when multiple Ruby threads contend for the same key.
- Document the
LocalPoolfactory contract. - Clarify ownership-transfer versus resource-locality semantics.
- Add guidance for designing Ractor-shareable factory objects.
- Add examples of correct and incorrect factory implementations.
- Improve
LocalPoolAPI documentation and YARD comments.
- Add PostgreSQL smoke tests alongside Redis smoke tests.
- Consolidate smoke-test documentation.
- Add captured Redis and PostgreSQL validation snapshots.
- Document expected outcomes and interpretation of smoke-test runs.
Redis and PostgreSQL smoke tests now demonstrate:
- successful Thread and Ractor execution
- no
Ractor::MovedError - no
Ractor::IsolationError - successful queue draining
- preservation of live resource ownership
- safe reuse of Redis clients and PostgreSQL connections
These tests validate that LocalPool is a general-purpose
resource-locality primitive for stateful network clients rather
than a Redis-specific abstraction.
- Introduced
Ratomic::LocalPool, a new pooling primitive for live resources that should remain local to the Ractor that created them. - Added Redis-based smoke tests demonstrating safe operation across both Threads and Ractors.
- Added queue producer/consumer Redis examples.
- Added RBS definitions for
LocalPool. - Expanded API documentation and usage examples.
Ratomic::Pool and Ratomic::LocalPool serve different ownership models:
Pool— ownership transferLocalPool— ownership preservation
LocalPool is intended for resources such as:
- Redis clients
- Database connections
- HTTP clients
- Kafka producers
- Other stateful network resources
LocalPool is implemented in pure Ruby and is not backed by Ratomic's Rust extension.
- Fix the native loader so development loads the compiled extension from the workspace layout while installed gems still resolve the versioned packaged native path.
- Add loader coverage for the native-enabled path and keep the release smoke test validating the packaged native gem shape before publish.
- Move the compiled native extension into the versioned
lib/ratomic/4.0/layout used by the installed gem. - Load the versioned native artifact explicitly and mark native support as unavailable when the extension is missing.
- Add loader coverage for both the versioned native path and the native-disabled branch.
- Fix
require "ratomic"for installed gems by resolving the packaged native extension layout directly. - Add a release smoke test that installs the built gem artifact into a clean gem home before publishing.
- Fix
require "ratomic"for installed gems by resolving the versioned native extension layout. - Add a regression test for the packaged gem loader path.
- Keep the curated RBS signatures packaged with the gem.
- Realign
Counter,Map, andQueuereturn semantics with Ruby conventions. - Expand YARD comments across the public API to keep full documentation coverage.
- Move the top-level module docs to the gem entrypoint for a cleaner load path.
- Promote the DashMap-backed
Ratomic::MapAPI as the primary concurrent Hash primitive. - Add
Ratomic::Map#key?,#include?,#member?, and#delete. - Add
Ratomic::Map#fetch,#compute,#fetch_or_store, and#upsertfor atomic per-key workflows. - Add
Ratomic::Map#increment,#decrement,#append, and#add_to_setconvenience methods for shared counters and bucket-style values. - Improve API documentation for
Counter,Map,Queue, andPool. - Add GitHub Pages deployment for generated YARD API documentation.
- Add Redis POC scripts for exercising
Ratomic::Map,Ratomic::Counter, andRatomic::Poolunder Thread and Ractor workloads. - Remove
Counter#incandCounter#decin favor of the native#incrementand#decrementmethods.
- Fix
Ratomic::Queueslot indexing for non-power-of-two capacities. - Fix
Ratomic::Map#fetch_and_modifyto propagate block exceptions instead of panicking.
- Drop Ruby 3.x support and require Ruby 4.
- Add
length,size,peek, andempty?methods toRatomic::Queue. - Change
Ratomic::Poolto use Ruby 4Ractor::Portownership transfer semantics, fixing the unsafe stale-reference behavior reported in [#5] (#5). - Organize Ruby wrapper code by primitive.
- Add primitive contract tests for
Counter,Map,Queue, andPool. - Add SimpleCov coverage reporting.
- Undefine native typed-data default allocators to remove Ruby 4 warnings.
- Initial release