Ruby SDK v1.0.0
New Features and Improvements
-
New SDK Creation Method
IntroducedConvertSdk.createfactory for easier client, DataManager, and Client instances creation. This simplifies the instantiation process and improves code readability. -
New Enum Types Added
Added several enums:FeatureStatus,LogLevel,SystemEvents, andGoalDataKey, providing a structured way to handle these common option sets. -
Enhanced Error Handling
IntroducedRuleErrorandBucketingErrorsingleton enums for clearer error handling during rule processing. -
Improved Hashing
Integrated a pure-Ruby implementation of MurmurHash3 x86 32-bit. This vendorized solution enhances performance and stability for hashing needs. -
Advanced Comparison Logic
Implemented 13 comparison operators ported from JavaScript, allowing for more robust rule evaluations. -
Logical Rule Processing
Ported OR/AND/OR_WHEN rule processing logic from JavaScript, enhancing the flexibility of rule evaluations. -
Type Signatures for Rule Handling
Added RBS signatures and refactored comparisons and rule management using Steep. This ensures type safety and reduces potential bugs. -
New Sentinel Value Object
IntroducedConvertSdk::Sentinel, a frozen singleton value object that standardizes uninitialized contexts. -
Enhanced Type Checking
Built a backend-spec drift gate using generated RBS and Steep probes to ensure consistency and prevent type-related errors. -
Immutable Bucket Structures
Added frozenBucketedVariationandBucketedFeaturestructs, improving data handling integrity by preventing modifications. -
Type Checking for Supported Ruby Versions
Enabled RBS and Steep type checking only for Ruby versions >= 3.2, aligning with compatibility standards.
Bug Fixes
-
Authentication Correction
Fixed thestaging/demoSDK-key authentication to adhere to a two-key model, ensuring consistent and secure authentication. -
SDK Review Improvements
Addressed issues highlighted in the Gemini review: improved fork-safety, ensuredto_numbermethod parity, and enhanced log aggregation for reliable performance.