The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск Tinygo 0.40, компилятора для языка Go

16.12.2025 09:29

Опубликован выпуск проекта Tinygo 0.40, развивающего компилятор для языка Go. Компилятор подходит для генерации компактных исполняемых файлов для маломощных систем, таких как микроконтроллеры и встраиваемые устройства, программы для которых должны минимально потреблять память и вычислительные ресурсы. Компиляция для поддерживаемых целевых платформ реализована при помощи LLVM, а библиотеки функций заимствованы из основного инструментария проекта Go. Код распространяется под лицензией BSD.

Скомпилированная программа напрямую может запускаться на микроконтроллерах, что позволяет применять подмножество языка Go для написания сценариев автоматизации. Поддерживается более ста моделей микроконтроллеров, включая различные платы Adafruit, Arduino, BBC micro, ESP32, M5Stack, ST Micro, Digispark, Raspberry Pi Pico, Nordic Semiconductor, SiFive HiFive1, STM32, Makerdiary и Phytec. Для взаимодействия с датчиками и подключёнными внешними устройствами, а также для поддержки интерфейсов, таких как I2C, GPIO и SPI, предоставляются специальные драйверы.

В отличие от похожего компилятора emgo, не обновлявшегося последние четыре года, в tinygo сохранена оригинальная модель управления памятью Go с использованием сборщика мусора, а вместо компиляции в представление на языке Си задействован LLVM для прямой генерации машинного кода. В программах может без изменений использоваться уже существующий типовой код на языке Go, а также большая часть стандартных пакетов. Помимо генерации машинного кода, в tinygo доступна поддержка формирования байткода WebAssembly с возможностью создания обособленных WebAssembly-приложений, используя интерфейс WASI (WebAssembly System Interface).

