0.7.7 Change list
Changes / improvements
- Error when using $vaarg/$vacount/$vasplat and similar in a macro without vaargs #2510.
- Add splat defaults for designated initialization #2441.
- Add new builtins
$$str_snakecase$$str_replaceand$$str_pascalcase. "build-dir"option now available forproject.json, added to project. #2323- Allow
..ranges to use "a..a-1" in order to express zero length. - Disallow aliasing of
@localsymbols with a higher visibility in the alias. - Add
--max-macro-iterationsto set macro iteration limit. - Improved generic inference in initializers #2541.
- "Maybe-deref" subscripting
foo.[i] += 1#2540. - ABI change for vectors: store and pass them as arrays #2542.
- Add @simd and @align attributes to typedef #2543.
- Rename
@externto@cname, deprecating the old name #2493. - Allow
(Foo)0bitstruct casts even if type sizes do not match. - The option
--riscvfloatrenamed--riscv-abi. - Add initial
--cpu-flagsallowing fine grained control over CPU features. - Add
--riscv-cpusettings for RISC-V processors #2549.
Fixes
- Bug in
io::write_using_write_byte. - Bitstruct value cannot be used to index a const array in compile time. #2512
- Compiler fails to stop error print in recursive macro, and also prints unnecessary "inline at" #2513.
- Bitstruct truncated constant error escapes
$defined#2515. - Compiler segfault when accessing member of number cast to bitstruct #2516.
- Compiler assert when getting a member of a
bitstruct : char @bigendian#2517. - Add ??? and +++= to list-precedence.
- Fix issues with linking when using symbol aliases. #2519
- Splatting optional compile-time macro parameter from inside lambda expression does not work #2532.
- Compiler segfault when getting a nonexistant member from an unnamed struct #2533.
- Correctly mention aliased type when method is not implemented #2534.
- Regression: Not printing backtrace when tests fail for MacOS #2536.
Stdlib changes
- Sorting functions correctly took slices by value, but also other types by value. Now, only slices are accepted by value, other containers are always by ref.
- Added
@str_snakecase,@str_replaceand@str_pascalcasebuiltin compile time macros based on the$$builtins. - Add TcpSocketPair to create a bidirectional local socket pair.
- Add
extern fn CInt socketpair(AIFamily domain, AISockType type, CInt protocol, NativeSocket[2]* sv)binding to posix. - Add
extern fn getsockname(NativeSocket socket, SockAddrPtr address, Socklen_t* address_len)binding to win32.