Skip to content

Releases: travisdoor/bl

0.11.2

13 Aug 09:34
Compare
Choose a tag to compare

Documentation link

CHANGELOG

Add demo program.
Fix conversion of builtin array.len to Any on function call.
Fix defer statements used with inline ifs.
Fix local scope struct type composition.

0.11.1

10 Aug 23:46
Compare
Choose a tag to compare

Documentation link

CHANGELOG

Add compiler option to set output name.
Changed reports of unreachable code.
Dirty mode compiler flag renamed to "do-cleanup".
Fix hash table bugs.
Fix if branching.
Provide LLD linker only on Windows.
Update to LLVM 18.

0.11.0

04 Aug 19:30
Compare
Choose a tag to compare

Documentation link

CHANGELOG

Add 'then' keyword and inline if statements.
Add --dirty-mode compiler flag.
Add SIMD implementation for some hot code paths (Windows only).
Add automatic static array element count using [_]s32 syntax for compound initializers.
Add builder configuration api for build pipelines.
Add dlib VM runtime support.
Add fmod and trunc math functions.
Add new documentation web generator.
Add support for x86_64-unknown-linux-gnu target architecture triple.
Add ternary if expression.
Add untyped compound expressions.
Fix group initialization of multiple variables at once in global scope.
Fix invalid position of vargs generated before call causing stack problem in VM execution.
Fix member access directly on call result.
Fix reports of unused symbols declared after usage in local scopes.
Fix rpmalloc missing terminations for threads causing deadlocks sometimes.
Fix unary not operator precedence.
Fix unroll on global variables.
Improved documentation generator (added more value expressions).
RPMalloc used for the compiler.
Reduced amount of types generated internally by the compiler (use cache).
Reworked thread pool.
Rewrite string handling inside the compiler.

0.10.0

11 Jun 18:49
Compare
Choose a tag to compare

INFO
New experimental release version of blc compiler, documentation can be found here.

CHANGELOG
Add lazy IR generation to reduce LLVM generated stuff.
Add thread local global storage support.
Add compilation time report.
Add polymorphic function.
Add temporary allocator.
Add missing operators and change deref operator to @.
Add evaluation of compile time known conditional breaks.
Add static assert.
Add static if.
Add experimental #comptime directive for the functions evaluated in compile time.
Add typeof builtin.
Add enumcount helper function.
Add hash table.
Add buffer allocator.
Add using statement for scopes and enums.
Add implicit conversion from string to slice []u8.
Add naming of compound members for structs.
Add release-with-debug-info target.
Add realloc_slice.
Add type alignment into the type info.
Add #obsolete directive.
Add silent-run compiler argument.
Add call-stack getter for Windows and improve assert and panic reports.
Add function name into code location.
Add glwindow and draw modules + some example projects.
Add #maybe_unused for function arguments.
Add mixed function signature.
Add Static Array and Bucket Array
Add target triple API to the build system pipeline settings.
Add semaphores into synchronization API.
Add API to get ID of current thread.
Add #enable_if function directive.
Fix crash on unnamed function argument RTTI generation.
Fix crash when invalid type of default argument value is provided by user.
Fix invalid conversion of enum variants to Any.
Fix DI locations using Code View.
Fix generation of unused LLVM IR code paths.
Fix missing usage check for symbols in named scope.
Fix DWARF generation for local anonymous functions.
Fix DI Generation of global variables using CodeView.
Fix evaluation of multi-return and struct comptime functions.
Fix conversion of constants into slice.
Fix 0 size reported from sizeof for incomplete types.
Fix implicit conversion of alignof to Any.
Fix array type decomposition.
Fix bug related to unresolved types waiting for self.
Fix invalid binary operation volatile type borrowing for explicitly not matching types.
Fix argparse issues in doctor.
Fix emitting of string literals produced by compile time functions.
Fix invalid resolving of named-scope nested symbols via explicit operator.
Fix resume of postponed stack based call interpretations in compile-time.
Fix missing completeness check for value types converted to generic vargs (vargs of Any).
Documentation format changed to markdown.
Test cases are no longer reported as unused during compilation.
Update dyncall to version 1.2 (due to experimental support of M1 Macs).
Redesign allocator structure.
Change array API.
Change enum naming conventions to uppercase.
Redesign libc importing into modules.
Redesign of bl-config + using YAML as main config format.
Move file read/write into io module.
Tags are now simple unsigned numbers.
Change constant string representation from 'string' to 'string_view' aka []u8.
Change syntax of compound initializers.
Redesign memory allocators.
Simplify error handling API.
Redesign hash table implementation.
Simplified memory allocation API.
Rename slice_init and slice_terminate to alloc_slice and free_slice.
Improve compile time execution restore after postpone.
Function arguments are now immutable.
Improved error handling in synchronization API.
Improved error messages reporting unknown symbols.
Allow bunch of binary operations for enum flags types.
Update to LLVM 16.

