Skip to main content

v1.2

  1. Introduced address as “internal only”.
  2. Delivered rich bounces: return the full body instead of 256 bits.
  3. Provided low-cost builder-to-slice, StateInit, and address composition.
  4. Improved compilation errors.
  5. Added support for anonymous functions.
  6. Added the borrow checker and related undefined-behavior checks.

v1.1

  1. Added map<K, V> — a wrapper over TVM dictionaries.
  2. Added enum — group numeric constants into a distinct type.
  3. Added private and readonly fields in structures.
  4. Enhanced overload resolution and partial specialization.

v1.0

  1. Added the lazy keyword.
  2. Added auto-detect and inline functions at the compiler level.
  3. Added various peephole optimizations for gas efficiency.
  4. Added onInternalMessage and onBouncedMessage, TVM 11 support.
  5. Added custom pack and unpack serializers for custom types.

v0.99

  1. Added createMessage.
  2. Added createExternalLogMessage.
  3. Added sharding support for calculating addresses “close to another contract”.

v0.13

  1. Added auto-packing to and from cells, builders, and slices.
  2. Added type address.
  3. Added Lateinit variables.
  4. Added defaults for parameters.

v0.12

  1. Added structures struct A { ... }.
  2. Added generics struct<T> and type<T>.
  3. Added methods fun Point.getX(self).
  4. Renamed stdlib functions to short methods.

v0.11

  1. Added type aliases type NewName = <existing type>.
  2. Added union types T1 | T2 | ....
  3. Added pattern matching for types.
  4. Added the is and !is operators.
  5. Added pattern matching for expressions.
  6. Allowed the semicolon to be omitted for the last statement in a block.

v0.10

  1. Added fixed-width integers such as int32 and uint64.
  2. Added the coins type and the ton("0.05") function.
  3. Added bytesN and bitsN types backed by slices at the TVM level.
  4. Replaced "..."c postfixes with stringCrc32("...") functions.
  5. Added support 0b... number literals in addition to 0x....
  6. Added support trailing commas.

v0.9

  1. Added nullable types int?, cell?, and others; introduce null safety.
  2. Updated the standard library, includingasm definitions, to support nullability.
  3. Introduced smart casts, like in TypeScript and Kotlin.
  4. Added the ! operator (non-null assertion).
  5. Treated code after throw as unreachable.
  6. Added the never type.

v0.8

  1. Introduced syntax tensorVar.0 and tupleVar.0 for reading and writing.
  2. Allowed cell, slice, and similar terms to be used as valid identifiers rather than keywords.

v0.7

  1. Refactored compiler internals and introduce an AST-level semantic analysis kernel.
  2. Changed the type system to static typing.
  3. Provided clear and readable error messages for type mismatch.
  4. Added generic functions fun f<T>(...) and instantiations such as f<int>(...).
  5. Added bool type and type casting through value as T.

v0.6

The first public release. Tolk is a fork of FunC with iterative improvements. In 2024, a pull request for FunC v0.5.0 was submitted together with a roadmap for further development. Instead of merging it, it was forked. Tolk was first announced at TON Gateway in 2024. The released version was marked v0.6, indicating its relation to the FunC v0.5.