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
