The OpenNET Project / Index page

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

Проект Solod развивает подмножество языка Go, транслируемое в язык Си

07.04.2026 11:53 (MSK)

Представлен язык программирования Solod (So), предоставляющий подмножество языка Go, транскомпилируемое в представление на языке Си (C11), пригодное для сборки компиляторами GCC, Clang и zig cc. Ключевым отличием Solod от Go и Tinygo является использование ручного управления памятью, работающего без применения сборщика мусора, без автоматического выделения памяти и без подсчёта ссылок. Транспайлер для Solod написан на языке Go и распространяется под лицензией BSD. Поддерживается работа в Linux, macOS и Windows.

Язык поддерживает структуры, методы, интерфейсы, слайсы, возврат функциями нескольких значений (например, результат + код ошибки), дженерики и отложенные вызовы (defer). C целью упрощения в языке не поддерживаются каналы, сопрограммы и замыкания. При разработке на языке Solod могут использоваться существующие LSP-серверы, линтеры, интегрированные среды разработки и редакторы кода, поддерживающие язык Go, а также инструментарий "go test".

Написанный на Solod код может интегрироваться с приложениями на языке Си (язык Си может вызвать функции на Solod и наоборот) и не требует прикрепления runtime. Из ключевых областей применения отмечается системное программирование с близкими к Си возможностями, но с синтаксисом в стиле Go и обеспечением проверки типов. Solod также может применяться для портирования Go-библиотек для использования в проектах на Си. На язык Си портированы Go-пакеты strings, io, bytes, mem, slices и т.п. Помимо набора портированных Go-библиотек в программах на языке Solod можно использовать обвязки над стандартной Си-библиотекой libc.

По умолчанию вся память выделяется в стеке, но через функции Alloc / Free стандартной библиотеки можно выделять память в куче. Сборка мусора и подсчёт ссылок не используются, но в Solod предоставляются возможности для проверки типов и аварийного завершения при обращении за границу массива. При этом проверки на возвращение висячих указателей (dangling pointer) и отсутствие освобождения памяти не производятся. В качестве основного способа выявления проблем при работе с памятью упоминается использование AddressSanitizer (-fsanitize=address) в современных компиляторах.

