Changes / improvements
- Removed support for LLVM 17, 18.
- Detect large temporaries when creating slices on the stack #2665
- Search for the linker in PATH; use the builtin linker if CC missing. #2906
constdefinference through binary expressions:Foo f = Foo.AUDIO | Foo.VIDEOcan be writtenFoo f = AUDIO | VIDEO;- Fix for LLVM 22+ compatibility #2987
@weaklinkfor just affecting linkage.- Add a fully static build of
c3cfor Linux. #2949 @weaknow allows direct overriding of@weakdefinitions with a real definition.- Unified SDK fetching under
c3c fetch-sdk <target>(windows, android) and added support for automatic Android NDK (r29) download. Better progress bar. #3019 - Improved Linux backtrace readability by stripping internal panic and runtime startup frames. #3008
- Added repetition compression for deep recursive stacks in backtraces. #3008
- Added new builtins:
$$acos,$$asin,$$atan,$$cosh,$$exp10,$$sinh,$$tanand$$tanh. - Added the rest of the
xoshiroandxoroshiroPRNG variants. #3027 - Improve error when using keyword as identifier #3066
- Warn when using $$builtin functions outside of the stdlib #3065
- Zero element enums now disallowed.
Stdlib changes
- Add contract on
any_to_enum_ordinalandany_to_intto improve error when passed an empty any. #2977 - Add hash method for ZStrings. #2982
- Added json serialization from structs.
- Add
keccakand Keccak-based hash functions:sha3,shake,cshake,kmac,turboshake,tuplehash, andparallelhash. #2728 - Added
fault.short_nameandfault.@short_nameto get just the fault name for both run and compile time. #3002 - Compiler runtime functions extracted outside of std.
- Add the GZIP file format (RFC 1952).
- Add file::last_modified.
- Make DateTime and DateTimeTz
Printable. - Add
to_formatfunctionality for DateTime. SubProcess/process::create/process::execute_stdout_to_bufferdeprecated, replaced byProcess/process:spawn/process::run_capture_stdout.- Add support for AES-encrypted Zip files (AE-1 and AE-2 formats).
- Add
Argon2memory-hard hashing with associated tests. #2773 - Matrix type is now column major.
- Fix matrix perspective and ortho, project and unproject to be RH [0,1]
- Add vec3 methods:
rejection,project, implementunproject. - Add vector function
cubic_hermite - Deprecated
sq_magnitude,barycenter,towards,ortho_normalize,clamp_mag, uselength_sq,barycentric,move_towards,orthonormalize,clamp_lengthinstead. - Add Quaternion conversion functions to from Euler angles and axis+angle.
math::deg_to_radandmath::rad_to_degrespects the underlying type, returningfloaton afloatargument.- Added
float.to_radiansandfloat.to_degreesand the same fordouble. - Added
Quat,Mat2,Mat3andMat4,Vec2,Vec3,Vec4aliases. - Added
is_normalizedto Quaternion and floating point vectors. - Added
quaternion::from_rotationandquaternion::from_normalized_rotation - Added
Recttype. - Added
matrix::frustum. - Added
math::@absfor compile timeabs. - Make
Errnoa constdef containing all definitions. Deprecatedlibc::errnoconstants. random::seederno longer uses temp memory.- Add simple member-wise struct comparison with
member_eq. #2801 std::core::mem::allocatordeprecated and split intostd::core::mem::allocatorscontaining allocators andstd::core::mem::allocfor various allocation methods.- Add
always_assertbuiltin macro. - Add an
entropymodule to generate cryptographically-secure random bytes. #3022 - Add a builtin
TIMEOUTfault definition. #3022 - Base32, Base64, Hex and Codepage encoding deprecates
encode_bufferanddecode_buffer. Those are replaced byencode_intoanddecode_intowithdstbeing the first argument. #3055 hex::encode_bytesandhex::decode_bytesare deprecated in favour ofhex::encode_bytes_intoandhex::decode_bytes_intowhich hasdstthe first argument. #3055- Deprecation of
@unaligned_loadand@unaligned_store. Usemem::loadandmem::storeinstead.