Repolode
aardappel

aardappel/goose

Un lenguaje experimental de programación de sistemas sin asignador de memoria en el heap ni recolector de basura, que usa pilas de datos gestionadas por el compilador para garantizar la seguridad de memoria.

Estrellas
3,146
Forks
132
Issues abiertos
48
Último commit
ayer

¿Qué es?

Goose es un lenguaje de programación con una sintaxis similar a la de C y Rust que no tiene heap. Cada valor dinámico se almacena en línea en pilas de datos que el compilador gestiona estáticamente: al crecer, avanza un puntero, y la memoria se libera cuando termina su ámbito. No hay asignador, recolector de basura, conteo de referencias, destructores, anotaciones de lifetime ni bloques unsafe.

El lenguaje ofrece arrays que solo crecen y arrays que pueden crecer y reducirse, cuyas referencias siguen siendo válidas mientras crecen; referencias relativas almacenadas como desplazamientos de 1, 2 o 4 bytes; y enums que pueden almacenarse con el tamaño de cada variante. Los hilos se ejecutan como programas independientes, cada uno con su propia memoria, y se comunican mediante colas con tipos definidos. El compilador genera un único archivo C y puede llamar directamente a C mediante extern fn; además, incluye un backend TinyCC que ejecuta programas dentro del proceso.

El proyecto incluye un tutorial, una referencia y una especificación del lenguaje, una biblioteca estándar con módulos de gráficos, física e interfaz de usuario, treinta y un programas de ejemplo y benchmarks frente a C++ y Rust. El autor del proyecto señala que el repositorio se creó en gran medida con ayuda de IA, a partir de un diseño del lenguaje escrito por una persona.

Funciones clave

  • 01Memoria gestionada mediante pilas de datos asignadas por el compilador, sin asignación en el heap ni GC.
  • 02Arrays que solo crecen y cuyas referencias siguen siendo válidas después de crecer.
  • 03Referencias relativas almacenadas como desplazamientos de 1, 2 o 4 bytes, que permiten datos independientes de la posición.
  • 04Enums de tamaño variable y datos anidados en línea sin punteros.
  • 05Hilos con memoria independiente que se comunican mediante colas con tipos definidos.
  • 06Llamadas directas a C mediante extern fn y compilación en un único archivo C.

Casos de uso

  • Explorar modelos de memoria para código de sistemas sin recolector de basura ni liberación manual de memoria.
  • Escribir programas con muchos datos, como parsers o estructuras de grafos, que se beneficien de una disposición en línea.
  • Estudiar un lenguaje cuyo compilador y documentación se crearon en gran medida con ayuda de IA.
  • Crear pequeños programas de gráficos o física con los módulos gfx y physics incluidos.

Antes de usarlo

  • Los metadatos describen este lenguaje como experimental, así que puede sufrir cambios.
  • Se puede iterar sobre arrays de elementos de tamaño variable, pero no acceder a ellos directamente mediante índices.
  • El README visible no incluye comandos de instalación ni de ejecución, por lo que no se indican pasos de configuración aquí.

En colecciones

Temas

Preguntas frecuentes

¿Qué es goose?
Un lenguaje experimental de programación de sistemas sin asignador de memoria en el heap ni recolector de basura, que usa pilas de datos gestionadas por el compilador para garantizar la seguridad de memoria. Goose es un lenguaje de programación con una sintaxis similar a la de C y Rust que no tiene heap. Cada valor dinámico se almacena en línea en pilas de datos que el compilador gestiona estáticamente: al crecer, avanza un puntero, y la memoria se libera cuando termina su ámbito. No hay asignador, recolector de basura, conteo de referencias, destructores, anotaciones de lifetime ni bloques unsafe.
¿goose es gratuito? ¿Qué licencia tiene?
goose es open source bajo la licencia Apache-2.0. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿goose sigue mantenido?
Mantenimiento activo. El último commit de goose fue el 6 nov 2026.
¿Para qué puedo usar goose?
Explorar modelos de memoria para código de sistemas sin recolector de basura ni liberación manual de memoria. Escribir programas con muchos datos, como parsers o estructuras de grafos, que se beneficien de una disposición en línea. Estudiar un lenguaje cuyo compilador y documentación se crearon en gran medida con ayuda de IA. Crear pequeños programas de gráficos o física con los módulos gfx y physics incluidos.
¿Dónde consigo goose?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/aardappel/goose

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados