The OpenNET Project / Index page

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

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

07.03.2025 10:07

Опубликован выпуск проекта Tinygo 0.36, развивающего компилятор для языка 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).

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

  • Реализована поддержка инструментария LLVM 19.
  • Добавлена начальная поддержка языка Go 1.24.
  • Расширены возможности для сборки в формате WebAssembly и добавлен новый режим сборки "buildmode=wasi-legacy" для совместимости со старыми модулями wasi, не передающими код возврата.
  • В стандартную библиотеку добавлены функции file.Chmod и file.Chdir.
  • Обеспечена совместимость с новыми ветками Ubuntu.
  • Добавлена поддержка плат: Pimoroni Pico Plus2, Elecrow Pico rp2350 W5, Elecrow Pico rp2040 W5, NRF51 HW-651, esp32c3-supermini и waveshare-rp2040-tiny.


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


Обсуждение (56) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, u235 (ok), 10:35, 07/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ого, даже для Atmega328 можно скомпилять. Надо попробовать.
     
     
  • 2.2, Смузихлеб забывший пароль (?), 10:43, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    скомпилять-то можно, но вот сколько кода туда влезет
     
     
  • 3.16, Аноним (16), 12:18, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    При гошной статической линковке всего, пожалуй, собственно полезного кода и не влезет ни строчки в эти 20 кбайт.
     
     
  • 4.18, Аноним (18), 12:23, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    за то немножко телеметрии влезет, все вперед!
     
     
  • 5.41, Аноним (41), 22:31, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я конечно не игого-люб, но телеметрия вроде пихается в компилятор от гугла, в сам бинарь вроде ничего (говорят) не пихают.
     
  • 4.42, Аноним (42), 00:54, 08/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А в сишочке-то для микроконтроллеров динамически линуют, да. Особая сишная магия.
     
  • 2.28, зомбированный (?), 17:39, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Под Atmega328 лучше AVR Studio 4.19 ничего не существует
     
     
  • 3.35, u235 (ok), 18:22, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Под Atmega328 лучше AVR Studio 4.19 ничего не существует

    Это точно! И симулятор там зачётный!

     
  • 3.39, Аноним (39), 21:46, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    он только под винду?
     
  • 3.51, Смузихлеб забывший пароль (?), 18:02, 08/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Была же ещё гораздо более продвинутая Atmel Studio( ныне Микрочип студио ) - по сути, частично переделанная VS, года, эдак, 2015-го
     
     
  • 4.57, зомбированный (?), 21:47, 08/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    так она более тяжелая - а  эта просто идеально
     

  • 1.3, Facemaker (?), 10:55, 07/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Еретический проект. Одна из (немногих) сильных сторон Go — то, что его создатели отринули зависимость от LLVM и развивают собственный переносимый ассемблер.
     
     
  • 2.5, Аноним (5), 11:14, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А чем плох LLVM?
     
     
  • 3.9, Facemaker (?), 11:23, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >А чем плох LLVM?

    Огромный переусложнённый проект на C++. Подозрительно!

     
     
  • 4.17, Аноним (16), 12:21, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А главное, что у него сомнительные кураторы.
     
     
  • 5.21, anonymous (??), 14:58, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А у Go прямо вот несомнительные совсем.
     
     
  • 6.34, Аноним (16), 18:13, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Я этого не утверждал.
     
  • 3.19, Bottle (?), 13:52, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Тем, что его написал не Facemaker.
     
  • 3.26, laindono (ok), 17:30, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    LLVM кушает много памяти и много проца. Но при этом генерирует более быстрый код.

    Golang получает несколько более медленный код, но при этом компиляция происходит быстрее.

    За счёт того, что golang достаточно простой язык сам по себе, он не очень много может дать дополнительной информации для оптимизатора. Соответственно выигрыш от LLVM для golang будет меньше, чем для Rust или C++.

     
     
  • 4.44, funny.falcon (?), 09:42, 08/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Кроме скорости компиляции, компилятор Go может размечать стеки и регистры для точного сборщика мусора. А у LLVM с этим проблемы.
     
  • 2.6, pavel_simple. (?), 11:16, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Еретический проект. Одна из (немногих) сильных сторон Go — то, что его
    > создатели отринули зависимость от LLVM и развивают собственный переносимый ассемблер.

    поэтому гугловой гошки никогда не будет ни на ембедовке ни на wasm'е

     
     
  • 3.8, Facemaker (?), 11:22, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >поэтому гугловой гошки никогда не будет ни на ембедовке ни на wasm'е

    Естественно. Не для этого оно.

     
  • 3.10, Аноним (10), 11:26, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Дык есть же на wasm'е вроде
    GOOS=js GOARCH=wasm go build -o main.wasm
     
     
  • 4.11, Facemaker (?), 11:32, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Дык есть же на wasm'е вроде

    Только им никто не пользуется: кому нужен wasm со сборщиком мусора внутри.

     
     
  • 5.12, pavel_simple. (?), 11:42, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • –3 +/
    >>Дык есть же на wasm'е вроде
    > Только им никто не пользуется: кому нужен wasm со сборщиком мусора внутри.

    им никто не пользуется потому-что хер дождёшся пока оно в бравзер загрузится на гигабитной скорости с сжатием zstd/brotli

     
  • 5.15, Самый Лучший Гусь (?), 12:14, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Так кому нужно те и пользуются. Вон люди и питон и джаву запускают в васме и радуются производительности пока не которые думают.
     
     
  • 6.22, Аноним (22), 15:28, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    гусь тоже думал, да в суп попал
     
  • 2.14, Соль земли (?), 12:12, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Очередной лунапарк...
     
  • 2.47, Аноним (-), 10:33, 08/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > создатели отринули зависимость от LLVM и развивают собственный переносимый ассемблер.

    Пока не очень получилось - переносимый асм с неотключаемым GC это полнейший фэйспалмище. Фуксики проверяли - планы по захвату мира обламываются на отличненько!


     

  • 1.7, YetAnotherOnanym (ok), 11:17, 07/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > c использованием сборщика мусора

    И пусть весь мир подождёт

     
     
  • 2.13, pavel_simple. (?), 11:48, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> c использованием сборщика мусора
    > И пусть весь мир подождёт

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

    >-gc=leaking disables the garbage collector, which can sometimes have a large effect >(especially on WebAssembly). Of course, memory will never be freed so this is only >appropriate for very short-lived programs.

     
     
  • 3.20, 12yoexpert (ok), 14:16, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    ну да, на МК же все проги short-lived
     
  • 3.29, _ (??), 17:55, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    В Go очень быстрый gc даже по понятиям Java - быстрый.
    Но это на моих многоголовых дракон^W серверах.
    На МК - да, наверное это больно... Ну дык вроде классический Go туда и не суют?

    А если кто и засунул ... ну и кто злейший враг Буратины ? :)

     
     
  • 4.36, Аноним (41), 18:27, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ну дык вроде классический Go туда и не суют?

    Хех, классический... Языку "без году неделя"... ладно 15 лет, а уже успел стать классическим.

     
     
  • 5.52, _ (??), 19:13, 08/03/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    По делам их судите!(С)

    Go за это время стал чуть ли не основным языком в облаках. Только полностью и беспрекословно волшебные на всю голову это оспаривают :-р
    И что характерно - на нём конечно есть немного "проект XYZ но на Go"(C) - ну как же совсем без этого! :) - но всё же в основном что то новое ... в отличии отЪ :-Р

    А слово "классический" я применил к Go раздаваемому отседа: https://go.dev/? да и то - только для того чтобы как то отличать его от Go раздаваемого отседа: https://tinygo.org/ ...

    Раз такое нужно объяснять ... будем завидовать(С) что некоторые сюда пишут уже употребляя Ылитный пивасик(С) :-)


     
  • 4.45, funny.falcon (?), 10:02, 08/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В tinygo не такой же GC, как в классическом Go. Он не может быть таким же по многим причинам, одна из которых - LLVM.

    Garbage collection generally works fine, but may work not as well on very small chips (AVR) and on WebAssembly. It is also a lot slower than the usual Go garbage collector.

     
     
  • 5.53, _ (??), 19:18, 08/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ну дык и я ох.. ох.. ох и удивился! вот! что его на MK пиарят! :)
    Правда тут существует два НО(С):
    - НО для некоторых и Raspberry 5 - MK! 8-)
    - НО пистон же к примеру на MK прут! А чего бы и Go не попереть? Как по мне оба там "как седло на корове"(С) - но ведь упираются люди, ПРУТ! ... значит это кому то надо(С) :)

     
  • 4.48, Аноним (-), 10:36, 08/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > В Go очень быстрый gc даже по понятиям Java - быстрый.

    В мк нет такого понятия как быстро или медленно. Там есть гарантированное успевание в реалтайм. И - все остальное. И вот ГАРАНТИИ - они какие? Не, реальный мир не ждет пока там кто-то мусор собирает и проч. Ему похрен. И в мк профаченый дедлайн довольно чреватая штука.

    > На МК - да, наверное это больно... Ну дык вроде классический Go
    > туда и не суют?

    Так вот же - сабж тоже с gc вроде. А на серверах так то - хруст игогошку теснит в хайлоаде. Вот как раз поэтому.

    > А если кто и засунул ... ну и кто злейший враг Буратины? :)

    Сабж!

     
     
  • 5.54, _ (??), 19:41, 08/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > В мк нет такого понятия как быстро или медленно. Там есть гарантированное успевание в реалтайм. И - все остальное.

    Тебя послушать так авиация - это только гиперзвуковые квази-космические стЭлсы! И - все остальное. (С) :)
    А в 21 веке MK даже в рамке с фоткой твоего кота стоит - логично подумать что --> cмотря для чего! Если ты МК-хой не обмотки в актуаторах щелкаешь, а к примеру температуру на люму выводишь - тебе тоже RT нужен? Наверное вот для такого Tiny-пистоны и TinyGo и делаются...

    Ну логика _наверное_ такая:
    ну не тратить же целый день спеца чтоб на асме всё это сделать, вон дай пистон \ Го жуниору студенту, он за неделю напишет и даже будет работать :)
    У нас 32-bit STM можно за 21 цент/штука купить (самый низ), приличный - где то 70 центов. Один день работы спеца будет сильно влиять на цену проекта :)


    > Так вот же - сабж тоже с gc вроде.

    НЯП - сделать Go совсем без gc ... ну скажем - соооовсем не тривиально :)

    > А на серверах так то - хруст игогошку теснит в хайлоаде. Вот как раз поэтому.

    В теории - да, у ржавчика есть такое приимушество...
    А вот на практике... На практике - пока не встречал. :)
    Они обещают много но ... ео уже я суперстар - я к примеру помню как в этот мир приходила Java :-)  --> мы в цЫрке не смеёмся (C) :-)

     
  • 2.30, Аноним (30), 18:00, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Да мне так-то без разницы начнётся полив в парнике ровно в 7:30 или на сто миллисекунд позже. Мне надо написать по быстрому, залить герметиком и пусть там гниёт следующие лет пять. Правда, я для этой цели взял питон, но суть ясна. Я не боинг строю, я просто утром люблю и не люблю когда огурчики горчат.
     
     
  • 3.31, Аноним (30), 18:00, 07/03/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.59, _ (??), 23:09, 08/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ну тогда для тебя наверное...
    У них на сайте стрипнутый хеловрот ~10KB - если в твой MK влазиит ... дык и присунь ;-)
     

  • 1.23, Аноним (23), 15:40, 07/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Ну здесь хоть альтернативный компиль развивают. Для языка от корпов, на минуточку!
    А у другого корпязычка даже такого нет. Делайте выводы.
     
     
  • 2.32, _ (??), 18:05, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ух дождешься - они Tinygo на Ём начнут переписывать! :-р
     
  • 2.46, funny.falcon (?), 10:04, 08/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Если ты про Rust, то уже есть реализация в GCC.

    Так же есть mrust.

     
     
  • 3.55, _ (??), 19:44, 08/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В мире много чего есть, мой друг Горацио(С) Шык_с_Пир

    А толку? :)

     

  • 1.24, Ддд (?), 16:40, 07/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    С сетью не работает так что смысла в нем не больше бейсика
     
     
  • 2.33, _ (??), 18:10, 07/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Для Ддд***ов :
    1) Бейсик работает с сетю так же как (к примеру) Си или <вписать ваш любимый ЁзыгЪ>
    2) Дааааалееееекоооо не на всех МК есть Ethernet или WiFi ... там иногда вообще мало что есть :)


    Домохозяйки от ИТ доставляли, доставляют и будут доставлять! Я сказал! :)

     
  • 2.56, Брат Анон (ok), 20:12, 08/03/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Т.е. на их сайт ты не заходил, по факту поддержку сети (соответственно) не видел, но осуждаешь. Ясно, понятно.
     

  • 1.25, Аноним (25), 17:00, 07/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Обеспечена совместимость с новыми ветками Ubuntu

    А что там в убунту накостылили, что нужно для нее отдельно делать совместимость?

     
  • 1.27, Аноним (27), 17:33, 07/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Зато если им компилировать для linux, то со старта hello world сжирает 1 Гб виртуальной памяти, а если её нет, то падает. Hello world!
     
     
  • 2.49, Аноним (49), 15:02, 08/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > а если её нет, то падает

    Ты зачем overcommit выключил?

     
  • 2.50, Аноним (27), 16:09, 08/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >Ты зачем overcommit выключил?

    Ограничение размера виртуальной памяти - первый шаг для обработки OOM.

     

  • 1.43, Аноним (-), 08:44, 08/03/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > Компилятор подходит для генерации компактных исполняемых файлов для маломощных систем, таких как микроконтроллеры и встраиваемые устройства

    Уже есть Nim. Для всего.

     
     
  • 2.58, _ (??), 23:03, 08/03/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Хороший анек бро! :)

    А по факту - для хоть чего бы :)
    Не надо в доказательство перечислять все три васяноподелки на нём, я в курсе. У него всё было, чтобы взлететь... но не судьба. Не расстраивайся бро - вон целый D не взлетел, а уж тут то...

     

  • 1.60, Аноним (60), 23:52, 08/03/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     

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



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

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