Skip to content

Releases: tact-lang/tact

Release 1.3.0

03 May 13:48
8d13b97
Compare
Choose a tag to compare

Added

  • log2 and log math functions in @stdlib/math: PR #166
  • Reserve mode constants in @stdlib/reserve, namely ReserveExact, 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 the Address type: PR #175
  • The non-modifying StringBuilder's concat extension function for chained string concatenations: PR #217
  • The toString extension function for Address type: PR #224
  • The bitwise XOR operation (^): PR #238
  • The isEmpty extension function for the Map type: PR #266
  • The pow2 power function with base 2: PR #267
  • The try and try-catch statements: PR #212
  • The del method for the Map 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 of tact.config.json for specifying compilation mode: full (default), funcOnly (only outputs FunC code and exits), or checkOnly (only does the syntax and type checking, then exits): PR #287
  • The foreach loop for the Map 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 via with, 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() and dumpStack() 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 and ohm-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 and valueOf 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 and until loops: PR #269
  • FunC compilation errors when trying to dump() values of the Cell, Slice, Builder and StringBuilder 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

29 Feb 16:28
7ed5e05
Compare
Choose a tag to compare

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 and yarn.lock: PR #158 and PR #160

Release contributors

Release 1.1.5

01 Dec 12:48
02d65a6
Compare
Choose a tag to compare

Added

  • Continuous integration to run Tact tests on Linux, macOS and Windows: PR #96

Changed

  • Migration to @ton NPM packages: PR #89

Fixed

  • Struct and message identifiers need to be capitalized: PRs #81 and #83
  • Fixed the signature of the checkDataSignature function in stdlib/std/crypto.tact: PR #50
  • Show location info for the internal compiler error 'Invalid types for binary operation': PR #63

Release 1.1.4

30 Nov 09:37
46a1b44
Compare
Choose a tag to compare

Changed

  • Hacked paths to support builds on Windows

Release 1.1.3

27 Jun 23:28
Compare
Choose a tag to compare

Added

  • bitwise and and or operations
  • staticaly compile expressions with bitwise operations if possible

Release 1.1.2

27 Apr 16:46
Compare
Choose a tag to compare

Added

  • Add full ABI in bindings

Release 1.1.1

20 Apr 17:03
Compare
Choose a tag to compare

Fixed

  • Fix typescript bindings generation for custom key and value serialization formats
  • Fix missing external messages in bindings

Release 1.1.0

19 Apr 18:58
Compare
Choose a tag to compare

⚡️ Breaking changes

  • reply is now a method of Contract 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 is false and || does not execute right expression if left is true. 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 to override
  • Deployable trait now sends non-bounceable notifications instead of bounceable ones.

Features

  • Address to Address maps
  • Ability to define key and value serializations for maps
  • sha256 hashing
  • forward and notify functions that can be used to send messages to other contracts using remaining value of incoming message
  • virtual and abstract constants that can be shared between traits
  • storageReserve constant in every contract that can be used to reserve some storage space by any trait
  • abstract functions that can be implemented in contracts
  • FactoryDeployable trait for deploying from factory contract
  • @stdlib/dns for easier DNS resolution
  • Opt-in external message support
  • Typed bounce receiver and bounce<T> type modifier
  • commit for committing state changes
  • inline 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

19 Apr 18:41
Compare
Choose a tag to compare
Release 1.1.0-beta.28 Pre-release
Pre-release

Fixed

  • Fix func invocation

Release 1.1.0-beta.27

14 Apr 17:08
Compare
Choose a tag to compare
Release 1.1.0-beta.27 Pre-release
Pre-release

Fixed

  • Remove tact-bindings binary reference