Extract copy/restore of first argument in method call.
This commit is contained in:
10
RELEASES.md
10
RELEASES.md
@@ -22,13 +22,16 @@ Breaking changes
|
||||
This is to avoid excessive cloning of strings. All native-Rust functions taking string parameters
|
||||
should switch to `rhai::ImmutableString` (which is either `Rc<String>` or `Arc<String>` depending on
|
||||
whether the `sync` feature is used).
|
||||
* Native Rust functions registered with the `Engine` also mutates the first argument when called in
|
||||
normal function-call style (previously the first argument will be passed by _value_ if not called
|
||||
in method-call style). Of course, if the first argument is a calculated value (e.g. result of an
|
||||
expression), then mutating it has no effect, but at least it is not cloned.
|
||||
|
||||
New features
|
||||
------------
|
||||
|
||||
* Set limit on maximum level of nesting expressions and statements to avoid panics during parsing.
|
||||
* New `EvalPackage` to disable `eval`.
|
||||
* More benchmarks.
|
||||
|
||||
Speed enhancements
|
||||
------------------
|
||||
@@ -43,6 +46,11 @@ Speed enhancements
|
||||
(and therefore the `CorePackage`) because they are now always available, even under `Engine::new_raw`.
|
||||
* Operator-assignment statements (e.g. `+=`) are now handled directly and much faster.
|
||||
* Strings are now _immutable_ and use the `rhai::ImmutableString` type, eliminating large amounts of cloning.
|
||||
* For Native Rust functions taking a first `&mut` parameter, the first argument is passed by reference instead of
|
||||
by value, even if not called in method-call style. This allows many functions declared with `&mut` parameter to avoid
|
||||
excessive cloning. For example, if `a` is a large array, getting its length in this manner: `len(a)` used to result
|
||||
in a full clone of `a` before taking the length and throwing the copy away. Now, `a` is simply passed by reference,
|
||||
avoiding the cloning altogether.
|
||||
|
||||
|
||||
Version 0.14.1
|
||||
|
Reference in New Issue
Block a user