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.
New features:
Fixes:
- Resolved rare bugs in
Asm.fif.
Version 0.2.0
Released in Aug 2022.
New features:
- Unbalanced
if/elsebranches, where some branches return a value while others do not.
Fixes:
- FunC incorrectly handles
while(false)loops (#377). - FunC generates incorrect code for
if/elsebranches (#374). - FunC incorrectly returns from conditions in inline functions (#370).
Asm.fif: splitting large function bodies incorrectly interferes with inlining (#375).
Version 0.3.0
Released in Oct 2022.
New features:
- Support for multiline
asmstatements. - Allow duplicate definitions of identical constants and
asmstatements. - Enable bitwise operations for constants.
Version 0.4.0
Released in Jan 2023.
New features:
try/catchstatementsthrow_argfunctions- Support for in-place modification and mass assignment of global variables, e.g.,
a~inc()and(a, b) = (3, 5), whereais 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_uint(64));is forbidden, whilevar x = (ds~load_uint(32), ds~load_uint(64), ds);is allowed. - Allowed empty inline functions.
- Fixed a rare optimization bug in
whileloops.
Was this article useful?