Skip to content

MiniScript 2.0 Preview 9

Pre-release
Pre-release

Choose a tag to compare

@JoeStrout JoeStrout released this 16 Sep 20:57

Preview build 9 of MiniScript 2.0. Changes since preview 8:

Language & semantics

  • new now requires a map; __isa cycles are rejected.
  • Fixed inconsistencies in how @ affects indexing.
  • Fixed off-by-one error in range under certain conditions (issue #14).
  • Fixed NaN == NaN comparison.
  • Fixed parsing of method calls where the first argument starts with parentheses, e.g. m.f (arg1), arg2.
  • Map inserts now store a frozen copy of a list or map key.
  • String indexing is now by Unicode code point in both C# and C++, with surrogate pairs handled identically.
  • info on a function reference now reports the source code location where it was defined.

Performance

  • String indexing is now O(1) instead of O(N) in the common case.
  • GC policy collects more aggressively after heavy allocation, plus new facilities for collecting at appropriate
    times automatically.
  • Removed unused opcodes (this is more of a clean-up task than performance.)

Fixes

  • Fixed iteration over locals in the C++ version.
  • Fixed string interning in C++, and C++ string processing where a char(0) is involved.
  • Fixed two register scoping issues.
  • Fixed invoking an intrinsic function through a funcRef, and an intrinsic-clearing issue.
  • Fixed failure to mark the intrinsics map as a GC root.
  • Class short names are now cleared before the invalidation callback.

Build & embedding

  • Fixed several build issues that appear on less common platforms.
  • C++ function pointer typedefs changed to std::function (thanks @Mo-Tx, PR #12).
  • Revised the C++ host update guide with better GC discipline guidance.