Skip to content

Releases: bitdotgames/BHL

v2.0.0-beta153

27 Sep 10:50
Compare
Choose a tag to compare

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

20 Sep 13:59
Compare
Choose a tag to compare

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

30 Aug 08:33
Compare
Choose a tag to compare

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

08 Aug 09:30
Compare
Choose a tag to compare

Improvements

  • Complete overhaul of namespace linkage resulting in better isolation of modules and better compile-time error reporting

v2.0.0-beta135

01 Aug 08:57
Compare
Choose a tag to compare

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

27 Jun 07:39
Compare
Choose a tag to compare

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

26 Apr 15:05
Compare
Choose a tag to compare

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

07 Mar 14:14
Compare
Choose a tag to compare

Bugfixes

  • Making code thread safe
  • Fixing 'double import' bug

v2.0.0-beta106

28 Feb 18:55
Compare
Choose a tag to compare

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

29 Dec 11:12
Compare
Choose a tag to compare

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