La plataforma segura para las apps de la suite IASOF.
Sofía compila tus apps a código de máquina con un compilador propio y lo revisa con un verificador independiente antes de ejecutarlo. Una app no puede hacer nada que no declare y que tú no apruebes: solo corren apps firmadas, con límites de memoria y CPU, y toda la red va cifrada. Trae su propio servidor web, Atrio, en un solo programa de unos 5 MB. Las apps se escriben en Sofía, un lenguaje completo en español.
Esta página es una app de Sofía (apps/sitio.sof) exportada con sofia exportar.
Por qué es distinta
Seis decisiones que no se negocian.
Solo apps de confianza
Cada paquete va firmado con Ed25519. Un byte cambiado y no se ejecuta. Las actualizaciones tienen que venir del mismo autor: no hay suplantaciones.
Nada por defecto
La app declara sus permisos (consola, archivos, red, servidor, IA, cifrado, notificaciones…) y tú los apruebas la primera vez. Sin permiso, la función ni siquiera se enlaza.
Código de máquina verificado
El compilador propio genera código x86-64 y un verificador independiente lo revisa antes de ejecutarlo: la app solo ve su memoria, no llama al sistema por su cuenta y su memoria nunca es a la vez escribible y ejecutable. Con límites de CPU, memoria y profundidad de llamadas.
HTTPS siempre
Red saliente solo a los dominios firmados en la app, con certificado verificado. Las apps web se sirven por TLS con HSTS, CSP y cookies seguras. No existe un modo sin cifrar, ni en la red local.
Liviana
El programa sofia pesa unos 5 MB con el compilador, Atrio, TLS y las raíces de confianza incluidos, sin bibliotecas del sistema que instalar. El código de las apps de la suite ocupa entre 2 y 98 KB.
En español y sin nulos
Un lenguaje completo con tipos estrictos, decimales, registros, listas, errores recuperables y mensajes de error que dicen qué hacer. Compila a código de máquina verificado.
De tu código al procesador
Sofía no depende de un compilador ni de un motor de terceros para esto: el generador de código, el ensamblador y el verificador son propios. Esto es lo que existe hoy y lo que todavía no.
Dos niveles, el optimizado por defecto
El nivel 1 traduce en una pasada. El nivel 2 usa una representación intermedia propia, seis pasadas de optimización y asignación de registros; es el que se usa siempre que se compila a código de máquina (se apaga con SOFIA_NIVEL=1).
Verificador independiente
Tiene su propio decodificador de x86-64 y rechaza todo código que no cumpla las reglas: límites de memoria, saltos, pila, combustible de CPU y llamadas solo a funciones permitidas. El compilador no decide qué es seguro: lo decide el verificador.
Caché firmada en disco
El código compilado se guarda autenticado con una clave local y se vuelve a verificar al cargarlo. Un archivo alterado se rechaza y se recompila.
Mismo resultado que el intérprete
Sofía conserva un intérprete como referencia de corrección y como respaldo donde no hay código de máquina (hoy, todo lo que no sea x86-64). Un fuzzing diferencial compara los dos; la coma flotante coincide bit a bit.
Decimales y matemáticas propias
El tipo real de 64 bits, con conversiones siempre explícitas, y el grupo mate escrito en Sofía, sin bibliotecas de terceros.
Memoria que se cuida sola
Recolector de marcado y compactación en la plataforma, con puntos seguros que genera el compilador. Con recolección forzada en cada punto seguro: 0 diferencias en 9 programas y 10 apps.
Lo que todavía no está
El nivel 2 ya emite menos instrucciones, pero su aceleración en tiempo aún no se ha medido. Falta una mejor asignación de registros y pasar argumentos por registro (diseñado, sin construir). El arranque con caché todavía pierde frente a interpretar, y ARM64 sigue interpretado.
Probado en bancos de prueba
Cifras medidas por los bancos del propio repositorio, que se publican también donde Sofía pierde. Equipo: portátil con procesador de 4 núcleos y 8 hilos (1,8 GHz base), 16 GB de RAM y Windows 11, con otras aplicaciones abiertas y el generador de carga en la misma máquina (2026-09-28). Son líneas base, no cifras de producción: sirven para comparar Sofía consigo misma.
mutaciones peligrosas rechazadas
El verificador rechazó el 100 % de las mutaciones dirigidas de 19 clases y aceptó los 5 752 programas aleatorios que emitió el compilador. Tanda de 10 minutos.
recursión de Sofía frente al intérprete
fib(30) escrito en Sofía, mediana de tres pasadas, nivel 1. La ordenación rápida marca 6,5–6,7× y la criba 4,5–5,6×.
peticiones por segundo por HTTPS
Atrio sirviendo un archivo de 1 KiB con 100 conexiones TLS, sin errores. Con 5 000 conexiones: 57 040 por segundo.
de memoria por conexión TLS
Con 10 000 conexiones inactivas, Atrio ocupa 106,1 MiB en total; en reposo, 7,8 MiB.
más peticiones que el servidor anterior de Sofía
Con 100 conexiones TLS: de 2 174–2 273 por segundo con unos 5 300 errores, a 54 893–60 746 sin errores.
en compilar, verificar y cargar una app
Las apps y ejemplos reales del repositorio, con el verificador incluido. El código emitido pesa 3,1–5,8 veces el del formato intermedio.
Compilador: veces más rápido que el intérprete de la plataforma
Mediana de cada programa, con intérprete y código de máquina alternados y una instancia nueva en cada repetición; el resultado de cada ejecución se compara y, si difiere, el banco se detiene. Rango de tres pasadas, nivel 1 del compilador.
| Programa | Veces más rápido |
|---|---|
| Bucle numérico (10⁸ vueltas) | 9,5–9,6× |
| Producto de matrices (decimales de 32 bits, 200×200) | 5,4–5,6× |
| Criba de Eratóstenes (10⁷) | 5,3–5,6× |
| Recursión (fib 32) | 4,4–4,7× |
| Ordenación rápida (2·10⁶ enteros) | 4,3–4,4× |
| N cuerpos (decimales de 64 bits) | 4,0–4,1× |
| JSON sencillo (10⁶ números) | 3,7–3,9× |
| Llamadas al sistema (10⁶) | 2,3–2,4× |
| Mandelbrot (decimales de 64 bits, 600×600) | 1,6–1,7× (donde menos gana) |
| Apps de Sofía: recursión (fib 30) | 10,4–15,1× |
| Apps de Sofía: ordenación (3·10⁵) | 6,5–6,7× |
| Apps de Sofía: criba (2·10⁶) | 4,5–5,6× |
| Apps de Sofía: textos y JSON | 1,1× (empate: el tiempo está en la plataforma) |
Nivel 2: menos instrucciones en el programa
Instrucciones de máquina de la función principal de cada programa del banco, contadas por una prueba automática que exige ese tope. Es una cuenta de instrucciones, no una medida de tiempo: la aceleración del nivel 2 en tiempo todavía no se ha medido.
| Programa | Nivel 1 | Nivel 2 |
|---|---|---|
| Mandelbrot | 127 | 90 |
| N cuerpos | 329 | 225 |
| Producto de matrices | 129 | 113 |
| Criba | 86 | 78 |
| Ordenación rápida | 67 | 60 |
Atrio: servidor web
Archivo de 1 KiB por TLS 1.3, bucle cerrado (cada conexión espera su respuesta), 4 hilos de servidor y 4 del generador compartiendo los 4 núcleos; tres ejecuciones completas, rango mínimo–máximo.
| Qué se midió | Resultado |
|---|---|
| 100 conexiones, archivo pequeño | 54 893–60 746 pet/s · p99 4,7–7,1 ms · 0 errores |
| 1 000 conexiones, archivo pequeño | 54 093–56 607 pet/s · p99 52–72 ms · 0 errores |
| App de Sofía, 100 conexiones | 15 367–16 742 pet/s · p99 11 ms (antes 2 372, con 5 244 errores) |
| Archivo de 4 MiB, 100 conexiones | 959–1 091 MiB/s |
| Arranque hasta la primera respuesta | 27–48 ms |
| Una app colgada junto a una sana | la sana no pierde ninguna petición: caudal −7 a −12 %, p99 de ~20 a ~30 ms; la colgada rechaza el exceso con 503 en ~15 ms |
| Archivos grandes, 1 reactor y 1 000 conexiones | 0 sin respuesta en 20 s (antes, 14 a 25) |
Dónde Sofía pierde o no llega
- Arranque con el código de máquina en caché: entre 1,5 y 7 veces más lento que interpretar en 13 de las 15 apps medidas, porque verificar cuesta más de lo que ahorra la caché.
- Mandelbrot: solo 1,6–1,7× sobre el intérprete, muy por debajo del resto.
- Atrio, latencia: el objetivo de p99 menor a 5 ms con 100 conexiones no se cumple (4,7–7,1 ms en este portátil). Con 1 000 archivos de 4 MiB pedidos a la vez, el p99 pasa de 11 s.
- Atrio, memoria: 10–13 KiB por conexión con TLS, más de lo que gastan los servidores de referencia más ligeros.
- Sin medir: la comparación con servidores web de referencia en Linux y la aceleración en tiempo del nivel 2.
Fuentes: docs/BANCO-COMPILADOR.md (2026-09-28, hitos C1 a C3, y conteos del nivel 2 al 2026-09-30) y docs/BANCO-ATRIO.md (2026-09-28, hitos H1 y H2).
El servidor web de Sofía
Sirve apps web, sitios estáticos y microservicios solo por HTTPS, con un motor de entrada y salida asíncrono propio y sin ningún servidor de terceros delante.
Asíncrono y sin hilo por conexión
Un reactor propio atiende miles de conexiones a la vez. HTTP/1.1 completo: keep-alive, pipelining seguro, chunked, rangos, ETag y gzip propio.
Seguro por defecto
Solo TLS, HSTS, CSP estricta, cookies __Host-, protección contra peticiones de otras webs y una instancia aislada de la app por petición.
Varias apps en un mismo servidor
Sitio, apps web y servicios internos montados por dominio y ruta. Cada app tiene sus cuotas de CPU, memoria y conexiones: si una falla o se cuelga, las demás siguen.
Contra abusos
Tope de conexiones y de peticiones por segundo por IP, con respuesta 429 antes de llegar a la app, y colas y cupos por app.
Operación sin cortes
Recarga en caliente con vuelta atrás si el paquete nuevo no carga, parada ordenada por señal, registro de accesos sin datos personales y métricas en un punto de gestión local.
Lo que aún no tiene
HTTP/2, certificados automáticos y compresión brotli son lo siguiente en la lista.
Lo que ya funciona
Todo esto está en el programa que puedes ejecutar hoy. Cada capacidad es un permiso que el usuario ve y aprueba, y la plataforma guarda los secretos: la app nunca los toca.
Apps de consola y apps web
Servidor HTTPS integrado, sesiones gestionadas por la plataforma (la app no ve la cookie), formularios, archivos subidos, respuestas en bytes y descargas.
Apps residentes
Una instancia viva con variables globales como memoria y un latido cada segundo: canales abiertos, avisos en tiempo real, apps de larga vida.
Otros lenguajes en la misma caja
Programas escritos en otros lenguajes y compilados al formato intermedio de Sofía corren con los mismos permisos y límites. Un programa que no se puede compilar así se ejecuta como app nativa supervisada: firmada y confinada por la plataforma.
Apps de IA
ia.conversar con el proveedor que tú configures o cualquier API compatible, incluidos modelos locales. La clave la guardas tú en tu equipo; la app no la ve ni elige el servidor.
Cifrado de extremo a extremo
Identidad propia guardada por la plataforma, sobres autenticados con secreto efímero y firmas. Compatible con el cifrado de las apps de Link actuales.
Canales seguros
WebSocket solo wss://, implementado en casa, con tramas acotadas y fallos recuperables. Las apps residentes también los aceptan de entrada.
Notificaciones
Avisos del sistema siempre con el nombre de la app delante y con tope por minuto: ninguna app se hace pasar por otra.
Tareas programadas
La programación va firmada en la app y la ejecuta la plataforma sin solapamientos, con zona horaria real, historial y política para las ejecuciones perdidas. Sin hilos ni demonios dentro de la app.
Tienda y actualizaciones
Catálogo firmado, paquetes comprobados por hash, firma e id, y actualizaciones solo del mismo autor. Instalar no es aprobar.
Así se ve el lenguaje
Claro a propósito. Sin nulos ni conversiones ocultas. Todo lo que la app necesita del sistema se declara en la cabecera y se aprueba.
fn · si · mientras · paralet · var · globaleslista<T> · tipo (registros)intentar · si falla$"textos con {formato}"usar "módulo.sof"tarea · zona · perdidasresidente · latido
// Cada tarea la ejecuta la plataforma, sin hilos en la app
app "Recordatorio" version "1.0"
permiso consola, archivos, notificaciones
zona "America/Santiago"
tarea informe a las "08:00" "lun-vie"
var cuenta = 0
fn tarea_informe() {
cuenta = cuenta + 1
intentar {
avisos.mostrar("Buenos días", $"Informe número {cuenta}")
} si falla motivo {
consola.escribir_linea(motivo)
}
}
fn principal() {
consola.escribir_linea("Esta app vive en sus tareas.")
}
Por qué elegir Sofía
Ocho garantías que no dependen de que la app se porte bien: las hace cumplir la plataforma.
Firma obligatoria
Cada app va firmada con Ed25519. Sin firma no arranca, y una actualización de otro autor se rechaza.
Permisos que no se saltan
Sin el permiso concedido, la función ni siquiera se enlaza en la app. No es una comprobación que se pueda olvidar: no existe.
Red bajo control
Solo HTTPS, y solo a los dominios firmados en la app. No hay modo sin cifrar, ni en la red local.
Secretos fuera de alcance
Las claves de API y la identidad cifrada las guarda la plataforma; la app nunca las ve ni las puede enviar a otro sitio.
Código de máquina verificado
Un verificador independiente revisa el código antes de ejecutarlo, y la memoria nunca es escribible y ejecutable a la vez. Límites de CPU, memoria y profundidad.
Ligera
Unos 5 MB en un solo programa, con compilador, servidor web, TLS y raíces de confianza dentro.
Lenguaje en español
Tipos estrictos, sin nulos ni conversiones ocultas, y mensajes de error que dicen qué hacer.
Calidad medida
Cero avisos del análisis estático, cobertura vigilada y pruebas en Windows, Linux y macOS en cada cambio.
Cómo funciona
sofiac
programa.sof se compila a un formato intermedio portable, se valida como lo hará la plataforma y se firma con tu clave de autor: app.sofia.
sofia
Se comprueba la firma, se muestra la huella del autor y los permisos, y se aprueban una vez. Desde ahí, actualizaciones solo del mismo autor.
motor
La plataforma genera código de máquina, un verificador independiente lo revisa y solo entonces corre, con las funciones de los permisos concedidos. CPU, memoria y profundidad acotadas. Todo lo que sale va por HTTPS.
Lo que viene
El plan de Sofía, con honestidad: esto todavía no está. Lo marcamos como tal y no prometemos fechas.
SofiaDB, la base de datos propia
Una base SQL embebida y de servidor, con el mismo aislamiento y la misma seguridad que el resto. Hoy el motor está en construcción y los datos de las apps van a archivos, con escritura condicional atómica para que dos peticiones no se pisen.
Más velocidad del compilador
Mejor asignación de registros, argumentos de funciones por registro y medir en tiempo la ganancia del nivel 2. Después, código de máquina para ARM64, que hoy se interpreta.
Atrio: HTTP/2 y certificados automáticos
HTTP/2, certificados automáticos y compresión brotli, y medir Atrio en Linux frente a servidores de referencia en el mismo equipo.
Concurrencia estructurada
Tareas de alcance acotado, con cancelación y canales tipados, y presupuesto de recursos que gobierna la plataforma.
Herramientas para programar
Servidor de lenguaje para el editor, depurador, perfilador, formateador y un gestor de paquetes firmado.
Sofía Empresas
Consola de flota, políticas firmadas, catálogo privado, SSO, auditoría, versiones LTS, despliegue masivo y modo sin conexión.
Apps de la suite que ya funcionan
Link Cuenta
Inicio de sesión, verificación de correo y soporte, hablando solo con el servidor de Link.
Link Admin
La administración de la suite en el navegador: usuarios y bandeja de soporte.
Link Chat
El chat cifrado de extremo a extremo de Link en el navegador, con adjuntos cifrados, compatible con las apps actuales de Android y PC.
Así se usa
Dos programas, sin instalación: sofiac compila y firma; sofia verifica y ejecuta.
sofiac clave nueva # tu clave de autor
sofiac compilar ejemplos/hola.sof # compila, empaqueta y firma → hola.sofia
sofia info hola.sofia # autor, versión, permisos y firma, sin ejecutar
sofia desarrollador activar # permite probar apps que no firmó IASOF
sofia hola.sofia # la primera vez pide aprobar autor y permisos
Hecha para durar
Pruebas en tres sistemas
Cada cambio pasa por Windows, Linux y macOS, con formato y análisis estático sin un solo aviso.
Cobertura y robustez
Cobertura medida en cada push con objetivo del 90 %. El verificador se ataca con fuzzing: 2 minutos en cada cambio y 30 cada noche. Miles de mutaciones aleatorias contra cada analizador: nada se cae.
Interoperabilidad probada
El cifrado es compatible con las apps de Link actuales, comprobado en los dos sentidos, para migrar sin romper nada.
¿Quieres usar Sofía?
El código de Sofía es privado por ahora. Si quieres usar la plataforma, integrarla en tu organización o saber más de Sofía Empresas, escríbenos y te damos acceso.
Habilitaremos aquí un contacto directo en breve; mientras tanto, el acceso se solicita a través de la suite IASOF.