Repository navigation
Releases: CerebroCanibalus/Falcato
Release list
v0.8.0-beta.1 — LSP completo + LibEst + Skills
Falcato 0.8.0-beta.1 — Release Notes
Fecha: 2026-09-03
Tipo: Pre-release
🎯 Resumen
0.8.0 es la actualización que rediseña y mejora brutalmente el lenguaje. Agrupa los problemas de diseño abiertos más importantes y las lecciones de Go. Es el "gofmt + stdlib + rediseño" que lleva a Falcato de "Rust con artículos" a "lenguaje de plataforma para LLMs".
✅ Nuevas Features
LSP (Language Server Protocol)
- 153 builtins en autocompletado (antes: 15)
- 22 snippets de template (
si,para,fn,estructural, etc.) - Métodos por tipo después de
.(Texto: 17, Vector: 9, Diccionario: 5) - Variantes de enum después de
Enum. - Inlay hints — muestra tipos inferidos
- Rename symbol — renombrado seguro
- Call hierarchy — prevenir + incoming + outgoing
- Code lens — "▶ Ejecutar" / "🧪 Test" en cada función
- Format document — formateo automático (4 espacios)
- Cross-file — resolución de imports
usar
LibEst (Librería Estándar)
- 20 módulos, 169 funciones
- 12 dominios: núcleo, colecciones, archivo, red, tiempo, proceso, sistema, matemáticas, visual, compat
- Builtins Rust: texto (22), HTTP (2), JSON (4), TCP (10), TLS (5), archivo (8), tiempo (5), vector (15), diccionario (10), conjunto (7), opción/resultado (4), visual (31)
Skills
- SKILL.md — gramática completa (339 líneas)
- builtins.md — 153 builtins con firmas
- libEst.md — 169 funciones por módulo
- patterns.md — patrones y arquitecturas (505 líneas)
- errores.md — códigos de error y fixes
🔧 Mejoras
- Namespace
::funcional en parser + semántico + codegen - Coerción polimórfica
42→Entero64/Natural - Profiling
reloj_mono_ns+perfil_* - Cross-file
verifica a.fc b.fc
📊 Métricas
| Métrica | Valor |
|---|---|
| Builtins | 153 |
| Funciones stdlib | 169 |
| Archivos LSP | 1 |
| Líneas LSP | ~2500 |
| Skills | 5 archivos |
| Tests | 54/54 + 19 unitest |
| Ejemplos | 76/83 compilan |
🚀 Próximos pasos (0.8.0 estable)
- P-005: Reducir builtins (mover a Falcato puro)
- P-009: Documentar artículos
el/la/un - P-014: Warning de
Resultadono manejado - P-017: Regla unificadora de API
-
falcato formateaCLI - Stdlib HTTP+JSON en Falcato puro
- Modernizers (
falcato arregla)
📝 Notas
- Windows only por ahora (target x86_64-pc-windows-msvc)
- 109 warnings en release (no bloqueantes)
- Dependencies: Cranelift 0.112, tower-lsp 0.20, tokio 1.x, serde_json 1.0
Descarga: cargo install falcato --beta
Repo: https://github.com/CerebroCanibalus/falcato
0.7.6 - 2026-08-22
Release Notes
🔧 ARREGLOS
- F-013 profundo — literales grandes en structs/binarias (truncamiento I32):
compilar_expresion_con_tipo_esperadopromueve literales altipo_esperadoantes deiconst. Fin del123456789012345 → 2249056121enG {id: 123...},g.id = 987...,el d: Entero64 = 123... + 456.... Verificadotest_F013_struct.fc3/3 OK.conversion.rscomo_entero64ya emitíaI64directo para literales. - F-014 sub-caso campo→campo
Caja {t: p.t}:InicializacionStructexpresión yAsignacion Campoahora deep-copyTextotambién cuando el origen esp.t(field→field), no solo literales.test_f014_completo.fc6/6 OK sin double-free. - F-019
archivo_listar(\"literal\")ruta larga:archivo_listarconPalabraliteral ahorastrlen+malloc+memcpy+freedel temporal tras la llamada (igual quearchivo_leerF-016). Fin del descriptor fantasma en rutas largas. - F-020
"{f(x)}"vacío silencioso:imprimir_linea("{presupuesto_restante(p)}")ya no imprimerestante=vacío. Ahora diagnostica[S080] Interpolación con llamada no soportada. Usa variable temporal: el tmp = f(x) ; "{tmp}"y falla con[C009]en vez deLNK2019mudo. - F-021
a > 0infiereBooleano:Binariacon> < >= <= == != Y Osiempre retornaTipo::Booleanoencodegen/tipos.rsysemantic/tipos.rs. Fin delT011 disconcordanciaespurio ensi a > 0cona: Entero32.test_F021.fc→F-021 OK. perfil_marca(\"literal\")Palabra→Texto: verificaciónTipo::Textoelse conversiónPalabraigual que otros builtins.test_perfil_literal.fc3 marcas OK.
🧹 MANTENIMIENTO
AGENTS.mdcomprimido (~23554 tokens → ~1/3): fases 100% eliminadas, Roadmap real (R7.7/R9/R8) +Mejoras 0.7.6+Gotchas operativos(exe zombie,build.batVsDevCmd, BOM.ps1).
🧪 VERIFICACIÓN
cargo test --lib: 47 passedbuild.bat01:15 release+debug OK,cargo checksinE0599test_F013_struct.fc/test_f014_completo.fc/test_F019b.fc/test_F021.fcOK;test_F020.fcdiagnostica[S080]como diseñado
Install falcato 0.7.6
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CerebroCanibalus/falcato/releases/download/v0.7.6/falcato-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/CerebroCanibalus/falcato/releases/download/v0.7.6/falcato-installer.ps1 | iex"Download falcato 0.7.6
| File | Platform | Checksum |
|---|---|---|
| falcato-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| falcato-x86_64-pc-windows-msvc.msi | x64 Windows | checksum |
| falcato-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| falcato-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
0.7.5 - 2026-08-21
Release Notes
➕ ADICIONES
-
Coerción entera y literales polimórficos (F-013): los literales como
42ahora adoptan el tipo esperado por el contexto —Entero64,Natural32, etc. — sin necesidad decomo_*cuando hay widening seguro.42 largo/42 natural largo/42 corto/3.14 precisoson azúcar: desugarean acomo_entero64(42)etc. Widening seguro (Entero8→16→32→64,Natural→Enteroancho,F32→F64) es implícito; narrowing sigue exigiendocomo_*explícito con check de rango en compile-time. -
Profiling nativo agnóstico al idioma:
reloj_mono_ns() -> Entero64(monotónico,QueryPerformanceCounter/clock_gettime) +perfil_inicio(),perfil_marca(Palabra),perfil_reporte()para medir sin FFI manual. Nivel 0 mide tiempo, Nivel 1 reporta tabla de deltas ordenada. -
Verificación cross-file (F-008):
falcato verifica ops.fc main.fcyfalcato compila a.fc b.fccomparten símbolos públicos entre archivos. Fin del falso[M002] no encontradacuando la función existe en otro archivo del mismo build.
🔧 ARREGLOS
-
F-009
-> Vacioya no panica:Vacioen retorno de función mapea avoiden Cranelift. Antes el codegen paniqueabaNo se puede compilar tipo Nombre 'Vacio'. -
F-014 heap
Textoen structs:el c: Caja = Caja { hola: \"hola\" }yr.campo = \"x\"ahora copian profundo el descriptor (malloc+memcpy) en vez de aliasing. Fix paratest_caja_textoyvector_agregar<Texto>con realloc. -
F-016
archivo_listarconPalabra:archivo_listar(\"dir\")literalPalabrase convierte aTextodescriptor (strlen+malloc+memcpy) antes del runtime. Fin del crash por descriptor inválido. -
F-017 aritmética
Entero8:b - 48dondeb: Entero8ya no emiteisub I8inválido; promociona aI32(widening) y usaisub I32. Incluye fixentero_a_texto/flotante_a_textogenéricos (sextend/uextend/fpromote por signo/ancho). -
Bloqueo
msvcrt.lib(LNK1104): build conbuild.bat(VsDevCmd) y fix detarget/release/falcato.exebloqueado por proceso zombie (taskkill). Documentado enAGENTS.mdcomo Gotcha.
🧪 VERIFICACIÓN
cargo test: 54/54 verde (lib+bin), 47 lib verdefalcato verifica ops.fc main_test.fc: ambosverificado: sin errores(F-008)falcato compila ops.fc main_test.fc --salida prueba_f008.exe && ./prueba_f008.exe→42test_caja_texto,test_clonar,test_vacio,test_archivo_listar,test_f017todos OKbuild.batrelease+debug sinVerifier errors
Install falcato 0.7.5
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CerebroCanibalus/falcato/releases/download/v0.7.5/falcato-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/CerebroCanibalus/falcato/releases/download/v0.7.5/falcato-installer.ps1 | iex"Download falcato 0.7.5
| File | Platform | Checksum |
|---|---|---|
| falcato-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| falcato-x86_64-pc-windows-msvc.msi | x64 Windows | checksum |
| falcato-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| falcato-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
0.7.4 - 2026-08-21
Release Notes
➕ ADICIONES
-
sino pues/sino po— else-if en español natural (firma chilena):
cadenas de condicionales sin anidar.sino pueses la forma canónica,
sino poel guiño chileno, ysino sise mantiene como alias de
migración. Todas desugarean al mismo AST (sino { si ... }) — cero
costo en runtime, cadenas de cualquier profundidad soportadas.si nota > 90 { imprimir_linea("A"); } sino pues nota > 80 { imprimir_linea("B"); } sino po nota > 70 { imprimir_linea("C"); } sino si nota > 60 { imprimir_linea("D"); } sino { imprimir_linea("F"); } -
Aliases
estructy&muta/&cambia:estructural/estructura
aceptan ahoraestructpara quien teclea rápido;&mutacepta
&mutay&cambia— referencias mutables con nombre en español.
Las formas viejas siguen funcionando (aliases ocultos, cero ruptura). -
Builtins de memoria debug (
memoria_usada,memoria_volcar,
memoria_rastrear,memoria_canario_verificar): lente graduable
sobre el heap. Con--depurar-memoria=0..3el binario instrumenta
allocs/frees por niveles: 1 Guardián (doble-free/free inválido/leaks),
2 Cirujano (canarios + cuarentena), 3 Enfermizo (hexdump + timeline).
Sin flag = cero costo. -
Depuración de crashes (3.1): los prints ya no se pierden cuando el
programa crashea (flush tras cadaimprimir_linea); panic handler
auto-instalado que imprime[FALCATO PANIC]con código de excepción;
si el codegen salta una función, error duro[C009]con archivo:línea
en vez de LNK2019 mudo del linker.
🔧 ARREGLOS
-
3.4 — API unificada
Texto(F-002/F-003):archivo_leer/escribir/ existe,tcp_conectarydns_resolveraceptan ahoraTextodinámico
además del literalPalabra. Fin de la inconsistencia donde la mitad
de los builtins pedía un tipo y la otra mitad otro. Coerción implícita:
el código viejo con literales compila sin cambios. -
3.8 —
retornar Struct { ... }: el parser deretornaracepta
struct literals igual que una declaración. Antes soloel x: T = T{}
funcionaba yretornar T{}daba error de sintaxis. -
F-010/S003 — escritura a través de referencia mutable:
r.x = 99
conr: &muta Puntoahora funciona (lectura y escritura), tanto con
refs locales como pasando&muta Ta funciones. Antes era error
"tipo no-struct" o función silenciosamente ausente del binario. -
F-012 — escapes desconocidos en literales:
"D:\Cid\build"ahora
produce[S008] escape desconocido en literal de texto (ej: \C). Usa \\ para barra invertidacon archivo:línea en compile-time. Antes
generaba basura silenciosa en runtime lejos del origen.
✅ VERIFICACIÓN
cargo test --release: 47 lib + 54 bin verdepruebas/unitest/: 12/12 ejecutan + 6/6 negativos fallan como deben- Cadena
sino pues/po/side 4 niveles: compila, corre, rama correcta - Escritura vía
&muta(local + parámetro de función): verificada archivo_io.fccon rutaPalabra(viejo) yTexto(nuevo): ambos OK
Install falcato 0.7.4
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CerebroCanibalus/falcato/releases/download/v0.7.4/falcato-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/CerebroCanibalus/falcato/releases/download/v0.7.4/falcato-installer.ps1 | iex"Download falcato 0.7.4
| File | Platform | Checksum |
|---|---|---|
| falcato-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| falcato-x86_64-pc-windows-msvc.msi | x64 Windows | checksum |
| falcato-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| falcato-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
0.7.3 - 2026-08-19
Release Notes
➕ ADICIONES
-
Aliases sin tilde para keywords con tilde (ergonomía de typing):
las 9 keywords con tilde aceptan ahora también su forma sin tilde como
alias equivalente. La forma canónica en docs sigue siendo con tilde,
pero el parser acepta cualquiera — un hispanohablante que tipea rápido
ya no se encuentra con errores inesperados por omitir tildes.Inventario:
función↔funcion(alias preexistente)está↔estaenumeración↔enumeracionmódulo↔moduloregión↔region(alias preexistente)EnteroMínimo↔EnteroMinimoNaturalMínimo↔NaturalMinimoLógico↔LogicoVacío↔Vacio
Logos es case-sensitive:
Logico(sin tilde, mayúscula inicial) es
alias deLógico;logico(todo minúscula) sigue siendo un
identificador válido. Misma convención que el resto de CamelCase.Nota:
el modulo: Entero32oel vacio: Entero32ahora emiten error
de "palabra reservada" — comportamiento idéntico al que ya tenía
el Módulooel Vacíocon tilde. Consistente con todas las
keywords.
🔧 ARREGLOS
-
F-007 (resuelto):
Vacio(sin tilde) ahora compila en lugar de
panicar el codegen con "tipo Nombre 'Vacio' sin resolver". Archivos
de Cid (json_reparador.fc,http.fc) que escribíanVacioya no
necesitan el fix manualsed 's/-> Vacio/-> Vacío/g'. -
Ejemplo
apodo_tipos.fc: la variableel minimose renombró a
el minimo_valpara no chocar con el nuevo aliasEnteroMinimo.
Cambio trivial: el ejemplo sigue demostrando lo mismo (apodos + tipos
naturales + tamaños como adjetivos).
✅ VERIFICACIÓN
cargo test: 54/54 verdepruebas/unitest/: 19 archivos (incluido nuevounitest_aliases_sin_tilde.fc, 6/6 verde)- Ejemplos: 76/83 compilan (7 intencionales)
apodo_tipos.fc: ✅ compila y ejecuta correctamente conminimo_val- Caso F-007 (Cid
json_reparador.fcconVaciosin tilde): ✅ ya no panica
Install falcato 0.7.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CerebroCanibalus/falcato/releases/download/v0.7.3/falcato-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/CerebroCanibalus/falcato/releases/download/v0.7.3/falcato-installer.ps1 | iex"Download falcato 0.7.3
| File | Platform | Checksum |
|---|---|---|
| falcato-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| falcato-x86_64-pc-windows-msvc.msi | x64 Windows | checksum |
| falcato-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| falcato-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
0.7.2 - 2026-08-19
Release Notes
🔧 ARREGLOS
-
F-006 — Análisis semántico en dos pasadas (BLOQUEANTE): el analizador
semántico ahora recolecta firmas en una primera pasada y analiza cuerpos
en una segunda. Esto resuelve falsos positivos de[T001]y[T011]cuando
una función llama a otra declarada más abajo (forward reference). Antes
del fix, la inferencia de tipos caía en el defaultEntero32y producía
errores espurios como "balance_ok es Entero32 pero se declaró Booleano".Ejemplo que antes fallaba y ahora compila:
función usa_validar(la t: Texto) -> Booleano { el r: Booleano = _validar(t); // _validar declarada abajo retornar r; } función _validar(la t: Texto) -> Booleano { retornar verdadero; }Cubre también forward references de structs, enums, rasgos, apodos y
métodos de impl (no solo funciones). Patrón estándar de compiladores
modernos (Rust, Go, Zig). -
Detección de shadowing (warnings T031-T035): declaraciones duplicadas
de funciones, structs, enums, rasgos o apodos ahora emiten un warning con
span, en vez de sobrescribirse silenciosamente. Antes,json_reparador.fc
tenía_jr_copiary_jr_es_igualduplicadas (líneas 163/119 y 253/123)
y la última definición ganaba sin avisar — bomba de tiempo silenciosa.Los warnings no bloquean la compilación. Códigos:
T031Función duplicadaT032Struct duplicadoT033Enum duplicadoT034Rasgo duplicadoT035Apodo duplicado
Salida
--jsonahora incluye el campowarnings: [...].
🐛 BUGS DESCUBIERTOS (no resueltos en este release)
- F-007 —
VaciovsVacíoen archivos de Cid: el lexer solo reconoce
Vacío(con tilde) como tipoTipo::Vacio. Varios archivos de Cid
(json_reparador.fc,http.fc) escribenVacio(sin tilde), que el
parser acepta comoTipo::Nombre("Vacio")pero el codegen panicea con
"No se puede compilar tipo Nombre 'Vacio' sin resolver". Es bug del
archivo, no del compiler. Fix recomendado: en Cid, seds/-> Vacio/-> Vacío/g.
✅ VERIFICACIÓN
cargo test: 54/54 verdepruebas/unitest/: 18 archivos (incluido nuevounitest_forward_refs.fc)- Ejemplos: 76/83 compilan (7 intencionales)
- Caso del reporte (Cid
json_reparador.fc): ✅ verifica sin errores
(2 warningsT031por duplicados que el código silenciaba — fix recomendado)
Install falcato 0.7.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CerebroCanibalus/falcato/releases/download/v0.7.2/falcato-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/CerebroCanibalus/falcato/releases/download/v0.7.2/falcato-installer.ps1 | iex"Download falcato 0.7.2
| File | Platform | Checksum |
|---|---|---|
| falcato-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| falcato-x86_64-pc-windows-msvc.msi | x64 Windows | checksum |
| falcato-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| falcato-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
0.7.1 - 2026-08-19
Release Notes
🔧 ARREGLOS
- Reorganización de módulos: división de archivos monolíticos en submódulos manejables para reducir deuda técnica.
semantic.rs(4316 LOC) →semantic/con 5 submódulos (mod.rs,tipos.rs,sentencias.rs,funciones.rs,ownership.rs).codegen/builtins.rs(3684 LOC) →codegen/builtins/con 12 submódulos (io.rs,tcp.rs,canal.rs,texto.rs,conversion.rs,archivo.rs,math.rs,vector.rs,diccionario.rs,proceso.rs,sistema.rs,tls.rs).
- Keywords eliminadas:
tipoyentoncesremovidas del lexer y LSP (nunca usadas en parser/semantic).
Install falcato 0.7.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CerebroCanibalus/falcato/releases/download/v0.7.1/falcato-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/CerebroCanibalus/falcato/releases/download/v0.7.1/falcato-installer.ps1 | iex"Download falcato 0.7.1
| File | Platform | Checksum |
|---|---|---|
| falcato-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| falcato-x86_64-pc-windows-msvc.msi | x64 Windows | checksum |
| falcato-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| falcato-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
0.7.0 - 2026-08-18 — "¡Fuese!"
Release Notes
➕ ADICIONES
- Aritmética consciente: el subjuntivo aritmético llega al lenguaje.
a + b fuese→ checked (overflow →Resultado.Error, no crash).un x = a + b→ Option (overflow →Nada, sin desbordamiento →Algo(valor)).romper/continuaren bucles.- Notación científica en literales (
6.674e-11). - Impresión flotante con
%.17g(round-trip exacto).
- 20 primitivas nativas para Cid (5 fases):
- Strings dinámicos (
texto_agregar_texto,texto_poner_byte,texto_puntero,texto_desde_bytes). - Conversión número↔texto (
entero_a_texto,flotante_a_texto,booleano_a_texto). - Archivos avanzados + entorno (
archivo_agregar,archivo_borrar,archivo_listar,entorno_obtener, etc.). - TUI + TLS/HTTPS (
terminal_dimensiones,tls_conectar/escribir/leer/cerrar).
- Strings dinámicos (
- Trigonometría completa: builtins libm (
seno,coseno,tangente,arcseno,arctangente,exp,log, etc.), sufijos de precisión (_preciso,_rapido,_aprox),seno_2pi/coseno_2picon polinomios minimax en Cranelift, efectovectorizable, fase nativa para osciladores. - Conversión numérica completa:
como_entero8/16/32/64+como_flotante32/64— familia unificada. - Structs entre archivos: retorno y parámetros de struct cross-file.
- Diccionario con tipos compuestos:
Diccionario<Texto, Vector<Texto>>funciona.
🔧 ARREGLOS
- 10 fixes macOS (Issue #5): linker POSIX,
CLOCK_MONOTONIC,PTHREAD_MUTEX_SIZE, globales Mach-O,CallConv::AppleAarch64,nanosleep, printf variádica, closures firma,canal_cerrar. - Aritmética flotante completa: dispatch por tipo en operaciones binarias.
- Drop automático:
freeal final de scope para heap owned (Texto, Vector, Diccionario, Conjunto). - Diccionario: 4 bugs — SSA dominance, cap=0 → crash, strings internados, structs por tipo no por tamaño.
vector_obtenerbounds check: fuera de rango → 0 definido.entero_a_textoaceptaEntero32con sextend automático.- Unitest de codebase: suite 12/12 verde.
Install falcato 0.7.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CerebroCanibalus/falcato/releases/download/v0.7.0/falcato-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/CerebroCanibalus/falcato/releases/download/v0.7.0/falcato-installer.ps1 | iex"Download falcato 0.7.0
| File | Platform | Checksum |
|---|---|---|
| falcato-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| falcato-x86_64-pc-windows-msvc.msi | x64 Windows | checksum |
| falcato-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| falcato-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |
Falcato v0.6.1 — Argumentos a tope
🦅 Falcato v0.6.1 — Argumentos a tope
Lenguaje de programación de sistemas iberohablante, construido sobre Cranelift.
Este release completa el ciclo de argumentos de línea de comandos, de la forma cruda a la elegante. Además trae arreglos vitales del núcleo del lenguaje.
➕ ADICIONES
Librería args_avanzados — subcomandos, repetición y posicionales
Pura .fc, sin tocar el compilador. Se compila junto a tu app:
falcato compila app.fc librerias/args_avanzados.fc --salida app.exe| Función | Qué hace |
|---|---|
args_subcomando(argv) |
Primer token sin -- (ej: correr) |
args_obtener(argv, "--x") |
Valor de una etiqueta (default manual si falta) |
args_todos(argv, "--x") |
Repetición → [a, b, c] |
args_tiene(argv, "--x") |
¿Existe la etiqueta? |
args_posicionales(argv) |
Tokens sin -- tras la primera etiqueta |
args_cuenta(argv) |
Nº de argumentos crudos |
Contrato de memoria: todas devuelven copias independientes — el caller libera; nunca se comparten descriptores con
argv(evita double-free).
Etiquetas tipadas — parseo automático en principal
estructural Saludo {
el nombre: Texto, // requerido
un cuenta: Entero32, // opcional
la saludo: Texto, // inmutable/validado
}
función principal(el args: Saludo) -> Entero32 {
imprimir_linea("hola, {args.nombre}");
retornar 0;
}
El compilador genera el parseo --etiqueta valor, validación de tipos y --ayuda automático — todo en español.
Conversión de texto a número
texto_a_entero, texto_a_natural, texto_a_flotante, texto_a_booleano — parsean un Texto al tipo numérico correspondiente (útil para CLIs y configs).
🔧 ARREGLOS
| Bug | Fix |
|---|---|
Diccionario<K,V> / Conjunto<T> no resolvían tipos concretos |
Parser + sustitución de genéricos corregidos |
texto_nuevo() imprimía (null) |
Ahora crea un buffer vacío real con terminador nulo |
vector_agregar<Texto> crasheaba (escritura fuera de heap) |
Separadas las responsabilidades de descriptor |
vector_obtener<Texto> rompía el verifier de Cranelift |
Índice siempre extendido a I64 |
Interpolación no soportaba acceso a campo ({args.nombre}) |
Ahora compila el acceso a campo real |
📥 Instalación
Windows (PowerShell):
powershell -ExecutionPolicy Bypass -c "irm https://github.com/CerebroCanibalus/falcato/releases/download/v0.6.1/falcato-installer.ps1 | iex"Unix (shell):
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CerebroCanibalus/falcato/releases/download/v0.6.1/falcato-installer.sh | shInstalador MSI: descarga falcato-x86_64-pc-windows-msvc.msi y ejecútalo.
📦 Archivos
| Archivo | Plataforma | Checksum |
|---|---|---|
| falcato-x86_64-pc-windows-msvc.zip | 🪟 x64 Windows | sha256 |
| falcato-x86_64-pc-windows-msvc.msi | 🪟 x64 Windows (MSI) | sha256 |
| falcato-x86_64-unknown-linux-gnu.tar.xz | 🐧 x64 Linux (glibc) | sha256 |
| falcato-x86_64-unknown-linux-musl.tar.xz | 🐧 x64 Linux (estático) | sha256 |
📚 Recursos
Falcato. Poder. Eficiencia. Rapidez. 🇪🇸
v0.5.0
Install falcato 0.5.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CerebroCanibalus/falcato/releases/download/v0.5.0/falcato-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/CerebroCanibalus/falcato/releases/download/v0.5.0/falcato-installer.ps1 | iex"Download falcato 0.5.0
| File | Platform | Checksum |
|---|---|---|
| falcato-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| falcato-x86_64-pc-windows-msvc.msi | x64 Windows | checksum |
| falcato-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| falcato-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |