LINUX.ORG.RU

tinygo 0.6.0

 , tinygo


4

5

TinyGo – это компилятор языка Go, предназначенный для использования в таких областях, как микроконтроллеры, WASM, а также разработки утилит командной строки.

TinyGo использует утилиты и библиотеки, написанные в проекте Go, при этом предоставляя альтернативный метод компиляции программ на основе наработок проекта LLVM.

Задачи проекта:

  1. Обеспечить минимальный размер исполняемых файлов.
  2. Поддержка наибольшего количества микроконтроллеров.
  3. Поддержка WebAssembly.
  4. Хорошая поддержка CGo.
  5. Поддержка оригинального кода на Go без изменений.

Пример использования для переключения LED на микроконтроллере:

package main

import (
    "machine"
    "time"
)

func main() {
    led := machine.LED
    led.Configure(machine.PinConfig{Mode: machine.PinOutput})
    for {
        led.Low()
        time.Sleep(time.Millisecond * 1000)

        led.High()
        time.Sleep(time.Millisecond * 1000)
    }
}

Версия 0.6.0 содержит множество изменений. Основные из них относятся к улучшению поддержки CGo, js.FuncOF (Go 1.12+), а также двух новых отладочных плат: Adafruit Feather M0 и Adafruit Trinket M0.

Полный список изменений доступен на GitHub странице проекта.

>>> TinyGo.org

anonymous

Проверено: jollheef ()

Ответ на: комментарий от shkolnick-kun

uClinux намеренно стороной обходишь?

anonymous
()
Ответ на: комментарий от shkolnick-kun

Переделка этого всего в небольшой обзор - в процессе. -> баззаорд, упортых идей

openSCADA -> Язык JAva.

openSCADA, Stantor -> web-Интерфейс
Kaa IoT -> web-интерфейс

Kaa IoT -> защишенную связь

Mbed -> онструментального ПО, обственная RTOS

RIOT -> опреционня система

NodeMcu -> Пошивка лежит

Espruino -> шоирокая нуменклатура

Mongoose -> серверб клиент

TinyGo -> «корпораци добра», длямикроконтроллеров

AHAH
()
Ответ на: комментарий от BigAlex

Навесить на структуру методы-функции - это вам еще не class и не ООП.

Смотря что понимать под ООП. Его отец Алан Кэй считал объекты чем-то вроде биологических клеток, и/или отдельных компьютеров в сети, которые могут общаться только через сообщения. Концепция наследования реализации не обязательна.

hbee ★★★★
()
Ответ на: комментарий от anonymous

Напомни, в каком языке до Golang была такая же реализация конкурентности, как в Go?

Limbo?

Go — это прорывной язык для индустрии.

Во во. Судя по запаху там что то прорвало....

dem ★★
()
Ответ на: комментарий от dem

Та просто нервирует что половина считает реалтаймом - поморгать светодиодом, а другая половина считает embedded - кофеварку с заказом кофе с интернета через Яндекс.Алису.

windows10 ★★★★★
()
Ответ на: комментарий от windows10

Полностью согласен. Эмбеддед бывает жесткий реалтайм и там не место Го уж точно. А может быть «Умный дом». Который лепят на ардуинах. А потом на них течет вода и они гниют или ни дай бог загораются от КЗ. И пофиг что 1 расберри покроет все эти 300 ардуин которые лепят в розетку. И дешевле в 1000 раз будет.

Сталкивался с умельцами которые на ардуине лепили линию по розливу минералки и она становилась каждые 2 часа из за отсутствия гальванической развязки. А сименс для нас дорого. Ну ничего. Постояли месяцок. Купили сименсы с боксами, на дин рейках и с ПО и уже много лет работают....

dem ★★
()
Ответ на: комментарий от dem

Ха. Кстати видел подобный прикол, правда не с Ардуиной, а с чипом attiny в выключателе света. Через месяц сдох. Разобрал. Дорожки из-за влажности тю-тю.

Подобные кретины и пихают всякие Go куда-не попадя, потом чья-то рука случайно попадает в ЧПУ, а мозг вместо того чтоб отключить двигатель - занимается сборками мусора, или просто сегфолтится.

Такие вещи, нужно писать на как более низкоуровневом языке, не потому что это олдскульно, дорого или быстродейственно, а банально затем, чтобы понимать ЧТО происходит (еще) при выполнении операции.

