1
0
Fork 0
mirror of https://github.com/ton-blockchain/ton synced 2025-02-13 03:32:22 +00:00
Commit graph

74 commits

Author SHA1 Message Date
tolk-vm
d9dba320cc
[Tolk] Get rid of ~tilda with mutate and self methods
This is a very big change.
If FunC has `.methods()` and `~methods()`, Tolk has only dot,
one and only way to call a `.method()`.
A method may mutate an object, or may not.
It's a behavioral and semantic difference from FunC.

- `cs.loadInt(32)` modifies a slice and returns an integer
- `b.storeInt(x, 32)` modifies a builder
- `b = b.storeInt()` also works, since it not only modifies, but returns
- chained methods also work, they return `self`
- everything works exactly as expected, similar to JS
- no runtime overhead, exactly same Fift instructions
- custom methods are created with ease
- tilda `~` does not exist in Tolk at all
2024-11-02 03:44:14 +04:00
tolk-vm
12ff28ac94
[Tolk] Completely rework stdlib: multiple files and renaming
- split stdlib.tolk into multiple files (tolk-stdlib/ folder)
  (the "core" common.tolk is auto-imported, the rest are
  needed to be explicitly imported like "@stdlib/tvm-dicts.tolk")
- all functions were renamed to long and clear names
- new naming is camelCase
2024-11-02 03:44:13 +04:00
tolk-vm
e2edadba92
[Tolk] v0.6 syntax: fun, import, var, types on the right, etc.
Lots of changes, actually. Most noticeable are:
- traditional //comments
- #include -> import
- a rule "import what you use"
- ~ found -> !found (for -1/0)
- null() -> null
- is_null?(v) -> v == null
- throw is a keyword
- catch with swapped arguments
- throw_if, throw_unless -> assert
- do until -> do while
- elseif -> else if
- drop ifnot, elseifnot
- drop rarely used operators

A testing framework also appears here. All tests existed earlier,
but due to significant syntax changes, their history is useless.
2024-11-02 03:44:13 +04:00
tolk-vm
5a3e3595d6
[Tolk] Compilation pipeline, register global symbols in advance
Since I've implemented AST, now I can drop forward declarations.
Instead, I traverse AST of all files and register global symbols
(functions, constants, global vars) as a separate step, in advance.

That's why, while converting AST to Expr/Op, all available symbols are
already registered.
This greatly simplifies "intermediate state" of yet unknown functions
and checking them afterward.

Redeclaration of local variables (inside the same scope)
is now also prohibited.
2024-11-02 01:33:09 +04:00
tolk-vm
6c30e5a7eb
[Tolk] Embedded stdlib.tolk, CompilerState, strict includes
Several related changes:
- stdlib.tolk is embedded into a distribution (deb package or tolk-js),
  the user won't have to download it and store as a project file;
  it's an important step to maintain correct language versioning
- stdlib.tolk is auto-included, that's why all its functions are
  available out of the box
- strict includes: you can't use symbol `f` from another file
  unless you've #include'd this file
- drop all C++ global variables holding compilation state,
  merge them into a single struct CompilerState located at
  compiler-state.h; for instance, stdlib filename is also there
