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