Вот например из примера «led.Low()» - ЧТО происходит при вызове этой функции ? Что блокируется ? На сколько ? Что происходит с обработчиками прерываний ? Сколько по времени длится выполнение, и привязано ли оно к прерыванию ?

С этими подводными камнями сталкивался ЛИЧНО, пытаясь осилить хипсторский Lua \ NodeMCU на ESP. Используешь на первый взгляд безобидную функцию открытия UART - и блокируешь свою ESP-шку для последующей прошивки. Круто же.

Я бы такое не юзал в продакшене.

windows10 ★★★★★
()
Ответ на: комментарий от anonymous

Пример использования для переключения LED на микроконтроллере:

package main

import (
    "machine"
    "time"
)

func main() {
    led := machine.LED
    led.Configure(machine.PinConfig{Mode: machine.PinOutput})
    for {
        led.Low()
        time.Sleep(time.Millisecond * 1000)

        led.High()
        time.Sleep(time.Millisecond * 1000)
    }
}

Аналогичный скетч с Ардуйни:

void setup() {
  pinMode(1, OUTPUT);
}
void loop() {
  digitalWrite(1, HIGH); 
  delay(1000);
  digitalWrite(1, LOW);
  delay(1000); 
}


Буков меньше. Читабельность та же, если не лучше.

windows10 ★★★★★
()
Ответ на: комментарий от windows10

led.Low()

А вы уверены, что он не асинхронный?

time.Sleep(time.Millisecond * 1000)

Когда отработает?

dem ★★
()

Продолжу срачь Go vs Rust.

В проекте используем и Rust и Go. В Rust коде нам не пришлось бороться с утечкой памяти, а в Go пришлось. Оба микросервиса многопоточные.

Насчет микроконтроллеров. Вроде и Си хорош. Отлично читается, понимается, легко учится и т.д. В многопотоке уже хуже с ним. Если микроконтроллер захочется загрузить на все ядра, то смысла брать го не вижу) На Си и на одном ядре будет шустрее считать) А для асинхронных нетребовательных задач, да, подойдет го.

anonymous
()
Ответ на: комментарий от RazrFalcon

Это настолько несерьёзно, что даже не смешно.

Каким образом отбрасывают хэлловорды разных хипстеров типа того же tinygo? Как учитывается размер проекта? Есть ли веса? Каким образом учитывают закрытые проекты?

skvitek ★★★
()
Ответ на: комментарий от skvitek

На индекс TIOBE ссылаются в научных статьях.

Список в студию. Я надеюсь там хоть уточняют, насколько он бесполезен. Иначе 4.2

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

Ты поиском пользоваться умеешь?

https://www.sciencedirect.com/search?qs=TIOBE&show=25&sortBy=relevance

Потом рекомендую для каждой найденной статьи посмотреть список ссылающихся на неё статей. Надеюсь, кроме sciencedirect ты и сам сможешь найти ещё поисковики по научным журналам.

skvitek ★★★
()
Ответ на: комментарий от anonymous

Из сотен тысяч статей на тысячи различных тематик. Анонимус, научись думать головой.

И да, прибавь к этим статьям ссылающиеся на них другие статьи, и в конце учти то, что на ваши хипстерские поделия вообще никто не ссылается.

skvitek ★★★
()

Клево, купил бы для этой штуки ардуину (оно же может в ардуину ?) , но не могу придумать задачу

Dred ★★★★★
()
Ответ на: комментарий от skvitek

Для тупых: из сотен тысяч статей о «programming languages», только, Карл, 48! А github упомянут в 3,800, и кто тут хипстер?

anonymous
()
Ответ на: комментарий от anonymous

https://madnight.github.io/githut/#/pushes/2019/1

Вот это упомянуто 3800 раз?

Мы говорим об очень конкретных вещах, дорогой анонимус, нельзя сравнивать ссылки на индех TIOBE и ссылки просто на github - это как сравнивать оранжевое и слонов. Будь добр, найди ссылки в научных статьях на тот хипстерский индекс.

skvitek ★★★
()
Последнее исправление: skvitek (всего исправлений: 1)
Ответ на: комментарий от skvitek

Там 3800 раз упомянут самый популярный хостинг кода, в том числе в темах статей, что, на мой взгляд, придает ему и его рейтингам куда больше веса, чем жалкие мимоходом 48 упоминаний TIOBE.

anonymous
()
Ответ на: комментарий от dem

Раньше думал что это в движках игровых счет идет в миллисекундах. Пока не столкнулся с FreeRTOS и там все наносекундах пошло.

baist ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.