Repolode
aardappel

aardappel/goose

Экспериментальный язык системного программирования без аллокатора в куче и сборщика мусора, с безопасным управлением памятью через стеки данных под контролем компилятора.

Звёзды
3,146
Форки
132
Открытые issues
48
Последний коммит
вчера

Что это?

Goose — язык программирования с синтаксисом, похожим на C и Rust, в котором нет кучи. Каждое динамическое значение хранится непосредственно в стеке данных, статически управляемом компилятором: при росте сдвигается указатель, а память освобождается при выходе из области видимости. В языке нет аллокатора, сборщика мусора, подсчёта ссылок, деструкторов, аннотаций времени жизни и блока unsafe.

В языке есть массивы, которые только растут или могут как расти, так и уменьшаться, при этом ссылки на их элементы остаются действительными по мере роста; относительные ссылки в виде смещений размером 1, 2 или 4 байта; а также enum, которые хранятся с размером, соответствующим каждому из вариантов. Потоки запускаются как отдельные программы со своей памятью и обмениваются простыми значениями через типизированные очереди. Компилятор генерирует один C-файл и поддерживает прямые вызовы C через extern fn; в комплект входит бэкенд TinyCC, запускающий программы внутри процесса.

В проект входят учебное руководство, справочник и спецификация языка, стандартная библиотека с модулями для графики, физики и UI, тридцать один пример программы и бенчмарки для сравнения с C++ и Rust. Автор проекта отмечает, что репозиторий создан преимущественно с помощью ИИ на основе дизайна языка, разработанного человеком.

Ключевые возможности

  • 01Память управляется стеками данных, назначаемыми компилятором; выделения в куче и GC нет.
  • 02Массивы могут только расти, при этом ссылки на элементы остаются действительными.
  • 03Относительные ссылки хранятся как смещения размером 1, 2 или 4 байта, что позволяет размещать данные независимо от их позиции.
  • 04Enum переменного размера и вложенные данные хранятся непосредственно, без указателей.
  • 05Потоки используют раздельную память и обмениваются данными через типизированные очереди.
  • 06Прямые вызовы C через extern fn и компиляция в один C-файл.

Сценарии использования

  • Изучение моделей управления памятью для системного кода без сборщика мусора и ручного освобождения памяти.
  • Написание программ с большим объёмом данных, например парсеров или структур графов, которым полезно непосредственное размещение данных.
  • Изучение языка, компилятор и документация которого были созданы преимущественно с помощью ИИ.
  • Создание небольших графических или физических программ с помощью модулей gfx и physics из комплекта.

Что важно знать

  • В метаданных этот язык описан как экспериментальный, поэтому он может измениться.
  • Массивы элементов переменного размера можно перебирать, но нельзя напрямую обращаться к их элементам по индексу.
  • В видимой части README нет команд для установки или запуска, поэтому здесь не приведены шаги по настройке.

В подборках

Темы

Частые вопросы

Что такое goose?
Экспериментальный язык системного программирования без аллокатора в куче и сборщика мусора, с безопасным управлением памятью через стеки данных под контролем компилятора. Goose — язык программирования с синтаксисом, похожим на C и Rust, в котором нет кучи. Каждое динамическое значение хранится непосредственно в стеке данных, статически управляемом компилятором: при росте сдвигается указатель, а память освобождается при выходе из области видимости. В языке нет аллокатора, сборщика мусора, подсчёта ссылок, деструкторов, аннотаций времени жизни и блока unsafe.
goose можно использовать бесплатно? Какая у него лицензия?
goose распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
goose всё ещё поддерживается?
Активно поддерживается. Последний коммит в goose — 6 нояб. 2026 г..
Для чего можно использовать goose?
Изучение моделей управления памятью для системного кода без сборщика мусора и ручного освобождения памяти. Написание программ с большим объёмом данных, например парсеров или структур графов, которым полезно непосредственное размещение данных. Изучение языка, компилятор и документация которого были созданы преимущественно с помощью ИИ. Создание небольших графических или физических программ с помощью модулей gfx и physics из комплекта.
Где скачать goose?
Исходный код и инструкции по установке — на GitHub: https://github.com/aardappel/goose

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Язык программирования Swift и его компиляторная цепочка инструментов: безопасный для памяти высокопроизводительный язык с удобной интеграцией с C и Objective-C.

70,5 тыс.+13 за неделю10,9 тыс.SwiftApache-2.0Обновлён 22 часа назад

Odin — универсальный язык системного программирования с ориентацией на данные, встроенной стандартной библиотекой и позиционированием как альтернатива C.

12,3 тыс.+13 за неделю1,2 тыс.OdinZlibОбновлён 23 часа назад