Language features
- Optimized
Context().sender
to usesender()
function for better gas efficiency: PR #2427 - [fix] Ternary operator with struct and null: PR #2432
- [fix] Show an error message for assembly functions with the
get
attribute: PR #2484 - [fix] The parser does not throw an internal compiler error if the error is reported after the end of the file: PR #2485
- [fix] Always show an error when calling the
dump()
function with an argument of the unsupportedStringBuilder
type: PR #2491 - [fix] The grammar now disallows the augmented assignment operators with whitespace between the operator and the equals sign: PR #2492
- [fix] Generated code now short-circuits
&&=
and||=
operators: PR #2494 - [fix] Get methods that return optional contract state now work correctly: PR #2512
- [fix] Get methods that return contract state for empty contracts now work correctly: PR #2517
- [fix] Skip checking if the slice has been parsed completely when parsing a message (
Message.fromSlice()
) with the last field of the typeSlice as remaining
: PR #2524 - [fix] The wildcard symbol (
_
) cannot be used as an identifier in any context, including struct/message fields or contract names: PR #2519
Standard Library
- Deprecated the
SendPayGasSeparately
constant in favor ofSendPayFwdFeesSeparately
: PR #2483 - Time-related functions are now located in the
std/internal/time.tact
file: PR #2507 - [fix] The
Stoppable
trait now usesthrowUnless
with exit code 133 instead ofrequire
with "Contract stopped" message: PR #2503
Code generation
- [fix] Save the contract state on early
return
from receivers: PR #2482
Internal infrastructure
internalExternalReceiversOutsideMethodsMap
has been reworked to ensure compatibility with explorers: PR #2398
Docs
- Fixed description of the
dump()
function, which does not support values ofStringBuilder
type: PR #2463 - Explicitly stated that structs cannot be empty, while message structs can: PR #2464
- Fixed description of the
contractAddressExt()
function, which currently does not resolve constant values at compile-time and allows specifying arbitrarychain
IDs: PR #2497 - Fixed description of
getOriginalFwdFee()
andContext.readForwardFee()
functions, where the latter calls the former at the end of its execution: PR #2521
Release contributors
Special thanks
- Ilya Aksakov and the RSquad team