0.9.0

11 Apr 22:04
Compare
Choose a tag to compare
0.9.0 Pre-release
Pre-release

Use LLD as default linker on Windows and Linux (experimental on macOS).
Update command line arguments to match unix common naming standarts.
Improve build system api and remove some obsolete functions.
Change build pipeline to call compile/compile_all explicitly.
Fix switch related parser bugs.
Fix unit mixing when using multithreaded build pipeline.
Add support of shared library output.
Add cmake build target Utils.
Add hash into CodeLocation.
Add namespace support.
Add unnamed symbols. (underscore used as name is not inserted into scope)
Add support of inline function group members.
Use faster custom system library and SDK lookup on Windows.
Compiler now reports unused private or local symbols.
Cleanup modules.

0.8.0

08 Jan 17:27
Compare
Choose a tag to compare
0.8.0 Pre-release
Pre-release

Migration to LLVM 11.
Add multiple return values and group declarations.
Add automatic documentation generator (-docs flag).
Add debug allocator.
Add new FileSystem module.
Add #import directive for modules
Add BL Doctor for better unit testing.
Add first prototype of modules and #import hash directive.
Add support of shebang and silent execution.
Add -silent and -rs options.
Add -verify-llvm option to enable LLVM IR verification.
Add modules: thread, sync, fs
Add forward of command line arguments into bl executed by interpreter (-r, -rs).
Add multithread compilation.
Support custom allocators in containers.
Compiler now returns numerical maximum error code if compilation fail.
Less descriptive terminal output during compilation.
Fix segfault on error get line.
Fix invalid character when comment block is very last in source file.
Fix garbage in unknown symbol reports.
Fix attempt to generate type info for incomplete types referenced by aliases.
Fix invalid multi-line string literals parsing.
Fix usage of function call to initialize loop iterator.
Fix invalid generation of more complex PHI expressions.

0.7.1

13 Sep 22:49
Compare
Choose a tag to compare
0.7.1 Pre-release
Pre-release

Fix nested self-references to incomplete types.
Fix crash on incomplete struct RTTI generation.
Fix crash error report at the end of file.
Fix invalid report for duplicate arguments.
Fix invalid duplicate switch value checking.
Fix invalid IS_DEBUG builtin value in debug mode.

0.7.0

26 Jul 18:02
Compare
Choose a tag to compare
0.7.0 Pre-release
Pre-release

DI generation reimplemented.
Memory allocations provided via allocator API.
Unit testing reimplemented to support native code testing.
Speed up compilation with use of llvm.memset intrinsic for default values.
Add default variable initialization.
Add noinit hash directive for variables.
Add builtin dynamic array.
Add slice_init and slice_terminate builtins.
Add -no-vcvars to disable VS environment injection.
Add implicit cast from dynamic array to slice.
Add support of Tracy profiler.
Add function call default argument values.
Add #call_location hash directive.
Add default argument type inferring.
Add explicit function overload.
Fix invalid type ID generation for incomplete structure types.
Fix naming of array types in type info.
Fix number serialization in print.
Fix invalid insertion of empty vargs.
Fix invalid casting of volatile-typed expressions.

0.6.0

05 May 20:53
Compare
Choose a tag to compare
0.6.0 Pre-release
Pre-release

Add implicit cast from array to slice. (Fixed compile time vs constant IR code emit).
Fix invalid conversion of the sizeof result to Any.
Fix local functions in nested scope.
Fix nested function implicitly capturing members of upper scope.
Fix segfault on global initializer nesting.
Fix LLVM cast assertions on string array to slice conversion.
Fix invalid sizeof operator result on array elem values and struct memers.
Fix lambda functions inside nested scope.
Add implicit conversion from pointers to bool.
Add union data type.
Add support of Windows terminal color output.
Add testing formaters for printing float values.
Add support of MSVC CoveView and PDB debug database generation via LLVM API.

0.5.2

03 Feb 08:59
Compare
Choose a tag to compare
0.5.2 Pre-release
Pre-release
  • Add support of user defined struct member tags.
  • Add BL Build System.
  • Improved builtin API.
  • Better Windows support.
  • Bugfixes: #85 #80 #69 #82 #29