# Changelog (https://docs-i0yym09dy-ton-core-docs.vercel.app/llms/tolk/changelog/content.md)



## [v1.4](https://github.com/ton-blockchain/ton/pull/2357) [#v14]

1. ABI export — for toolchain, explorers, UI
2. TypeScript wrappers for Tolk contracts
3. Source maps that map TVM execution back to Tolk source, variables, stack layout, and call frames
4. Debugger marks that enable step-by-step debugging of fully-optimized production contracts
5. Several language enhancements (continue the direction of a general-purpose language)

## [v1.3](https://github.com/ton-blockchain/ton/pull/2234) [#v13]

1. Introduced `array<T>` — dynamically sized arrays backed by TVM tuples.
2. Introduced the `unknown` type — a TVM primitive with unknown contents.
3. Introduced `lisp_list<T>` — nested two-element tuples (FunC-style).
4. Introduced the `string` type — a dedicated string type backed by snaked cells, with `StringBuilder` for concatenation.
5. Compile-time string functions became methods: `"str".crc32()`, `"str".sha256()`, etc.
6. Allowed `[]` to create empty maps, deprecating `createEmptyMap`.
7. Added the null coalescing operator `??`.
8. Added import path mappings (`@alias` → directory).
9. Added compile-time reflection via `@stdlib/reflection`.
10. Extended custom serializers (`packToBuilder`/`unpackFromSlice`) to structures and generics.
11. The compiler can now report multiple errors at once.

## [v1.2](https://github.com/ton-blockchain/ton/pull/1886) [#v12]

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](https://github.com/ton-blockchain/ton/pull/1795) [#v11]

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](https://github.com/ton-blockchain/ton/pull/1741) [#v10]

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](https://github.com/ton-blockchain/ton/pull/1707) [#v099]

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

## [v0.13](https://github.com/ton-blockchain/ton/pull/1694) [#v013]

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](https://github.com/ton-blockchain/ton/pull/1645) [#v012]

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](https://github.com/ton-blockchain/ton/pull/1610) [#v011]

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](https://github.com/ton-blockchain/ton/pull/1559) [#v010]

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](https://github.com/ton-blockchain/ton/pull/1545) [#v09]

1. Added nullable types `int?`, `cell?`, and others; introduce null safety.
2. Updated the standard library, including`asm` 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](https://github.com/ton-blockchain/ton/pull/1503) [#v08]

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](https://github.com/ton-blockchain/ton/pull/1477) [#v07]

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](https://github.com/ton-blockchain/ton/pull/1345) [#v06]

The first public release.

Tolk is a fork of FunC with iterative improvements. In 2024, a pull request for [FunC v0.5.0](https://github.com/ton-blockchain/ton/pull/1026) was submitted together with a roadmap for further development. Instead of merging it, it was forked.

Tolk was first announced at [TON Gateway](https://www.youtube.com/watch?v=Frq-HUYGdbI) in 2024.
The released version was marked v0.6, indicating its relation to the FunC v0.5.
