
Tact Kitchen
🧑🍳 Peek behind the scenes and into the steaming pot of hot updates to Tact compiler, tooling, documentation and ecosystem
⚡️ You know what's cooking — Tact!
⌨️ Sources: github.com/tact-lang
👉 t.me/boost/tact_kitchen
Brought to you by the Tact team
⚡️ You know what's cooking — Tact!
⌨️ Sources: github.com/tact-lang
👉 t.me/boost/tact_kitchen
Brought to you by the Tact team
TGlist рейтинг
0
0
ТипАчык
Текшерүү
ТекшерилбегенИшенимдүүлүк
ИшенимсизОрду
ТилиБашка
Канал түзүлгөн датаЧерв 07, 2024
TGlistке кошулган дата
Серп 18, 2024Тиркелген топ
"Tact Kitchen" тобундагы акыркы жазуулар
17.04.202510:36
🎉 Tact v1.6.6 is released!
The final patch release of this v1.6 series is upon us, and it brings a significant tooling improvement, amongst other things. Meet the official Tact formatter — a new tool that ensures consistent code style across your Tact projects. It ships with Tact v1.6.6, and you can run it in your projects via
The v1.6.* series of patches has been a journey of refinement and polish, setting the stage for what's coming next. As we close this chapter, we're already working hard on exciting new features for the future.
For now, let's explore the Tact v1.6.6 release:
🧰 Standard library additions and changes
• Added compute phase exit code constants reserved by the Tact compiler, such as
• Added the SignedBundle struct and the corresponding verifySignature method.
• Added
• Optimized the
🛠 Bug fixes
There were a lot of those. Remember that last time we started fuzzing the compiler with LLMs to root out bugs? Well, we found many bugs that way and fixed even more — many error messages got way more informative and useful. Some bug fixes allowed for seemingly unrelated UX improvements too.
One nice example of a second-order fix would be that the
See the full release notes for a long list of bugs squished and error messages improved.
✍️ Documentation updates
• Added a "Learn Tact in Y minutes" page, which gives a whirlwind code-first tour of the Tact language.
• Any AI vibe coders out there? The docs now generate
• The "gas best practices" page got updated with new recommendations, such as specialized math functions or the
• Lots of examples fixed, with more fixes to arrive as we speak.
🧳 Formatter!
You can run it via
Furthermore, it also ships with our official language server and VSCode extensions. See the tact-language-server's README.md for installation details.
📜 See the full release notes for Tact v1.6.6
📥 And upgrade Tact in your projects
In about 4 days from now, on April 21 at 12:00 (UTC+3), the Tact Smart Battle will begin! It is the ultimate smart contract challenge powered by Tact and organized by TON Studio & Codeforces. The prize pool is $20,000 in Toncoin, and the top 128 participants will receive exclusive Soulbound Tokens (SBTs). Moreover, the best battlers will be invited for job interviews at TON Studio.
And all participants with valid solutions would also receive a Participant SBT.
👉 Register, if not already: Codeforces
• Here's the registration guide, just in case: Notion
• Hop in the community chat to ask questions, receive support and have fun learning and using Tact: @tact_smart_battle
🍲 flint and tact
♨️ @tact_kitchen from the @ton_studio
The final patch release of this v1.6 series is upon us, and it brings a significant tooling improvement, amongst other things. Meet the official Tact formatter — a new tool that ensures consistent code style across your Tact projects. It ships with Tact v1.6.6, and you can run it in your projects via
npx tact-fmt
or by invoking a format command in your editor. You'd need to install the Tact's language server or the VSCode extension for that — see the tact-language-server repo for details.The v1.6.* series of patches has been a journey of refinement and polish, setting the stage for what's coming next. As we close this chapter, we're already working hard on exciting new features for the future.
For now, let's explore the Tact v1.6.6 release:
🧰 Standard library additions and changes
• Added compute phase exit code constants reserved by the Tact compiler, such as
TactExitCodeNullReferenceException
(128) and many others.• Added the SignedBundle struct and the corresponding verifySignature method.
• Added
sendRawMessage
and sendRawMessageReturnForwardFee
functions as replacements for their deprecated counterparts.• Optimized the
sha256()
function to about ~270 less gas used per call and added the keccak256()
function that works with arbitrarily long slices.🛠 Bug fixes
There were a lot of those. Remember that last time we started fuzzing the compiler with LLMs to root out bugs? Well, we found many bugs that way and fixed even more — many error messages got way more informative and useful. Some bug fixes allowed for seemingly unrelated UX improvements too.
One nice example of a second-order fix would be that the
require()
function now supports constants as its second parameter. You no longer need to provide identical string literals everywhere — define a string constant somewhere and reuse it!See the full release notes for a long list of bugs squished and error messages improved.
✍️ Documentation updates
• Added a "Learn Tact in Y minutes" page, which gives a whirlwind code-first tour of the Tact language.
• Any AI vibe coders out there? The docs now generate
llms.txt
, llms-full.txt
and llms-small.txt
files for you to use with your AIs. The small version is particularly interesting as it fits in the 200k context.• The "gas best practices" page got updated with new recommendations, such as specialized math functions or the
BasechainAddress
struct and related functions.• Lots of examples fixed, with more fixes to arrive as we speak.
🧳 Formatter!
You can run it via
npx tact-fmt
in your projects — it supports checking the formatting via the --check
flag, applying fixes via the --write
flag, and can check both individual files and directories of files.Furthermore, it also ships with our official language server and VSCode extensions. See the tact-language-server's README.md for installation details.
📜 See the full release notes for Tact v1.6.6
📥 And upgrade Tact in your projects
In about 4 days from now, on April 21 at 12:00 (UTC+3), the Tact Smart Battle will begin! It is the ultimate smart contract challenge powered by Tact and organized by TON Studio & Codeforces. The prize pool is $20,000 in Toncoin, and the top 128 participants will receive exclusive Soulbound Tokens (SBTs). Moreover, the best battlers will be invited for job interviews at TON Studio.
And all participants with valid solutions would also receive a Participant SBT.
👉 Register, if not already: Codeforces
• Here's the registration guide, just in case: Notion
• Hop in the community chat to ask questions, receive support and have fun learning and using Tact: @tact_smart_battle
🍲 flint and tact
♨️ @tact_kitchen from the @ton_studio
Кайра бөлүшүлгөн:
TON Contests

