Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 36 additions & 29 deletions language/func/changelog.mdx
Original file line number Diff line number Diff line change
@@ -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.