v2.0.0-beta125
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 >.