2024-11-02 01:33:08 +04:00
tolk-vm
f0e6470d0b
[Tolk] Rewrite lexer, spaces are not mandatory anymore
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
2024-11-02 01:33:08 +04:00
tolk-vm
ebbab54cda
[Tolk] Tolk v0.5.0 as FunC v0.5.0 could have been like
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.
2024-11-02 01:33:08 +04:00
tolk-vm
82648ebd6a
[Tolk] Initial commit of TOLK Language: fork all sources from FunC
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.
2024-11-02 01:33:08 +04:00
Victor S.
c1ee18c902
Add state-init option to wallet-v3.fif script (#1282) 2024-10-19 12:34:08 +03:00
Max Mercuriev
c56e65739b
Doclinks that refer to docs.ton.org domain (#1029)
* Correct documentation link

Update moved URL in comments

* Update all doc links
2024-06-27 11:03:16 +03:00
EmelyanenkoK
cf83bd1893
Add note on highload wallet pecularities 2024-01-09 15:49:42 +03:00
EmelyanenkoK
6ddcac68ad
Add notes on mainnet version to config-code 2023-04-10 09:32:49 +03:00
EmelyanenkoK
9b3f9e4ac1 Add Licenses to funC stdlib 2023-03-14 21:29:33 +03:00
EmelyanenkoK
7da30e1e7f
Add PRNG with normal distribution to mathlib.fc (#646)
* Add random with normal distribution

* Fix hex arguments in mathlib testcases
2023-03-13 16:49:30 +03:00
Behrang Norouzinia
16e5433981
Fix bug in docs for storing and loading coins (#617)
Coins are 120-bit integer, not 128-bit.

Co-authored-by: EmelyanenkoK <emelyanenko.kirill@gmail.com>
2023-03-05 14:15:37 +03:00
EmelyanenkoK
d9eb0bbd3b
Add func mathlib (#633) 2023-03-04 19:17:39 +03:00
EmelyanenkoK
3d9a165586
Fix set_seed in stdlib.fc 2022-10-24 20:23:05 +03:00
EmelyanenkoK
b640f06846 Add comments to stdlib 2022-10-06 09:16:44 +03:00
tolya-yanot
313d37e134 auto-dns & manual-dns smartcontracts updated to actual DNS standard version by starlightduck 2022-09-30 12:14:14 +03:00
EmelyanenkoK
f9828a1252 Fix old hash parsing in create-config-proposal.fif 2021-02-09 17:26:26 +03:00
EmelyanenkoK
666576682a Fix non-critical bug in config-code
Wins/losses order is messed up
2021-02-09 17:26:26 +03:00
ton
f064b1047a pow-testgiver support 2020-07-06 17:07:20 +03:00
ton
040df63c98 minor improvements and bugfixes 2020-05-07 10:35:23 +04:00
ton
eecf05ca59 bugfixes + tonlib update 2020-04-30 15:04:47 +04:00
ton
9f008b129f updated submodules, bugfixes
- added new fift/func code for validator complaint creation
- bugfixes in validator
- updates in tonlib
- new versions of rocksdb/abseil
- hardfork support
2020-04-27 16:01:46 +04:00
ton
be9c34c62d bugfixes 2020-04-10 23:06:01 +04:00
ton
cf97f48cd7 error handling in lite client, speed up message dequeue in blocks 2020-04-07 00:08:53 +04:00
ton
dfc040cb00 validator: multiple bugfixes 2020-04-06 15:22:14 +04:00
ton
7efb345e3d remove debug checks to improve performance under load on weak validators 2020-04-05 13:56:24 +04:00
ton
c300b4ff30 bugfix in validator 2020-04-03 18:47:22 +04:00
ton
0e4277313c fixed crash in validator. Updated elector/config smartcontracts 2020-04-02 17:08:42 +04:00
ton
9bff9285b8 bugfix in config sc + docs 2020-04-01 13:07:29 +04:00
ton
4b5dd4525e updated lite-client 2020-03-31 17:11:56 +04:00
ton
4dd5eea11f added support for config change proposals
- added some fift scripts for the config change proposal voting
- added validator-engine-console support for the config change proposal voting
- additional sanity checks in catchain
- unsafe slow catchain resync method
2020-03-30 17:20:45 +04:00
ton
a31f8d4424 bugfixed + crypto update
- compiles vs BoringSSL
- config proposal/vote fift code
- bugfixes in catchain
- other small fixes
2020-03-27 18:59:00 +04:00
ton
9f351fc29f emergency update 2020-03-24 03:32:16 +04:00
ton
5d846e0aaf changed block layout 2020-03-11 20:34:33 +04:00
ton
54c7a4dcc3 updated vm
- updated func/fift
- additional checks in block validator
- docs
- tunnel prototype in ADNL
2020-03-11 14:19:31 +04:00
ton
ba76f1404e vm: bugfixes 2020-03-02 17:52:55 +04:00
ton
dd4ac0f440 vm bugfixes 2020-02-28 18:59:47 +04:00
ton
e27fb1e09c updated vm (breaking compatibility)
- updated vm
- new actor scheduler
- updated tonlib
- updated DNS smartcontract
2020-02-28 14:28:47 +04:00
ton
efd47af432 updated tonlib + fixes in vm 2020-02-20 19:56:18 +04:00
ton
a73d202ba2 updated func and tonlib 2020-02-15 20:03:17 +04:00
ton
493ae2410c rldp-http-proxy: use tonlib
- rldp-http-proxy used TONLib to resolve domains via DNS smartcontract
- updated tonlib
- bugfixes
2020-02-12 00:14:16 +04:00
ton
1de39f5d7c bugfixes + doc update 2020-02-08 23:24:49 +04:00
ton
77842f9b63 updated tonlib
- updated tonlib
- updated validator
- updated documentation
- first version of http over rldp proxy
2020-02-06 21:56:46 +04:00
ton
53ec9684bd updated liteserver
- new methods for liteserver/liteclient
- added ADNL/DHT client-only work mode
- fixed crash in ADNL
2020-02-02 16:53:37 +04:00
ton
acf16718e6 updated func/fift
- updated func/fift
- updated liteclient/liteserver
- bugfixes
2019-12-29 12:14:12 +03:00
ton
d41ce55305 updated fift/func 2019-12-12 19:16:25 +04:00
ton
ceaed40ac4 updated fift + bugfixes 2019-12-05 16:51:51 +04:00