15.04.202509:04
🧠 Tact Smart Battle 🤜
Join the ultimate smart contract challenge powered by Tact, organized by TON Studio & Codeforces
🏅 Prize Pool — $20,000 in Toncoin!
🎯 Challenge Tasks:
1. Simple Voting — basic voting system.
2. Serial Voting — multiple proposals via a master contract.
3. Scalable Voting — support up to 4 billion voters.
4. Voting with Refunds — refunds to voters.
5. Gas-Managed Voting — fully optimized contracts.
🏆 Rewards:
- Top 128 participants share the prize pool and receive exclusive Soulbound Tokens (SBTs).
- All participants with valid solutions also receive a Participant SBT.
- SBTs include embedded on-chain developer reputation.
⭐️ Additional Perks:
- Top participants will be invited for job interviews at TON Studio.
⏰ Duration: 7 days
🗓️ Start Date: April 21, 12:00 (UTC+3)
🛑 Deadline: April 28, 12:00 (UTC+3)
Registration:
👉 Challenge Link (Codeforces)
Registration guide:
👉 Notion link
Community & Support:
👉 Telegram Challenge Chat
Good luck and may your contracts be efficient and bug-free! 🚀🔥
Join the ultimate smart contract challenge powered by Tact, organized by TON Studio & Codeforces
🏅 Prize Pool — $20,000 in Toncoin!
🎯 Challenge Tasks:
1. Simple Voting — basic voting system.
2. Serial Voting — multiple proposals via a master contract.
3. Scalable Voting — support up to 4 billion voters.
4. Voting with Refunds — refunds to voters.
5. Gas-Managed Voting — fully optimized contracts.
🏆 Rewards:
- Top 128 participants share the prize pool and receive exclusive Soulbound Tokens (SBTs).
- All participants with valid solutions also receive a Participant SBT.
- SBTs include embedded on-chain developer reputation.
⭐️ Additional Perks:
- Top participants will be invited for job interviews at TON Studio.
⏰ Duration: 7 days
🗓️ Start Date: April 21, 12:00 (UTC+3)
🛑 Deadline: April 28, 12:00 (UTC+3)
Registration:
👉 Challenge Link (Codeforces)
Registration guide:
👉 Notion link
Community & Support:
👉 Telegram Challenge Chat
Good luck and may your contracts be efficient and bug-free! 🚀🔥
12.04.202512:48
📣 DivaTech is organizing a Tact competition tomorrow: https://t.me/tactlang/59471
Кайра бөлүшүлгөн:
nowarp | TON Security

