👀 "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 {
// Using wildcards for parameter names
virtual fun assure(_: Int, _: Int): Bool {
return true;
}
}
contract YouMakeMyHeartSing with WildThing {
// And then overriding them with concrete names
override fun assure(a: Int, b: Int): Bool {
return a + b == b + a;
}
}▪️ Made calls to the
.toCell() function on struct as a contract field handled correctly.struct MyStruct { x: Int; y: Int; z: Int }
contract MyContract(myField: MyStruct) {
receive() {
// This works fine now:
self.reply(self.myField.toCell());
}
}🧰 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