В новой версии:

  • Внесены оптимизации в сборщик мусора. Прирост производительности составил до 10%.
  • Реализована поддержка инструментария LLVM 20.
  • Добавлена поддержка платформы ESP32-S3, а также плат Xiao ESP32-S3, Gopher ARCADE и Pico2-Ice.
  • Добавлен флаг go-compatibility и переменная окружения TINYGO_GOCOMPATIBILITY для отключения проверки совместимости с объявленной версией языка Go.
  • Для глобальных переменных и функций включена pragma "//go:linkname" в дополнение к "//go:extern".
  • В компилятор добавлена возможность пометки строковых параметров как доступных только для чтения.
  • Для выявления циклов с отложенными вызовами (оператором defer) в компиляторе задействован алгоритм поиска сильно связанных компонентов Тарьяна.


  1. Главная ссылка к новости (https://mastodon.social/@TinyG...)
  2. OpenNews: Представлен язык программирования Gauntlet, расширяющий возможности языка Go
  3. OpenNews: Google намерен добавить телеметрию в инструментарий для языка Go
  4. OpenNews: Лидер проекта Go принял решение покинуть пост
  5. OpenNews: Оценка потребления памяти при одновременном запуске миллиона задач
  6. OpenNews: Выпуск языка программирования Go 1.25
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/64427-tinygo
Ключевые слова: tinygo, go
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (38) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 09:47, 16/12/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –8 +/
     

  • 1.3, Аноним (3), 10:00, 16/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Это безопасный язык? В нём можно разыменовывать нулевой указатель?
     
     
  • 2.5, Аноним (5), 10:08, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    можно
     
  • 2.7, mos87 (ok), 10:28, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да.
     
  • 2.11, Аноним (11), 11:49, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Язык не должен быть безопасным. Безопасность языка это  иллюзия для профанов вайтишников, которые не умеют программировать.
     
     
  • 3.13, Аноним (13), 12:02, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Автомобили не должны быть безопасными. Безопасность автомобилей это иллюзия для профанов водителей, которые не умеют ездить.
     
     
  • 4.19, ProfessorNavigator (ok), 12:38, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Автомобили не должны быть безопасными. Безопасность автомобилей это иллюзия для профанов водителей, которые не умеют ездить.

    Собственно так и есть. Если вы на скорости 100 км/ч вылетите на встречку и там попадёте под фуру, то вам никакие меры безопасности не помогут. Всякие пассивные меры безопасности помогают только при авариях на скоростях в пределах до 60 км/ч. Да и то - весьма условно. Подушка безопасности легко может вас убить например. Поэтому лучший метод остаться живым и здоровым - не попадать в аварии. Т.е. - обучиться нормально ездить, на дороге постоянно быть внимательным, контролировать ситуацию на несколько машин вперёд и назад и т.д. Неожиданно, правда?
      

     
     
  • 5.28, Аноним (28), 13:20, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Если вы на скорости 100 км/ч вылетите на встречку и там попадёте под фуру

    Круиз контроль этого не позволит.

     
     
  • 6.34, ProfessorNavigator (ok), 13:58, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Круиз контроль этого не позволит.

    Каким образом?))

     
     
  • 7.40, Пыщь (?), 14:28, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ну человек никогда не пользовался куриз-контролем, вряд ли автомобиль то у юноши есть.
     
  • 5.35, Аноним (35), 14:03, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Поэтому лучший метод остаться живым и здоровым - не попадать в аварии

    Господи, и этому бреду ставят плюсики. 🤦

    > Всякие пассивные меры безопасности помогают только при авариях на скоростях в пределах до 60 км/ч. Да и то - весьма условно.

    И плевать, что по статистике около 50% смертей при ДТП происходят банально из-за непристегнутого ремня. Откуда ж вы лезете, эксперты тикие?

    > Т.е. - обучиться нормально ездить, на дороге постоянно быть внимательным, контролировать ситуацию на несколько машин вперёд и назад и т.д.

    Да ты хоть из кожи можешь вон лезть, но другой человек нажрется и влетит в тебя. Удачи тебе его контролировать.

    > Неожиданно, правда?

    Ничего неожиданного: ты как всегда несешь бред. 👍

     
  • 4.20, Пыщь (?), 12:43, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Легковой автомобиль как бы считается ширпотребом, но и для допуска к его управлению по идее допускаются только через некоторый экзамен (по факту уже не так, скоро аварийость подтянется). Грузовиком - экзамен посложнее, автобус - ещё сложнее (но эти уже не ширпотреб для управления). Карьерный самосвал - вообще не ширпотреб, там и допуски другие (по факту не везде так, особо в РФ - все ТБ прахом). А у Вас есть корочки гособразца соответствию MISRA C для допуска к програмлению на оном, когда проходила последняя аттестация на соответствие? Нет - вам к ржавым и без дальнейших упоминаний безопасности в Вашем веблокоде. Если уж решили приравняться к водителям.
    Давно ли програмление стало ширпотребом? Каждая домохозяйка смогёт? Ну ржавые к этому стремятся. Только нифига из таких профанов не выйдет водителей ралли (как минимум не у каждой тушки  выносливаость позволит), если уж сравнивать с автомобилями. Катайтесь на своих ржавых инвалидках, клепая веблокодинг, не считайте себя автогонщиками уровня системных программистов. То что в ведро линуха ржавость запихивают, да пжалста, только реальное системное программирование порой сваливается до уровня ассемблерных вставок для различных трюков с процами и применения их функций в желаемой конфигурации (а не как жёстко клеит коноплятор), так вся ржавая безопасТность работы с памятью ложится на компетентность разработчика.

    Послесловие. Вообще ведро линуха слабый показатель серьёзного програмления. Хотя бы plan9 в пример приводите, ну sel4 для пущей важности. Линух - это ну .. покатушки стритсракеров, куда влились всякие производители (поле заработка).

     
  • 4.25, Аноним (25), 13:06, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Опять эти дурацкие аналогии про сортиры, велосипеды, автомобили. Если уж проводить аналогию с автомобилем, то автомобиль - это как пользование компьютером на уровне "уверенного пользователя", а не язык программирования.
     
     
  • 5.38, Аноним (22), 14:14, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Опять эти дурацкие аналогии

    Так местным "разработчикам" ничего иного и не остаётся.

     
  • 2.15, Аноним (22), 12:12, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, не безопасный, между горутинами нельзя шарить данные не прибегая к ручной синхронизации через тот же sync.Mutex.
     
     
  • 3.21, Аноним (21), 12:49, 16/12/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.23, Vindex (?), 12:53, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Нужно!
     

  • 1.6, Аномалии (?), 10:25, 16/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Как-то игрался с сабжем. Компиляция очень медленная, но размер бинарника намного меньше по сравнению с родным компилятором. При помощи tinygo + upx удалось получить бинарник в районе 10 килобайт
     
     
  • 2.8, Аноним (8), 10:52, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Брехня. Только минимальный размер вшитого в бинарник компрессора около 10-30 кб, в зависимости от платформы. Плюс сверх этого размера еще сжатые данные.
     
     
  • 3.9, Аномалии (?), 11:24, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Можешь свою теорию оставить при себе. Может че конечно за пару лет поменялось, но тогда я получил именно такие значения и как-то своим глазам доверяю больше чем очередному ыксперду
     
     
  • 4.14, Аноним (13), 12:03, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Мы и доверям своим глазам больше, чем очередному ыксперду (тебе).
     
     
  • 5.17, Аноним (17), 12:26, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Все он правильно говорит. Буквально на той неделе пробовал - размер уменьшается в разы.
     
  • 2.10, Аноним (10), 11:37, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Позволь поинтересоваться, как ты дальше используешь сэкономленные килобайты свободного пространства?
     
     
  • 3.16, Аноним (17), 12:25, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В embedded может и не быть всех этих лишних килобайтов.
     
     
  • 4.18, Аноним (21), 12:28, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем туда тащить golang — отдельный вопрос.
     
  • 4.33, Аноним (33), 13:45, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Что ты чешешь? Память бывает 8 и 16 килобайт. 10 не влезает в 8 значит от 16 у тебя 6 лишних килобайт что с ними сделал? Бинарник на обычном языке в 15 килобайт выхлопа чем плох?
     
     
  • 5.36, Пыщь (?), 14:04, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Запихает необычный загрузчик с домино и стюардессами (поддержкой кучи чего малонужного). А если Вы не хелловротщик в мире мелких систем и счёт выпускаемых изделий доходит на миллионы, то "копеечная" экономия на объёме ОЗУ какому-нибудь из эффективных манагерей даст не слабый доход.
    2 примерно сопоставимых по цене погромлериста: только один фанат нового модного, потому экономить на ресурсах не умеет, а второй - стандартный без вые.онов^W "современных квантовых инноваций". При этом по срокам исполнения отличий нет (таковы подчастую реалии: новомодные плюшки нужно постоянно осваивать и ловить детские ошибки этих плюшек, порой быстрее и проще по-старинке готовыми отработаными шаблонами нагородить). Из этих 2 наиболее эффектиным для владельцев конторы частенько оказывается не тот что "стильно, модно, молодёжно". Первый тип держат для "перспективных" разработок, которые в случае удачного варианта потом допиливают вторые. Ну так вокруг видел, может у других иначе.. я не опытный "джыдай фуллсрак деплой таск хренак-хренак продакшОн".
     
     
  • 6.37, Аноним (22), 14:12, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    ШУЕ. Или нейровыcер. Но скорее первое.
     
     
  • 7.39, Пыщь (?), 14:23, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Что ты чешешь? Видно, с воспитанием бидэ.
     
  • 3.24, Пыщь (?), 12:57, 16/12/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     

  • 1.12, Аноним (22), 12:01, 16/12/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Единственная польза — собирать код в WASM. Но golang не умеет линковать нативный код, собранный в WASM статическую библиотеку, в отличие от того же Rust.

    Про err != nil даже рассказывать смешно. Игрушка.

     
     
  • 2.26, Аноним (26), 13:08, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Согласен, Rust - игрушка.
     
     
  • 3.27, Аноним (22), 13:09, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Перефорсом не исправить отсутствие такой очевидной вещи, как Option, например. if err != nil.
     
     
  • 4.29, Аноним (29), 13:31, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Result точнее
     
     
  • 5.30, Аноним (22), 13:35, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Йеп, он самый. Не так давно пересел с golang на rust, но насколько же логичнее язык спроектирован.
     
     
  • 6.31, Аноним (33), 13:43, 16/12/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.32, Аноним (32), 13:44, 16/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    К сожалению, с многопоточностью на деле там все очень печально :( При том, что в самом wasm пока ещё грустно с нормальной многопоточностью, tinygo делает из многопоточного фактически асинхронный код.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру