github tact-lang/tact v1.3.0
Release 1.3.0

latest releases: v1.5.2, v1.5.1, v1.5.0...
6 months ago

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

Don't miss a new tact release

NewReleases is sending notifications on new releases.