diff --git a/dev-docs/CHANGELOG.md b/dev-docs/CHANGELOG.md index a22e5d5b0..aca52c077 100644 --- a/dev-docs/CHANGELOG.md +++ b/dev-docs/CHANGELOG.md @@ -101,6 +101,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added a compilation-related page with the description of the compilation report: PR [#1309](https://github.com/tact-lang/tact/pull/1309), PR [#1387](https://github.com/tact-lang/tact/pull/1387) - Documented `BaseTrait` and methods in stdlib code: PR [#1296](https://github.com/tact-lang/tact/pull/1296) - Document how storage variables get updated in relation to the `init()` function: PR [#1311](https://github.com/tact-lang/tact/pull/1311) +- Document compiler upgrades in Blueprint and other Tact projects: PR [#1560](https://github.com/tact-lang/tact/pull/1560) ### Release contributors diff --git a/docs/src/content/docs/book/compile.mdx b/docs/src/content/docs/book/compile.mdx index 4bd94d616..a4d6d4ef4 100644 --- a/docs/src/content/docs/book/compile.mdx +++ b/docs/src/content/docs/book/compile.mdx @@ -6,7 +6,7 @@ prev: label: Message mode --- -import { Badge } from '@astrojs/starlight/components'; +import { Badge, Tabs, TabItem } from '@astrojs/starlight/components'; :::note @@ -18,7 +18,84 @@ The Tact compiler can produce various outputs, ranging from the [BoC](/book/cell With the proper [configuration settings](/book/config), you can customize the behavior of the compiler to skip the generation of some or all the [build artifacts](#artifacts), and even control the addition or exclusion of [getters for supported interfaces](/book/contracts#interfaces). -Since the Tact compiler is a command-line program, some of the configuration settings can be set directly. When inside a folder with a Tact-based project, such as one created using the [Blueprint](https://github.com/ton-org/blueprint) or from the [tact-template](https://github.com/tact-lang/tact-template), refer to the `npx tact --help{:shell}` command for further instructions. +Since the Tact compiler is a command-line program, some of the configuration settings can be set directly. When inside a folder with a Tact-based project, such as one created using the [Blueprint][bp] or from the [tact-template](https://github.com/tact-lang/tact-template), refer to the `npx tact --help{:shell}` command for further instructions. + +## Compiler upgrades {#upgrades} + +Work on the compiler is active and extensive, so be sure to check out [NPM](https://www.npmjs.com/package/@tact-lang/compiler) whenever we push new releases. To follow updates, see the [Tact Kitchen in Telegram](https://t.me/tact_kitchen) for the short scoop, or our [GitHub organization](https://github.com/tact-lang) for the whole picture in all its details. + +To upgrade the Tact compiler to its latest version in a [Blueprint][bp]-based project or a project created from the [tact-template](https://github.com/tact-lang/tact-template), run: + + + + ```shell + # recommended + yarn upgrade @tact-lang/compiler + ``` + + + ```shell + npm i @tact-lang/compiler@latest + ``` + + + ```shell + pnpm upgrade @tact-lang/compiler + ``` + + + ```shell + bun update --latest @tact-lang/compiler + ``` + + + +Sometimes, bug fixes require us to change the existing behavior, introducing small breaking changes. To be prepared for these, make sure to read the [CHANGELOG.md](https://github.com/tact-lang/tact/blob/main/dev-docs/CHANGELOG.md) and act accordingly. Except for bug fixes, Tact tries its best not to introduce breaking changes in minor or patch versions according to [semantic versioning](https://semver.org/#summary). + +If you want to pin down a specific version of the compiler, run the following command. There, `X.Y.Z` is the target version you want to install: + + + + ```shell + # X.Y.Z must be replaced by the actual version number + yarn add --exact @tact-lang/compiler@X.Y.Z + ``` + + + ```shell + # X.Y.Z must be replaced by the actual version number + npm i --save-exact @tact-lang/compiler@X.Y.Z + ``` + + + ```shell + # X.Y.Z must be replaced by the actual version number + pnpm add --save-exact @tact-lang/compiler@X.Y.Z + ``` + + + ```shell + # X.Y.Z must be replaced by the actual version number + bun add --exact @tact-lang/compiler@X.Y.Z + ``` + + + +:::caution + + Do not mix different Node.js package managers in your projects. If you created the [Blueprint][bp] project with `npm`, stick to using `npm` for the rest of the commands — this will ensure that you don't get "File not found" errors or lock-file conflicts between different package managers. + + For example, using the `npm` package manager to install dependencies and then switching to `yarn` to build the contracts can lead to the following error message: + + ```shell + File not found: tact_Task1.headers.fc + #include "tact_Task1.headers.fc"; + 💥 Compilation failed. Skipping packaging + Error: Could not compile tact + error Command failed with exit code 1. + ``` + +::: ## Build artifacts {#artifacts} @@ -149,6 +226,7 @@ Thus, the following dependency diagram is produced: [tlb]: https://docs.ton.org/develop/data-formats/tl-b-language [mm]: https://mermaid.js.org/ +[bp]: https://github.com/ton-org/blueprint [code-jetton-wallet]: https://github.com/tact-lang/jetton/blob/70f6c9c51755fcab4b451da0cd2f2016476271cc/sources/jetton_wallet.tact [code-jetton-minter]: https://github.com/tact-lang/jetton/blob/70f6c9c51755fcab4b451da0cd2f2016476271cc/sources/jetton_minter_discoverable.tact diff --git a/docs/src/content/docs/book/exit-codes.mdx b/docs/src/content/docs/book/exit-codes.mdx index c133768ff..f1913fb7d 100644 --- a/docs/src/content/docs/book/exit-codes.mdx +++ b/docs/src/content/docs/book/exit-codes.mdx @@ -580,7 +580,7 @@ Constraints error. Reserved, but never thrown. ### 132: Access denied {#132} -If you use the [`Ownable{:tact}`](/ref/stdlib-ownable#ownable) [trait][ct] from the [`@stdlib/ownable`](/ref/stdlib-ownable) library, the helper function `requireOwner(){:tact}` provided by it will throw an error with exit code $132$ if the sender of the inbound message won't match the specified owner: `Access denied`. +If you use the [`Ownable{:tact}`](/ref/stdlib-ownable#ownable) [trait][trait] from the [`@stdlib/ownable`](/ref/stdlib-ownable) library, the helper function `requireOwner(){:tact}` provided by it will throw an error with exit code $132$ if the sender of the inbound message won't match the specified owner: `Access denied`. ```tact import "@stdlib/ownable"; @@ -670,7 +670,7 @@ try { ``` [p]: /book/types#primitive-types -[ct]: /book/types#composite-types +[trait]: /book/types/#traits [cell]: /book/cells [builder]: /book/cells#builders [slice]: /book/cells#slices diff --git a/docs/src/content/docs/ref/evolution/overview.mdx b/docs/src/content/docs/ref/evolution/overview.mdx index e4c6b1e27..1733d3747 100644 --- a/docs/src/content/docs/ref/evolution/overview.mdx +++ b/docs/src/content/docs/ref/evolution/overview.mdx @@ -48,4 +48,4 @@ List of [merged TEPs](https://github.com/ton-blockchain/TEPs#merged-teps). ## Changelog -All notable changes to the main Tact repository are documented in the [CHANGELOG.md](https://github.com/tact-lang/tact/blob/main/CHANGELOG.md). +All notable changes to the main Tact repository are documented in the [CHANGELOG.md](https://github.com/tact-lang/tact/blob/main/dev-docs/CHANGELOG.md). diff --git a/docs/src/content/docs/zh-cn/ref/evolution/overview.mdx b/docs/src/content/docs/zh-cn/ref/evolution/overview.mdx index 8b06521f1..7b9590d99 100644 --- a/docs/src/content/docs/zh-cn/ref/evolution/overview.mdx +++ b/docs/src/content/docs/zh-cn/ref/evolution/overview.mdx @@ -47,4 +47,4 @@ TON Enhancement Proposals 的主要目标是提供一种方便、正式的方式 ## 更新日志 -主 Tact 代码库的所有显著变更都记录在 [CHANGELOG.md](https://github.com/tact-lang/tact/blob/main/CHANGELOG.md) 中。 +主 Tact 代码库的所有显著变更都记录在 [CHANGELOG.md](https://github.com/tact-lang/tact/blob/main/dev-docs/CHANGELOG.md) 中。 diff --git a/src/cli/tact/index.ts b/src/cli/tact/index.ts index 6a59fe56e..0d42a77c6 100644 --- a/src/cli/tact/index.ts +++ b/src/cli/tact/index.ts @@ -69,19 +69,19 @@ const showHelp = () => { $ tact [...flags] (--config CONFIG | FILE) Flags - -c, --config CONFIG Specify path to config file (tact.config.json) - -p, --project ...names Build only the specified project name(s) from the config file - -q, --quiet Suppress compiler log output - --with-decompilation Full compilation followed by decompilation of produced binary code - --func Output intermediate FunC code and exit - --check Perform syntax and type checking, then exit - -e, --eval EXPRESSION Evaluate a Tact expression and exit - -v, --version Print Tact compiler version and exit - -h, --help Display this text and exit + -c, --config CONFIG Specify path to config file (tact.config.json) + -p, --project ...names Build only the specified project name(s) from the config file + -q, --quiet Suppress compiler log output + --with-decompilation Full compilation followed by decompilation of produced binary code + --func Output intermediate FunC code and exit + --check Perform syntax and type checking, then exit + -e, --eval EXPRESSION Evaluate a Tact expression and exit + -v, --version Print Tact compiler version and exit + -h, --help Display this text and exit Examples - $ tact --version - ${getVersion()} + $ tact --version + ${getVersion()} Learn more about Tact: https://docs.tact-lang.org Join Telegram group: https://t.me/tactlang