A new lexer is noticeably faster and memory efficient
(although splitting a file to tokens is negligible in a whole pipeline).
But the purpose of rewriting lexer was not just to speed up,
but to allow writing code without spaces:
`2+2` is now 4, not a valid identifier as earlier.
The variety of symbols allowed in identifier has greatly reduced
and is now similar to other languages.
SrcLocation became 8 bytes on stack everywhere.
Command-line flags were also reworked:
- the input for Tolk compiler is only a single file now, it's parsed, and parsing continues while new #include are resolved
- flags like -A -P and so on are no more needed, actually
As it turned out, PSTRING() created a buffer of 128K.
If asm_code exceeded this buffer, it was truncated.
I've just dropped PSTRING() from there in favor of std::string.
All changes from PR "FunC v0.5.0":
https://github.com/ton-blockchain/ton/pull/1026
Instead of developing FunC, we decided to fork it.
BTW, the first Tolk release will be v0.6,
a metaphor of FunC v0.5 that missed a chance to occur.
The Tolk Language will be positioned as "next-generation FunC".
It's literally a fork of a FunC compiler,
introducing familiar syntax similar to TypeScript,
but leaving all low-level optimizations untouched.
Note, that FunC sources are partially stored
in the parser/ folder (shared with TL/B).
In Tolk, nothing is shared.
Everything from parser/ is copied into tolk/ folder.
* add ton build on mac-15 gh action
* rename action titles
* fix https://github.com/ton-blockchain/ton/issues/1246
* improve artifacts' stripping
* improve artifacts' stripping
* use strip -xSX on mac on github runner
* use strip -xSX on mac on github runner + sudo
* Parallel write in celldb
* Add TD_PERF_COUNTER to gc_cell and store_cell
* More error handling
* Tests for prepare_commit_async
* Install g++11 for ubuntu 20.04
---------
Co-authored-by: SpyCheese <mikle98@yandex.ru>
* Persistent state download improvements
1) Don't start over on restart
2) Download shards one at a time to reduce RAM usage
3) More logs
* Remove old peers from adnl stats
* Remove unneeded "wait_neighbours_not_empty"
* Fix "round_started_at" for the first round
* Fix use after move in overlay.cpp
* Move "last gc masterchain state" stat to CellDbIn::prepare_stats
* Fix disabling state serializer
* getactorstats query for validator-engine-console
* celldb in-memory mode (--celldb-in-memory option)
* rldp2: bugfix - do not estimate speed while nothing is sent
* add simple ed25519 benchmark
* fix compilation errors of different platforms and move to c++20
* fix some warnings
* turn on TON_USE_ABSEIL for glibc 2.27 nix build
---------
Co-authored-by: birydrad <>
* Validator improvements
* Fix cancelling state serialization
* Disable state serializer on all mainnet validators
* Flag --catchain-max-block-delay-slow
* Set default catchain-max-block-delay to 0.4, delay-slow to 1.0
---------
Co-authored-by: SpyCheese <mikle98@yandex.ru>