Releases: tact-lang/tact
Releases · tact-lang/tact
Release 1.3.0
Added
log2
andlog
math functions in@stdlib/math
: PR #166- Reserve mode constants in
@stdlib/reserve
, namelyReserveExact
,ReserveAllExcept
,ReserveAtMost
,ReserveAddOriginalBalance
,ReserveInvertSign
,ReserveBounceIfActionFail
: PR #173 - Support for string escape sequences (
\\
,\"
,\n
,\r
,\t
,\v
,\b
,\f
,\u{0}
through\u{FFFFFF}
,\u0000
through\uFFFF
,\x00
through\xFF
): PR #192 - JSON Schema for
tact.config.json
: PR #194 - Struct fields punning, i.e.
{foo, bar}
is syntactic sugar for{ foo: foo, bar: bar }
: PR #272 - The ability to use
dump
function on the values of theAddress
type: PR #175 - The non-modifying
StringBuilder
'sconcat
extension function for chained string concatenations: PR #217 - The
toString
extension function forAddress
type: PR #224 - The bitwise XOR operation (
^
): PR #238 - The
isEmpty
extension function for theMap
type: PR #266 - The
pow2
power function with base 2: PR #267 - The
try
andtry-catch
statements: PR #212 - The
del
method for theMap
type: PR #95 - The
-h
/--help
,-v
(short for--version
),-p
(short for--project
),--func
(for only outputting FunC code) and--check
(for only doing the syntax and type checking) command-line flags: PR #287 - The
mode
enum in project properties oftact.config.json
for specifying compilation mode:full
(default),funcOnly
(only outputs FunC code and exits), orcheckOnly
(only does the syntax and type checking, then exits): PR #287 - The
foreach
loop for theMap
type: PR #106
Changed
- The implicit empty
init
function is now present by default in the contract if not declared: PR #167 - Support trailing commas in all comma-separated lists (struct instantiations,
initOf
arguments,init()
parameters, inherited traits viawith
, function arguments and parameters): PR #179 and PR #246 @stdlib/stoppable
now imports@stdlib/ownable
so the programmer does not have to do it separately: PR #193- The
newAddress
function now evaluates to a constant value if possible: PR #237 - The
pow
power function could only be used at compile-time, but now it is available in the standard library and can be called both at runtime and compile-time: PR #267 - The
dump()
anddumpStack()
functions now print the file path, line number, and column number in addition to the data: PR #271 - Use
|
instead of+
for send mode flags because the bitwise OR operation is idempotent and hence safer: PR #274 - Bumped the versions of
@ton/core
andohm-js
to the most recent ones: PR #276 - Generated
.pkg
-files always use POSIX file paths (even on Windows): PR # 300 - The
-p
/--project
flags now allow specifying more than one project name. Additionally, they also require a--config
flag to be specified: PR #287 - Command-line interface now allows compiling a single Tact file directly, without specifying a config: PR #287
Fixed
- Escape backticks in error messages for generated TypeScript code: PR #192
- Integer overflows during compile-time constant evaluation are properly propagated as a compilation error: PR #200
- Incorrect "already exists" errors when using the
toString
andvalueOf
identifiers: PR #208 - Empty inherited trait lists after
with
keyword are now disallowed: PR #246 - Allow chaining method calls with
!!
, for instance,map.asCell()!!.hash()
is grammatically correct now: PR #257 - Precedence levels for bitwise operators, equality and comparisons now matches common languages, like JavaScript: PR #265
- Incorrect variable scoping in the
repeat
,while
anduntil
loops: PR #269 - FunC compilation errors when trying to
dump()
values of theCell
,Slice
,Builder
andStringBuilder
types: PR #271 - Tact's CLI returns a non-zero exit code if compilation fails: PR #278
- Use the most recent version of the FunC standard library
stdlib.fc
: PR #283 - The WASM version of the FunC compiler has been updated to 0.4.4 and patched to work on larger contracts: PR #297
- The
return
-statement reachability analysis: PR #302
Release contributors
Release 1.2.0
Added
- Augmented assignment operators (
+=
,-=
,*=
,/=
and%=
): PR #87 - Binary and octal literals with underscores as numerical separators: PR #99
- Ternary conditional operator (
condition ? then : else
): PR #97 - The
--version
command-line flag for the Tact executable: PR #137 - The
SendBounceIfActionFail
send mode constant to the standard library: PR #122
Changed
- Decimal and hexadecimal literals now allow underscores as numerical separators: PR #99
- The equality and non-equality operators (
==
and!=
) now support slices and strings by comparing the hashes of the left-hand and right-hand sides : PR #105 - Continuous integration now tests the dev tact-template's version with the dev version of Tact: PR #111
- Continuous integration now tests the latest Blueprint's version with the dev version of Tact: PR #152
- Continuous integration now checks there are no ESLint warnings: PR #157
Fixed
- Relative imports from parent directories: PR #125
- The typechecker failed to identify different types when using the
==
and!=
operators: PR #127 - ESLint warnings for the whole Tact codebase: PR #157
- The versions of some vulnerable dependencies were bumped in
package.json
andyarn.lock
: PR #158 and PR #160
Release contributors
Release 1.1.5
Release 1.1.4
Changed
- Hacked paths to support builds on Windows
Release 1.1.3
Added
- bitwise and and or operations
- staticaly compile expressions with bitwise operations if possible
Release 1.1.2
Added
- Add full ABI in bindings
Release 1.1.1
Fixed
- Fix typescript bindings generation for custom key and value serialization formats
- Fix missing external messages in bindings
Release 1.1.0
⚡️ Breaking changes
reply
is now a method ofContract
instead of global context and changed it's behaviour if storage reserve is non-zero in contract.- Logical expressions are now calculated differently:
&&
now does not execute right expression if left isfalse
and||
does not execute right expression if left istrue
. Before it was executed in any case. This change is made in attempt to reduce unexpected behaviour. OwnableTransferable
is now sends response to the sender.overwrites
was renamed tooverride
Deployable
trait now sends non-bounceable notifications instead of bounceable ones.
Features
Address
toAddress
maps- Ability to define key and value serializations for maps
sha256
hashingforward
andnotify
functions that can be used to send messages to other contracts using remaining value of incoming messagevirtual
andabstract
constants that can be shared between traitsstorageReserve
constant in every contract that can be used to reserve some storage space by any traitabstract
functions that can be implemented in contractsFactoryDeployable
trait for deploying from factory contract@stdlib/dns
for easier DNS resolution- Opt-in
external
message support - Typed
bounce
receiver andbounce<T>
type modifier commit
for committing state changesinline
modifier for functions for inlining them into the caller- Ability to define empty messages (but not structs)
- Some string-related operations are now computed at compile time if possible
Fixed
- Signature of
preloadBits
function - Fixed
readForwardFee
function
Release 1.1.0-beta.28
Fixed
- Fix
func
invocation
Release 1.1.0-beta.27
Fixed
- Remove tact-bindings binary reference