⚡️ Added Mermaid diagrams of trait inheritance and contract dependencies to the compilation report
Did you know, that Tact produces a report of each compilation in markdown format? If not, take a quick look at what it offers:
• Resulting BoC size of the contract in bytes
• TL-B schemes of all Structs and Messages alongside with their Tact signatures
• List of all getter functions
• List of exit codes, both default and produced by calls to require()
And now, Tact also automatically generates neat Mermaid diagrams of trait inheritance and contract dependencies, and puts them in that
🧑🍳 Contributor: Gusarich
🐙 Implementation: #560
🍽 To be released in: v1.4.1
🍲 Look at thisphotograph
♨️ @tact_kitchen
Did you know, that Tact produces a report of each compilation in markdown format? If not, take a quick look at what it offers:
• Resulting BoC size of the contract in bytes
• TL-B schemes of all Structs and Messages alongside with their Tact signatures
• List of all getter functions
• List of exit codes, both default and produced by calls to require()
And now, Tact also automatically generates neat Mermaid diagrams of trait inheritance and contract dependencies, and puts them in that
.md file! Check your build folders once in a while, it's definitely worth it.🧑🍳 Contributor: Gusarich
🐙 Implementation: #560
🍽 To be released in: v1.4.1
🍲 Look at this
♨️ @tact_kitchen
⚡13
🎉 Tact 1.4.1 has just landed on NPM!
🐞 We fixed a gazillion bugs reported by the TON builders and TOL hackathon participants
❤️🔥 Thanks so much for your helpful feedback! It means so much to have such a vibrant community of Tacticians
🍳 Now that bug squashing is out of the way, we are on to adding more exciting features (and inevitably introducing some more bugs along the way). Tact 1.5.0 ingredients are out of the fridge and into the pan.
— The Tact team
🍲 Don’t let update bit rot, go get it!
♨️ @tact_kitchen
🐞 We fixed a gazillion bugs reported by the TON builders and TOL hackathon participants
❤️🔥 Thanks so much for your helpful feedback! It means so much to have such a vibrant community of Tacticians
— The Tact team
🍲 Don’t let update bit rot, go get it!
♨️ @tact_kitchen
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡21
Hey Tacticians, we are hungry for your honest opinion ⚡️
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from TON Dev News
Attention Developers!
We need your valuable insights to make the TON & Telegram Apps platform even better! 🚀
As a token of our appreciation, every developer who completes our questionnaire will receive an exclusive SBT from TON Society! 🎁
Your feedback is crucial in shaping the future of our ecosystem. Take a few minutes to share your thoughts and experiences with us.
👉 Start the Questionnaire Now
Thank you for being a vital part of our community and helping us build a stronger, more vibrant platform!
We need your valuable insights to make the TON & Telegram Apps platform even better! 🚀
As a token of our appreciation, every developer who completes our questionnaire will receive an exclusive SBT from TON Society! 🎁
Your feedback is crucial in shaping the future of our ecosystem. Take a few minutes to share your thoughts and experiences with us.
👉 Start the Questionnaire Now
Thank you for being a vital part of our community and helping us build a stronger, more vibrant platform!
Forwarded from TON Dev News
🐞 Misti – TON Static Program Analyzer
The first release of Misti – a static program analyzer for the TON blockchain has landed!
🐛 Detect Vulnerabilities: Identify and fix potential security flaws early in the development cycle.
🛠 Create Custom Detectors: Solve specific problems in your code or provide a thorough security review if you are an auditor.
📄 Improve Code Quality: Maintain high standards by catching bugs and enforcing best practices automatically.
🚀 Streamline Development: Integrate Misti into your CI/CD pipeline to ensure continuous code quality checks.
💎 Language Support: Tact ⚡ is supported; FunC support is planned.
- GitHub: https://github.com/nowarp/misti, contributions are very welcome!
- Documentation: https://nowarp.github.io/tools/misti/docs
- Telegram Group: @misti_dev
The first release of Misti – a static program analyzer for the TON blockchain has landed!
🐛 Detect Vulnerabilities: Identify and fix potential security flaws early in the development cycle.
🛠 Create Custom Detectors: Solve specific problems in your code or provide a thorough security review if you are an auditor.
📄 Improve Code Quality: Maintain high standards by catching bugs and enforcing best practices automatically.
🚀 Streamline Development: Integrate Misti into your CI/CD pipeline to ensure continuous code quality checks.
💎 Language Support: Tact ⚡ is supported; FunC support is planned.
- GitHub: https://github.com/nowarp/misti, contributions are very welcome!
- Documentation: https://nowarp.github.io/tools/misti/docs
- Telegram Group: @misti_dev
GitHub
GitHub - nowarp/misti: TON Static Analyzer
TON Static Analyzer. Contribute to nowarp/misti development by creating an account on GitHub.
⚡10
🎉 Tact 1.4.2 has just landed on NPM!
🐞 We fixed a few type-checking and code generation bugs. One of the most important fixes is that getters again return flattened types for structs as it used to be. We broke it while trying to allow structs with more than 15 fields. Please give it a try and let us know if the issue is gone now — all your bug reports are really appreciated.
🛠 A bunch of the other changes include improved support for the misti static smart-contract analyzer — give it a try, it’s in early stage of development but already found some issues in soon-to-be released projects.
— The Tact team
♨️ @tact_kitchen
🐞 We fixed a few type-checking and code generation bugs. One of the most important fixes is that getters again return flattened types for structs as it used to be. We broke it while trying to allow structs with more than 15 fields. Please give it a try and let us know if the issue is gone now — all your bug reports are really appreciated.
🛠 A bunch of the other changes include improved support for the misti static smart-contract analyzer — give it a try, it’s in early stage of development but already found some issues in soon-to-be released projects.
— The Tact team
♨️ @tact_kitchen
⚡14
🎉 Tact 1.4.3 has just landed on NPM!
🐞 We fixed a couple more issues and provided a fix for a special case of optional types in getter return types. Happy hacking, Tacticians!
— The Tact team
♨️ @tact_kitchen
🐞 We fixed a couple more issues and provided a fix for a special case of optional types in getter return types. Happy hacking, Tacticians!
— The Tact team
♨️ @tact_kitchen
⚡11
🎉 Tact 1.4.4 has just landed on NPM!
Fixed a few bugs and added AST equality comparison API mostly for third-party tools, like the misti static smart-contract analyzer. The API also be used to compare contracts without taking into account whitespace, comments or even order of definitions and declarations.
More details as always can be found in the changelog.
— The Tact team
♨️ @tact_kitchen
Fixed a few bugs and added AST equality comparison API mostly for third-party tools, like the misti static smart-contract analyzer. The API also be used to compare contracts without taking into account whitespace, comments or even order of definitions and declarations.
More details as always can be found in the changelog.
— The Tact team
♨️ @tact_kitchen
⚡8
🎉 Misti 0.2 has just landed on NPM!
🔍 Five New Tact Detectors: Сonstant Address, Branch Duplicate, `dump` Is Used, Field Initialized Twice, Prefer Augmented Assignment.
🛠 Blueprint Support: Introducing the new Blueprint Plugin.
🔧 Fixes & Enhancements: More configuration options and various fixes. Check out the full changelog.
♨️ @tact_kitchen
🔍 Five New Tact Detectors: Сonstant Address, Branch Duplicate, `dump` Is Used, Field Initialized Twice, Prefer Augmented Assignment.
🛠 Blueprint Support: Introducing the new Blueprint Plugin.
🔧 Fixes & Enhancements: More configuration options and various fixes. Check out the full changelog.
♨️ @tact_kitchen
nowarp.io
Welcome to Misti | Misti
The TON Static Analyzer
⚡8
asm-functions are coming in the future Tact v1.5.0 release, so you can tap into the power of TVM directly.This will be valid Tact code
asm fun keccak256(s: Slice): Int {
1 INT HASHEXT_KECCAK256
}
// … more stuff …
let h = keccak256(yourSlice);— The Tact team
♨️ @tact_kitchen
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡14
Forwarded from TON Dev News
🎉 Tact v1.5.0 has just been released
The new Tact release v1.5.0 just landed on NPM! Here are the highlights of the most important features.
🛠 New Tact features
asm functions allow you to access the deep dark corners of TVM for more features or better performance:
- A wider range of serialization options for integers can now be used, not just 8, 16, 32, 64, 128 and 256-bit integers, but anything in between:
- Constant definitions now support calls to user-defined functions and references to other constants:
👩💻 New builtin and stdlib functions and methods
- The exists method for the
- The
- The
- The new
- The new stdlib functions to help with fee calculations:
- The
🐞 The new release also includes a bunch of bugfixes. Thanks to all the Tacticians for all the issues you open!
📜 Full changelog for Tact v1.5.0: https://github.com/tact-lang/tact/blob/main/CHANGELOG.md#150---2024-09-15
The new Tact release v1.5.0 just landed on NPM! Here are the highlights of the most important features.
🛠 New Tact features
asm functions allow you to access the deep dark corners of TVM for more features or better performance:
asm fun keccak256(s: Slice): Int {
1 INT HASHEXT_KECCAK256
}
asm functions have some limitations at this point and the Tact team will make them even more powerful in the next releases.- A wider range of serialization options for integers can now be used, not just 8, 16, 32, 64, 128 and 256-bit integers, but anything in between:
uint1 through uint256 and int1 through int257. For instance, a 48-bit timestamp can be defined now if you'd like to build contracts that can work after the year 2038:
contract Contract {
timestamp: Int as uint48
}
- Constant definitions now support calls to user-defined functions and references to other constants:
const CONSTANT: Int =
myFunction(OTHER_CONSTANT)
👩💻 New builtin and stdlib functions and methods
- The exists method for the
Map type: m.exists(key) which is equivalent to m.get(key) != null.- The
deepEquals method for the Map type: m1.deepEquals(m2) -- you can now easily compare two maps with the same key-value pairs and get true as the result, even if their internal representations are different, so the hash-based == comparison would return false.- The
toSlice method for structs and messages: struct.toSlice().- The new
slice, rawSlice, ascii and crc32 built-in compile-time functions to help you define constant integers and slices more conveniently.- The new stdlib functions to help with fee calculations:
gasConsumed, getComputeFee, getStorageFee, getForwardFee, getSimpleComputeFee, getSimpleForwardFee, getOriginalFwdFee, myStorageDue. This brings you access to the TVM instructions from 2023.07 and 2024.04 upgrades.- The
parseStdAddress and parseVarAddress stdlib functions allow you to parse slices into structured addresses.🐞 The new release also includes a bunch of bugfixes. Thanks to all the Tacticians for all the issues you open!
📜 Full changelog for Tact v1.5.0: https://github.com/tact-lang/tact/blob/main/CHANGELOG.md#150---2024-09-15
⚡14
🎉 Misti 0.3 has just landed on NPM!
⚡️Tact 1.5 Support
🔍 Five New Tact Detectors: String Receivers Overlap, Asm Is Used, Preferred Stdlib API, Inherited State Mutation, Argument Copy Mutation.
🔧 Fixes & Enhancements: More configuration options, optimization and API improvements. Check out the full changelog.
♨️ @tact_kitchen
⚡️Tact 1.5 Support
🔍 Five New Tact Detectors: String Receivers Overlap, Asm Is Used, Preferred Stdlib API, Inherited State Mutation, Argument Copy Mutation.
🔧 Fixes & Enhancements: More configuration options, optimization and API improvements. Check out the full changelog.
♨️ @tact_kitchen
nowarp.io
Misti
TON Static Analyzer
⚡8
🎉 Tact 1.5.2 has just landed on NPM!
Remember, that we've introduced
🐞 With this bugfix release, you now can use full* range of its syntax just like you could in similar
Other than that, have it your way. Note, that support of full Fift+TVM syntax is highly experimental, and will be reworked in future releases, in particular the following works now, but most likely won’t work at some point:
🐞 Additionally, all new installations of
👀And keep an eye on the docs, something big might happen very soon!
🍲 every contract is open source if you can read bytecode
♨️ @tact_kitchen
Remember, that we've introduced
asm functions in version 1.5.0 for you to write TVM assembly right in your Tact code?
asm fun keccak256(s: Slice): Int {
1 INT HASHEXT_KECCAK256
}
🐞 With this bugfix release, you now can use full* range of its syntax just like you could in similar
asm functions of FunC. Just don't do anything too crazy, like trying to shadow (re-define) { or }, or using char } inside your newly defined instructions.Other than that, have it your way. Note, that support of full Fift+TVM syntax is highly experimental, and will be reworked in future releases, in particular the following works now, but most likely won’t work at some point:
fun onchainSha256(data: String): Int {
_onchainShaPush(data);
while (_onchainShaShouldProceed()) {
_onchainShaOperate();
}
return _onchainShaHashExt();
}
// Helper assembly functions,
// each manipulating the stack in their own ways
// in different parts of the `onchainSha256()` function
asm fun _onchainShaPush(data: String) { ONE }
asm fun _onchainShaShouldProceed(): Bool {
OVER SREFS 0 NEQINT
}
asm fun _onchainShaOperate() {
OVER LDREF s0 POP CTOS s0 s1 XCHG INC
}
asm fun _onchainShaHashExt(): Int {
HASHEXT_SHA256
}🐞 Additionally, all new installations of
@tact-lang/compiler or @ton/blueprint via npm should work as expected. All other package managers continue to work fine, so create more awesome projects! We'll handle the rest ❤️👀
🍲 every contract is open source if you can read bytecode
♨️ @tact_kitchen
⚡8
👏 Huge 👏 Revamp 👏 of Tact 👏 Docs 👏
There were a lot of things we just couldn't do nicely with the previous documentation library, Nextra. Granted, it's very good and has a lot going for it, but its rigidity in important places, as well as its overall pull towards Next.js and Vercel make some features like i18n almost impossible to implement while keeping the static build and not doing the server-side rendering.
It is finally time to move to a more flexible solution: Starlight, a documentation library powered by Astro that allows for great extensibility and bundles (among other things): advanced i18n support via i18next, site navigation, search, SEO, easy-to-read typography, code highlighting, dark mode and more. It's also very lightweight and snappy.
This move brought a lot of enhancements, here's a very short list (there's more!):
0️⃣ Translating the docs to another language (i18n) is super easy now. Just take the original English page, translate it, and put the file in the appropriate folder. That's it, the next deployments would feature your translated page as if it was always there ✨
1️⃣ The search via
2️⃣ Fixed issues with highlighting of code blocks in the light mode. The similar change for
3️⃣
Things that didn't make the list include updates that are mostly relevant to the team and maintainers of the docs. For example:
1. It's much easier to influence the SEO of each page with good denoscriptions and image covers where needed
2. It's super easy to customize the docs with: CSS styles, JS noscripts, Markdown pre-processing plugins, HTML pre-processing and post-processing plugins, ...
3. ...and so on and so forth
🧑🍳 Contributor: Novus Nota
🐙 Implementation: #880
✈️ Delivered: docs.tact-lang.org
🍲 sparkle! sunshine!
♨️ @tact_kitchen
There were a lot of things we just couldn't do nicely with the previous documentation library, Nextra. Granted, it's very good and has a lot going for it, but its rigidity in important places, as well as its overall pull towards Next.js and Vercel make some features like i18n almost impossible to implement while keeping the static build and not doing the server-side rendering.
It is finally time to move to a more flexible solution: Starlight, a documentation library powered by Astro that allows for great extensibility and bundles (among other things): advanced i18n support via i18next, site navigation, search, SEO, easy-to-read typography, code highlighting, dark mode and more. It's also very lightweight and snappy.
This move brought a lot of enhancements, here's a very short list (there's more!):
0️⃣ Translating the docs to another language (i18n) is super easy now. Just take the original English page, translate it, and put the file in the appropriate folder. That's it, the next deployments would feature your translated page as if it was always there ✨
1️⃣ The search via
Ctrl + K (fuzzy full-site search) has been greatly improved. In addition, since all the pages are located in the sidebar, you now can use Ctrl + F (content search) to quickly find the page in any of the sections: Book, Cookbook, and Ecosystem!2️⃣ Fixed issues with highlighting of code blocks in the light mode. The similar change for
inline code highlighting will follow in the future too!3️⃣
tact-docs repo has been merged into the Tact compiler one, which means that all new feature and standard library updates will arrive in docs much faster than before! Besides, you'll see badges like "Since version X.Y.Z" under each new feature, so that you'll know when to expect things and which Tact version to use for them :)Things that didn't make the list include updates that are mostly relevant to the team and maintainers of the docs. For example:
2. It's super easy to customize the docs with: CSS styles, JS noscripts, Markdown pre-processing plugins, HTML pre-processing and post-processing plugins, ...
3. ...and so on and so forth
🧑🍳 Contributor: Novus Nota
🐙 Implementation: #880
✈️ Delivered: docs.tact-lang.org
🍲 sparkle! sunshine!
♨️ @tact_kitchen
⚡11
Forwarded from TON Jobs
TON Studio is hiring!
TON Studio team is seeking for Lead Developer (smart contracts & audits).
You will work with both FunC and Tact smart contracts to develop highly optimized, secure, and efficient DApps, leveraging your understanding of Fift, TVM, and gas optimizations.
You can find more details about the job opening and apply here: https://jobs.ton.org/companies/ton-studio/jobs/41178106-lead-developer-smart-contracts-audits#content
We invite builders to post vacancies in the TON Jobs channel. To do this, you need to write to support @tonjobs_support
TON Studio team is seeking for Lead Developer (smart contracts & audits).
You will work with both FunC and Tact smart contracts to develop highly optimized, secure, and efficient DApps, leveraging your understanding of Fift, TVM, and gas optimizations.
You can find more details about the job opening and apply here: https://jobs.ton.org/companies/ton-studio/jobs/41178106-lead-developer-smart-contracts-audits#content
We invite builders to post vacancies in the TON Jobs channel. To do this, you need to write to support @tonjobs_support
⚡8
⚡️ Added destructuring statements
It's a concise way to unpack Structs and Messages into distinct variables, which mirrors the instantiation syntax:
One can also create bindings under different variable names or ignore some of the fields. Note, that the order doesn't matter:
🧑🍳 Contributors: Gusarich, Novus Nota (docs)
🐙 Implementation: #856
🍽 To be released in: v1.6.0
🍲 everyone within a 100 mile radius after you eat a taco
♨️ @tact_kitchen
It's a concise way to unpack Structs and Messages into distinct variables, which mirrors the instantiation syntax:
// Definition of Example
struct Example { number: Int }
fun basic() {
// Basic syntax of destructuring assignment
// is shown on the left of "=":
let Example { number } =
Example { number: 42 };
// The syntax above is roughly equivalent
// to the following statements:
let example = Example { number: 42 };
let number = example.number;
}
One can also create bindings under different variable names or ignore some of the fields. Note, that the order doesn't matter:
// "first" goes first, then goes "second"
struct Two { first: Int; second: String }
// a helper function
fun makeTwo(): Two {
return Two {
first: 42,
second: "yee-haw",
};
}
// 👀
fun totalDestruction() {
// The "first" field is ignored,
// while the value of "second"
// is bound under the "cowboy"
// variable from now on:
let Two {
second: cowboy,
first: _,
} = makeTwo();
}
🧑🍳 Contributors: Gusarich, Novus Nota (docs)
🐙 Implementation: #856
🍽 To be released in: v1.6.0
🍲 everyone within a 100 mile radius after you eat a taco
♨️ @tact_kitchen
⚡11
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ 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
⚡11
🎉 Misti 0.5 has just landed on NPM!
🔍 More Tact Detectors: Covered Tact-specific issues like CellOverflow, SuspiciousMessageMode, UnboundMap achieving totally 25 detectors.
⚠️ Warning Suppressions: Suppress specific warnings using
💡 Usability Enhancements: Install Misti with a single command and run it on the directory containing your contracts—no extra configuration required:
🔧 Fixes & Enhancements: More configuration options, optimization and improvements. Check out the full changelog.
♨️ @tact_kitchen
🔍 More Tact Detectors: Covered Tact-specific issues like CellOverflow, SuspiciousMessageMode, UnboundMap achieving totally 25 detectors.
⚠️ Warning Suppressions: Suppress specific warnings using
// @misti:suppress DetectorName comments.💡 Usability Enhancements: Install Misti with a single command and run it on the directory containing your contracts—no extra configuration required:
npm install -g @nowarp/misti
misti path/to/src/contracts
🔧 Fixes & Enhancements: More configuration options, optimization and improvements. Check out the full changelog.
♨️ @tact_kitchen
nowarp.io
Misti
TON Static Analyzer
⚡10
Media is too big
VIEW IN TELEGRAM
⚡️ Watch Tact & DevTools talk from 2nd day of TON Gateway
🌀 It's a whirlwind tour of progress made in Tact and ecosystem, plus the plans for the future!
🎞 If loading the video on Telegram is too much, start watching at the timestamp on YouTube
👀 For more, see the full recording of TON Gateway | Day 2
🍲 tactical advantage, strategic dominance
♨️ @tact_kitchen
🌀 It's a whirlwind tour of progress made in Tact and ecosystem, plus the plans for the future!
🎞 If loading the video on Telegram is too much, start watching at the timestamp on YouTube
👀 For more, see the full recording of TON Gateway | Day 2
🍲 tactical advantage, strategic dominance
♨️ @tact_kitchen
⚡8
⚡8
⚡️ Heads-up: there are more than 2100 Tact source files on GitHub, not counting forks and the
It would be nice to get Tact code highlighted there, don't you think? That's why we've made a PR to Linguist, a language detection and highlighting library from Github.
Here's how you can help:
1. Go to the PR
2. Leave your 👍 without writing any comments, to keep PR clean
3. Keep writing nice open source contracts in Tact 🙌
4. Wait for the best 🤞
This is not a drill. I repeat: this is not a drill.
This is the beginning of the story.
UPD: ❤
🍲 our story, actually
♨️ @tact_kitchen
tact-lang organization!It would be nice to get Tact code highlighted there, don't you think? That's why we've made a PR to Linguist, a language detection and highlighting library from Github.
Here's how you can help:
1. Go to the PR
2. Leave your 👍 without writing any comments, to keep PR clean
3. Keep writing nice open source contracts in Tact 🙌
4. Wait for the best 🤞
This is not a drill. I repeat: this is not a drill.
This is the beginning of the story.
UPD: ❤
🍲 our story, actually
♨️ @tact_kitchen
⚡12