0.6.5 Change list
Changes / improvements
- Allow splat in initializers.
- Init command will now add
test-sourcestoproject.json#1520 a++may be discarded ifais optional and ++/-- works for overloaded operators.- Improve support for Windows cross compilation on targets with case sensitive file systems.
- Add "sources" support to library
manifest.json, defaults to root folder if unspecified. - Add char_at method in DString and operators [], len, []= and &[].
- Add
-qoption, make--run-onceimplicitly-q. - Add
-v,-vvand-vvvoptions for increasing verbosity, replacing debug-log and debug-stats options.
Fixes
- Fix bug where
a > 0 ? f() : g()could cause a compiler crash if both returnedvoid!. @builtinwas not respected for generic modules #1617.- Fix issue writing a single byte in the WriteBuffer
- A distinct inline pointer type can now participate in pointer arithmetics.
- Support &a[0] returning the distinct type when applying it to a distinct of a pointer.
- Fix error when calling
HashMap.removeon uninitializedHashMap. - Fix issue with resolved try-unwrap in defer.
- Fix issue with overloaded subscript and ++/-- and assign ops (e.g.
*=) - Fix issue with properties in different targets not being respected #1633.
- Indexing an Optional slice would crash in codegen #1636.
- SimpleHeapAllocator bug when splitting blocks allowed memory overrun.
- Not possible to alias or take reference for extension methods on non-user defined types. #1637
- Prevent methods from using names of properties or fields. #1638
- b64 / hex data strings can now be used with ` as well.
- Contracts on generic modules would evaluate too late, sometimes not catching the error until it already occurred elsewhere.
- Fix bug preventing optionals from being used in ranges or as indices.
- Crash compiling for arm64 when returning 16 byte and smaller structs by value not a power of 2 #1649.
- Enforce single module compilation for static libraries to make constructors run properly.
- Crash when using --no-obj without compile-only. #1653
- Do not produce expression locations for windows.
- Issue where multiple methods were accepted for the same type.
- Issue where a method was linked to a type alias instead of the underlying type.
- Fix Fnv1a encoding.
- Fix issue with accessing arrays in access-overloaded types, e.g.
list[1][2]#1665. - Cast removing arbitrary array indices and converting them to pointers should always be fine #1664
- Incorrect "no-libc" definition of
cos, making it unavailable for wasm. - Fix issue with the adjoint and inverse calculations for
Matrix2x2. - It was possible to create 0 length arrays using byte literals. #1678
- Crash when a constant null typeid is checked for properties. #1679
Stdlib changes
- Add
io::MultiReader,io::MultiWriter, andio::TeeReaderstructs. - Updated Base32 API.
- Add
file::save. - Add
memcpy/memset/memcmpto nolibc. - Add
sort::quickselectto find the k-th smallest element in an unordered list. - Add
sort::is_sortedto determine if a list is sorted.