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.

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

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

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.