Releases: bitdotgames/BHL
Releases · bitdotgames/BHL
v2.0.0-beta153
Warning: this release breaks BC with previous beta releases
Improvements
- Completely migrating to dotnet from mono
- Moving dev.only tasks from bhl build tool to a Makefile
- Unifying output of internal exceptions as errors
Bugfixes
- Fixing 'missing map key variable' bug
v2.0.0-beta145
Improvements
- Unifying addressing and lookup of 'native' and 'userland' functions
- Getting rid of Opcodes.ExitFrame opcode, replacing it with a special ip address VM.EXIT_FRAME_IP
- Opcode.Return now is emitted always to mark the end of Frame
- Adding Opcodes.Nop opcode which does nothing
v2.0.0-beta141
Improvements
- Optimizing the amount of persisted data for linked namespaces
Bug fixes
- Fixing potentially broken setup of class symbols in cached modules which depend on parsed modules through indirect dependency
v2.0.0-beta136
Improvements
- Complete overhaul of namespace linkage resulting in better isolation of modules and better compile-time error reporting
v2.0.0-beta135
New Features
- Making json-like initialization more flexible, adding support for collections (arrays and maps):
var arr = new []int [1, 2, 3]
var kv = new [string]int [["a", 1], ["b", 10], ["c", 100]]
Improvements
- Bumping ANTLR runtime to 4.13.11
- Speeding up parsing phase up to 10x by using ANTLR BailErrorStrategy by default and switching to standard strategy in case of errors only
- Adding 'object GetNativeObject(Val v)' to INativeType interface and using it for more robust Type.Is(..) checks
Bugfixes
- Fixing escaping of double quotes within strings
- Making foreach(..) array type check more generic
- Fixing bug related to static methods calls
- Fixing lookup of symbols from class static methods
v2.0.0-beta125
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
v2.0.0-beta118
Bugfixes
- Fiber now exits all its scopes immediately once it's stopped or released
- Double import of modules is now forbidden in userland code
- Improving file modification test in bhl.bat
- Fixing namespaces declaration edge case bugs
- Fixing stack trace retrieval triggered from functions invoked in defer blocks
- Disallowing empty paral {} blocks
- More robust check for improper usage of class types as values
Improvements
- Adding initial dotnet's .csproj and Unity's .asmdef support thanks @wrenge
v2.0.0-beta108
Bugfixes
- Making code thread safe
- Fixing 'double import' bug
v2.0.0-beta106
New Features
- Adding StackList < T > struct which can be used to pass small lists around without any allocations. Adding a VM.Start(..) variation which uses StackList < Val > to pass arguments to a Fiber
- Adding convenience VM.TryLoadModuleSymbol(..)
Bugfixes
- Fixing UTF8 symbols not being properly handled during the preprocessing phase
- Fixing potential infinite loop during bad imports pre-parsing phase
- Fixing priority of logical AND over OR operations in cases like:
bool a = true
bool b = true
bool c = true
bool d = false
bool e = a && b || c && d
// ^^^^^^^^^^^^^^^^^^^^^
// e is true, not false, expression is evaluated as follows:
// (a && b) || (c && d),
// not ((a && b) || c) && d) as before
- Adding implicit casting to int of the division product of two int operands:
int a = 11
int b = 2
int c = a / b // <--- c == 5, not 5.5 as before
v2.0.0-beta97
New Features
- Adding basic support for preprocessing and conditional compilation. For example:
#if SERVER
ProjectileShoot()
#else
ProjectileShow()
#endif
#if !CLIENT
ProjectileShoot()
#endif
Defines are declared in a project manifest bhl.proj as follows:
{
...
"defines" : ["CLIENT"]
...
}
Bugfixes
- Fixing rare bug related to object instance casting