Rustable v0.4.0 Release Notes
✨ A TypeScript Revolution: Rust-Like Safety, Performance, and Expressiveness
🚀 New Features
Core Type System & Utilities
-
New
@rustable/type
Package:
✨ Dedicated type factories and derivation system
✨ Proxy-based factory implementation with enhanced caching -
Enhanced Collections:
✨IdxVec
: Indexed array type with optimized operations
✨ HashMap/HashSet:- New
Entry
API withand_modify()
/or_insert()
patterns - Set operations:
intersection()
,union()
,difference()
✨ Vec: - JSON serialization via
toJSON()
/toString()
- Renamed methods for Rust consistency:
vec.sortByKey() → vec.sortBy() vec.unstableSort() → vec.sortUnstable()
- New
-
Async & Error Handling:
✨Result.fromAsync()
for promise-to-Result conversion
✨Result.fromFn()
for safe function execution
✨NotImplementedError
replacing legacy error constants
Revamped Trait System (@rustable/trait)
-
New
Trait
Base Class :class Display extends Trait { display(): string { return "default"; } } // Implementation Display.implFor(Point, { display() { return `(${this.x}, ${this.y})` } }); // Usage const point = new Point(1, 2); const display = Display.wrap(point); // Zero-overhead wrapper console.log(display.display()); // "(1, 2)"
-
Key Methods:
✨isImplFor()
– Type-safe trait checking
✨staticWrap()
– Static method trait support
✨tryImplFor()
– Idempotent trait registration
✨ Dedicated errors (TraitMethodNotImplementedError
) -
Performance:
🚀 40% faster trait resolution via direct inheritance
🚀 Zero proxy overhead for implemented traits
Iterator Ecosystem (@rustable/iter)
-
Advanced Modules:
✨num_iter
:sum
,product
✨partition_iter
: In-place collection partitioning
✨ Merged operations:filter_map
,flat_map
,skip
-
Consistency Renames:
iter.maxByKey() → iter.maxBy() iter.sortByKey() → iter.sortBy()
💥 Breaking Changes
API Changes
-
Trait System:
❗ Removed global functions:hasTrait
/implTrait
/useTrait
❗ LegacyTraitWrapper
replaced byTrait
inheritance// Before (v0.3.x) @trait class Display { ... } implTrait(Point, Display); // After (v0.4.0) class Display extends Trait { ... } Display.implFor(Point, ...);
-
Collections:
❗Vec
index operations moved toIdxVec
❗Enum.equals()
renamed toEnum.eq()
-
Packages:
❗ Type system utils moved to@rustable/type
(update imports!)
❗ Iterators split intocore
andadvanced
modules:import "@rustable/iter/advanced";
⚡ Performance Highlights
-
Trait System:
🚀 2.1x faster checks via inheritance-based resolution
🚀 60% memory reduction in trait registration -
Collections:
🚀Vec.sortUnstable()
now 35% faster for large datasets
🚀Val
primitive wrappers have zero runtime overhead -
Tree-Shaking:
🚀 All packages marked"sideEffects": false
📚 Documentation & DevEx
-
Enhanced READMEs:
📘 Emoji-driven feature sections
📘 Cross-package consistency in examples
📘 Advanced iterator usage guides -
Error Handling:
📝 ClearOUT_OF_BOUNDS
errors for collections
📝 Stack traces withLocation
context
🛠️ Migration Guide
-
Update Dependencies:
npm install @rustable/[email protected] @rustable/[email protected] ...
-
Trait System Migration:
- @trait - class Display { ... } + class Display extends Trait { ... } - implTrait(Point, Display, impl); + Display.implFor(Point, impl);
-
Collection Updates:
- vec.unstableSort(...); + vec.sortUnstable(...); - import { Type,TypeId, createFactory } from "@rustable/utils"; + import { Type,TypeId, createFactory } from "@rustable/type";
Rustable: Bringing Rust's reliability to TypeScript with zero compromises. 🦀