Closed
Description
The Tact team has just release Tact v1.3.0 on NPM.
The full CHANGELOG for Tact v1.3.0 can be found here: https://github.com/tact-lang/tact/blob/main/CHANGELOG.md#130---2024-05-03
And here are a summary of editor/IDE-relevant Tact features.
New or fixed syntax
- Fixed precedence levels for bitwise operators, equality and comparisons. Now the precedence levels match common languages like JS/TS.
- Support for string escape sequences:
\\
,\"
,\n
,\r
,\t
,\v
,\b
,\f
,\u{0}
through\u{FFFFFF}
,\u0000
through\uFFFF
,\x00
through\xFF
. - Allow chaining method calls with
!!
, for instance,map.asCell()!!.hash()
is grammatically correct now. - Trailing commas are allowed in struct instantiations,
initOf
arguments,init()
parameters, inherited traits viawith
, function arguments and parameters. - Struct fields punning, i.e.
{foo, bar}
is syntactic sugar for{ foo: foo, bar: bar }
. - Inherited trait lists now must be non-empty if
with
is used. - Bitwise XOR (
^
) operator. - The implicit empty
init
function is now present by default in the contract if not declared. -
try {...}
andtry {...} catch {...}
statements. -
foreach
loop for theMap
type:foreach (k, v in map) {...}
.
New stdlib functions
-
pow2
,log2
andlog
math functions in@stdlib/math
. - Reserve mode constants in
@stdlib/reserve
, namelyReserveExact
,ReserveAllExcept
,ReserveAtMost
,ReserveAddOriginalBalance
,ReserveInvertSign
,ReserveBounceIfActionFail
.
New methods
- The
concat
non-modifyingStringBuilder
's extension function for chained string concatenations:foo.concat(bar).concat(baz)
. - The
toString
extension function forAddress
type:addr.toString
. - The
isEmpty
anddel
extension functions for theMap
type:map.isEmpty
,map.del(key)
.