diff --git a/docs.json b/docs.json index f4b8f8f2..745b78dc 100644 --- a/docs.json +++ b/docs.json @@ -136,7 +136,7 @@ ] }, { - "group": "IDEs & plugins", + "group": "IDEs and editor plugins", "pages": [ "ecosystem/ide/overview", "ecosystem/ide/vscode", diff --git a/ecosystem/blueprint/overview.mdx b/ecosystem/blueprint/overview.mdx index 8339d6a5..6570f49e 100644 --- a/ecosystem/blueprint/overview.mdx +++ b/ecosystem/blueprint/overview.mdx @@ -1,10 +1,12 @@ --- -title: "Overview" +title: "Blueprint overview" +sidebarTitle: "Overview" --- For smart contract development on TON Blockchain, **Blueprint** is an all-in-one development environment designed to enhance the process of creating, testing, and deploying smart contracts. It includes: + - [Blueprint](https://github.com/ton-org/blueprint/blob/develop/README.md) — core tools for building contracts. - [Sandbox](https://github.com/ton-org/sandbox) — fast local testing in an isolated blockchain. - [Create TON App](https://github.com/ton-org/create-ton) — scaffolding a ready-to-use project. @@ -40,7 +42,7 @@ npm create ton@latest ## Environment setup 1. Run and follow the on-screen instructions: `npm create ton@latest`. -2. From the project directory, run `npm install` to install dependencies. +1. From the project directory, run `npm install` to install dependencies. ## Project structure diff --git a/ecosystem/ide/jetbrains.mdx b/ecosystem/ide/jetbrains.mdx index c5fa8c7d..20da3345 100644 --- a/ecosystem/ide/jetbrains.mdx +++ b/ecosystem/ide/jetbrains.mdx @@ -1,5 +1,263 @@ --- -title: "Jetbrains IDEs" +title: "TON plugin for IDEs from JetBrains" +sidebarTitle: "JetBrains IDEs" --- -Stub +TON plugin for IntelliJ IDEA (Ultimate and Community), WebStorm, CLion, GoLand, PyCharm, RustRover, and all other JetBrains IDEs. + + + + + + + + + +## Installation + +### From marketplace + +1. In the IDE, open Settings
+ Skip this step if you do not have opened projects and are in the start menu +1. Go to Plugins +1. Select the Marketplace tab (default) +1. Search for `TON` +1. Select the official plugin from TON Core and click Install + +The plugin would be fetched and installed in your current JetBrains IDE. You might need to restart it for changes to take effect. + +Here is how the plugin installation page may look in the start menu of WebStorm, before pressing the Install button: + +![Screenshot of the plugin installation](/resources/images/intellij-ton/it-install-from-settings.png) + +Alternatively, you can press Get on the [plugin homepage in the JetBrains Marketplace](https://plugins.jetbrains.com/plugin/23382-ton) and then follow subsequent instructions. + +### From disk + +To manually install the plugin: + +1. Download the plugin archive from the [latest GitHub release](https://github.com/ton-blockchain/intellij-ton/releases/latest) or from the exact version [on the marketplace](https://plugins.jetbrains.com/plugin/23382-ton/versions) +1. In the IDE, open Settings
+ Skip this step if you do not have opened projects and are in the start menu +1. Go to Plugins +1. Click the gear icon on top and then select `Install Plugin from Disk...` +1. Select the plugin archive in the pop up and complete the installation + +See also: [Installing a plugin from the command line in IntelliJ IDEA](https://www.jetbrains.com/help/idea/managing-plugins.html#install_plugin_cmd). + +## Features and language support + +This plugin provides first-class support for TON-specific languages, schemas and data formats in IntelliJ-based IDEs. Everything you need to develop, test, debug, and deploy TON smart contracts is made available right from your favorite JetBrains-made editor. + + + + Recommended language for TON smart contract development + + + + Legacy TON smart contract programming language + + + + Low-level stack-based language with deep TVM integration + + + + Cell-based data serialization and markup language + + + + Textual TVM bitcode assembly language and corresponding (dis)assembler + + + + Work with Blueprint projects, Sandbox TON emulator, and other popular tools for TON development + + + +### Tolk + +**File extension:** `.tolk` + +[Tolk](/language/tolk) is the official language of TON Blockchain smart contract development. It has an expressive syntax, a robust type system, and built-in cell (de)serialization structures. Further, Tolk generates highly optimized TVM code. + +![Screenshot of the Tolk language support](/resources/images/intellij-ton/it-screenshot-tolk.png) + +The plugin provides the following features for Tolk files: + +- Syntax and error highlighting +- [Code completion] — context-specific suggestions as you type +- [Parameter info] — names of parameters in function calls, with option to enable complete function signatures info +- [Quick documentation] — pop-up and hover documentation for any symbol right from the editor +- [Declarations] — go to declarations, implementations, and types +- [Usages] — search for references and usages of a code element throughout the codebase +- [Inlay hints] — special in-editor markers, like parameter name blobs next to the corresponding argument values +- [Inspections] — detects, finds, and highlights various problems and abnormal code +- [Intention actions] — contextual code edits and quick fixes +- [Formatting] — rearrangements and code cleanup +- [Rename refactorings] — change names of symbols and files +- [Code fragment surrounding] — templates for wrapping code fragments in various constructs, such as `try...catch` blocks. +- [File structure] — view and navigate the code structure of the open file. +- [Navigation bar] — structure of the project from directories down to code elements, usually located at the bottom of the status bar. + +### FunC + +**File extensions:** `.fc`, `.func` + +[FunC](/language/func) is a legacy TON smart contract programming language that was used prior to creation of [Tolk](#tolk). + +![Screenshot of the FunC language support](/resources/images/intellij-ton/it-screenshot-func.png) + +The plugin provides the following features for FunC files: + +- Syntax and error highlighting +- [Code completion] +- [Quick documentation] +- [Declarations] +- [Usages] +- [Inlay hints] +- [Inspections] + +### Fift + +**File extensions:** `.fif`, `.fift` + +[Fift](/language/fift) is a low-level tacit concatenative stack-based language with deep TVM integration. + +![Screenshot of the Fift language support](/resources/images/intellij-ton/it-screenshot-fift.png) + +Fift is also the most common disassembly target for serialized binary `.boc` smart contracts, and it has a macro-assembly language build with words in the `Asm.fif` standard library. + +That said, Fift does not have a built-in disassembler functionality and it does not directly correspond to the resulting TVM code due to its own stack, pre-processing capabilities, and compile-time hacks and optimizations. For the simplified `.boc` disassembler, use [TASM](#tasm). + +![Screenshot of the Fift assembly support](/resources/images/intellij-ton/it-screenshot-fift-asm.png) + +The plugin provides the following features for Fift: + +- Syntax and error highlighting, with better support for Fift assembly +- [Code completion] +- [Declarations] +- [Usages] +- [Inspections] + +### TL-B + +**File extension:** `.tlb` + +[Type Language - Binary (TL-B)](/language/TL-B/overview) is a cell-based data serialization and markup language. It is used extensively for [writing data schemas](https://github.com/ton-blockchain/ton/blob/master/crypto/block/block.tlb), [parsing them](https://github.com/ton-community/tlb-runtime) and [generating wrappers](https://github.com/ton-community/tlb-codegen) for storing and loading corresponding cells. + +![Screenshot of the TL-B data scheme language support](/resources/images/intellij-ton/it-screenshot-tlb.png) + +The plugin provides the following features for TL-B files: + +- Syntax and error highlighting +- [Code completion] +- [Declarations] +- [Usages] +- [Inspections] + +### TASM + +**File extensions:** + +- `.tasm` — textual bitcode assembly +- `.boc` — serialized binary smart contract code + +[TON Assembly (TASM)](https://github.com/ton-blockchain/tasm) is both a textual assembly language and an assembler and disassembler for TVM bitcode. Unlike [Fift](#fift), it is not a general-purpose language and not a macro-assembler — instead, it directly maps to and from `.boc` code. + +The plugin provides the following features for TASM: + +- Syntax and error highlighting of `.tasm` files +- [Code completion] +- [Declarations] +- [Usages] +- [Inspections] + +### Integrations + +The plugin integrates with: + +- [Blueprint](/ecosystem/blueprint/overview) — all-in-one development environment for TON smart contract development +- [Sandbox](https://github.com/ton-org/sandbox) — local TON emulator + +## Community + +- [`@intellijton` on Telegram](https://t.me/intellijton) — News about IntelliJ TON plugin development +- [`@tondev_eng` on Telegram](https://t.me/tondev_eng) — Main TON community chat and discussion group. +- [`@tondev` on Telegram](https://t.me/tondev) — Main Russian TON community chat and discussion group. + +## See also + +- [Plugin management in IntelliJ IDEA](https://www.jetbrains.com/help/idea/managing-plugins.html) +- [All JetBrains product documentation](https://www.jetbrains.com/help/) + +[Code completion]: https://www.jetbrains.com/help/idea/auto-completing-code.html + +[Parameter info]: https://www.jetbrains.com/help/idea/viewing-reference-information.html#view-parameter-info + +[Quick documentation]: https://www.jetbrains.com/help/idea/viewing-reference-information.html#inline-quick-documentation + +[Intention actions]: https://www.jetbrains.com/help/idea/intention-actions.html + +[Declarations]: https://www.jetbrains.com/help/idea/navigating-through-the-source-code.html#go_to_declaration + +[Usages]: https://www.jetbrains.com/help/idea/find-highlight-usages.html + +[Inlay hints]: https://www.jetbrains.com/help/idea/inlay-hints.html + +[Inspections]: https://www.jetbrains.com/help/idea/code-inspection.html + +[Formatting]: https://www.jetbrains.com/help/idea/reformat-and-rearrange-code.html + +[Rename refactorings]: https://www.jetbrains.com/help/idea/rename-refactorings.html + +[Code fragment surrounding]: https://www.jetbrains.com/help/idea/surrounding-blocks-of-code-with-language-constructs.html + +[Navigation bar]: https://www.jetbrains.com/help/idea/guided-tour-around-the-user-interface.html#navigation-bar + +[File structure]: https://www.jetbrains.com/help/idea/viewing-structure-of-a-source-file.html diff --git a/ecosystem/sdks.mdx b/ecosystem/sdks.mdx index 52ce4a9e..47dbfb67 100644 --- a/ecosystem/sdks.mdx +++ b/ecosystem/sdks.mdx @@ -19,7 +19,7 @@ Here's a small comparison for these protocols: | Requires trusting third parties | Yes1 | No | | First connection takes time for data synchronization | No | Yes2 | -1 Some HTTP servers do provide proofs, but there is no out‑of‑the‑box library that verifies them. +1 Some HTTP servers do provide proofs, but there is no out‑of‑the‑box library that verifies them.
2 If proofs returned by liteservers are ignored, the first connection skips data synchronization; however, this requires trusting the liteserver. SDKs might also provide some other functionality: @@ -34,7 +34,7 @@ SDKs might also provide some other functionality: | ⭐ | `@ton/core` | | | ✅ | | | TypeScript | [Code](https://github.com/ton-org/ton-core) | [Docs](https://ton-org.github.io/ton-core/) | | | ⭐ | `@ton/sandbox` | | | | | ✅ | TypeScript | [Code](https://github.com/ton-org/sandbox) | | | | ⭐ | `ton4j` | ✅ | | ✅ | | ✅ | Java | [Code](https://github.com/neodix42/ton4j) | | [Chat](https://t.me/ton4java) | -| ⭐ | `tonutils-go` | | ✅ | | ✅ | | Go | [Code](https://github.com/xssnick/tonutils-go) | | [Chat](https://t.me/tonutils) | +| ⭐ | `tonutils-go` | | ✅ | ✅ | ✅ | | Go | [Code](https://github.com/xssnick/tonutils-go) | | [Chat](https://t.me/tonutils) | | | `adnl` | | ✅ | | | | TypeScript | [Code](https://github.com/tonkite/adnl) | | | | | `tonutils` | | ✅ | | | | TypeScript | [Code](https://github.com/thekiba/tonutils) | | | | | `tonlib-java` | | ✅ | | | | Java | [Code](https://github.com/ton-blockchain/tonlib-java) | | | diff --git a/resources/images/intellij-ton/it-install-from-settings.png b/resources/images/intellij-ton/it-install-from-settings.png new file mode 100644 index 00000000..5d97c8c5 Binary files /dev/null and b/resources/images/intellij-ton/it-install-from-settings.png differ diff --git a/resources/images/intellij-ton/it-screenshot-fift-asm.png b/resources/images/intellij-ton/it-screenshot-fift-asm.png new file mode 100644 index 00000000..0ae7571c Binary files /dev/null and b/resources/images/intellij-ton/it-screenshot-fift-asm.png differ diff --git a/resources/images/intellij-ton/it-screenshot-fift.png b/resources/images/intellij-ton/it-screenshot-fift.png new file mode 100644 index 00000000..fadb329f Binary files /dev/null and b/resources/images/intellij-ton/it-screenshot-fift.png differ diff --git a/resources/images/intellij-ton/it-screenshot-func.png b/resources/images/intellij-ton/it-screenshot-func.png new file mode 100644 index 00000000..3fdd1ed3 Binary files /dev/null and b/resources/images/intellij-ton/it-screenshot-func.png differ diff --git a/resources/images/intellij-ton/it-screenshot-tlb.png b/resources/images/intellij-ton/it-screenshot-tlb.png new file mode 100644 index 00000000..4b534f43 Binary files /dev/null and b/resources/images/intellij-ton/it-screenshot-tlb.png differ diff --git a/resources/images/intellij-ton/it-screenshot-tolk.png b/resources/images/intellij-ton/it-screenshot-tolk.png new file mode 100644 index 00000000..03c23fde Binary files /dev/null and b/resources/images/intellij-ton/it-screenshot-tolk.png differ