Estado actual
Esta es la página pública canónica de estado de implementación para seed. La especificación de idioma actual es seed/docs/lang-spec.md; sus capítulos de gramática y semántica se encuentran bajo seed/compiler/llvm. Un elemento de la hoja de ruta no se implementa simplemente porque se propone; Las puertas terminadas requieren la evidencia de cierre nombrada.
Compilador
seed/compiler/llvm es el compilador y lanzador del repositorio operativo. Gates 0-24 están completos para sus osciloscopios grabados. La tubería verificada es:
source → lexer/parser → semantic graph → typed HIR/CFG
→ ownership/provenance/effects/loans → cleanup planning/verification
→ MIR → target layout/ABI → verified low MIR → LLVM
Importaciones de origen y .sdi emisión ejecutar la misma cadena de seguridad obligatoria. lo normal y ASan/UBSan Las suites pasan 1.496 comprobaciones del compilador más siete binarios unitarios en la línea de base actual. Gate-hay evidencia específica bajo seed/compiler/llvm/tests/GATE*_BASELINE.md.
Compilador autohospedado
El autohospedaje completo es una pista activa Linux x86-64 gobernada por roadmap-self-hosted.md. El compilador operativo LLVM sigue siendo el oráculo semántico y ABI hasta la transición SH20.
SH0 ha congelado el Linux x86-64 contrato de arranque, límite de dependencia y trazabilidad. SH1 ha cerrado las bibliotecas de nivel de compilador y el sustrato de host. SH2 está en progreso con token, lexer, AST, analizador, formateador y porciones mínimas de comando frontend implementadas. Análisis semántico, IR del compilador, el LLVM puente, nativo x86-64/ELF La emisión, el arranque nativo de punto fijo, el tiempo de ejecución, el enlazador, la procedencia de la liberación y el corte operativo siguen siendo puertas posteriores. No-Linux los puertos se difieren explícitamente hasta después de la primera transición.
el Linux-El asignador nativo utiliza clases de losa vacías precisas de 16 bytes a 8 kiB, una caché de losa vacía limitada en todo el proceso y desasigna el exceso de losas vacías. box<t> es propietario de un solo puntero, mientras que ?box<t> utiliza su nicho nulo auditado y, por lo tanto, también ocupa un puntero. Esquema-11 .sdi conserva la representación nominal de nicho nulo en una compilación separada. Gate 18 interfaces de esquema-12 agregan receptores mutables exclusivos, plantillas genéricas, procedencia de retorno prestado y contratos falibles de límites de aplicación. Gate 19 interfaces de esquema-13 agregan exactamente target/profile/runtime identidad y organismos públicos en línea verificados. Gate 20 interfaces de esquema 14 conservan además constantes públicas inmutables escalares, de texto, de tupla, de estructura y de matriz anidada para los consumidores con fuente eliminada; el compilador emite globales de solo lectura escritos y proyecciones verificadas. Gate 21 tiene una primitiva de capacidad no inicializada auditada utilizada internamente por los buffers de bytes y I/O; io.input_stream proporciona lecturas incrementales limitadas, copias de crecimiento geométrico solo con prefijos inicializados y capacidad de reserva directa I/O está cubierto por su línea base.
Los árboles de compiladores reemplazados se eliminaron después de la transición. Sus clasificaciones de comportamiento relevantes sobreviven en compiler/llvm/COMPATIBILITY.md y regresiones migradas; no definen la semántica del compilador actual.
Gate estado
| Gates | Estado | Resultado |
|---|---|---|
| 0-9 | completo | contrato de idioma, canal de compilación, seguridad, native/freestanding ejecución, endurecimiento, transición operativa |
| 10 | completo | coherente copy/move/borrow/clone/drop modelo |
| 11 | completo | Propagación general de place/ownership/provenance entre agregados, genéricos, tareas, valores de funciones y .sdi. |
| 12 | completo | Componentes modulares compiler/runtime y escalabilidad de verificación completa de 100k impuesta |
| 13 | completo | perfiles de liberación seguros y reproducibles C/Rust corpus de comparación |
| 14 | completo | Windows cerrado bajo vino requerido; macOS cerrado por la ejecución nativa requerida de Intel, con arm64 mantenido como su host verificado por separado |
| 15 | completo | reproducible package/lock/cache, procesable JSON diagnóstico, LSP, doc/lint, compilaciones incrementales exactas, comprobaciones de publicación y resultados de tareas escritas |
| 16 | completo | seguro numeric/range/text/buffer/collection ergonomía, preparación automática de la biblioteca central, reducción nativa predecible y rendimiento representativo de las aplicaciones |
| 17 | completo | artefactos dinámicos reutilizables y transaccionales consistentes con el perfil user/system instalación de binarios, bibliotecas y .sdi interfaces |
| 18 | completo | Ergonomía de aplicaciones que da prioridad al lenguaje, bibliotecas básicas process/parse/I/O/math/buffer/slice/collection y migraciones de referencia seguras. |
| 19 | completo | Artefactos coherentes con el perfil, cuerpos en línea entre módulos, particiones mutables separadas marcadas, almacenes de campo directos y metadatos de alias con alcance de prueba. |
| 20 | completo | constantes agregadas inmutables recursivas, datos estáticos direccionables e interfaces eliminadas de fuente de esquema 14 |
| 21 | completo | buffers propios que tienen en cuenta la capacidad, transferencia de prefijo inicializado, crecimiento geométrico y streaming I/O |
| 22 | completo | devoluciones de llamadas calificadas con efecto más tarea estructurada neutral en tiempo de ejecución ABI y falla explícita en la asignación de tareas |
| 23 | completo | Cortocircuito de izquierda a derecha &&/` |
| 24 | completo | cierres sin escape, move/copy capturas, devoluciones de llamadas retenidas en cuadros, interfaces de esquema 16 y enlaces móviles |
Codificación fuente y texto.
.sdLos archivos fuente son UTF-8 por contrato.stringes propiedad válida UTF-8.stres una vista prestada de solo lectura UTF-8 de puntero más longitud de bytes.- Los literales de cadena tienen almacenamiento estático y escriben
str. - Los comentarios y el contenido de las cadenas pueden contener Unicode.
leninforma la longitud en bytes. El paquete ordinariotextvalida y itera escalares Unicode sin asignación; La segmentación de grafemas, la normalización y el comportamiento local siguen siendo trabajo de biblioteca.- Los identificadores de fuente permanecen intencionalmente en minúsculas ASCII; constantes son mayúsculas de serpiente ASCII.
El cargador valida cada fuente como canónica UTF-8 antes de aplicar lex y rechaza NUL incrustado, codificaciones demasiado largas, sustitutos, truncamientos y valores más allá del escalar máximo de Unicode. Los literales de cadena decodificados también se validan.
La interpolación de cadenas f de fase 1 se implementa para str, prestado string, booly enteros integrados. La construcción produce efímero format_args sin asignación de montón; usos de salida directa file.write_*_format, mientras .to_string()? materializa explícitamente una cadena de propiedad. La fase 2 implementa la conversión de bases enteras; delimitado width/fill/alignment; exacto fijo y determinista scientific/general f32/f64 conversión sin libc; y formato personalizado estático directo a través de préstamos sin asignación display.display() -> str y debug.debug() -> str implementaciones.
Superficie de lenguaje implementada
- immutable/mutable/linear vinculaciones y constantes de serpiente superior;
- funciones, métodos receptores implícitos, destructores, genéricos, rasgos, implicaciones;
- estructuras de serpiente inferior, ADT, uniones sin formato, matrices, cortes, tuplas, option/result;
- bloques orientados a expresiones y
if, máswhile, sin asignaciónfor, exhaustivomatch,break,continue, y tempranoret; - indexación comprobada para todos los anchos de enteros integrados; las lecturas de índice variable son
compatible con los parámetros de función
[]u8y el segmento original debytes.view(). Alcance las vistas mutables dentro de un bloque y use parámetros de función[]u8de solo lectura o el segmento original para acceso de índice variable; - explícito
unsafememoria bruta, atómica, acceso volátil, espacios de direcciones, FFI, llamadas al sistema, acceso a sindicatos sin formato y arquitectura intrínseca; - estructurado
spawn, regiones, perfiles de tiempo de ejecución y compilación separada. - cierres sin escape sin asignación, cierres en caja falibles explícitos, efectos de devolución de llamada inferidos y contratos exigibles con fuente eliminada del esquema 16;
- cadenas f phase-1/2 escritas con evaluación única, escape de llave literal, especificaciones de formato, estático display/debug rasgos, producción segmentada sin asignación y materialización de propiedad falible.
La gramática limpia actualmente no implementa el legado. enum, nombres nominales en mayúscula, return, # comentarios, incorporados chan<t>/send/recv, generación separada, cierres recursivos, generadores, macros, excepciones, async/await, o sintaxis de por vida.
Propiedad y seguridad
El modelo común es: copiar escalares, mover recursos, tomar prestadas vistas de copia cero y clonar explícitamente. La limpieza se ejecuta exactamente una vez en las salidas estructuradas. El pánico, la trampa y el aborto no se desenrollan ni ejecutan el léxico cleanup/destructors.
Ownership/place/provenance los hechos se propagan a través de alias, bloques, ramas, puntos fijos de bucle, fields/nested campos, índices de matriz conocidos, tuplas, ADT, option/result, agregados genéricos, channels/tasks, función values/indirect llamadas, parameters/returns, y fuente eludida .sdi. Los movimientos de índice dinámico de elementos de recursos siguen siendo rechazados.
linear t tiene una semántica exactamente una vez en esas mismas formas implementadas. Las vistas @borrow receiver/input-derived conservan su procedencia sin sintaxis de por vida. El código inseguro asume obligaciones crudas explícitas pero no desactiva la propiedad segura de los valores circundantes.
Los cierres simples están apilados y no tienen escape. Captura copias o movimientos en el primer orden de uso léxico, permanece inmutable y se limpia exactamente una vez. box |...| asigna explícitamente un invocable de escape y devuelve result<box fn(...) -> t, alloc_error>; Las llamadas en caja son de solo movimiento, no se pueden clonar, no se pueden enviar y están confinadas a una región cuando se asigna una región. Las devoluciones de llamada de semillas utilizan descriptores code/environment de un solo puntero, mientras que los punteros de función de la plataforma siguen siendo delgados y solo aceptan funciones con nombre.
Texto, bytes y regiones
- propiedad
stringse mueve;.clone()crea un propietario independiente explícito; byteses propiedad binaria mutable única;shared_byteses un identificador compartido de solo lectura con explícito retain/clone;- las vistas owner/array compatibles no tienen asignación y se verifica su procedencia;
- las conversiones propias devuelven
result<..., alloc_error>; region(capacity) { body }proporciona una asignación de relieve verificada alineada y anidada;- el values/views/pointers seguro vinculado a una región no puede escapar de ella;
- Las tareas vinculadas a la región se unen antes de la limpieza de la región.
str.slicehace cumplir UTF-8 límites, mientrasstr.equaly delimitador ASCII la búsqueda permanece libre de asignación;- lo ordinario
text,box,vec, ysortlos paquetes proporcionan un token seguro rangos, propiedad recursiva, mutación comprobada y ordenamiento estático.
concurrencia
spawn está estructurado: los grupos de tareas se agotan en cada borde dejando a su propietario léxico antes de la limpieza. Captura copiar o mover según la capacidad; el uso compartido es explícito y los valores de tareas cruzadas requieren send/sync según corresponda.
compiler/llvm/libs/task es una biblioteca genérica ordinaria que proporciona canales de propiedad dividida, uniones de tareas de una sola vez escritas, eventos, cancelaciones, grupos de espera, semáforos, barreras y bloqueos. El cuerpo engendrado directamente ABI todavía regresa void, entonces postfijo ? no puede cruzar el límite de la tarea directamente. Gate 15 agrega la superficie de la biblioteca escrita task_result_new, task_result_complete_ok/error, y task_result_wait sobre los mismos puntos finales lineales unidos léxicamente. Los valores de función y los cierres inferidos pueden utilizar @no_runtime_effects fn(...) requerir un resumen completo y vacío del efecto del tiempo de ejecución; Las llamadas indirectas no cualificadas desconocidas siguen siendo rechazadas en perfiles restringidos. Las devoluciones de llamada en caja no pueden cruzar spawn porque no proporcionan send.
Bibliotecas y vinculación
.sdi Las interfaces preservan los tipos públicos, genéricos. templates/common instancias, efectos, propiedad, procedencia, destructor, clon, objetivo, build/runtime perfil, dependencia y ABI identidad. El esquema 13 conserva cuerpos en línea verificados y hashes de cuerpos; el esquema 14 agrega cargas útiles constantes inmutables recursivas públicas verificadas; el esquema 15 añade contratos con efecto exigible; El esquema 16 agrega firmas invocables en cuadros, cuerpos de cierre en línea e identidad de representación invocable. Un contenedor de biblioteca no publica una especialización de método huérfano cuyo propietario de método genérico provenga de un paquete importado; los consumidores excluidos de la fuente rematerializan esa instancia a partir de la plantilla de la dependencia. Alojado seed las bibliotecas se vinculan dinámicamente de forma predeterminada; --static selecciona estática seed dependencias. La publicación de artefactos es atómica y corrupta, con esquema obsoleto, perfil, destino o ABI-Las interfaces no coincidentes fallan al cerrarse.
El lanzador incremental build/run etapas de ruta paquetes seguros para mecanografiados I/O, vistas de procesos, análisis de enteros, matemáticas portátiles, buffers de bytes, sectores, cajas, redes, serialización, tareas, colecciones genéricas y contenedores de sistemas. Gate 18 agrega esquema-12 @mut vectores y seguros benchmark/application consumidores; Gate 19 agrega esquema-13 en línea math/system hojas y particiones de rodajas separadas. Estos siguen siendo paquetes importados normales, no lenguajes integrados ocultos.
Resolución registral, lockfiles/download caché, paquete add/update, poda de caché, generación de documentación, LSP e incremental object/interface caché son implementados por el Gate 15 herramientas. Gate 17 etapas de dependencias manifiestas básicas y ordinarias en profile/target-qualified tiendas dinámicas de forma predeterminada, reutiliza generaciones instaladas sin recompilación e implementa transacciones user/system seed install además de referencia seed uninstall. Explícito --static y --static=all siguen siendo opciones de vinculación independientes.
Crear perfiles y rendimiento
--release utiliza seed-safe-o2-v1; --release-small utiliza seed-safe-oz-v1. Las protecciones de límites, discriminantes, de procedencia, de propiedad y de limpieza permanecen a menos que LLVM demuestre que son redundantes. ThinLTO, PGO y el enlace estático son opciones independientes explícitas. No existe ningún perfil operativo no verificado.
Gate 13 compara cargas de trabajo equivalentes numéricas, de análisis, de colección, allocation/string, de tareas estructuradas, de redes, de llamadas dinámicas, de inicio, de RSS y de tamaño de artefacto con Clang C y Rust. En el host de cierre, seed permanece dentro del objetivo de tiempo de ejecución ordinario del 0 al 10 % para el corpus aplicado. Esta es una evidencia de carga de trabajo controlada, no una afirmación universal de que cada programa seed supera a C/Rust.
Gate La mediana de verificación completa de 100k del host de cierre de 12 es de 0,41 s a 177 504 KiB frente a presupuestos de 3,00 s y 196 608 KiB. Ver GATE12_BASELINE.md y GATE13_BASELINE.md para hardware/toolchain metadatos e interpretación.
Estado objetivo
La compatibilidad con objetos no es lo mismo que la compatibilidad con ejecutables alojados. La matriz canónica es compiler/llvm/tests/GATE14_TARGET_MATRIX.tsv.
| Objetivo | Nivel declarado actual |
|---|---|
| Linux x86-64 | cerrado alojado compile/link/run, static/dynamic bibliotecas, valor predeterminado nativo libre de libc |
| Linux AArch64 | alojado compile/link/runtime con política de corredor; Comportamiento static/dynamic cubierto en su nivel declarado |
| Linux RISC-V64 | fila alojada solo para objetos; la bota independiente está separada |
| Windows x86-64 | determinista PE/DLL, servicios de ejecución que incluyen owned/shared bytes y archivo read/seek, FFI de parámetros agregados de Microsoft x64, tareas estructuradas, redes, paquete ABI, endurecimiento del cargador y el reubicable SDL3 pase de paquete de juego bajo Wine requerido |
| macOS x86-64 | Gate 14 cerrado por el ejecutable Intel nativo requerido, dylib/static, tiempo de ejecución, pthread, redes, paquete ABI y evidencia del cargador |
| macOS brazo64 | Nativo impulsado por SDK compile/link/run, runtime/ABI, programador, redes y evidencia de paquetes en Apple Silicon; mantenido por separado de la fila de cierre Intel requerida |
| Android brazo64 | LLVM/object/static/shared/executable objetivos más tiempo de ejecución JNI, empaquetado Gradle, API 21/29/37 Ejecución ARM64 AVD, API-37 escenarios de lanzamiento, evidencia del ciclo de vida instrumentada por el asignador de Garden y un alcance API-35 segmentos de dispositivos físicos; MP4 lifecycle/services transmitir los tres AVD de humo |
| Android x86-64 | LLVM/object/static/shared/executable compile/link compatibilidad; no emulator/device reclamo de ejecución |
| iOS brazo64 | LLVM/object/archive/device-link y generado C/Swift/XCFramework evidencia del consumidor, más la completa Seed Garden model/assets/Apple-audio compilación cruzada de objetos y paquetes de aplicaciones sin firmar; La ejecución física del jardín, la firma y la evidencia de liberación siguen siendo trabajos del dispositivo dentro del alcance. |
| iOS brazo simulador64 | iOS Simulador 26.5 ARM64 lifecycle/services, bytes/async, UI adaptable phone/tablet, entrada, rotación, semántica, accesibilidad XCUITest, ejecución central MP4 compartida y Seed Garden context/persistence/continuous-frame/Apple-AudioQueue cobertura del producto |
| wasm32-WASI | fila a nivel de objeto con servicios alojados ausentes mantenidos explícitos en la matriz Gate 14 |
| independiente x86-64/AArch64/RISC-V64 | evidencia de arranque sin libc bajo QEMU en Gate 7 niveles declarados |
Gate 14 requiere Intel runner, SDK, ABI, Se cumplen los requisitos de FFI, biblioteca dinámica, compilación separada, corrupción, cargador y regresión. macOS arm64 sigue siendo un host nativo etiquetado de forma independiente en lugar de un sustituto de la fila de cierre de Intel.
CLI y herramientas
El iniciador del repositorio proporciona new, check, format, incremental build, run, test, resolución del paquete, install/uninstall, doc, lint, LSP y publish --check, además de reenvío directo de indicadores del compilador y file.sd -o output. Registro remoto publication/signing no se implementa; el comando de publicación existente solo realiza la validación local.
El compilador directo formatea el código fuente, imprime semantic/IR formas, emits/reads/hashes .sdi, emite LLVM/object/shared/static/binary artefactos, instalaciones target/ABI- bibliotecas calificadas y ejecuta objetivos compatibles. Su ayuda ejecutable es la lista de banderas autorizadas:
seed/compiler/llvm/build/seed --help
Fuente de documentación de la verdad.
| Tema | Página |
|---|---|
| Especificación de idioma actual | seed/docs/lang-spec.md |
| Gramática | seed/compiler/llvm/LANGUAGE_GRAMMAR.md |
| Semántica | seed/compiler/llvm/SEMANTIC_RULES.md |
| Usuario syntax/CLI | Referencia de idioma |
| Propiedad | Propiedad |
| Integraciones principales | Integraciones principales |
| Runtime/backend | Primitivas del sistema |
| Gates | seed/compiler/llvm/ROADMAP.md |
Los documentos históricos pueden describir llvm-v1, el prototipo v2 o directorios auxiliares de ensamblaje que ya no existen. Deben estar etiquetados explícitamente y no deben utilizarse como guía actual en lenguaje limpio.