08.04.202505:55
🎉 Misti 0.8 has just landed on NPM!
⚡️ More Detectors: New detectors to find possible optimizations introduced in Tact 1.6: SuboptimalSend, PreferBinaryReceiver, PreferSenderFunction, ImplicitOpcode and SuboptimalCellOperation.
⚙️ Improved Integrability: Standartized JSON output for smoother integration.
👩💻 LSP Actions Support: Misti now provides API for LSP code actions, introducing quickfix suggestions for some detectors.
🔧 Fixes & Enhancements: Check out the full changelog.
⚡️ More Detectors: New detectors to find possible optimizations introduced in Tact 1.6: SuboptimalSend, PreferBinaryReceiver, PreferSenderFunction, ImplicitOpcode and SuboptimalCellOperation.
⚙️ Improved Integrability: Standartized JSON output for smoother integration.
👩💻 LSP Actions Support: Misti now provides API for LSP code actions, introducing quickfix suggestions for some detectors.
🔧 Fixes & Enhancements: Check out the full changelog.
29.03.202514:13
🎉 Tact v1.6.5 is released!
Back with another round of refinements! While we're working on many exciting things in the background, we're committed to fixing every bug that the community might discover so that Tact can provide a flawless developer experience.
Furthermore, we now actively employ AI and large language model (LLM) fuzzing techniques, such as documentation-driven approaches where LLMs are given only the Tact language documentation and access to the compiler. Then, LLM agents generate potentially problematic code snippets, compile them, and analyze results. They further iterate and provide new, interesting bug reports — resolving those makes both Tact compiler and Tact documentation better at the same time!
Check out this awesome article from one of the team members to learn more: Documentation-Driven Compiler Fuzzing with Large Language Models.
And now, let's see what's new in Tact v1.6.5, starting with the most prominent part of this patch release:
🛠 Bug fixes
• Ternary operator
• New parser now properly handles the code that wasn't completed at the end of the file
• The error for assembly functions and the
• Now, when you call the
• Improper whitespace between the operator and the equals sign is no longer allowed
• The
• Get methods now can return an optional contract state
• The
• The wildcard symbol
• The contract's state is now properly saved on early
🧳 Miscellaneous improvements
• Whenever you access
• The
• The
• The
📜 See the full release notes for Tact v1.6.5
📥 And upgrade Tact in your projects
LLMs are great, but we value our community no less. It's great being around a bunch of talented, passionate, and bright engineers who make a future of safe and scalable ⚡️ Tact smart contracts on TON possible for everyone. Thank you for everything you do and for the feedback you give!
A special shoutout goes to the RSquad team @rsquadlife for their early adoption of Tact features, thoughtful suggestions, and bug reports. If punk were code, they'd be its maintainers 🤘
🍲 ghibli deez bugs
♨️ @tact_kitchen from the @ton_studio
Back with another round of refinements! While we're working on many exciting things in the background, we're committed to fixing every bug that the community might discover so that Tact can provide a flawless developer experience.
Furthermore, we now actively employ AI and large language model (LLM) fuzzing techniques, such as documentation-driven approaches where LLMs are given only the Tact language documentation and access to the compiler. Then, LLM agents generate potentially problematic code snippets, compile them, and analyze results. They further iterate and provide new, interesting bug reports — resolving those makes both Tact compiler and Tact documentation better at the same time!
Check out this awesome article from one of the team members to learn more: Documentation-Driven Compiler Fuzzing with Large Language Models.
And now, let's see what's new in Tact v1.6.5, starting with the most prominent part of this patch release:
🛠 Bug fixes
• Ternary operator
?:
now correctly works with structs and null
values• New parser now properly handles the code that wasn't completed at the end of the file
• The error for assembly functions and the
get
attribute is now correctly shown• Now, when you call the
dump()
function with an argument of the unsupported StringBuilder
type, the error will always be shown even if the debug mode is disabled• Improper whitespace between the operator and the equals sign is no longer allowed
• The
&&=
and ||=
augmented assignment operators are now properly short-circuited• Get methods now can return an optional contract state
• The
Struct.fromSlice()
, Message.fromSlice()
, and similar functions now work properly if the slice has been parsed entirely and the last field of the struct had the serialization annotation as remaining
• The wildcard symbol
_
is prohibited for struct and message struct fields, function names, contract, and trait names• The contract's state is now properly saved on early
return
statements in the receiver functions🧳 Miscellaneous improvements
• Whenever you access
context().sender
, it now calls the sender()
function instead to optimize the gas usage• The
internalExternalReceiversOutsideMethodsMap
option and its respective receiver order optimization were reworked to ensure compatibility with explorers and user wallets• The
SendPayGasSeparately
constant was deprecated in favor of SendPayFwdFeesSeparately
— they're functionally identical, but the latter better expresses the intent and action that this optional flag makes when sending messages• The
Stoppable
trait now throws the exit code 133 instead of the exit code generated by the require()
function from the "Contract stopped" message📜 See the full release notes for Tact v1.6.5
📥 And upgrade Tact in your projects
LLMs are great, but we value our community no less. It's great being around a bunch of talented, passionate, and bright engineers who make a future of safe and scalable ⚡️ Tact smart contracts on TON possible for everyone. Thank you for everything you do and for the feedback you give!
A special shoutout goes to the RSquad team @rsquadlife for their early adoption of Tact features, thoughtful suggestions, and bug reports. If punk were code, they'd be its maintainers 🤘
🍲 ghibli deez bugs
♨️ @tact_kitchen from the @ton_studio


