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
--$SAFE
removed in Ruby 3 - Internal modules
CRuby
andRubyGatewayHelpers
are now imported as@_implementationOnly
- Support Ruby 3 - check README notes on
-fdeclspec
, see CI for an example - Support building cleanly with Xcode 13
- Add
kwArgs
parameter 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
Hashable
conformance 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
name
arg 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
RbComplex
wrapper for Ruby Complex. - Add
RbRational
wrapper for Ruby Rational. - Add
RbGateway.defineGlobalVar
- dynamically implement Ruby global variables in Swift.
- Add
RbGateway.taintChecks
. - Full SemVer rules from now on.
- Change
kwArgs
to useDictionaryLiteral
per dynamic callable.
- Add conditional Set
RbObjectConvertible
conformance. - Add conditional ArraySlice
RbObjectConvertible
conformance.
- Require Swift 4.1 (conditional conformances).
- Replace
RbObject
'sCustomPlaygroundQuickLookable
conformance withCustomPlaygroundDisplayConvertible
.
- Add conditional Array
RbObjectConvertible
conformance. - Add conditional Dictionary
RbObjectConvertible
conformance. - Add
RbThread
utilities and rules for multithreading. - Add conditional Range family
RbObjectConvertible
conformance. - Add
RbObjectCollection
to use Swift collection protocols with Ruby. - Allow Swift
nil
literal 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.