Skip to main content

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. New features: Fixes:
  • Resolved rare bugs in Asm.fif.

Version 0.2.0

Released in Aug 2022. New features:
  • Unbalanced if/else branches, where some branches return a value while others do not.
Fixes:
  • FunC incorrectly handles while(false) loops (#377).
  • FunC generates incorrect code for if/else branches (#374).
  • FunC incorrectly returns from conditions in inline functions (#370).
  • Asm.fif: splitting large function bodies incorrectly interferes with inline (#375).

Version 0.3.0

Released in Oct 2022. New features:
  • Support for multiline asm statements.
  • Allow duplicate definitions of identical constants and asm statements.
  • Enable bitwise operations for constants.

Version 0.4.0

Released in Jan 2023. New features: 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.4.1

Released in Jan 2023. New features:
  • Added pragmas for precise control of computation order: allow-post-modification and compute-asm-ltr.
  • 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.2

Released in Mar 2023. New features: Fixes:
  • Handling of incorrect integer literal values.

Version 0.4.3

Released in Apr 2023. 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.4

Released in May 2023. New features:
  • Better error-handling.
Fixes:
  • catch stack recovery.

Version 0.4.5

Released in Oct 2024. Fixes:

Version 0.4.6

Released in Dec 2024. Fixes:
  • try/catch handling.
  • Pure flag for functions stored in variables.