19.03.202506:55
🤫 Psst, there's one more thing. Rumor has it that Tact v1.6 allowed PixelSwap to reduce transaction fees by a factor of three.
It’s a nice one, PixelSwap, let’s BUIDL more stuff 🫡
https://t.me/PixelSwap_io/119
🍲 where would you spend the saved gas?
♨️ @tact_kitchen by the @ton_studio
It’s a nice one, PixelSwap, let’s BUIDL more stuff 🫡
https://t.me/PixelSwap_io/119
🍲 where would you spend the saved gas?
♨️ @tact_kitchen by the @ton_studio
19.03.202506:43
🎉 Tact v1.6.3 and v1.6.4 are released!
We're back with some quality-of-life improvements! I cannot promise there won't be another patch release before the next big one — that's because we're working on something really enticing in the background and would like you to continue receiving updates in the meantime.
Now, this isn't a dual release per se. It's just that the post for v1.6.3 got lost in the river of time... Kidding! The two patches are simply very connected since we wanted to ensure that v1.6.4 acknowledges the possible gaps in v1.6.3.
Let's unfold the v1.6.3 and v1.6.4 at once:
🛠 Bug fixes
• In the compilation report, TL-B for
• Parameter reordering optimization is now only applied to single-parameter
• The
✍️ Documentation updates
• Deprecated
• ⛽️ Added gas best practices page, go check it out to reduce gas usage of your contracts: Gas best practices.
• 🎁 Enhanced the TypeScript wrappers produced by Tact compiler, and documented how to use the new exit code and opcode records: Interacting with TypeScript wrappers.
• Added missing reference docs and fixed many descriptions and links throughout the standard library.
• Made a significant change to the Reference section: removed the
🧳 Miscellaneous improvements
• Added
• Added the
• Further decreased gas usage of contracts with some special cases of binary and fallback
• The old parser is finally removed. As a user of the compiler, you shouldn't notice a thing, but if something misparses or behaves weirdly in terms of syntax — please notify us in the chat or by opening an issue and providing a minimal reproducible example.
📜 See the full release notes for Tact v1.6.3 and Tact v1.6.4
📥 And upgrade Tact in your projects
🍲 spinning cat be like: u-ii-tact-i, ou-iii-tact-i
♨️ @tact_kitchen from the @ton_studio
We're back with some quality-of-life improvements! I cannot promise there won't be another patch release before the next big one — that's because we're working on something really enticing in the background and would like you to continue receiving updates in the meantime.
Now, this isn't a dual release per se. It's just that the post for v1.6.3 got lost in the river of time... Kidding! The two patches are simply very connected since we wanted to ensure that v1.6.4 acknowledges the possible gaps in v1.6.3.
Let's unfold the v1.6.3 and v1.6.4 at once:
🛠 Bug fixes
• In the compilation report, TL-B for
Address?
is not Maybe Address
, but plain Address
. This is a temporary measure until the Address
type is reworked to allow not just the addr_std
scheme, but also the addr_none
, addr_var
and addr_extern
.• Parameter reordering optimization is now only applied to single-parameter
asm
extension functions, to avoid confusion when performing multiple mutation operations on arguments.• The
postinstall
script has been removed from Tact's package.json
so that Node.js package managers won't unexpectedly trip on it when you try to upgrade or reinstall the compiler in your projects.✍️ Documentation updates
• Deprecated
Deployable
and FactoryDeployable
traits in favor of null
message body receive()
, with or without a call to the new cashback()
function at your discretion.• ⛽️ Added gas best practices page, go check it out to reduce gas usage of your contracts: Gas best practices.
• 🎁 Enhanced the TypeScript wrappers produced by Tact compiler, and documented how to use the new exit code and opcode records: Interacting with TypeScript wrappers.
• Added missing reference docs and fixed many descriptions and links throughout the standard library.
• Made a significant change to the Reference section: removed the
core-common
and core-advanced
pages, and distributed their contents across other libraries, such as: core-crypto
, core-contextstate
, core-send
, core-gas
, and core-addresses
.🧳 Miscellaneous improvements
• Added
forceBasechain()
and forceWorkchain()
functions.• Added the
internalExternalReceiversOutsideMethodsMap
config option as part of optimization options to prevent the contracts from being incorrectly recognized by some explorers and user wallets.• Further decreased gas usage of contracts with some special cases of binary and fallback
Slice
receivers. This is relevant mainly for Jettons, but other contracts could benefit from this, too.• The old parser is finally removed. As a user of the compiler, you shouldn't notice a thing, but if something misparses or behaves weirdly in terms of syntax — please notify us in the chat or by opening an issue and providing a minimal reproducible example.
📜 See the full release notes for Tact v1.6.3 and Tact v1.6.4
📥 And upgrade Tact in your projects
🍲 spinning cat be like: u-ii-tact-i, ou-iii-tact-i
♨️ @tact_kitchen from the @ton_studio


