Librería Estándar Embebida

Archivo: src/stdlib_embedded.rs (135 líneas)

¿Por qué existe?

Todas las librerías estándar de Forja (stdlib/std/*.fa y gui/gui.fa) se compilan dentro del ejecutable mediante include_str!(). Esto elimina la dependencia del sistema de archivos en tiempo de ejecución y permite que Forja funcione como un ejecutable único sin necesidad de archivos adicionales.

¿Cómo funciona?

Cada archivo .fa de la stdlib se declara como una constante &str usando include_str!:

pub const ALEATORIO: &str = include_str!("../stdlib/std/aleatorio.fa");
pub const ARCHIVO: &str = include_str!("../stdlib/std/archivo.fa");
// ... 41 constantes en total

Integración con PackageResolver

El PackageResolver (en package_resolver.rs) busca aquí primero antes de ir a disco. Cuando un programa Forja hace importar std/archivo, el resolvedor:

  1. Primero busca en las constantes embebidas de stdlib_embedded
  2. Si no encuentra, busca en el sistema de archivos
  3. Si tampoco, retorna error de módulo no encontrado

Módulos incluidos (41)

Todos los módulos de stdlib/std/ están embebidos:

CategoríaMódulos
Herramientas básicasio, texto, resultado, aleatorio, fecha, prueba, log, perfilado, ansi, hex, binario, codificacion, csv, json, toml
Sistema y entornosistema, env, arg, ruta, proceso, señales, archivo, mmap
Matemáticas y coleccionesmatematica, colecciones
Criptografía y hashcrypto, hash
Concurrenciaconcurrencia, atomicos
Redesred, sockets, url, cliente_http, cliente_h2, cliente_h3, servidor_web, servidor_h2, websocket, tls, quic
Bases de datossqlite
Interoperabilidadffi, tui
📦 Beneficio clave: Al tener la stdlib embebida, los programas compilados con forja build y forja build-asm son verdaderamente ejecutables autónomos que no requieren ningún archivo adicional.