По производительности скомпилированные программы, написанные на Solod, в большинстве случаев быстрее программ на Go. Например, производительность работы функций из пакета Byte быстрее в полтора раза при идентичном потреблении памяти. Работа с байтовыми буферами быстрее в 1.3 раза при чтении и в 2-4 раза при записи. В пакете Map выборка по целочисленному ключу быстрее в 3.4 раза, но модификация ключей медленнее в 1.6 раза. Выборка по строковым ключам на одном уровне с языком Go, но модификация медленнее в 1.5 раза. Парсинг и форматирование целых чисел быстрее в 2 раза, а с плавающей запятой - в 1.5/1.2 раза. Строковые функции быстрее в 1.3 раза, а создание строк быстрее в 2-4 раза при снижении потребления памяти на 10-20%.

  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: Выпуск языка программирования Go 1.26
  3. OpenNews: Выпуск Tinygo 0.40, компилятора для языка Go
  4. OpenNews: Оценка потребления памяти при одновременном запуске миллиона задач
  5. OpenNews: Выпуск транслятора языка программирования Vala 0.56.0
  6. OpenNews: Выпуск языка программирования Nim 2.2.8
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/65160-solod
Ключевые слова: solod, go
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (32) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Axonic (ok), 12:41, 07/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Изобрели Nim и Vala
     
     
  • 2.36, Аноним (36), 15:28, 07/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Модно теперь их друг в друга транслировать.
     

  • 1.5, Аноним83 (?), 13:02, 07/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    > Из ключевых областей применения отмечается системное программирование с близкими к Си возможностями

    Да да, все такие важные.
    На вижал бейские тоже можно было писать системные приложения, да и на перле можно.

    Да и зачем оно надо, когда есть LUA и Vala.

     
  • 1.7, Жироватт (ok), 13:11, 07/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Нужно изобрести язык Golod. Который будет как Git Crab, подъедать исходники при транспиляции в С, а затем в JS.
    И преобразователь текста УНИТАЗ.

    > не поддерживаются каналы, сопрограммы и замыкания

    Горутины - то, ради чего стоит в принципе if err!=nil терпеть

     
     
  • 2.10, Аноним (10), 13:26, 07/04/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.11, Аноним (11), 13:33, 07/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Типичный вопрос будет: "У Вас Ржавчина в УНИТАЗе - есть?"
     
     
  • 3.19, Аноним (19), 14:27, 07/04/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 3.38, greomesh (?), 15:30, 07/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Свой УНИверсальный Текстовый АналиЗатор мы писали на java. Староверы, мы ..
     
  • 2.15, Аноним (15), 13:46, 07/04/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.26, Аноним (26), 15:03, 07/04/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.29, Аноним (29), 15:21, 07/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    без горутин он получается односолодовый
     

  • 1.8, Аноним (19), 13:25, 07/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Solod - хорошее программистское название ;)
    Надеюсь, эти без телеметрии обходятся.
     
  • 1.9, крокодил (?), 13:25, 07/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    а зачем? какая цель? just for fun? что бы был?

    Можно же сделать что-то принципиально новое. Зачем еще один велосипед?

     
     
  • 2.12, Аноним (11), 13:37, 07/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Можно же сделать что-то принципиально новое

    Принципиально новое уже сделано: раст.

     
  • 2.14, Аноним (14), 13:45, 07/04/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вы очень внимательно прочитали последний абзац новости.
     
     
  • 3.22, Аноним (22), 14:51, 07/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    В последнем абзаце не сказано зачем. Если я напишу, что я быстро бегаю - из этого никак не следует, что мне надо ехать на олимпиаду.
     

  • 1.13, Аноним (13), 13:41, 07/04/2026 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     
  • 1.16, Hack3r (?), 13:57, 07/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Trademark!
    https://dlang.org/spec/betterc.html
     
  • 1.17, искр (?), 14:21, 07/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ячмень -> солод -> пиво!

    парни знают толк в названиях

     
     
  • 2.35, Аноним (35), 15:27, 07/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > ячмень -> солод -> пиво!

    мир! труд! май!

     

  • 1.18, Аноним (-), 14:25, 07/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > Представлен язык программирования Solod (So), предоставляющий подмножество языка Go,
    > транскомпилируемое в представление на языке Си (C11), пригодное для сборки компиляторами GCC, Clang и zig cc

    Идея прикольная. Но ему как я понимаю нужен - go :\. Без этого сие как я понимаю не операбельно, это FAIL я считаю. Могли бы сделать транспилируемыми сам себя, и собираться собой. Без требования гуглокрапа.

     
  • 1.20, Вася Пупкин (?), 14:45, 07/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Чем бы не маяться - лишь бы Раст не учить
     
  • 1.21, Аноним (22), 14:48, 07/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    То есть они открутили горутины, замыкания и тп и сборщик мусора. Получили на выходе покоцанный Си с другим синтаксисом. Чтобы что?
     
     
  • 2.23, Аноним (23), 14:56, 07/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    в си нет женериков, в си нет слайсов и строк с длиной
     
     
  • 3.24, Аноним (23), 14:56, 07/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    и точно и дефер будет только в с29..
     
     
  • 4.34, Аноним (36), 15:26, 07/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Ты путаешь си и си++
     

  • 1.25, th3m3 (ok), 14:58, 07/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    В итоге, результат - сомнительный. Лучше сразу тогда на C писать.
     
     
  • 2.33, Аноним (36), 15:25, 07/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    И выйти за границу буфера.
     
     
  • 3.37, Аноним (35), 15:29, 07/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    проверки надо делать, assert'ы и всё такое
     

  • 1.28, Аноним (28), 15:20, 07/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > C целью упрощения в языке не поддерживаются каналы, сопрограммы и замыкания

    То есть убрали то почему язык называется go. И тогда причем тут вообще go?
    У парней которые делают V, легковесную замену голанга, тоже с трансляцией на C, аналог горутин сразу в первом релизе был.

     
  • 1.30, Аноним (28), 15:21, 07/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > C целью упрощения в языке не поддерживаются каналы, сопрограммы и замыкания

    То есть убрали то почему язык называется go. И тогда причем тут вообще go?
    У парней которые делают V, легковесную замену голанга, тоже с трансляцией на C, аналог горутин сразу в первом релизе был.

     
  • 1.32, Аноним (36), 15:25, 07/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Напишите язык с синтаксисом Go и неотключаемым боров чекером. И получится Раст с нормальным синтаксисом.  

     

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



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

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