El intérprete de PHP, un lenguaje de scripting de propósito general especialmente adecuado para el desarrollo web.
mattwparas/steel
Un dialecto de Scheme extensible e integrable, implementado en Rust, con un REPL independiente y una VM de bytecode.
- Estrellas
- 2,629
- Forks
- 143
- Issues abiertos
- 87
- Último commit
- anteayer
¿Qué es?
Steel es un intérprete de Scheme escrito en Rust que puede ejecutarse como intérprete y REPL independiente o integrarse en aplicaciones Rust. El lenguaje está implementado como una máquina virtual de bytecode y cumple en gran medida con R5RS; la compatibilidad con R7RS está en desarrollo.
El lenguaje incluye compatibilidad con módulos mediante require y provide, al estilo de Racket, además de las macros syntax-rules y syntax-case. También ofrece contratos de orden superior y estructuras de datos inmutables integradas, como listas, vectores, hashmaps y hashsets.
Las funciones y estructuras nativas de Rust se pueden exponer al código Steel mediante embedding o FFI. El proyecto también incluye un gestor de paquetes, un servidor de lenguaje y una biblioteca estándar. Aún está en una versión anterior a la 1.0, por lo que la API puede cambiar.
Funciones clave
- 01Scheme que cumple en gran medida con R5RS e implementado como una máquina virtual de bytecode
- 02Sistema de módulos mediante require y provide, similar al de Racket
- 03Compatibilidad con las macros syntax-rules y syntax-case
- 04Embedding y FFI para llamar a funciones y estructuras nativas de Rust
- 05Contratos de orden superior y listas, vectores, hashmaps y hashsets inmutables integrados
Casos de uso
- Añadir un lenguaje de scripting a una aplicación Rust
- Aprender sobre Scheme y el diseño de intérpretes, o experimentar con ellos
- Escribir scripts de configuración o extensiones que llamen a código Rust
Inicio rápido
- 1
Instala Rust (necesario para compilar Steel)
- 2
Clona el repositorio
- 3
Ejecuta el REPL con cargo
cargo run
Antes de usarlo
- La API aún es anterior a la versión 1.0 y puede cambiar en cualquier momento.
- La compatibilidad con R5RS es parcial: falta let-syntax y la compatibilidad con R7RS aún está en desarrollo.
En colecciones
Temas
Preguntas frecuentes
- ¿Qué es steel?
- Un dialecto de Scheme extensible e integrable, implementado en Rust, con un REPL independiente y una VM de bytecode. Steel es un intérprete de Scheme escrito en Rust que puede ejecutarse como intérprete y REPL independiente o integrarse en aplicaciones Rust. El lenguaje está implementado como una máquina virtual de bytecode y cumple en gran medida con R5RS; la compatibilidad con R7RS está en desarrollo.
- ¿steel es gratuito? ¿Qué licencia tiene?
- steel es open source bajo la licencia Apache-2.0. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿steel sigue mantenido?
- Mantenimiento activo. El último commit de steel fue el 22 oct 2026.
- ¿Para qué puedo usar steel?
- Añadir un lenguaje de scripting a una aplicación Rust Aprender sobre Scheme y el diseño de intérpretes, o experimentar con ellos Escribir scripts de configuración o extensiones que llamen a código Rust
- ¿Cómo se instala steel?
- Instala Rust (necesario para compilar Steel) Clona el repositorio Ejecuta el REPL con cargo: cargo run
- ¿Dónde consigo steel?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/mattwparas/steel
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
GNU Emacs, un editor de texto extensible, personalizable, autodocumentado y con actualización en tiempo real, basado en un intérprete de Emacs Lisp.
Herramienta de línea de comandos y lenguaje de consultas, al estilo de jq, para seleccionar, filtrar y transformar archivos Markdown.
Repositorio principal del lenguaje de programación Rust, con el compilador, la biblioteca estándar y la documentación.
Sway es un lenguaje de programación inspirado en Rust para escribir smart contracts en la blockchain Fuel.
Motor de JavaScript ECMAScript 5.1 escrito íntegramente en Go, para integrar la ejecución de JS en aplicaciones Go.