The OpenNET Project / Index page

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

Выпуск Tinygo 0.34, компилятора языка Go на базе LLVM

27.10.2024 10:52

Опубликован выпуск проекта Tinygo 0.34, развивающего компилятор языка Go для маломощных систем, таких как микроконтроллеры и встраиваемые устройства, которым необходима генерация очень компактных исполняемых файлов и низкое потребление ресурсов. Компиляция для поддерживаемых целевых платформ реализована в tinygo при помощи 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).

В новой версии реализована поддержка архитектуры MIPS с порядком следования байтов big-endian, а также добавлена поддержка плат RAKwireless RAK4631 и WaveShare ESP-C3-32S-Kit. Для экспорта WebAssembly-функций добавлена директива "//go:wasmexport". Проведена оптимизация производительности сборщика мусора. Добавлены новые опции командной строки "-C DIR" и "-ldflags='-extldflags=...'".

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


Обсуждение (25) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Брат Анон (ok), 11:09, 27/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Развивается проект, это радует. Особенно удовлетворён упоминанием ESP32. Джва года ждал!)
     
     
  • 2.7, Аноним (7), 11:32, 27/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сборщик мусора на ESP32, да…
     
     
  • 3.16, НяшМяш (ok), 15:03, 27/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А на атмеге вообще шикарно должно быть...
     

  • 1.2, растист (?), 11:10, 27/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –9 +/
    Это кем надо быть чтобы писать на Go код для микроконтроллеров... Хорошо что не Java.
     
     
  • 2.4, Аноним (4), 11:16, 27/10/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Уж всяко лучше, чем на Питоне
     
     
  • 3.6, Вася Пупкин (?), 11:30, 27/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Развивайте чувство прекрасного
     
     
  • 4.10, Аноним (10), 11:43, 27/10/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Василий, не могли бы вы более подробно раскрыть свою мысль?
     
  • 3.13, laindono (ok), 12:37, 27/10/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Не всяко, на PHP хуже. И да, оно существует.
     
  • 2.5, Аноним (5), 11:17, 27/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Можешь выкидывать свою симку и банковскую карту, под них можно писать на жабе.
     
     
  • 3.8, Аноним (7), 11:32, 27/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Жавакард это не совсем то, о чём ты подумал.
     
  • 2.14, Денис Попов (?), 14:30, 27/10/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Хорошо что не Java.

    Хорошо что в лужу. Java апаратно поддерживалась (см Jazelle)

     
     
  • 3.18, НяшМяш (ok), 15:05, 27/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Не повод для гордости. Вон целый андроид под влиянием обычных мобилок с "аппаратным ж2ме" до сих пор страдает.
     
     
  • 4.24, Вы забыли заполнить поле Name (?), 16:07, 27/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > андроид
    > страдает

    Железо и софт не может страдать и испытывать эмоций, а вот ты как пользователь вполне.

     

  • 1.3, мяв (?), 11:10, 27/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    вот это реально интересно!
    грустно, правда, что куда ни посмотри - везде код на плюсах(спасибо llvm и gcc) и все +- одно и то же. даже идей каких-нибудь не подчерпнешь.
    Зы.
    >В отличие от не обновлявшегося последние три года похожего компилятора emgo в tinygo

    куда, автор, запятую дел? все люди, пишущие новости, на изучение пунктуации в школе забили???

     
     
  • 2.15, bregor (ok), 14:55, 27/10/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > все люди, пишущие новости, на изучение пунктуации в школе забили???

    Спросил человек, забивший на грамматику и пишущий "почерпнуть" с лишней "Д"

     
     
  • 3.22, Аноним (-), 16:03, 27/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Спросил человек, забивший на грамматику и пишущий "почерпнуть" с лишней "Д"

    Синтаксиса с тремя вопросами в "правильном" русском языке тоже вроде бы нет.

     
  • 2.23, Аноним (23), 16:06, 27/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > куда, автор, запятую дел? все люди, пишущие новости, на изучение пунктуации в школе забили???

    А вам было вломак заглавные буквы нормально расставлять. И чем вы отличаетесь, чтобы наезжать? Может сперва в зеркало посмотреть стоило?

     

  • 1.11, Аноним (11), 11:54, 27/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что-то я не понял. Ну допустим есть у меня какой-то контроллер и этот tinyGo. Я же не могу ни одну бибилотеку для Go использовать, они ведь памяти выделают с оглядом на PC. А без бибилотек, зачем нужен тут Go?
     
     
  • 2.12, Советский инженер (ok), 12:35, 27/10/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    так с Сишечекой такая же фигня.
    библиотеки для десктопа и бареметала практически не пересекаются.
     
     
  • 3.20, НяшМяш (ok), 15:08, 27/10/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Даже в расте и то сделали no_std режим.
     
  • 3.25, Аноним (23), 16:11, 27/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > библиотеки для десктопа и бареметала практически не пересекаются.

    Неправда ваша, все что чистая математика прекрасно работает и там и там. Скажем крипто какое, FEC, и тому подобное. Отдельные эстеты даже некоторые аудиокодеки запускать умудряются (конечно посложнее ADPCM, его кто угодно запустит на чем угодно). Например вон там ReedSolomon влет портировался на MCU из писючной либы. Ну да, жрет 400 байтов RAM, но даже на AVR влазит при сильном желании (конечно на AVR считает неспешно, но - считает).

    А прелесть в том что можно на PC отладить с жирной инструментацией типа asan/ubsan, опробовать разные варианты, fuzzer'ом покормить чтобы посмотреть лох ли парсер, и - вот - прекрасно перенести на мк. Хоть для вас то это наверное заоблачный хайтек. А де факто это нормальный воркфлоу приличного сишника сейчас.

     

  • 1.17, Аноним (17), 15:04, 27/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Интересно, а сколько у rust сторонних компилляторов ??
     
     
  • 2.19, НяшМяш (ok), 15:08, 27/10/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вам бекенд или фронтенд?

    https://github.com/rust-lang/rustc_codegen_cranelift
    https://github.com/rust-lang/rustc_codegen_gcc
    https://github.com/Rust-GCC/gccrs

    Последний особенно интересен линукс ядру, чтобы компилировать всё одним компилятором.

     
     
  • 3.26, Вы забыли заполнить поле Name (?), 16:12, 27/10/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Что из этого в готовом состоянии?

    > Последний особенно интересен линукс ядру, чтобы компилировать всё одним компилятором.

    Интересен может, но не используется же, потому что не готовый.

     

  • 1.21, Аноним (-), 16:02, 27/10/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > сохранена оригинальная модель управления памятью Go
    > с использованием сборщика мусора

    Самое то что надо на микроконтроллере. Вот ща вместо переключения обмотки мотора - подумаем, GC сделаем, и хрен с ним с расколбасом мотора. Зато модно и молодежно, движуха. Фирмварь на этом любителям смyзи в гироскутер, во. Пусть гордо рассказывают что 99.5% укладывается в дедлайн (потирая забинтованый нос).

     

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



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

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