Основной репозиторий исходного кода языка Rust: компилятор, стандартная библиотека и документация.
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.
Простой и быстрый компилируемый язык для удобного сопровождения кода: без зависимостей от библиотек, с автоматическим переводом C в V.
Odin — универсальный язык системного программирования с ориентацией на данные, встроенной стандартной библиотекой и позиционированием как альтернатива C.
Реализация C и C++ с защитой памяти: компилирует существующий код почти без изменений и превращает ошибки работы с памятью в панику.
Go — язык программирования с открытым исходным кодом для создания простого, надёжного и эффективного ПО.