All Versions
60
Latest Version
Avg Release Cycle
54 days
Latest Release
-

Changelog History
Page 3

  • v1.0.5 Changes

    ๐Ÿ› Bug fixes

    • FloatWrapper is no longer erroneously exported under no_float+internals.
    • The sign function now works properly for float values that are NaN.
  • v1.0.4 Changes

    • ๐Ÿ›  Fixed bug with catch variable used in catch block.
  • v1.0.2 Changes

    ๐Ÿ› Bug fixes

    • ๐Ÿ›  Fixed bug in method call followed by an array indexing.
  • v1.0.1 Changes

    ๐Ÿ› Bug fixes

    • ๐Ÿ›  Fixed bug in using indexing/dotting inside index bracket.
    • while and loop statements are no longer considered pure (since a loop can go on forever and this is a side effect).
  • v1.0.0 Changes

    The official version 1.0.

    ๐Ÿšš Almost the same version as 0.20.3 but with deprecated API's removed.

    ๐Ÿ› Bug fixes

    • ๐Ÿ›  Fixed infinite loop in certain script optimizations.
    • ๐Ÿ— Building for no-std no longer requires patching smartstring.
    • ๐Ÿ“œ Parsing a lone return or throw without a semicolon at the end of a block no longer raises an error.

    ๐Ÿ’ฅ Breaking changes

    • ๐Ÿšš All deprecated API's (e.g. the RegisterFn and RegisterResultFn traits) are removed.
    • Module::set_id is split into Module::set_id and Module::clear_id pair.
    • begin, end, each, then, unless are no longer reserved keywords.

    โœจ Enhancements

    • New methods is_odd, is_even for integers, and is_zero for all numbers.
    • From<BTreeSet> and From<HashSet> are added for Dynamic, which create object maps with () values.
  • v0.20.3 Changes

    ๐Ÿ‘ This version adds support to index into an integer number, treating it as a bit-field.

    ๐Ÿ› Bug fixes

    • ๐Ÿ›  Fixed incorrect optimization regarding chain-indexing with non-numeric index.
    • Variable values are checked for over-sized violations after assignments and setters.

    ๐Ÿ’ฅ Breaking changes

    • 0๏ธโƒฃ To keep the API consistent, strings are no longer iterable by default. Use the chars method to iterate through the characters in a string.
    • Dynamic::take_string and Dynamic::take_immutable_string are renamed to Dynamic::as_string and Dynamic::as_immutable_string respectively.

    ๐Ÿ†• New features

    • ๐Ÿ†• New syntax for for statement to include counter variable.
    • An integer value can now be indexed to get/set a single bit.
    • The bits method of an integer can be used to iterate through its bits.
    • ๐Ÿ†• New $bool$, $int$, $float$ and $string$ expression types for custom syntax.
    • New methods to_hex, to_octal and to_binary for integer numbers.
    • New methods to_upper, to_lower, make_upper, make_lower for strings/characters.
  • v0.20.2 Changes

    This version adds a number of convenience features:

    • ๐Ÿท Ability for a Dynamic to hold an i32 tag of arbitrary data

    • Simplifies dynamic properties access by falling back to an indexer (passing the name of the property as a string) when a property is not found.

    ๐Ÿ› Bug fixes

    • Propagation of constants held in a custom scope now works properly instead of always replacing by ().

    ๐Ÿ’ฅ Breaking changes

    • Engine::disable_doc_comments is removed because doc-comments are now placed under the metadata feature flag.
    • ๐Ÿšš Registering a custom syntax now only requires specifying whether the Scope is adjusted (i.e. whether variables are added or removed). There is no need to specify the number of variables added/removed.
    • ๐Ÿ”Œ Assigning to a property of a constant is now allowed and no longer raise an EvalAltResult::ErrorAssignmentToConstant error. This is to facilitate the Singleton pattern. Registered setter functions are automatically guarded against setters calling on constants and will continue to raise errors unless the pure attribute is present (for plugins).
    • If a property getter/setter is not found, an indexer with string index, if any, is tried.
    • The indexers API (Engine::register_indexer_XXX and Module::set_indexer_XXX) are now also exposed under no_index.

    ๐Ÿ†• New features

    • ๐Ÿท Each Dynamic value can now contain arbitrary data (type i32) in the form of a tag. This is to use up otherwise wasted space in the Dynamic type.
    • A new internal feature no_smartstring to turn off SmartString for those rare cases that it is needed.
    • DynamicReadLock and DynamicWriteLoc are exposed under internals.
    • ๐Ÿ‘ From< Shared< Locked<Dynamic> > > is added for Dynamic mapping directly to a shared value, together with support for Dynamic::from.
    • An indexer with string index acts as a fallback to a property getter/setter.

    โœจ Enhancements

    • ๐Ÿšš Registering a custom syntax now only requires specifying whether the Scope is adjusted (i.e. whether variables are added or removed). This allows more flexibility for cases where the number of new variables declared depends on internal logic.
    • ๐Ÿ”Œ Putting a pure attribute on a plugin property/index setter now enables it to be used on constants.
  • v0.20.1 Changes

    This version enables functions to access constants declared at global level via the special global module.

    ๐Ÿ› Bug fixes

    • ๐Ÿ›  Fixed bug when position is zero in insert and split_at methods for arrays.
    • Indexing operations with pure index values are no longer considered pure due to the possibility of indexers.

    ๐Ÿ’ฅ Breaking changes

    • Dynamic::is_shared and Dynamic::is_locked are removed under the no_closure feature. They used to always return false.
    • Engine::call_fn now evaluates the AST before calling the function.
    • Engine::on_progress is disabled with unchecked.

    โœจ Enhancements

    • The crate no-std-compat is used to compile for no-std. This removes the need to use a special crate::stdlib namespace for std imports.

    ๐Ÿ†• New features

    • A module called global is automatically created to hold global-level constants, which can then be accessed from functions.
    • ๐ŸŽ A new feature no_position is added to turn off position tracking during parsing to squeeze out the last drop of performance.
  • v0.20.0 Changes

    This version adds string interpolation with `... ${ ... } ...` syntax.

    switch statement cases can now have conditions.

    Negative indices for arrays and strings are allowed and now count from the end (-1 = last item/character).

    ๐Ÿ› Bug fixes

    • Property setter op-assignments now work properly.
    • ๐Ÿ›  Off-by-one bug in Array::drain method with range is fixed.

    ๐Ÿ’ฅ Breaking changes

    • Negative index to an array or string yields the appropriate element/character counting from the end.
    • 0๏ธโƒฃ The default _ case of a switch statement now must be the last case, together with two new error variants: EvalAltResult::WrongSwitchDefaultCase and EvalAltResult::WrongSwitchCaseCondition.
    • ModuleResolver trait methods take an additional parameter source_path that contains the path of the current environment. This is to facilitate loading other script files always from the current directory.
    • FileModuleResolver now resolves relative paths under the source path if there is no base path set.
    • FileModuleResolver::base_path now returns Option<&str> which is None if there is no base path set.
    • ๐Ÿ“‡ Doc-comments now require the metadata feature.

    โœจ Enhancements

    • Array::drain and Array::retain methods with predicate now scan the array in forward order instead of in reverse.

    ๐Ÿ†• New features

    • ๐Ÿ‘ String interpolation support is added via the `... ${ ... } ...` syntax.
    • FileModuleResolver resolves relative paths under the parent path (i.e. the path holding the script that does the loading). This allows seamless cross-loading of scripts from a directory hierarchy instead of having all relative paths load from the current working directory.
    • Negative index to an array or string yields the appropriate element/character counting from the end.
    • switch statement cases can now have an optional if clause.
  • v0.19.16 Changes

    This version adds string interpolation with `... ${ ... } ...` syntax.

    Negative indices for arrays and strings are allowed and now count from the end (-1 = last item/character).

    ๐Ÿ› Bug fixes

    • Property setter op-assignments now work properly.
    • ๐Ÿ›  Off-by-one bug in Array::drain method with range is fixed.

    ๐Ÿ’ฅ Breaking changes

    • Negative index to an array or string yields the appropriate element/character counting from the end.
    • ModuleResolver trait methods take an additional parameter source_path that contains the path of the current environment. This is to facilitate loading other script files always from the current directory.
    • FileModuleResolver now resolves relative paths under the source path if there is no base path set.
    • FileModuleResolver::base_path now returns Option<&str> which is None if there is no base path set.
    • ๐Ÿ“‡ Doc-comments now require the metadata feature.

    โœจ Enhancements

    • Array::drain and Array::retain methods with predicate now scan the array in forward order instead of in reverse.

    ๐Ÿ†• New features

    • ๐Ÿ‘ String interpolation support is added via the `... ${ ... } ...` syntax.
    • FileModuleResolver resolves relative paths under the parent path (i.e. the path holding the script that does the loading). This allows seamless cross-loading of scripts from a directory hierarchy instead of having all relative paths load from the current working directory.
    • Negative index to an array or string yields the appropriate element/character counting from the end.