Skip to content

v2.0.0-beta125

Compare
Choose a tag to compare
@pachanga pachanga released this 27 Jun 07:39
· 307 commits to master since this release

Warning: this release breaks BC with previous beta releases

New Features

  • More generic implementation of arrays and maps which allows to implement much more optimal wrappers around C# lists/dictionaries. Basic array type []T now can be used as an interface for generic array access to native wrappers.
  • Making more modular registration of native modules.
  • Greatly improved types persistence per module. Gradually getting closer to implementation of basic generics.

Improvements

  • Improving bad cast runtime checks for cases like (Foo)bar. Incompatible cast now triggers an exception like in C#.
  • Runtime VM.Null value now has actual null type of instead of Types.Null for more explicit runtime errors
  • Allowing null value to be force cast to any instantiatable type.
  • More optimal 'func call' related opcodes implementation with less runtime overhead. Encoding func ip instead of func idx into call opcodes where possible.
  • More optimal 'get func ptr' related opcodes implementation.
  • Cleaning symbols setup logic after module loading.
  • Func symbols are now additionally indexed per module so it's possible to lookup the function by its module index.
  • Making compiler output less verbose by default. This behavior can be additionally controlled with BHL_VERBOSE=0|1|2 environment variable.
  • Improving incremental builds by trying to compile modules which didn't have any parse errors. This way consequent compiler invokes after compile errors will use already cached compiled modules.

BC breaks

  • Getting rid of too generic Proxy< T > in favor of concrete ProxyType.
  • Renaming Types.ClassType -> Types.Type.
  • Getting rid of ISymbolsIteratable in favour of IEnumerable< Symbol >.

Bugfixes