07.03.202505:34
🎉 Tact v1.6.2 is released!
Release a day keeps the sanitarians away.
Seriously though, before we commit to the next big release, refining rough edges and adding useful things to the standard library is always nice without making you wait for them for long. To discover such points of improvement, we actively collect feedback that we see in Tact chats and that we receive from the teams that actively use Tact in production.
We're not yet done with all the suggestions, so apart from this release, there are plans to make at least one more patch release with possible bug fixes and additions to the standard library.
❤️ All constructive feedback is welcome — let's enjoy writing ⚡️ Tact together!
On that note, let's quickly unpack the v1.6.2:
🛠 Bug fixes
• An empty
• Compiler no longer screams at you if the message struct becomes small enough to fit into the 224 bits and does not require an explicit
• Contract constructors are now public in TypeScript wrappers.
• Now, if getters do not have explicit method ID overrides in Tact code, they are called by their name and not their numeric IDs in the generated TypeScript wrappers. This change restores the pre-1.6.0 behavior that was important for compatibility with some third-party tools that do not support calling getters by their method IDs.
• Compiler upgrades via
🧰 Standard library additions and changes
• Doc comments, doc comments everywhere! They're especially fun to use with the language server, see more info on that below.
• Added
📜 See the full release notes for Tact v1.6.2
📥 And upgrade Tact in your projects
The alpha testing for the new TON Studio's official Tact language server continues. Have you tried it? It also has a neat VSCode extension and an extension for VSCode-based editors!
Here's a quick rundown of their features:
• Semantic syntax highlighting
• Code completion with auto import, postfix completion, snippets, and import completion
• Go to definition, implementation, type definition
• Find all references, workspace symbol search, symbol renaming
• Types and documentation on hover
• Inlay hints for types, parameter names, and more
• On-the-fly inspections with quick fixes
• Signature help inside calls, and actions for initOf and struct initialization
• Lenses with implementation/reference counts
• Gas estimates for assembly functions
• Commands for building and testing projects based on Blueprint and tact-template
• Integration with Tact compiler and Misti static analyzer
Sounds exciting? Install it and tell us what needs improvement — the language server is quite new, but it matures very fast!
🍲 please try to enjoy each release equally
♨️ @tact_kitchen from the @ton_studio
Release a day keeps the sanitarians away.
Seriously though, before we commit to the next big release, refining rough edges and adding useful things to the standard library is always nice without making you wait for them for long. To discover such points of improvement, we actively collect feedback that we see in Tact chats and that we receive from the teams that actively use Tact in production.
We're not yet done with all the suggestions, so apart from this release, there are plans to make at least one more patch release with possible bug fixes and additions to the standard library.
❤️ All constructive feedback is welcome — let's enjoy writing ⚡️ Tact together!
On that note, let's quickly unpack the v1.6.2:
🛠 Bug fixes
• An empty
init()
function is no longer implicitly added when empty contract parameters are declared. This is done to save gas and storage, and it is backward compatible with the lazy initialization that Tact offered as the sole data initialization mechanism before v1.6.0.• Compiler no longer screams at you if the message struct becomes small enough to fit into the 224 bits and does not require an explicit
bounced
constructor. That was a noisy warning, and it's much better without it.• Contract constructors are now public in TypeScript wrappers.
• Now, if getters do not have explicit method ID overrides in Tact code, they are called by their name and not their numeric IDs in the generated TypeScript wrappers. This change restores the pre-1.6.0 behavior that was important for compatibility with some third-party tools that do not support calling getters by their method IDs.
• Compiler upgrades via
npm i
now work as they should. Note that upgrades through the npm update --save
command continue working, too.🧰 Standard library additions and changes
• Doc comments, doc comments everywhere! They're especially fun to use with the language server, see more info on that below.
• Added
Slice.skipRef
, Slice.skipMaybeRef
, Slice.skipBool
, Slice.skipCoins
, Slice.skipVarUint16
, Slice.skipVarInt16
, Slice.skipVarUint32
, Slice.skipVarInt32
, Slice.skipAddress
functions.📜 See the full release notes for Tact v1.6.2
📥 And upgrade Tact in your projects
The alpha testing for the new TON Studio's official Tact language server continues. Have you tried it? It also has a neat VSCode extension and an extension for VSCode-based editors!
Here's a quick rundown of their features:
• Semantic syntax highlighting
• Code completion with auto import, postfix completion, snippets, and import completion
• Go to definition, implementation, type definition
• Find all references, workspace symbol search, symbol renaming
• Types and documentation on hover
• Inlay hints for types, parameter names, and more
• On-the-fly inspections with quick fixes
• Signature help inside calls, and actions for initOf and struct initialization
• Lenses with implementation/reference counts
• Gas estimates for assembly functions
• Commands for building and testing projects based on Blueprint and tact-template
• Integration with Tact compiler and Misti static analyzer
Sounds exciting? Install it and tell us what needs improvement — the language server is quite new, but it matures very fast!
🍲 please try to enjoy each release equally
♨️ @tact_kitchen from the @ton_studio


Кайра бөлүшүлгөн:
nowarp | TON Security

