Changelog
v1.4
- ABI export — for toolchain, explorers, UI
- TypeScript wrappers for Tolk contracts
- Source maps that map TVM execution back to Tolk source, variables, stack layout, and call frames
- Debugger marks that enable step-by-step debugging of fully-optimized production contracts
- Several language enhancements (continue the direction of a general-purpose language)
v1.3
- Introduced
array<T>— dynamically sized arrays backed by TVM tuples. - Introduced the
unknowntype — a TVM primitive with unknown contents. - Introduced
lisp_list<T>— nested two-element tuples (FunC-style). - Introduced the
stringtype — a dedicated string type backed by snaked cells, withStringBuilderfor concatenation. - Compile-time string functions became methods:
"str".crc32(),"str".sha256(), etc. - Allowed
[]to create empty maps, deprecatingcreateEmptyMap. - Added the null coalescing operator
??. - Added import path mappings (
@alias→ directory). - Added compile-time reflection via
@stdlib/reflection. - Extended custom serializers (
packToBuilder/unpackFromSlice) to structures and generics. - The compiler can now report multiple errors at once.
v1.2
- Introduced
addressas "internal only". - Delivered rich bounces: return the full body instead of 256 bits.
- Provided low-cost builder-to-slice,
StateInit, and address composition. - Improved compilation errors.
- Added support for anonymous functions.
- Added the borrow checker and related undefined-behavior checks.
v1.1
- Added
map<K, V>— a wrapper over TVM dictionaries. - Added
enum— group numeric constants into a distinct type. - Added
privateandreadonlyfields in structures. - Enhanced overload resolution and partial specialization.
v1.0
- Added the
lazykeyword. - Added auto-detect and inline functions at the compiler level.
- Added various peephole optimizations for gas efficiency.
- Added
onInternalMessageandonBouncedMessage, TVM 11 support. - Added custom pack and unpack serializers for custom types.
v0.99
- Added
createMessage. - Added
createExternalLogMessage. - Added sharding support for calculating addresses "close to another contract".
v0.13
- Added auto-packing
toandfromcells,builders, andslices. - Added type
address. - Added Lateinit variables.
- Added defaults for parameters.
v0.12
- Added structures
struct A { ... }. - Added generics
struct<T>andtype<T>. - Added methods
fun Point.getX(self). - Renamed stdlib functions to short methods.
v0.11
- Added type aliases
type NewName = <existing type>. - Added union types
T1 | T2 | .... - Added pattern matching for types.
- Added the
isand!isoperators. - Added pattern matching for expressions.
- Allowed the semicolon to be omitted for the last statement in a block.
v0.10
- Added fixed-width integers such as
int32anduint64. - Added the
coinstype and theton("0.05")function. - Added
bytesNandbitsNtypes backed by slices at the TVM level. - Replaced
"..."cpostfixes withstringCrc32("...")functions. - Added support
0b...number literals in addition to0x.... - Added support trailing commas.
v0.9
- Added nullable types
int?,cell?, and others; introduce null safety. - Updated the standard library, including
asmdefinitions, to support nullability. - Introduced smart casts, like in TypeScript and Kotlin.
- Added the
!operator (non-null assertion). - Treated code after
throwas unreachable. - Added the
nevertype.
v0.8
- Introduced syntax
tensorVar.0andtupleVar.0for reading and writing. - Allowed
cell,slice, and similar terms to be used as valid identifiers rather than keywords.
v0.7
- Refactored compiler internals and introduce an AST-level semantic analysis kernel.
- Changed the type system to static typing.
- Provided clear and readable error messages for type mismatch.
- Added generic functions
fun f<T>(...)and instantiations such asf<int>(...). - Added
booltype and type casting throughvalue 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.
Last updated on