Releases
v0.9.0
New Features
package
system
Improved PDB support with code inspection
typeid
type (also a keyword)
type
is not a keyword any more
opaque
type
Parameteric polymorphic union type:
union(T: typeid, N: int) {int, T, [N]T}
bit_set
type:
bit_set[Some_Enum];
bit_set['A' .. 'Z'];
bit_set[0..8; u16];
cstring
type (useful for interfacing with C libraries)
in
binary operator for map
and bit_set
types:
Parametric polymorphic signature changes with polymorphic names:
new :: proc($T: typeid) -> ^T {}
make_int_array :: proc($N: int) -> [N]int {}
foo :: proc($N: $I, $T: typeid) {}
auto_cast
unary operator
Explicit inline
and no_inline
on procedure calls
deprecated
attributes
Built-in procedures:
#defined
#assert
compile time assert
expand_to_tuple
for (fixed length) arrays
typeid_of
"intrinsics"
package:
Diverging procedures proc() -> !
(no return)
using Foo :: enum {A, B, C}; f := A;
Foo :: enum {A, B, C}; len(Foo)
New context
features:
temp_allocator
logger
(Still in development)
Assigning directly to context parameters creates a new context
(context
is scope based)
New compiler flags:
-lld
(use LLD as the linker on Windows)
Improved minimum dependency building
foreign import x {"foo.lib", "bar.lib"}
Removed Features
using in
Old import system (replaced with the package
system)
You can’t perform that action at this time.