Skip to content

v2.19.0

Latest

Choose a tag to compare

@github-actions github-actions released this 24 Jun 10:57
· 60 commits to main since this release
b6f3126

What's Changed

Features

  • Support Span<T> destructuring via fixed-size array patterns. #9823
  • Added support for const calculation of inner variants and lets. #9899
  • Implemented sha512 syscall and libfuncs. #9947
  • Added sha384 implementation. #9990
  • Added struct and enum names and variants to sierra debug info. #9923
  • Added type debug info for contracts. #9957

Bug Fixes

  • semantic/cache: dedupe const generic args by const value id by @s0mnathh in #9850
  • semantic/cache: dedupe FixedSizeArray const size id by @Keemosty12 in #9851
  • Include all reachable modules in cache generation via BFS over submodule and macro call edges. #9860
  • Report UnsupportedConstant for non-concrete args in eq/ne/not const eval. #9879
  • Preventing infinite inlining of cycle functions. #9917
  • Fixed ICE on nested const fn in const fn. #9901
  • Emit diagnostic on division/modulo by zero in consteval_int by @anon-researchers-123 in #9904
  • Reject non-concrete const logical lhs by @Elena343-ai in #9919
  • Fixed numeric_value_and_suffix to handle compound suffixes; error on typed literals in consteval_int and test attrs. #9927
  • Introduce NumericLiteral type variant for numeric literals. #9929
  • Point const-decl literal errors at the value expression. #9930
  • Narrow return-type mismatch span to the value-producing expression. #9931
  • Validate inferred numeric literal values against their type. #10040
  • Skip macro rules with parser-rejected patterns instead of expanding them. #9960
  • Avoid panic when an item-scope inline macro lacks an arg-list bracket. #9961
  • Don't panic on $(...) without operator in macro calls. #10005
  • Preserve escapes in simple panic! macro expansion. #9980
  • Correct diagnostic span for write! named placeholders after escapes. #9986
  • Correct ClassHash/ContractAddress downcast upper bound off-by-one by @SAY-5 in #9967
  • Fixed off-by-one boundary in non-allowed qm31 libfunc. #10009
  • Correct NegativeImplLongId::is_fully_concrete. #10010
  • Extract generic params from FixedSizeArray size field in negative impl resolution. #10002
  • Emit RefutablePattern diagnostic instead of ICE on Span fixed-array let. #9969
  • Emit E2008 for generic-type numeric literal suffixes instead of ICE. #9978
  • Prevent crash on ? on generics. #9999
  • Emit unterminated string error for strings ending with backslash-quote. #9998
  • Accept resolver-modifier paths in pattern position. #10039
  • Improved missing comma diag. #10063
  • Made compile_error! diag not include "s. #10064
  • Use all cfg args to extract diagnostics. #10065
  • Respect #[cfg] when generating deploy_for_test. #10011
  • Fixed suggested crate:: context paths. #10044
  • Prevented doubled use self; diagnostic. #10067
  • Eliminate spurious E3002 alongside E3001 for moved struct members. #9994
  • Give reconstructed structs the original variable's location in E3002. #9996
  • Removed extra diag in cases of out of range u256 match. #10006
  • early_unsafe_panic must keep side-effecting statements. #10033
  • Propagate destruct-impl error in closure lowering. #10007
  • Match on @Never with enum_snapshot_match. #10046
  • Handle empty enum in Store derive. #10069
  • Fixed issue with identical variants on return building. #10056
  • Ignoring later fields instead of overriding when getting dup fields. #10053
  • Correct n_steps by removing erroneous -1 offsets. #10003
  • Include RangeCheck96 in ConstCost::into_full_cost_iter. #10038
  • Canonicalize felt252 const-eval values to a unique field-element representative. #9959
  • const_values_eq must canonicalize felt252 inside compounds. #10037
  • Canonicalize felt252 inside NonZero when matching const patterns. #10058
  • Use exclusive upper bound in ExpansionOffset::mapped. #10017
  • Include TokenMissing in generated is_missing(). #10020
  • Fixed u128_guarantee_mul simulation. #10050
  • Fixed implementation of u128s_from_felt simulation. #10068
  • Bound test result queue in test runner by @vh0rvath in #9979

Corelib

  • Made bounded-int type pub. #9882
  • Removed non-safe variant of array-hash. #9988
  • Take::nth(usize::MAX) returns None instead of overflowing. #10022
  • Make Take::advance_by arithmetic panic-free. #10036
  • Add /= and %= for i32/i64/i128 via non-deprecated *Assign. #10027
  • Fixed ByteSpan::get OOB empty range. #10051
  • Made the panic message more exact for i128_mul. #10042

Formatter

  • Sort use self::... items by their full path. #10018
  • Avoid usize underflow on over-wide comment prefixes. #10035
  • Made all single line comment prevent removing line-breaks. #10045
  • Drop trailing empty lines when building the output. #10057

Optimizations

  • Non-copy variable forwarding with chain removal. #9905
  • Remove cancel_ops phase, subsumed by variable forwarding. #10015
  • Using equality analysis to improve match optimization. #9893
  • Preallocate lowering pipeline buffers and skip SubStrategy clone. #9995
  • Preallocate Sierra emission buffers. #10000
  • Memoize per-module feature_config. #9997
  • Cache Result/Option EnumIds in CoreInfo, use ID comparison. #9985

Other

  • Bumped sierra version. #9972
  • Migrated HashMap/HashSet to deterministic Unordered/Ordered wrappers, disallowing std types via clippy. #9953
  • dev and rc tags are not marked as latest release. #10030

New Contributors

Full Changelog: v2.18.0...v2.19.0