Releases
v0.7.4
Compare
Sorry, something went wrong.
No results found
Changes / improvements
Added const enums: enum Foo : const. Behaves like C enums but may be any type.
Casting to / from an enum is now possible again. No need to use .ordinal and .from_ordinal.
Inline associated enum values are deprecated, use --use-old-enums to re-enable them.
$typeof may return a compile time type.
Improved error messages on missing qualifier on enum value. #2260
Add --echo-prefix to edit the prefix with $echo statements. Supports {FILE} and {LINE}
Catch accidental foo == BAR; where foo = BAR; was most likely intended. #2274
Improve error message when doing a rethrow in a function that doesn't return an optional.
Add --list-asm to view all supported asm instructions.
Formatting option "%h" now supports pointers.
Improve error on unsigned implicit conversion to signed.
Update error message for struct initialization #2286
Add SipHash family of keyed PRFs. #2287
$is_const is deprecated in favour of @is_const based on $defined.
Multiline contract comments #2113
Removed the use of temp allocator in backtrace printing.
env::AUTHORS and env::AUTHOR_EMAILS added.
Suppress codegen of panic printing with when panic messages are set to "off".
Implicit linking of libc math when libc math functions are used.
Allow even smaller memory limits.
Check unaligned array access.
Add "@structlike" for typedefs.
"poison" the current function early when a declaration can't be correctly resolved.
Add komihash, a5hash, metrohash64, metrohash128, and wyhash2 variants with tests/benchmark. #2293
'$assignable' is deprecated.
Deprecate allocator::heap() and allocator::temp()
Add thread::fence providing a thread fence.
Place output in out by default for projects. Use temp folder for building at the command line.
Allow absolute paths for $embed.
Add @try and @try_catch.
Assignment evaluation order now right->left, following C++17 and possibly C23.
Fixes
mkdir/rmdir would not work properly with substring paths on non-windows platforms.
Hex string formatter check incorrectly rejected slices.
Correctly reject interface methods type and ptr.
Comparing a null ZString with a non-null ZString would crash.
Switch case with const non-int / enum would be treated as ints and crash. #2263
Missing bounds check on upper bound with const ranges foo[1:3].
Check up the hierarchy when considering if an interface cast is valid #2267 .
Fix issue with labelled break inside of a $switch.
Non-const macros may not return untyped lists.
$for ct-state not properly popped.
Inline r / complex for complex numbers fixed.
Const slice lengths were not always detected as constant.
Const slice indexing was not bounds checked.
Initialize pool correctly in print_backtrace.
--max-mem now works correctly again.
Casting a fault to a pointer would trigger an assert.
Make to_float more tolerant to spaces.
Fixes to thread local pointer handling.
Fixes to JSON parsing and Object.
Array indices are now using int64 internally.
Bit shift operation fails with inline uint enum despite matching underlying type #2279 .
Fix to codegen when using a bitstruct constant defined using a cast with an operator #2248 .
Function pointers are now compile time constants.
Splat 8 arguments can sometimes cause incorrect behaviour in the compiler. #2283
Correctly poison the analysis after a failed $assert or $error. #2284
$foo variables could be assigned non-compile time values.
$foo[0] = ... was incorrectly requiring that the assigned values were compile time constants.
"Inlined at" would sometimes show the current location.
Fixed bug splatting constants into constants.
Resize bug when resizing memory down in ArenaAllocator, DynamicArenaAllocator, BackedArenaAllocator.
Error message for missing arg incorrect for methods with zero args #2296 .
Fix stringify of $vaexpr #2301 .
Segfault when failing to cast subexpression to 'isz' in pointer subtraction #2305 .
Fix unexpected display of macro definition when passing a poisoned expression #2305 .
@links on macros would not be added to calling functions.
Fix Formatter.print returning incorrect size.
A distinct type based on an array would yield .len == 0
Overloading addition with a pointer would not work.
Copying const enums and regular enums incorrect #2313 .
Regression: Chaining an optional together with contracts could in some cases lose the optional.
char[*] b = *(char[*]*)&a; would crash the compiler if a was a slice. #2320
Implicitly cast const int expressions would sometimes not be detected as compile time const.
Using @NoReturn in a short body macro would not work properly #2326 .
Bug when reporting error in a macro return would crash the compiler #2326 .
Short body return expression would not have the correct span.
Fix issue where recursively creating a dir would be incorrectly marked as a failure the first time.
@format did not work correctly with macros #2341 .
Crash when parsing recursive type declaration #2345 .
Remove unnecessary "ret" in naked functions #2344 .
Lambdas now properly follow its attributes #2346 .
Not setting android-ndk resulted in a "set ndk-path" error.
Lambda deduplication would be incorrect when generated at the global scope.
Disallow accessing parameters in a naked function, as well as return, this fixes #1955 .
Assigning string literal to char[<*>] stores pointer rather than characters. #2357
Stdlib changes
Improve contract for readline. #2280
Added Whirlpool hash.
Added Ed25519.
Added string::bformat.
Virtual memory library.
New virtual emory arena allocator.
Added WString.len.
Added @addr macro.
Add ConditionVariable.wait_until and ConditionVariable.wait_for
Added readline_to_stream that takes a stream.
Added Ref and RefCounted experimental functionality.
Added Volatile generic type.
Added UnalignedRef generic type.
Add String conversion functions snake_case -> PascalCase and vice versa.
You can’t perform that action at this time.