Added
- The
exists
method for theMap
type: PR #581 - The
storeBit
method forBuilder
type and theloadBit
method forSlice
type: PR #699 - The
toSlice
method for structs and messages: PR #630 - Wider range of serialization options for integers —
uint1
throughuint256
andint1
throughint257
: PR #558 - The
deepEquals
method for theMap
type: PR #637 asm
bodies for module-level functions: PR #769, PR #825- Corresponding stdlib functions for new TVM instructions from 2023.07 and 2024.04 upgrades: PR #331. Added the
storeBuilder
extension function andgasConsumed
,getComputeFee
,getStorageFee
,getForwardFee
,getSimpleComputeFee
,getSimpleForwardFee
,getOriginalFwdFee
,myStorageDue
functions. slice
,rawSlice
,ascii
andcrc32
built-in functions: PR #787, PR #799Builder.storeMaybeRef
,parseStdAddress
andparseVarAddress
stdlib functions: PR #793- The compiler development guide: PR #833
- Constant evaluator now uses an interpreter: PR #664. This allows calls to user-defined functions and references to declared global constants.
Changed
- Allow omitting semicolons in contract/trait declarations and definitions: PR #718
- Compiler Tests are now using
@ton/sandbox
instead of@tact-lang/emulator
: PR #651 - The minimal required Node.js version is bumped to 22: PR #769
Fixed
- Traits can override inherited abstract functions: PR #724
- Fix code generation bug for maps from unsigned integers to Boolean values: PR #725
- Compiler failure when
toString
gets called as a static function and not a method: PR #745 - Tact AST keeps the original format of integer literals (hex/dec/oct/bin): PR #771
- Message opcodes are now checked if they fit into 32 bits: PR #771
- Disallow zero binary message opcodes as those are reserved for text messages: PR #786
- Return-statements in
init()
function do not cause FunC compilation error anymore: PR #794 emptyMap()
in equality comparison expressions does not cause code generation failures: PR #814- Maps with
coins
as value type are now correctly handled in structs: PR #821 - Contract method calls in return statements: PR #829
- Disallow initializers for trait storage fields: PR #831
- Fix
dnsInternalNormalize()
in@stdlib/dns
to throw on slices with references as expected: PR #834