This is happening today.
I managed not only to finish up the compiler, but also to migrate standard contracts from FunC to Tolk.
I covered every contract with gas metrics to check whether it's more efficient than FunC or not. I didn't believe my eyes. I double-checked, triple-checked, but nothing changed. The results are correct. And now I am ready to present them to you.
🧪 Benchmarks!
Every contract has several metrics. For example, "basic jetton — mint".
FunC: 19278. Tolk: 11611.
Gas savings: -39.77%
|————————————————–-
| 01 — Jetton (mint, transfer, burn, discover)
| -39.77% | -30.32% | -33.66% | -26.75%
|————————————————–-
| 02 — NFT (deploy, transfer, onchain get)
| -43.79% | -37.47% | -44.28%
|————————————————–-
| 03 — Notcoin
| -35.72% | -27.98% | ...
|————————————————–-
| 04 — tgBTC
| -23.94% | -26.99% | ...
|————————————————–-
| 05 — Wallet v5
| -21.66% | -22.92% | ...
|————————————————–-
| 06 — Vesting
| -45.30% | -29.61% | ...
|————————————————–-
| 07 — Telegram gifts
| -54.81% | -39.39% | ...
|————————————————–-
I have migrated 7 contracts — preserving the original behavior and passing the same tests.
All benchmarks are open. No cheating. Just a smart compiler — and a language designed to be optimized.
— Even wallet?! But it's very low-level and tricky!
Even wallet. You just express your thoughts without any tricks — and it works automatically.
— But how? How is it possible to achieve such numbers?
Of course, I've put a lot of smartness into the compiler. A strong type system. Automatic inlining. Built-in serialization. The magic
lazy keyword.But first of all, Tolk is built for readability. These contracts aren't "just cleaner" than their FunC equivalents — they're elegant. No magic. No low-level intrigues. Just clean, consistent logic — whether it's a Jetton or a Wallet.
And gas savings? They are a consequence. I didn't micro-optimize. Each contract was rewritten in about a day — just focusing on clarity. The core principle is simple: once you make it elegant, it automatically becomes efficient.
✅ Notable changes in Tolk v1.0:
1. Lazy loading — only read what you actually use
2. AST-based inlining — zero-cost getters and methods
3. Peephole optimizations, TVM-11 — smaller code, lower gas
PR on GitHub with detailed info.
Just take a look:
val st = lazy Storage.load();
// the compiler skips everything and loads only what you access
return st.publicKey;
That's it. Lazy loading and partial updates (calculating immutable slices for writing) — one magic
lazy keyword to rule them all.⚙️ The Release. What's inside
- JetBrains IDE plugin — with completion, resolving, etc... ✓ done
- VS Code Extension — with suggestions, stdlib integration, etc... ✓ done
- Language server — for any LSP-compatible editor... ✓ done
- FunC-to-Tolk converter — migrate a project in 10 seconds... ✓ done
- Documentation — for smooth transition from FunC... ✓ done
And the TOLK language itself — exactly as I've visioned it... 7 months ago
📅 The essence of Numbers
At this moment, abstract yourself from the text. Take a look at the calendar.
Today is 07/07/25 (I mean 2+5, of course).
After the TON Gateway, throughout all November, I was laying out the roadmap towards Tolk v1.0. On December 1, I started working. It means, that the journey till now took exactly 7 months 7 days. If you scroll this channel to the top, you'll see an announcement... Of Tolk v0.7
🪐 What's next?
I could have written about my plans — for the language, TVM, ABI, TypeScript wrappers... but I won't.
Because today, instead of rushing into the future, maybe we can allow ourselves to look back.
To pause the endless race — just for a moment.
To notice how many beautiful coincidences pass us by — unnoticed in our constant hurry.
Just step outside.
Close your eyes.
Count to seven.
Feel it.
When you're ready —
Let's Tolk






