> ## Documentation Index
> Fetch the complete documentation index at: https://companyname-a7d5b98e-add-how-to-burning.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# History of FunC

## Initial version

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

## Version 0.1.0

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

**New features:**

* [Constants](/languages/func/literals#constants)
* [Extended string literals](/languages/func/literals#compile-time-built-ins)
* [Semver pragmas](/languages/func/compiler-directives#%23pragma-version)
* [Includes](/languages/func/compiler-directives#%23pragma-version)

**Fixes:**

* Resolved rare bugs in `Asm.fif`.

## Version 0.2.0

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.3.0

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

**New features:**

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

## Version 0.4.0

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

**New features:**

* [`try/catch` statements](/languages/func/statements#try-catch-statements)
* [`throw_arg` functions](/languages/func/built-ins#throwing-exceptions)
* 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.
