Search
Write a publication
Pull to refresh
0
MetaLamp
Доступно рассказываем о web3 и блокчейне

Tolk — новый язык для разработки смарт-контрактов на TON, который заменил FunC

Всем привет! Я Александр Смирнов, пишу смарт-контракты на FunC и Solidity в MetaLamp. Хотел рассказать про Tolk, его основные отличия от FunC и свое впечатление о нем.

Tolk больше похож на TypeScript и Kotlin, в отличие от FunC, который выглядит как C или Lisp. Однако он по-прежнему даёт контроль над ассемблером TVM, поскольку внутри него находится ядро FunC.

Основные отличия Tolk и FunC:


1) Объявление функции происходит через fun, геттера — через get;

2) Переменные объявляются через var, неизменяемые (immutable) переменные — через val;

3) Cпецификаторы функций, такие как inline,  записываются как декораторы: @inline;

4) Типы указываются справа через двоеточие. Также тип возвращаемого значения можно опустить (он будет определен автоматически);

5) Никакого impure: по умолчанию компилятор не будет выкидывать пользовательские вызовы функций;

6) recv_internal, recv_external заменяются на onInternalMessage, onExternalMessage;

7) Поддерживаются люгичесие операции И (&&), ИЛИ (||), отрицание (!);

8) Идентификаторы буквенно-цифровые, 2+2 — это 4 (в отличие от FunC, где это 2+2), нейминг выглядит следующим образом: const OP_INCREASE = 123456; (вместо const op::increase = 123456; в FunC — сейчас компилятор выдаст ошибку);

9) Улучшения в синтаксисе;

10) Функция может быть вызвана до ее объявления: компилятор сначала парсит, а затем сопоставляет вызываемые функции. Сейчас исходный код представляется как абстрактное синтаксическое дерево (AST);

11) Наименование переменных и функций в Tolk в camelCase, в отличие от snake_case в FunC;

12) Никакой тильды (~)! Ее совсем убрали, теперь не нужно возиться с изменением объектов, так как методы возвращают self, аналогично JavaScript;

13) Не нужно импортировать stdlib, однако, если работаете со словарями, нужно импортировать "@stdlib/tvm-dicts";

Для ленивых продвинутых можно воспользоваться удобным инструментом для преобразования FunC в Tolk. На 100% доверять ему не стоит, так как сами разработчики пишут, что необходимы небольшие ручные правки, поэтому лучше освоить Tolk и использовать для ускорения переезда с FunC. Его удобно использовать совместно с Blueprint.

Общее впечатление от Tolk: писать стало комфортнее, но это скорее для тех, кто привык работать с TypeScript. Много упрощений, а также код выглядит более читаемым. Зная FunC, можно за небольшое время перейти на Tolk. Уже есть плагины для VSCode и JetBrains, поэтому подсветка синтаксиса работает.

Больше постов от разработчиков можно найти в нашем телеграм-канале :)

Tags:
Total votes 1: ↑1 and ↓0+1
Comments0

Articles

Information

Website
metalamp.ru
Registered
Employees
51–100 employees
Location
Россия