Repositorio principal del lenguaje de programación Rust, con el compilador, la biblioteca estándar y la documentación.
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
El lenguaje de programación Swift y su cadena de herramientas de compilación: un lenguaje seguro para la memoria y de alto rendimiento, con acceso directo a C y Objective-C.
Lenguaje de programación compilado, sencillo y rápido, para crear software fácil de mantener, sin dependencias de bibliotecas y con traducción automática de C a V.
Odin es un lenguaje de programación de sistemas, de propósito general y orientado a datos, que se presenta como alternativa a C y cuenta con una biblioteca estándar integrada.
Una implementación de C y C++ segura para la memoria que compila código existente con pocos cambios o ninguno y convierte los errores de memoria en pánicos.
Go, un lenguaje de programación de código abierto para crear software sencillo, confiable y eficiente.