Skip to content

v0.4.0

Latest
Compare
Choose a tag to compare
@illuxiza illuxiza released this 30 Jan 06:50
· 12 commits to main since this release

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 with and_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()  
  • 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
    ❗ Legacy TraitWrapper replaced by Trait 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 to IdxVec
    Enum.equals() renamed to Enum.eq()

  • Packages:
    ❗ Type system utils moved to @rustable/type (update imports!)
    ❗ Iterators split into core and advanced 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:
    📝 Clear OUT_OF_BOUNDS errors for collections
    📝 Stack traces with Location context


🛠️ Migration Guide

  1. Update Dependencies:

    npm install @rustable/[email protected] @rustable/[email protected] ...
  2. Trait System Migration:

    - @trait
    - class Display { ... }
    + class Display extends Trait { ... }
    
    - implTrait(Point, Display, impl);
    + Display.implFor(Point, impl);
  3. 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. 🦀