# FunC changelog (https://docs-i0yym09dy-ton-core-docs.vercel.app/llms/languages/func/changelog/content.md)



<Callout type="note">
  The official smart contract language of TON Blockchain is [Tolk](/llms/tolk/overview/content.md). FunC is now a **legacy** language, with its compiler no longer maintained.

  Learn how to [migrate from FunC to Tolk](/llms/tolk/from-func/tolk-vs-func/content.md). For new smart contract projects, use the [Acton toolchain](/llms/contract-dev/acton/content.md).
</Callout>

## Version 0.4.6 [#version-046]

Released in [Dec 2024](https://github.com/ton-blockchain/ton/releases/tag/v2024.12-1).

**Fixes:**

* `try/catch` handling.
* Pure flag for functions stored in variables.

## Version 0.4.5 [#version-045]

Released in [Oct 2024](https://github.com/ton-blockchain/ton/releases/tag/v2024.10).

**Fixes:**

* Bug in optimization of [operator `<<`](/llms/languages/func/operators/content.md).

## Version 0.4.4 [#version-044]

Released in [May 2023](https://github.com/ton-blockchain/ton/releases/tag/v2023.05).

**New features:**

* Better error-handling.

**Fixes:**

* `catch` stack recovery.

## Version 0.4.3 [#version-043]

Released in [Apr 2023](https://github.com/ton-blockchain/ton/releases/tag/v2023.04).

**New features:**

* Improved optimization of int constants and unused variables.

**Fixes:**

* Better handling of incorrect inputs: fix UB and prevent crashes on some inputs.
* Analysis of repeat loops.

## Version 0.4.2 [#version-042]

Released in [Mar 2023](https://github.com/ton-blockchain/ton/releases/tag/v2023.03).

**New features:**

* [FunC Mathlib](https://github.com/ton-blockchain/ton/blob/master/crypto/smartcont/mathlib.fc/).

**Fixes:**

* Handling of incorrect integer literal values.

## Version 0.4.1 [#version-041]

Released in [Jan 2023](https://github.com/ton-blockchain/ton/releases/tag/v2023.01).

**New features:**

* Added pragmas for precise control of computation order: [`allow-post-modification`](/llms/languages/func/compiler-directives/content.md) and [`compute-asm-ltr`](/llms/languages/func/compiler-directives/content.md).
* Added legacy tester, a collection of smart-contracts which is used to check whether a compiler update changes compilation results.

**Fixes:**

* Compiler crashes for some exotic inputs.

## Version 0.4.0 [#version-040]

Released in [Jan 2023](https://github.com/ton-blockchain/ton/releases/tag/v2022.12/).

**New features:**

* [`try/catch` statements](/llms/languages/func/statements/content.md).
* [`throw_arg`](/llms/languages/func/built-ins/content.md), [`throw_arg_if`](/llms/languages/func/built-ins/content.md), and [`throw_arg_unless`](/llms/languages/func/built-ins/content.md) functions.
* Support for in-place modification and mass assignment of global variables, e.g., `a~inc()` and `(a, b) = (3, 5)`, where `a` is global.

**Fixes:**

* Disallowed ambiguous modification of local variables after their usage in the same expression. For example, `var x = (ds, ds~load_uint(32), ds~load_unit(64));` is forbidden, while `var x = (ds~load_uint(32), ds~load_unit(64), ds);` is allowed.
* Allowed empty inline functions.
* Fixed a rare optimization bug in `while` loops.

## Version 0.3.0 [#version-030]

Released in [Oct 2022](https://github.com/ton-blockchain/ton/releases/tag/v2022.10/).

**New features:**

* Support for [multiline `asm` statements](/llms/languages/func/asm-functions/content.md).
* Allow duplicate definitions of identical constants and `asm` statements.
* Enable bitwise operations for constants.

## Version 0.2.0 [#version-020]

Released in [Aug 2022](https://github.com/ton-blockchain/ton/releases/tag/v2022.08/).

**New features:**

* Unbalanced `if/else` branches, where some branches return a value while others do not.

**Fixes:**

* FunC incorrectly handles `while(false)` loops [(#377)](https://github.com/ton-blockchain/ton/issues/377/).
* FunC generates incorrect code for `if/else` branches [(#374)](https://github.com/ton-blockchain/ton/issues/374/).
* FunC incorrectly returns from conditions in inline functions [(#370)](https://github.com/ton-blockchain/ton/issues/370/).
* `Asm.fif`: splitting large function bodies incorrectly interferes with inline [(#375)](https://github.com/ton-blockchain/ton/issues/375/).

## Version 0.1.0 [#version-010]

Released in [May 2022](https://github.com/ton-blockchain/ton/releases/tag/v2022.05/).

**New features:**

* [Constants](/llms/languages/func/literals/content.md)
* [Compile-time built-ins](/llms/languages/func/literals/content.md)
* [Semver pragmas](/llms/languages/func/compiler-directives/content.md)
* [Includes](/llms/languages/func/compiler-directives/content.md)

**Fixes:**

* Resolved rare bugs in `Asm.fif`.

## Initial version [#initial-version]

The initial version of FunC was developed by Telegram, but active development stopped after May 2020.
The May 2020 release is referred to as the "initial" version.
