diff --git a/language/func/changelog.mdx b/language/func/changelog.mdx index 02a05bd0..152b6973 100644 --- a/language/func/changelog.mdx +++ b/language/func/changelog.mdx @@ -1,59 +1,66 @@ --- title: "History of FunC" sidebarTitle: "Changelog" -noindex: "true" +noindex: true --- ## 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. +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/). +Released in [2022-05](https://github.com/ton-blockchain/ton/releases/tag/v2022.05/). -**New features:** -- [Constants](/language/func/literals#constants) -- [Extended string literals](/language/func/literals#compile-time-built-ins) -- [Semver pragmas](/language/func/compiler-directives#%23pragma-version) -- [Includes](/language/func/compiler-directives#%23pragma-version) +### New features + +- [Constants](literals#constants) +- [Compile-time built-ins](literals#compile-time-built-ins) +- [`#pragma` version](compiler-directives#pragma-version) +- [Includes](compiler-directives#%23include) + +### Fixes -**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/). +Released in [2022-08](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 -**New features:** -- Unbalanced `if/else` branches, where some branches return a value while others do not. +### Fixes -**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/). +- FunC incorrectly handles `while(false)` loops [(issue #377)](https://github.com/ton-blockchain/ton/issues/377/). +- FunC generates incorrect code for `if/else` branches [(issue #374)](https://github.com/ton-blockchain/ton/issues/374/). +- FunC incorrectly returns from conditions in inline functions [(issue #370)](https://github.com/ton-blockchain/ton/issues/370/). +- `Asm.fif`: splitting large function bodies incorrectly interferes with inline [(issue #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/). +Released in [2022-10](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. +### New features + +- Support for [multi-line `asm` statements](functions#multi-line-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/). +Released in [2023-01](https://github.com/ton-blockchain/ton/releases/tag/v2023.01/). + +### New features + +- [`try/catch` statements](statements#try%E2%80%A6catch-statement) +- [`throw_arg` functions](built-ins#throw-arg) +- Support for in-place modification and mass assignment of global variables, e.g., `a~inc()` and `(a, b) = (3, 5)`, where `a` is global -**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 -**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. +- Disallowed ambiguous modification of local variables after their use in the same expression. For example, `var x = (ds, ds~load_uint(32), ds~load_uint(64));` is forbidden, while `var x = (ds~load_uint(32), ds~load_uint(64), ds);` is allowed. - Allowed empty inline functions. - Fixed a rare optimization bug in `while` loops.