They work alongside Lisp-style ;; and {--}, without any #pragma.
Conceptually, a new syntax should be disabled by default
and activated using a special compiler option.
But now, we don't have an easy way to provide compiler options
in func-js, blueprint, etc.
Note, that introducing per-file #pragma is a wrong approach here,
since if we want to fire human-readable error on using '//' without pragma,
lexer should nevertheless work differently.
(this could be controlled by a launch option, but see above)
@code_hash to match (boc) hash of compiled.fif against expected.
While being much less flexible than @fif_codegen, it nevertheless
gives a guarantee of bytecode stability on compiler modifications.
This will allow to easily implement camelCase wrappers aside stdlib,
even without changing hashes of existing contracts.
Also, stdlib renamings could be easily performed in the same manner,
even with arguments reordered.
* @fif_codegen to match compiled.fif against an expected pattern
* @fif_codegen_avoid to ensure compiled.fif doesn't contain a substring
* both in Python and JS run_tests
* consider tests/codegen_check_demo.fc for examples
* fully refactor run_tests.py, make it extensible for the future
* an ability to write @compilation_should_fail tests
* an ability to launch run_tests.py for a single .fc file
* keep run_tests.js in sync with run_tests.py
* extract legacy_tests names/hashes to a separate file
shared between legacy_tester.py and legacy_tester.js
* Fix "sgn" in fift; fix marking infinite loops as noterurn in func
* TON-P1-1: Remove unused catchain queries
* TON-P1-15: Avoid synchronization with self
* TON-P1-3, TON-P1-17: Disallow more than one candidate per src per round (to prevent flood), add checks to process_broadcast
* TON-P1-10: Fix fast/slow attempts
* TON-P1-14: Add named constants
* TON-P1-18, TON-P1-19: Alloc temporary memory in the same way as persistent memory
* TON-P1-20: Add comment to choose_blocks_to_approve
* TON-P1-16: Avoid creating two catchain blocks on need_new_block
* TON-P1-8: Add some validation to validator-engine parameters
* TON-P1-6: Don't allow sending the same block many times
Many requests for the same block are not unusual (however, there's no need to answer them all)
* TON-P1-2: Enable prohibiting dependencies from blamed nodes (2.7.5 in CatChain doc), fix processing blame proofs
* Best practices
bp-6: Fix incorrect warning
bp-7: Remove unused code
bp-8: Bring back PerfWarningTimer logging (only when no callback)
bp-9: Remove unnecessary condition
bp-11: Remove commented-out code
bp-13: Divide code in validator-session-state
Adherence to Specification: Fix typo
* Fix UB in func
* Improve optimizing int consts and unused variables in FunC
* Bump funC version to 0.4.3
* Fix analyzing repeat loop
---------
Co-authored-by: SpyCheese <mikle98@yandex.ru>
* FunC pragmas: allow-post-modification and compute-asm-ltr
* Warn if #pragma is enabled only in included files
* Add tests for new pragmas
* Add special ops for "allow-post-modification" only when needed
* Update FunC version to 0.4.1
* Allow empty inlines (#10)
Co-authored-by: SpyCheese <mikle98@yandex.ru>
* Fixed complex funC setglob cases
* Forbid modifying local variables after using them in the same tensor
* Fix analyzing "while" in func
* Update funC version (#9)
* Update stress tester
* Fix using variable after move
Co-authored-by: krigga <krigga7@gmail.com>
Co-authored-by: SpyCheese <mikle98@yandex.ru>
* Add ~strdump and STRDUMP TVM OP
Add ~strdump and STRDUMP TVM OP
Add ~strdump and STRDUMP TVM OP
* STRDUMP fixes
Co-authored-by: Andrey Tvorozhkov <andrey@h-labs.ru>
* Don't use IFJMP/IFNOTJMP in inline functions
* Fix incorrect ifelse branch code generation
https://github.com/ton-blockchain/ton/issues/374
* Make generate_code_all clearer
* Don't replace IFJMP with IF in inner blocks in inline functions
* Allow unbalance if/else by using RETALT
* Fix wrong PUSHCONT
* Bugfix in IF code generation for inline functions
* Fix unbalanced if/else
* Bugfix and improvements in code generation
* Fix analyzing while(0) in func
https://github.com/ton-blockchain/ton/issues/377
* FunC and Asm.fif: Fix inlining large functions
https://github.com/ton-blockchain/ton/issues/375
Co-authored-by: SpyCheese <mikle98@yandex.ru>
* Add special string literals "..."? (s,a,u,h,)
* Add string literal H (256-bit hash)
* Add string literal c (crc32)
* Use td::hex_encode instead of homebrew function and add test
* Fix error codes and use more generic address
* Add support for int and slice constants
* Add support for strongly typed constants
* Add support for precompiled constant expressions (hard!)
Co-authored-by: starlightduck <starlightduck@gmail.com>
Usage:
func.exe -V
adnl-pong -V
validator-engine -V
and so on.
Result will be shown in the following format:
Func build information: [ Commit: d8b751d7a5, Date: 2021-02-27 14:34:41 +0200]