0.7.10 Change list
Changes / improvements
- C3 is now using its own LLVM libraries when building releases.
- Method resolution and
$definednow works together well unless definitions are out of order for real. - Improve error message when using functions as values #2856
- Improve support for Android with Termux.
- Integrated download of the MSVC SDK when compiling for Windows.
- For
c3c initwith library templates, provide example exported functions. #2898 unsigned % signedandunsigned / signedis no longer allowed without explicit casts, except for const denominators. #2928- New enum associated value syntax.
- Individual warning settings added.
- Change typedef and const enums to not convert from literals by default.
- Add
@constinitto allow old typedef behaviour. - Include actual element count in the error message when the array initializer size does not match the expected size.
- Add
--print-large-functionsfor checking which functions likely dominate the compile time. - Improve error message when providing
aliaswith a typeid expression where a type was expected. #2944 - Const enums removed.
- Constdef declarations introduced.
- Properly support
@deprecatedas contract. - Support deprecating enum values.
- Improve error when trying to use an extern const as a compile time constant. #2969
vendor-fetchcommand now lists all available packages by default. #2976- Typekind enums are changed CONST_ENUM -> CONSTDEF, DISTINCT -> TYPEDEF.
Stdlib changes
- Summarize sort macros as generic function wrappers to reduce the amount of generated code. #2831
- Remove dependency on temp allocator in String.join.
- Remove dependency on temp allocator in File.open.
- Added PEM encoding/decoding. #2858
- Add Murmur3 hash.
- Add optional line-length limitations to
io::readlineandio::readline_to_stream. #2879 - Add Xorshiro128++.
- Add single-byte code page support (DOS/OEM, Windows/ANSI, and ISO/IEC 8859).
- Add
array::even,array::odd, andarray::unlacemacros. #2892 - Add discrete and continuous distributions in
std::math::distributions. - Add bitorder functions
store_le,load_le,store_be,store_le. - Stream functions now use long/ulong rather than isz/usz for seek/available.
instream.seekis replaced byset_cursorandcursor.instream.available,cursoretc are long/ulong rather than isz/usz to be correct on 32-bit.- Enable asynchronous, non-blocking reads of subprocess STDOUT/STDERR pipes on POSIX systems.
Fixes
- Add error message if directory with output file name already exists
- Regression where nested lambdas would be evaluated twice.
- Compiler crash when using arrays of vectors in lists. #2889
- Fix
list[0].i = 5whenlist[0]returns a pointer. #2888 - Shadowing not detected for generic declarations #2876
- Const inline enums would not always implicitly get converted to the underlying type.
- Update to dstring.append_string to take any type converting to String.
- Flag
--cpu-flagsdoesn't work if the first item is an exclusion. #2905 - Reallocating overaligned memory with the LibcAllocator was unsafe.
- Using [] or .foo on $$ functions would not raise error but instead crash
- Improved underlining errors/warnings when unicode is used. #2887
- Fix std::io::Formatter integer issue for large uint128 decimal values.
--safe=nodisabled compile-time errors on compile-time known runtime @require checks #2936- On assert known false, the message was not shown for no-args.
- Adding the incorrect sized vector to a pointer vector would cause a crash.
- Member access on a struct returned by the assignment expression, cause crash #2947
- Trying to slice an indexable type leads to misleading error message #2958
- Warn on use of visibility modifiers on methods. #2962
- Compiler crash using
??with avoid?macro #2973 - Fix issue when extending a generic type with a method in another module.