06.03.202509:02
🎉 Misti 0.7 has just landed on NPM!
🔍 More Tact Detectors: StateMutationInGetter, UnprotectedCall and SuspiciousLoop.
⚡ Tact 1.6.1 support: Including new language syntax and features.
⚙️ Improved Tools: Added more Callgraph functionality to enhance contracts audits.
🔧 Fixes & Enhancements: Check out the full changelog.
🔍 More Tact Detectors: StateMutationInGetter, UnprotectedCall and SuspiciousLoop.
⚡ Tact 1.6.1 support: Including new language syntax and features.
⚙️ Improved Tools: Added more Callgraph functionality to enhance contracts audits.
🔧 Fixes & Enhancements: Check out the full changelog.
05.03.202507:48
🎉 Tact v1.6.1 is released!
👀 "Long" time no see — many tools have been updated to support the latest Tact versions, and we've prepared some quality-of-life additions and minor fixes.
A big release cannot exist without a follow-up patch. This patch is mainly focused on polishing things in the internal infrastructure, standard library, and public APIs.
🛠 Bug fixes
▪️ The multiple wildcard function parameters are now supported.
That is, the following works in v1.6.1:
▪️ Made calls to the
🧰 Standard library additions and changes
• Added the
• Added the
• All entities in Core libraries received documentation comments. Next time, we'll add missing doc comments for the standard libraries, i.e., everything imported using the
🧳 Some other changes:
• We've inlined the contract load functions, so the gas consumption of the benchmarked Jetton implementation in Tact is even smaller than that of its reference implementation in FunC.
• The TypeScript wrappers now produce bi-directional mappings of exit codes from their numbers to string descriptions and vice versa. Plus, the message opcodes are exported too.
• The
📜 See the full release notes for Tact v1.6.1
📥 And upgrade Tact in your projects
Besides, the tact.vim plugin for Vim 8+ and tact-sublime package for Sublime Text 3+ have been updated to support Tact v1.6.0 (and v1.6.1 too).
The Misti static analyzer has been updated to v0.7.0 and now supports Tact v1.6.0 and v1.6.1. See its full release notes.
Speaking of plugins and tools, we have another announcement to make — we're starting an alpha test of the tact-language-server: an official language server for Tact that can be used standalone or within a dedicated extension for VSCode and VSCode-based editors, such as VSCodium, Cursor, Windsurf, and others.
Join the alpha squad and gain early access to great tooling: tact-language-server. If things are good, please give it a star and write a positive review. If they're not — open an issue, and we'll take a look!
🍲 cue the Tact type beat (sped up)
♨️ @tact_kitchen from the @ton_studio
👀 "Long" time no see — many tools have been updated to support the latest Tact versions, and we've prepared some quality-of-life additions and minor fixes.
A big release cannot exist without a follow-up patch. This patch is mainly focused on polishing things in the internal infrastructure, standard library, and public APIs.
🛠 Bug fixes
▪️ The multiple wildcard function parameters are now supported.
That is, the following works in v1.6.1:
trait WildThing {
▪️ Made calls to the
.toCell()
function on struct as a contract field handled correctly.struct MyStruct { x: Int; y: Int; z: Int }
🧰 Standard library additions and changes
• Added the
StateInit.hasSameBasechainAddress()
function, which is a gas-efficient way to check whether the given initial state corresponds to a specified address.• Added the
cashback()
function to efficiently forward excess funds from an incoming message to the target address.• All entities in Core libraries received documentation comments. Next time, we'll add missing doc comments for the standard libraries, i.e., everything imported using the
import "@stdlib/..."
syntax.🧳 Some other changes:
• We've inlined the contract load functions, so the gas consumption of the benchmarked Jetton implementation in Tact is even smaller than that of its reference implementation in FunC.
• The TypeScript wrappers now produce bi-directional mappings of exit codes from their numbers to string descriptions and vice versa. Plus, the message opcodes are exported too.
• The
.code
infix is no longer added to the file names of the generated FunC, Fift, and disassembled Fift outputs. It was annoying to see it everywhere, so now it's only present on the compiled .boc
files.📜 See the full release notes for Tact v1.6.1
📥 And upgrade Tact in your projects
Besides, the tact.vim plugin for Vim 8+ and tact-sublime package for Sublime Text 3+ have been updated to support Tact v1.6.0 (and v1.6.1 too).
The Misti static analyzer has been updated to v0.7.0 and now supports Tact v1.6.0 and v1.6.1. See its full release notes.
Speaking of plugins and tools, we have another announcement to make — we're starting an alpha test of the tact-language-server: an official language server for Tact that can be used standalone or within a dedicated extension for VSCode and VSCode-based editors, such as VSCodium, Cursor, Windsurf, and others.
Join the alpha squad and gain early access to great tooling: tact-language-server. If things are good, please give it a star and write a positive review. If they're not — open an issue, and we'll take a look!
🍲 cue the Tact type beat (sped up)
♨️ @tact_kitchen from the @ton_studio


01.03.202505:01
🎉 Tact v1.6.0 is released!
🏆 This is the biggest update of Tact since its creation, bigger than all previous milestones combined. There were so many improvements that we've even won over FunC in terms of gas usage on many standard contracts, such as Jettons.
🤔 Don't believe me?
🥳 Let's unpack Tact v1.6.0 together and see these improvements for ourselves!
We'll start with the number one achievement of this release:
⛽️ Gas optimization victory over FunC
Gas has long been a major pain point for Tact. Prior to v1.6.0, Tact's gas usage on many common contracts, such as Jettons, was far from ideal, requiring about 2.5 times gas of the FunC reference implementation.
But with Tact 1.6.0, those old gas-expensive days are long gone.
🤯 For example, a Tact rewrite of the reference FunC Jetton code consumes less gas for transfer, burn and discovery messages!
😎 So, expect to receive easy-to-use idiomatic Tact implementations of common contracts in the near future
Some of the things we did to achieve this:
▪️ Removed "system" cell — for most cases, parent contract code is no longer stored in the system cell with all the child contract codes
▪️ Removed redundant address checks
▪️ Deprecated
▪️ Introduced contract parameters as an alternative to
And optimized compiler internals, many old and new functions in the stdlib:
🧰 Some of the standard library additions and changes
• Added specialized
• Many math functions, such as
• More advanced functions, such as
• Handy
• Optimized
•
•
Added many functions for
• Variable integer serialization types and the corresponding
• Functions
• Functions for working with addresses:
• ...and more!
🧳 More auxiliary things
• Basic
• Compile-time method ID expressions for getters and Message opcodes
• The
• More map improvements and new methods, like
• New augmented assignment operators
• Better error reporting for many cases
• Generation of constants in TypeScript wrappers
• The
• CLI for the Tact's TVM disassembler —
• Fixes of the compilation report
• Fixes of the compiler's third-party API
• Fixes of the internal infrastructure and code generation
• Lots of other smaller bug fixes and enhancements
• ...and documentation for all of that and beyond!
Besides, check out the updated Awesome Tact list and add your awesome projects, especially those using Tact in production!
⚠️ Breaking changes
There are only two, and they're both pretty minor:
• Tact 1.6.0 replaces
• The
♥️ Special thanks goes to all the contributors and community members — without you there would be nothing. Let's keep building the future of smart contracts with ⚡️ Tact!
📜 See full release notes for Tact v1.6.0
📥 And upgrade Tact in your projects
🍲 we're beating the gas allegations with this one 🗣🗣🗣
♨️ @tact_kitchen
🏆 This is the biggest update of Tact since its creation, bigger than all previous milestones combined. There were so many improvements that we've even won over FunC in terms of gas usage on many standard contracts, such as Jettons.
🤔 Don't believe me?
🥳 Let's unpack Tact v1.6.0 together and see these improvements for ourselves!
We'll start with the number one achievement of this release:
⛽️ Gas optimization victory over FunC
Gas has long been a major pain point for Tact. Prior to v1.6.0, Tact's gas usage on many common contracts, such as Jettons, was far from ideal, requiring about 2.5 times gas of the FunC reference implementation.
But with Tact 1.6.0, those old gas-expensive days are long gone.
🤯 For example, a Tact rewrite of the reference FunC Jetton code consumes less gas for transfer, burn and discovery messages!
😎 So, expect to receive easy-to-use idiomatic Tact implementations of common contracts in the near future
Some of the things we did to achieve this:
▪️ Removed "system" cell — for most cases, parent contract code is no longer stored in the system cell with all the child contract codes
▪️ Removed redundant address checks
▪️ Deprecated
Deployable
trait in favor of receive(){}
▪️ Introduced contract parameters as an alternative to
init()
functionAnd optimized compiler internals, many old and new functions in the stdlib:
🧰 Some of the standard library additions and changes
• Added specialized
deploy
and message
functions for efficient on-chain deployments and non-deployment messages respectively• Many math functions, such as
divc
, mulShiftRightCeil
, and others• More advanced functions, such as
setGasLimit
, setSeed
, myCode
, and others• Handy
throwIf
and throwUnless
functions, which deprecated their "native" prefixed counterparts• Optimized
emptyCell
and emptySlice
functions•
Int.toString
function now consumes up to 64% less gas•
Int.toFloatString
function now consumes up to 62% less gasAdded many functions for
Cell
, Slice
and Builder
types:• Variable integer serialization types and the corresponding
.load
and .store
functions of Slice
and Builder
types• Functions
Slice.hashData
and String.hashData
for efficient hashes of data only• Functions for working with addresses:
Slice.asAddress
, Slice.asAddressUnsafe
, contractHash
, and a new BasechainAddress
type with its helper functions• ...and more!
🧳 More auxiliary things
• Basic
let
-destructuring of structs and Messages• Compile-time method ID expressions for getters and Message opcodes
• The
codeOf
expression to get the code of child contracts• More map improvements and new methods, like
replace
and replaceGet
• New augmented assignment operators
&&=
, ||=
, >>=
and <<=
• Better error reporting for many cases
• Generation of constants in TypeScript wrappers
• The
-w
, --watch
CLI flags for watching for changes and automatic recompilations• CLI for the Tact's TVM disassembler —
unboc
• Fixes of the compilation report
• Fixes of the compiler's third-party API
• Fixes of the internal infrastructure and code generation
• Lots of other smaller bug fixes and enhancements
• ...and documentation for all of that and beyond!
Besides, check out the updated Awesome Tact list and add your awesome projects, especially those using Tact in production!
⚠️ Breaking changes
There are only two, and they're both pretty minor:
• Tact 1.6.0 replaces
Context.bounced
field with Context.bounceable
— whether the received message can bounce back or not. Previously, bounced
field was useless since any bounced messages would be handled in a separate bounced()
receiver.• The
enabledMasterchain
option was removed from tact.config.json
. Going forward, support of masterchain addresses is always enabled in Tact contracts.♥️ Special thanks goes to all the contributors and community members — without you there would be nothing. Let's keep building the future of smart contracts with ⚡️ Tact!
📜 See full release notes for Tact v1.6.0
📥 And upgrade Tact in your projects
🍲 we're beating the gas allegations with this one 🗣🗣🗣
♨️ @tact_kitchen


05.02.202517:46
🚀 Tact v1.5 Audited by Trail of Bits
The security audit for Tact v1.5 has been completed by Trail of Bits, a leading Web3 security firm.
✅ No high-severity vulnerabilities were found.
🔧 Some bugs and points of improvement were discovered and addressed in a new Tact v1.5.4 bugfix release.
Thanks to Trail of Bits for their thorough review!
The report can be accessed at the Trail of Bits GitHub repo: https://github.com/trailofbits/publications/blob/master/reviews/2025-01-ton-studio-tact-compiler-securityreview.pdf
⚡️ In the meantime we continue to improve Tact with new language features, gas optimizations (a lot of those lately!), and enhancements to the compiler’s reliability. This ensures a secure and efficient development experience on TON Blockchain.
👉 Upgrade to Tact 1.5.4, if not already: https://docs.tact-lang.org/book/compile/#upgrades
🍲 cooking with great care for performance and users
♨️ @tact_kitchen
The security audit for Tact v1.5 has been completed by Trail of Bits, a leading Web3 security firm.
✅ No high-severity vulnerabilities were found.
🔧 Some bugs and points of improvement were discovered and addressed in a new Tact v1.5.4 bugfix release.
Thanks to Trail of Bits for their thorough review!
The report can be accessed at the Trail of Bits GitHub repo: https://github.com/trailofbits/publications/blob/master/reviews/2025-01-ton-studio-tact-compiler-securityreview.pdf
⚡️ In the meantime we continue to improve Tact with new language features, gas optimizations (a lot of those lately!), and enhancements to the compiler’s reliability. This ensures a secure and efficient development experience on TON Blockchain.
👉 Upgrade to Tact 1.5.4, if not already: https://docs.tact-lang.org/book/compile/#upgrades
🍲 cooking with great care for performance and users
♨️ @tact_kitchen
04.02.202505:04
⚡️ Added a Compilation page to the docs
❓ Did you know how to use Tact compiler on the CLI and its configuration settings?
❓ Have you ever wanted to easily upgrade the compiler or pin a specific version?
❓ Or have you ever wondered about the
✅ Well, look no further — the Compilation page describes it all and more!
See what's in store:
▪️ Compiler upgrades
▪️ Compilation report
▪️ BoC-encoded contracts code
▪️ Contract's package
▪️ Bindings and wrappers for simpler deployments, debugging and interactions with deployed contracts
The wrappers are currently only generated for TypeScript, but this may change in the future — stay tuned 😉
🧑🍳 Contributor: Novus Nota
🐙 Implementation: #1309 and #1676
✈️ Delivered: docs.tact-lang.org/book/compile
The image for this post is taken from:
https://xkcd.com/1755/
🍲 don't
♨️ @tact_kitchen
❓ Did you know how to use Tact compiler on the CLI and its configuration settings?
❓ Have you ever wanted to easily upgrade the compiler or pin a specific version?
❓ Or have you ever wondered about the
build/
or output/
folders and build artifacts produced within them?✅ Well, look no further — the Compilation page describes it all and more!
See what's in store:
▪️ Compiler upgrades
▪️ Compilation report
▪️ BoC-encoded contracts code
▪️ Contract's package
.pkg
and ABI .abi
▪️ Bindings and wrappers for simpler deployments, debugging and interactions with deployed contracts
The wrappers are currently only generated for TypeScript, but this may change in the future — stay tuned 😉
🧑🍳 Contributor: Novus Nota
🐙 Implementation: #1309 and #1676
✈️ Delivered: docs.tact-lang.org/book/compile
The image for this post is taken from:
https://xkcd.com/1755/
🍲 don't
console
my bugs♨️ @tact_kitchen


17.01.202510:27
⚡️ Added AI prompts for Cursor and Windsurf to tact-template
Did you know, that there's a tact-template that comes pre-configured to kickstart your new Tact projects?
It is much slimmer than the Blueprint-based projects, and focused only on Tact: it includes the compiler, Sandbox-based Jest tests, and basic scripts and utils to get you started in no time!
🪄 And now, with the help of a community contributor, it also has neat system prompts designed specifically for AI-focused editors like Cursor and Windsurf. Utilize them to gain an edge over competition and aid yourself with prototyping smart contracts.
⚠️ That said, be mindful of the use of AI and make sure to thoroughly test and debug your smart contracts. Funds won't protect themselves 😅
🧑🍳🎉 Community contributor: Skuli Dropek
🐙 Implementation: #42
✈️ Delivered: tact-template
🍲 the 's' in ai stands for security
♨️ @tact_kitchen
Did you know, that there's a tact-template that comes pre-configured to kickstart your new Tact projects?
It is much slimmer than the Blueprint-based projects, and focused only on Tact: it includes the compiler, Sandbox-based Jest tests, and basic scripts and utils to get you started in no time!
🪄 And now, with the help of a community contributor, it also has neat system prompts designed specifically for AI-focused editors like Cursor and Windsurf. Utilize them to gain an edge over competition and aid yourself with prototyping smart contracts.
⚠️ That said, be mindful of the use of AI and make sure to thoroughly test and debug your smart contracts. Funds won't protect themselves 😅
🧑🍳🎉 Community contributor: Skuli Dropek
🐙 Implementation: #42
✈️ Delivered: tact-template
🍲 the 's' in ai stands for security
♨️ @tact_kitchen


30.10.202409:32
⚡️ Added automatic links to Web IDE from code blocks in Cookbook section of the docs
Did you know, that just like the Remix for Ethereum, TON has an official Web IDE? If not, take a quick look at what it offers:
• Tact and FunC project creation
• Code highlighting and snippets for Tact and FunC
• Semi-automatic Build → Deploy pipeline on every save
• Convenient buttons to call getters and send messages to deployed contracts
• Deploy to Sandbox, testnet and mainnet
• Share button ↗️ on every file in a file tree
• ...plus a lot more!
And now any code samples from the Cookbook are right at your fingertips — just press the "Open in Web IDE" button, and the contents of the code block would automagically transfer to Web IDE!
🧑🍳 Contributor: Novus Nota
🐙 Implementation: #994
✈️ Delivered: docs.tact-lang.org/cookbook
🍲 «What's the TTP of Web IDE?»
♨️ @tact_kitchen
Did you know, that just like the Remix for Ethereum, TON has an official Web IDE? If not, take a quick look at what it offers:
• Tact and FunC project creation
• Code highlighting and snippets for Tact and FunC
• Semi-automatic Build → Deploy pipeline on every save
• Convenient buttons to call getters and send messages to deployed contracts
• Deploy to Sandbox, testnet and mainnet
• Share button ↗️ on every file in a file tree
• ...plus a lot more!
And now any code samples from the Cookbook are right at your fingertips — just press the "Open in Web IDE" button, and the contents of the code block would automagically transfer to Web IDE!
🧑🍳 Contributor: Novus Nota
🐙 Implementation: #994
✈️ Delivered: docs.tact-lang.org/cookbook
🍲 «What's the TTP of Web IDE?»
♨️ @tact_kitchen
Медиа контентке кире албай жатабыз
Рекорддор
20.04.202523:59
614Катталгандар31.03.202523:59
300Цитация индекси15.02.202523:59
3.3K1 посттун көрүүлөрү15.02.202523:59
3.3K1 жарнама посттун көрүүлөрү16.04.202523:59
16.67%ER15.02.202523:59
596.37%ERRӨнүгүү
Катталуучулар
Citation индекси
Бир посттун көрүүсү
Жарнамалык посттун көрүүсү
ER
ERR
Көбүрөөк функцияларды ачуу үчүн кириңиз.