- More robust error handling (#55, #58)
- Stop calling
ruby_cleanupat exit on thread 0 (#56) - Add sample code showing how to bind ruby to a non-main thread
- Support Ruby 3.4
Swift 6 and concurrency support
- More concurrency-correct API changes
- Split "call-with-Swift-block" methods into two versions: one taking a non-escaping non-sendable closure for immediate evaluation, and the other taking a sendable, escaping closure for future use
- Updated documentation for Linux workarounds
First release leading up to Swift 6.
- Revamp for modern Swift including concurrency checking, many technically-changed APIs
- Update CRuby, introduce xcconfig
- Support Ruby 3.3
- Support Ruby 3.2
- Support Ruby 3.1
- Support building cleanly with Xcode13 GA.
Karim Alweheshy
- Removed
RbGateway.taintChecks--$SAFEremoved in Ruby 3 - Internal modules
CRubyandRubyGatewayHelpersare now imported as@_implementationOnly
- Support Ruby 3 - check README notes on
-fdeclspec, see CI for an example - Support building cleanly with Xcode 13
- Add
kwArgsparameter toRbMethod.yieldBlock(...)
- Require minimum Swift 5.4 / Xcode 12.5
- Require minimum Ruby 2.6
- Fix warnings and tests for Swift 5.2/Xcode 11.4.
- None
- Add
RbObjectAccess.setConstant(_:newValue:), somehow overlooked! - Add
RbGateway.setArguments(_:)to help with ARGV-setting.
- None
- Add
Hashableconformance toRbSymbol. - Tests pass on Ruby 2.6 / Xcode 11.2.
- Require minimum Swift 5 / Xcode 10.2 / Ruby 2.3.
- Standardize all APIs to not require a leading
namearg label. - Retire @dynamicMemberLookup support now the level of support from Swift is clearer. May revisit this in future.
- Implement class and singleton-class methods in Swift.
- Define classes and modules from Swift.
- Add module mix-in functions to
RbObject. - Bind Ruby objects and methods directly to Swift objects and methods.
- Add throwing conversion as alternative to optional initializer.
- Add
RbMethod.callSuper()to call superclass method.
- Implement global functions in Swift.
- Ruby nil coerced to Dictionary should give empty not Swift nil.
- Require Swift 4.2.
- Dynamic member lookup for property access or 0-arg methods.
- Global variables can use native Swift types.
- Add
RbComplexwrapper for Ruby Complex. - Add
RbRationalwrapper for Ruby Rational. - Add
RbGateway.defineGlobalVar- dynamically implement Ruby global variables in Swift.
- Add
RbGateway.taintChecks. - Full SemVer rules from now on.
- Change
kwArgsto useDictionaryLiteralper dynamic callable.
- Add conditional Set
RbObjectConvertibleconformance. - Add conditional ArraySlice
RbObjectConvertibleconformance.
- Require Swift 4.1 (conditional conformances).
- Replace
RbObject'sCustomPlaygroundQuickLookableconformance withCustomPlaygroundDisplayConvertible.
- Add conditional Array
RbObjectConvertibleconformance. - Add conditional Dictionary
RbObjectConvertibleconformance. - Add
RbThreadutilities and rules for multithreading. - Add conditional Range family
RbObjectConvertibleconformance. - Add
RbObjectCollectionto use Swift collection protocols with Ruby. - Allow Swift
nilliteral in argument positions to mean Rubynil.
CocoaPods.
Add RbProc RbBlockCallback RbBreak and new RbObjectAccess.call(...)
variants to let Swift code implement Ruby blocks.
Basic data types and object access.
Swift PM and Carthage.