Опубликован выпуск проекта Tinygo 0.36, развивающего компилятор для языка Go. Компилятор подходит для генерации компактных исполняемых файлов для маломощных систем, таких как микроконтроллеры и встраиваемые устройства, программы для которых должны минимально потреблять память и вычислительные ресурсы. Компиляция для поддерживаемых целевых платформ реализована при помощи LLVM, а библиотеки функций заимствованы из основного инструментария проекта Go. Код распространяется под лицензией BSD...Подробнее: https://www.opennet.me/opennews/art.shtml?num=62844
Ого, даже для Atmega328 можно скомпилять. Надо попробовать.
скомпилять-то можно, но вот сколько кода туда влезет
При гошной статической линковке всего, пожалуй, собственно полезного кода и не влезет ни строчки в эти 20 кбайт.
за то немножко телеметрии влезет, все вперед!
Я конечно не игого-люб, но телеметрия вроде пихается в компилятор от гугла, в сам бинарь вроде ничего (говорят) не пихают.
А, ты ведись...
А в сишочке-то для микроконтроллеров динамически линуют, да. Особая сишная магия.
Под Atmega328 лучше AVR Studio 4.19 ничего не существует
> Под Atmega328 лучше AVR Studio 4.19 ничего не существуетЭто точно! И симулятор там зачётный!
он только под винду?
Была же ещё гораздо более продвинутая Atmel Studio( ныне Микрочип студио ) - по сути, частично переделанная VS, года, эдак, 2015-го
так она более тяжелая - а эта просто идеально
Еретический проект. Одна из (немногих) сильных сторон Go — то, что его создатели отринули зависимость от LLVM и развивают собственный переносимый ассемблер.
А чем плох LLVM?
>А чем плох LLVM?Огромный переусложнённый проект на C++. Подозрительно!
А главное, что у него сомнительные кураторы.
А у Go прямо вот несомнительные совсем.
Я этого не утверждал.
Тем, что его написал не Facemaker.
LLVM кушает много памяти и много проца. Но при этом генерирует более быстрый код.Golang получает несколько более медленный код, но при этом компиляция происходит быстрее.
За счёт того, что golang достаточно простой язык сам по себе, он не очень много может дать дополнительной информации для оптимизатора. Соответственно выигрыш от LLVM для golang будет меньше, чем для Rust или C++.
Кроме скорости компиляции, компилятор Go может размечать стеки и регистры для точного сборщика мусора. А у LLVM с этим проблемы.
> Еретический проект. Одна из (немногих) сильных сторон Go — то, что его
> создатели отринули зависимость от LLVM и развивают собственный переносимый ассемблер.поэтому гугловой гошки никогда не будет ни на ембедовке ни на wasm'е
>поэтому гугловой гошки никогда не будет ни на ембедовке ни на wasm'еЕстественно. Не для этого оно.
Дык есть же на wasm'е вроде
GOOS=js GOARCH=wasm go build -o main.wasm
>Дык есть же на wasm'е вродеТолько им никто не пользуется: кому нужен wasm со сборщиком мусора внутри.
>>Дык есть же на wasm'е вроде
> Только им никто не пользуется: кому нужен wasm со сборщиком мусора внутри.им никто не пользуется потому-что хер дождёшся пока оно в бравзер загрузится на гигабитной скорости с сжатием zstd/brotli
Так кому нужно те и пользуются. Вон люди и питон и джаву запускают в васме и радуются производительности пока не которые думают.
гусь тоже думал, да в суп попал
Очередной лунапарк...
> создатели отринули зависимость от LLVM и развивают собственный переносимый ассемблер.Пока не очень получилось - переносимый асм с неотключаемым GC это полнейший фэйспалмище. Фуксики проверяли - планы по захвату мира обламываются на отличненько!
> c использованием сборщика мусораИ пусть весь мир подождёт
>> 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.
ну да, на МК же все проги short-lived
В Go очень быстрый gc даже по понятиям Java - быстрый.
Но это на моих многоголовых дракон^W серверах.
На МК - да, наверное это больно... Ну дык вроде классический Go туда и не суют?А если кто и засунул ... ну и кто злейший враг Буратины ? :)
> Ну дык вроде классический Go туда и не суют?Хех, классический... Языку "без году неделя"... ладно 15 лет, а уже успел стать классическим.
По делам их судите!(С)Go за это время стал чуть ли не основным языком в облаках. Только полностью и беспрекословно волшебные на всю голову это оспаривают :-р
И что характерно - на нём конечно есть немного "проект XYZ но на Go"(C) - ну как же совсем без этого! :) - но всё же в основном что то новое ... в отличии отЪ :-РА слово "классический" я применил к Go раздаваемому отседа: https://go.dev/? да и то - только для того чтобы как то отличать его от Go раздаваемого отседа: https://tinygo.org/ ...
Раз такое нужно объяснять ... будем завидовать(С) что некоторые сюда пишут уже употребляя Ылитный пивасик(С) :-)
В 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.
Ну дык и я ох.. ох.. ох и удивился! вот! что его на MK пиарят! :)
Правда тут существует два НО(С):
- НО для некоторых и Raspberry 5 - MK! 8-)
- НО пистон же к примеру на MK прут! А чего бы и Go не попереть? Как по мне оба там "как седло на корове"(С) - но ведь упираются люди, ПРУТ! ... значит это кому то надо(С) :)
> В Go очень быстрый gc даже по понятиям Java - быстрый.В мк нет такого понятия как быстро или медленно. Там есть гарантированное успевание в реалтайм. И - все остальное. И вот ГАРАНТИИ - они какие? Не, реальный мир не ждет пока там кто-то мусор собирает и проч. Ему похрен. И в мк профаченый дедлайн довольно чреватая штука.
> На МК - да, наверное это больно... Ну дык вроде классический Go
> туда и не суют?Так вот же - сабж тоже с gc вроде. А на серверах так то - хруст игогошку теснит в хайлоаде. Вот как раз поэтому.
> А если кто и засунул ... ну и кто злейший враг Буратины? :)
Сабж!
> В мк нет такого понятия как быстро или медленно. Там есть гарантированное успевание в реалтайм. И - все остальное.Тебя послушать так авиация - это только гиперзвуковые квази-космические стЭлсы! И - все остальное. (С) :)
А в 21 веке MK даже в рамке с фоткой твоего кота стоит - логично подумать что --> cмотря для чего! Если ты МК-хой не обмотки в актуаторах щелкаешь, а к примеру температуру на люму выводишь - тебе тоже RT нужен? Наверное вот для такого Tiny-пистоны и TinyGo и делаются...Ну логика _наверное_ такая:
ну не тратить же целый день спеца чтоб на асме всё это сделать, вон дай пистон \ Го жуниору студенту, он за неделю напишет и даже будет работать :)
У нас 32-bit STM можно за 21 цент/штука купить (самый низ), приличный - где то 70 центов. Один день работы спеца будет сильно влиять на цену проекта :)
> Так вот же - сабж тоже с gc вроде.НЯП - сделать Go совсем без gc ... ну скажем - соооовсем не тривиально :)
> А на серверах так то - хруст игогошку теснит в хайлоаде. Вот как раз поэтому.
В теории - да, у ржавчика есть такое приимушество...
А вот на практике... На практике - пока не встречал. :)
Они обещают много но ... ео уже я суперстар - я к примеру помню как в этот мир приходила Java :-) --> мы в цЫрке не смеёмся (C) :-)
> В Go очень быстрый gc даже по понятиям Java - быстрый.да на самом деле все быстрее чем JVM из коробки, пока не пропишешь 100+ аргументов:)
Да мне так-то без разницы начнётся полив в парнике ровно в 7:30 или на сто миллисекунд позже. Мне надо написать по быстрому, залить герметиком и пусть там гниёт следующие лет пять. Правда, я для этой цели взял питон, но суть ясна. Я не боинг строю, я просто утром люблю и не люблю когда огурчики горчат.
* утром поспать люблю
Ну тогда для тебя наверное...
У них на сайте стрипнутый хеловрот ~10KB - если в твой MK влазиит ... дык и присунь ;-)
Ну здесь хоть альтернативный компиль развивают. Для языка от корпов, на минуточку!
А у другого корпязычка даже такого нет. Делайте выводы.
Ух дождешься - они Tinygo на Ём начнут переписывать! :-р
Если ты про Rust, то уже есть реализация в GCC.Так же есть mrust.
В мире много чего есть, мой друг Горацио(С) Шык_с_ПирА толку? :)
С сетью не работает так что смысла в нем не больше бейсика
Для Ддд***ов :
1) Бейсик работает с сетю так же как (к примеру) Си или <вписать ваш любимый ЁзыгЪ>
2) Дааааалееееекоооо не на всех МК есть Ethernet или WiFi ... там иногда вообще мало что есть :)
Домохозяйки от ИТ доставляли, доставляют и будут доставлять! Я сказал! :)
Т.е. на их сайт ты не заходил, по факту поддержку сети (соответственно) не видел, но осуждаешь. Ясно, понятно.
> Обеспечена совместимость с новыми ветками UbuntuА что там в убунту накостылили, что нужно для нее отдельно делать совместимость?
Зато если им компилировать для linux, то со старта hello world сжирает 1 Гб виртуальной памяти, а если её нет, то падает. Hello world!
> а если её нет, то падаетТы зачем overcommit выключил?
>Ты зачем overcommit выключил?Ограничение размера виртуальной памяти - первый шаг для обработки OOM.
> Компилятор подходит для генерации компактных исполняемых файлов для маломощных систем, таких как микроконтроллеры и встраиваемые устройстваУже есть Nim. Для всего.
Хороший анек бро! :)А по факту - для хоть чего бы :)
Не надо в доказательство перечислять все три васяноподелки на нём, я в курсе. У него всё было, чтобы взлететь... но не судьба. Не расстраивайся бро - вон целый D не взлетел, а уж тут то...
Основная проблема tinygo в первую очередь в отсутствии нативной поддержки многопоточности используя горутины. Это ощутимо при работе с многоядерными микроконтроллерами (как например raspberry pico).