У вас закончился пробный период!
Для полного доступа к функционалу, пожалуйста, оплатите премиум подписку
Возраст канала
Создан
Язык
Английский
-
Вовлеченность по реакциям средняя за неделю
-
Вовлеченность по просмотрам средняя за неделю

🧑‍🍳 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

Сообщения Статистика
Репосты и цитирования
Сети публикаций
Сателлиты
Контакты
История
Топ категорий
Здесь будут отображены главные категории публикаций.
Топ упоминаний
Здесь будут отображены наиболее частые упоминания людей, организаций и мест.
Найдено 13 результатов
TA
Tact Kitchen
618 подписчиков
117
🎉 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 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
17.04.2025, 13:36
t.me/tact_kitchen/68
TA
Tact Kitchen
618 подписчиков
Репост
76
🧠 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 (Cod
eforces)

Registration guide:
👉 No
tion link

Community & Support:
👉 Telegram Chal
lenge Chat

Good luck and may your contracts be efficient and bug-free! 🚀🔥
15.04.2025, 12:04
t.me/tact_kitchen/67
TA
Tact Kitchen
618 подписчиков
207
📣 DivaTech is organizing a Tact competition tomorrow: https://t.me/tactlang/59471
12.04.2025, 15:48
t.me/tact_kitchen/66
TA
Tact Kitchen
618 подписчиков
Репост
229
🎉 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.
8.04.2025, 08:55
t.me/tact_kitchen/65
TA
Tact Kitchen
618 подписчиков
409
🎉 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 ?: 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
29.03.2025, 17:13
t.me/tact_kitchen/64
TA
Tact Kitchen
618 подписчиков
325
🤫 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/1
19

🍲 where would you spend the saved gas?
♨️ @tact_kitchen by the @ton_studio
19.03.2025, 09:55
t.me/tact_kitchen/63
TA
Tact Kitchen
618 подписчиков
527
🎉 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 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
19.03.2025, 09:43
t.me/tact_kitchen/62
TA
Tact Kitchen
618 подписчиков
598
🎉 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 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_k
itchen from the @ton_studio
7.03.2025, 08:34
t.me/tact_kitchen/61
TA
Tact Kitchen
618 подписчиков
Репост
128
🎉 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.
6.03.2025, 12:02
t.me/tact_kitchen/60
TA
Tact Kitchen
618 подписчиков
231
🎉 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:

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 a
nalyzer 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
5.03.2025, 10:48
t.me/tact_kitchen/59
TA
Tact Kitchen
618 подписчиков
601
🎉 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 Deployable trait in favor of receive(){}
▪️ Introduced contract parameters as an alternative to init() function

And 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 gas

Added many functions for Cell, Slice and Builder types:
• Variable integer serializatio
n 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 Ta
ct v1.6.0
📥 And upgrade Tact in you
r projects

🍲 we're beating the gas allegations with this one 🗣🗣🗣
♨️
@tact_kitchen
1.03.2025, 08:01
t.me/tact_kitchen/58
TA
Tact Kitchen
618 подписчиков
4.6 k
🚀 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_kit
chen
5.02.2025, 20:46
t.me/tact_kitchen/57
TA
Tact Kitchen
618 подписчиков
378
⚡️ 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 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/1
755/

🍲 don't console my bugs
♨️ @tact_ki
tchen
4.02.2025, 08:04
t.me/tact_kitchen/56
Результаты поиска ограничены до 100 публикаций.
Некоторые возможности доступны только премиум пользователям.
Необходимо оплатить подписку, чтобы пользоваться этим функционалом.
Фильтр
Тип публикаций
Хронология похожих публикаций:
Сначала новые
Похожие публикации не найдены
Сообщения
Найти похожие аватары
Каналы 0
Высокий
Название
Подписчики
По вашему запросу ничего не подошло