Rhai v1.25.0 Release Notes

Release Date: 2026-05-24 // 14 days ago
  • 🐛 Bug fixes

    • Engine::compact_script now properly compacts scripts with custom syntax that uses $raw$ (thanks @yuvalrakavy #1079).
    • The string methods split, split_rev and their variants are now marked pure so they can be called on const strings (thanks @theJC #1082).
    • The array method index_of now falls back to value comparison for string argument when no script function of that name is registered (thanks @yinho999 #1086).
    • The walk API now correctly visits the arguments to MethodCall and switch statements (thanks @isSerge #1092 #1093)

    🆕 New features

    • A new advanced callback, Engine::on_missing_function, is added (gated under the internals feature) to override default handling when a called function or method is not found (thanks @yuvalrakavy #1067).
    • ⏪ A new method, EvalContext::new_frame, is added to created an isolated frame guard that automatically restores field values upon Drop (thanks @yuvalrakavy for the idea #1085).
    • 👍 \${...} is supported in multi-line literal strings to escape interpolation, yielding literally ${...} for the string (thanks @yinho999 #1089).

    ✨ Enhancements

    • Procedural macros such as #[export_module] and #[derive(CustomType)] no longer require importing standard Rhai types (thanks @timokoesters #1071).
    • FnPtr::call_fn_as_method and FnPtr::call_as_method_within_context are added (when not under no_object) to accept a this pointer for calling the function pointer as a method call (thanks @yunfengzh for the request #1080).
    • NativeCallContext::call_method and NativeCallContext::call_native_method are added (when not under no_object) to accept a this pointer for method calls (thanks @yunfengzh for the idea #1080).

Previous changes from v1.24.0

  • 💥 This new release has a breaking change because of the upgrade to the getrandom crate to version 0.3.

    👍 As a result, stdweb support has been dropped. It is anticipated that this change would not have significant impact on normal usage.

    💥 Breaking Changes

    • 🚚 stdweb support is removed. The feature flag stdweb is also removed. Use wasm-bindgen instead.
    • 🌐 web-time is used for WASM targets instead of instant, which is no longer maintained #1063.

    🐛 Bug fixes

    • 🛠 (Fuzzing) Fixed panic when using sort on an array with a comparer function that does not implement a total order #1058.

    ✨ Enhancements

    • ⚡️ The optimizer now optimizes constant object map property accesses (thanks @phsym #1050).
    • Optimization is added to turn if cond1 { if cond2 { ... } } into if cond1 && cond2 { ... }.
    • The method sort for arrays is also aliased to sort_by.
    • The methods sort_desc, order, order_by and order_desc are added to arrays.
    • 👻 An exception is now thrown when attempting to use sort on an array containing unsupported element types.

    🆕 New features

    • AST::new_from_module is added to create an AST from a shared Module.