> ## Documentation Index
> Fetch the complete documentation index at: https://companyname-a7d5b98e-consensus-draft.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](/language/func/literals_identifiers#constants/)
* [Extended string literals](/language/func/literals_identifiers#string-literals/)
* [Semver pragmas](/language/func/compiler-directives#pragma-version/)
* [Includes](/language/func/compiler-directives#pragma-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](/language/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](/language/func/statements#try-catch-statements)
* [`throw_arg` functions](/language/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.
