Status atual
Esta é a página canônica de status de implementação pública para seed. A especificação de idioma atual é seed/docs/lang-spec.md; seus capítulos gramaticais e semânticos estão sob seed/compiler/llvm. Um item do roteiro não é implementado apenas porque é proposto; portões concluídos exigem sua evidência de fechamento nomeada.
Compilador
seed/compiler/llvm é o compilador e inicializador do repositório operacional. Gates 0-24 estão completos para seus escopos gravados. O pipeline verificado é:
source → lexer/parser → semantic graph → typed HIR/CFG
→ ownership/provenance/effects/loans → cleanup planning/verification
→ MIR → target layout/ABI → verified low MIR → LLVM
Importações de origem e .sdi emissão executam a mesma cadeia de segurança obrigatória. O normal e ASan/UBSan suítes passam por 1.496 verificações do compilador mais sete binários de unidade na linha de base atual. Gate-evidência específica está sob seed/compiler/llvm/tests/GATE*_BASELINE.md.
Compilador auto-hospedado
A auto-hospedagem completa é uma faixa Linux x86-64 ativa governada por roadmap-self-hosted.md. O compilador operacional LLVM permanece o oráculo semântico e ABI até a transição SH20.
SH0 congelou o Linux x86-64 contrato de bootstrap, limite de dependência e rastreabilidade. SH1 fechou as bibliotecas de nível de compilador e o substrato host. SH2 está em andamento com token, lexer, AST, analisador, formatador e fatias mínimas de comando de frontend implementadas. Análise semântica, IRs do compilador, o LLVM ponte, nativo x86-64/ELF emissão, bootstrap de ponto fixo nativo, tempo de execução, vinculador, origem da versão e transição operacional permanecem como portas posteriores. Não-Linux as portas são explicitamente adiadas até depois da primeira transição.
O Linux O alocador -native usa classes de placas precisas de 16 bytes a 8 KiB, um cache de placas vazias limitado em todo o processo e desmapeia placas vazias em excesso. box<t> é um proprietário de ponteiro único, enquanto ?box<t> usa seu nicho nulo auditado e, portanto, também ocupa um ponteiro. Esquema-11 .sdi preserva a representação nominal de nicho nulo na compilação separada. Gate 18 interfaces de esquema 12 adicionam receptores mutáveis exclusivos, modelos genéricos, proveniência de retorno emprestado e contratos falíveis de limites de aplicativos. Gate 19 interfaces esquema-13 adicionam exatas target/profile/runtime identidade e órgãos públicos inline verificados. Gate 20 interfaces de esquema 14 preservam adicionalmente escalares imutáveis públicos, texto, tupla, estrutura e constantes de matriz aninhada para consumidores excluídos da origem; o compilador emite globais somente leitura digitados e projeções verificadas. Gate 21 tem uma primitiva de capacidade não inicializada auditada usada internamente por buffers de bytes e I/O; io.input_stream fornece leituras incrementais limitadas, crescimento geométrico copia apenas prefixos inicializados e capacidade sobressalente direta I/O é coberto pela sua linha de base.
As árvores do compilador substituídas foram removidas após a substituição. Suas classificações de comportamento relevantes sobrevivem em compiler/llvm/COMPATIBILITY.md e regressões migradas; eles não definem a semântica atual do compilador.
Gate status
| Gates | Estado | Resultado |
|---|---|---|
| 0-9 | completo | contrato de linguagem, pipeline do compilador, segurança, native/freestanding execução, endurecimento, transição operacional |
| 10 | completo | modelo copy/move/borrow/clone/drop coerente |
| 11 | completo | propagação geral de place/ownership/provenance entre agregados, genéricos, tarefas, valores de função e .sdi |
| 12 | completo | componentes modulares compiler/runtime e escalabilidade de verificação completa de 100k aplicada |
| 13 | completo | perfis de liberação segura e corpus de comparação C/Rust reproduzível |
| 14 | completo | Windows fechado no Wine obrigatório; macOS fechado pela execução nativa necessária da Intel, com arm64 mantido como seu host verificado separadamente |
| 15 | completo | reproduzível package/lock/cache, acionável JSON diagnóstico, LSP, doc/lint, compilações incrementais exatas, verificações de publicação e resultados de tarefas digitadas |
| 16 | completo | ergonomia numeric/range/text/buffer/collection segura, preparação automática da biblioteca principal, redução nativa previsível e desempenho representativo da aplicação |
| 17 | completo | artefatos dinâmicos reutilizáveis consistentes com perfil e transacionais user/system instalação de binários, bibliotecas e .sdi interfaces |
| 18 | completo | ergonomia de aplicação em primeiro lugar, bibliotecas process/parse/I/O/math/buffer/slice/collection básicas e migrações seguras de benchmark |
| 19 | completo | artefatos coerentes com perfil, corpos embutidos entre módulos, partições mutáveis disjuntas verificadas, armazenamentos de campo direto e metadados de alias com escopo de prova |
| 20 | completo | constantes agregadas imutáveis recursivas, dados estáticos endereçáveis e interfaces eliminadas pela origem do esquema 14 |
| 21 | completo | buffers próprios com reconhecimento de capacidade, transferência de prefixo inicializado, crescimento geométrico e streaming I/O |
| 22 | completo | retornos de chamada qualificados para efeito, além de tarefa estruturada neutra em tempo de execução ABI e falha explícita de alocação de tarefa |
| 23 | completo | curto-circuito da esquerda para a direita &&/` |
| 24 | completo | fechamentos sem escape, move/copy capturas, retornos de chamada retidos em caixa, interfaces de esquema 16 e ligações móveis |
Codificação de origem e texto
.sdarquivos de origem são UTF-8 por contrato.stringé de propriedade válida UTF-8.stré uma visualização UTF-8 de ponteiro mais byte emprestada somente leitura.- Literais de string têm armazenamento estático e tipo
str. - Comentários e conteúdos de string podem conter Unicode.
leninforma o comprimento em bytes. O pacotetextcomum valida e itera escalares Unicode sem alocação; segmentação de grafema, normalização e comportamento de localidade continuam sendo trabalho da biblioteca.- Os identificadores de origem permanecem intencionalmente em letras minúsculas ASCII; constantes são letras maiúsculas ASCII.
O carregador valida cada fonte como UTF-8 canônico antes do lexing e rejeita NUL incorporado, codificações longas, substitutos, truncamento e valores além do escalar máximo do Unicode. Literais de string decodificados também são validados.
A interpolação de string f da fase 1 é implementada para str, emprestado string, boole números inteiros integrados. A construção produz efêmero format_args sem alocação de heap; usos de saída direta file.write_*_format, enquanto .to_string()? materializa explicitamente uma string de propriedade. A Fase 2 implementa conversão de base inteira; limitado width/fill/alignment; exato fixo e determinístico scientific/general f32/f64 conversão sem libc; e formatação personalizada estática direta por meio de empréstimo sem alocação display.display() -> str e debug.debug() -> str implementações.
Superfície de linguagem implementada
- immutable/mutable/linear ligações e constantes de cobra superior;
- funções, métodos de receptor implícito, destruidores, genéricos, características, impls;
- estruturas de cobra inferior, ADTs, uniões brutas, matrizes, fatias, tuplas, option/result;
- blocos orientados a expressão e
if, maiswhile, livre de alocaçãofor, exaustivomatch,break,continue, e cedoret; - indexação verificada para todas as larguras inteiras integradas; leituras de índice variável são
suportado nos parâmetros da função
[]u8e na fatia original debytes.view(). Escopo visualizações mutáveis dentro de um bloco e use parâmetros de função[]u8somente leitura ou a fatia original para acesso ao índice variável; - memória bruta
unsafeexplícita, atômicos, acesso volátil, espaços de endereço, FFI, syscalls, acesso bruto à união e intrínsecos da arquitetura; - estruturado
spawn, regiões, perfis de tempo de execução e compilação separada. - fechamentos sem escape sem alocação, fechamentos em caixa falíveis explícitos, efeitos de retorno de chamada inferidos e contratos exigíveis excluídos da origem do esquema 16;
- strings f phase-1/2 digitadas com avaliação única, escape de chave literal, especificações de formato, características display/debug estáticas, saída segmentada sem alocação e materialização de propriedade falível.
A gramática limpa atualmente não implementa legado enum, nomes nominais em maiúsculas, return, # comentários, integrados chan<t>/send/recv, spawn desanexado, fechamentos recursivos, geradores, macros, exceções, async/await ou sintaxe vitalícia.
Propriedade e segurança
O modelo comum é: copiar escalares, mover recursos, emprestar visualizações de cópia zero e clonar explicitamente. A limpeza é executada exatamente uma vez nas saídas estruturadas. Pânico, armadilha e aborto não desenrolam ou executam o léxico cleanup/destructors.
Ownership/place/provenance os fatos se propagam através de aliases, blocos, ramificações, pontos fixos de loop, fields/nested campos, índices de array conhecidos, tuplas, ADTs, option/result, agregados genéricos, channels/tasks, função values/indirect chamadas, parameters/returns e fonte omitida .sdi. As movimentações de índice dinâmico de elementos de recursos permanecem rejeitadas.
linear t possui semântica exatamente uma vez nas mesmas formas implementadas. As visualizações @borrow receiver/input-derived mantêm a origem sem sintaxe vitalícia. O código inseguro assume obrigações brutas explícitas, mas não desativa a propriedade segura dos valores circundantes.
Os fechamentos simples são baseados em pilha e não escapam. As capturas copiam ou movem na primeira ordem de uso lexical, permanecem imutáveis e são limpas exatamente uma vez. box |...| aloca explicitamente uma chamada de escape e retorna result<box fn(...) -> t, alloc_error>; os callables em caixa são somente móveis, não clonáveis, não enviáveis e confinados à região quando a região é alocada. Os retornos de chamada iniciais usam descritores code/environment de um ponteiro, enquanto os ponteiros de função da plataforma permanecem finos e aceitam apenas funções nomeadas.
Texto, bytes e regiões
- propriedade
stringmovimentos;.clone()cria um proprietário independente explícito; bytesé propriedade binária mutável única;shared_bytesé um identificador somente leitura compartilhado com explícito retain/clone;- visualizações owner/array compatíveis são isentas de alocação e de proveniência verificada;
- as conversões próprias retornam
result<..., alloc_error>; region(capacity) { body }fornece alocação de colisão verificada e alinhada aninhada;- o seguro values/views/pointers vinculado a uma região não pode escapar dela;
- tarefas vinculadas à região são ingressadas antes da limpeza da região.
str.sliceimpõe UTF-8 limites, enquantostr.equale delimitador ASCII a pesquisa permanece livre de alocação;- o comum
text,box,vecesortpacotes fornecem token seguro intervalos, propriedade recursiva, mutação verificada e ordenação estática.
Simultaneidade
spawn é estruturado: grupos de tarefas são drenados em todas as arestas, deixando seu proprietário léxico antes da limpeza. Captura, copia ou move de acordo com a capacidade; o compartilhamento é explícito e os valores de tarefas cruzadas exigem send/sync conforme apropriado.
compiler/llvm/libs/task é uma biblioteca genérica comum que fornece canais de divisão de propriedade, junções de tarefas únicas digitadas, eventos, cancelamento, grupos de espera, semáforos, barreiras e bloqueios. O corpo gerado direto ABI ainda retorna void, então pós-fixado ? não pode cruzar o limite da tarefa diretamente. Gate 15 adiciona a superfície da biblioteca digitada task_result_new, task_result_complete_ok/errore task_result_wait sobre os mesmos pontos finais lineares e lexicalmente unidos. Valores de função e fechamentos inferidos podem usar @no_runtime_effects fn(...) exigir um resumo completo e vazio do efeito do tempo de execução; chamadas indiretas desconhecidas e não qualificadas permanecem rejeitadas em perfis restritos. Retornos de chamada em caixa não podem cruzar spawn porque eles não fornecem send.
Bibliotecas e ligação
.sdi interfaces preservam tipos públicos, genéricos templates/common instâncias, efeitos, propriedade, proveniência, destruidor, clone, alvo, build/runtime perfil, dependência e ABI identidade. O esquema 13 preserva corpos in-line verificados e hashes de corpo; o esquema 14 adiciona cargas constantes imutáveis recursivas públicas verificadas; o esquema 15 adiciona contratos de efeito exigíveis; o esquema 16 adiciona assinaturas que podem ser chamadas em caixa, corpos de fechamento em linha e identidade de representação que pode ser chamada. Um wrapper de biblioteca não publica uma especialização de método órfão cujo proprietário do método genérico vem de um pacote importado; os consumidores excluídos da origem rematerializam essa instância a partir do modelo da dependência. Hospedado seed as bibliotecas são vinculadas dinamicamente por padrão; --static seleciona estático seed dependências. A publicação do artefato é atômica e corrompida, esquema obsoleto, perfil, destino ou ABI-interfaces incompatíveis falham no fechamento.
O lançador incremental build/run path prepara pacotes seguros para digitados I/O, visualizações de processos, análise de inteiros, matemática portátil, buffers de bytes, fatias, caixas, rede, serialização, tarefas, coleções genéricas e wrappers de sistemas. Gate 18 adiciona esquema-12 @mut vetores e seguros benchmark/application consumidores; Gate 19 adiciona esquema-13 embutido math/system folhas e partições de fatias disjuntas. Estes continuam sendo pacotes importados comuns, e não embutidos em idiomas ocultos.
Resolução de registro, lockfiles/download cache, pacote add/update, remoção de cache, geração de documentação, LSP e incremental object/interface cache são implementados pelo Gate 15 ferramentas. Gate 17 estágios de dependências básicas e manifestas comuns em profile/target-qualified armazenamentos dinâmicos por padrão, reutiliza gerações instaladas sem recompilação e implementa transações transacionais user/system seed install além de reconhecimento de referência seed uninstall. Explícito --static e --static=all permanecem escolhas de ligação independentes.
Crie perfis e desempenho
--release usa seed-safe-o2-v1; --release-small usa seed-safe-oz-v1. Limites, discriminantes, procedência, propriedade e guardas de limpeza permanecem, a menos que LLVM prove que são redundantes. ThinLTO, PGO e ligação estática são opções independentes explícitas. Não existe nenhum perfil operacional não verificado.
Gate 13 compara cargas de trabalho equivalentes numéricas, de análise, de coleção, allocation/string, tarefas estruturadas, rede, chamada dinâmica, inicialização, RSS e tamanho de artefato com Clang C e Rust. No host de fechamento, seed permanece dentro da meta de tempo de execução normal de 0-10% para o corpus imposto. Esta é uma evidência de carga de trabalho controlada, não uma afirmação universal de que todo programa seed supera o C/Rust.
Gate A mediana de verificação completa de 100k do host de fechamento do 12 é 0,41 s a 177.504 KiB contra orçamentos de 3,00 se 196.608 KiB. Veja GATE12_BASELINE.md e GATE13_BASELINE.md para hardware/toolchain metadados e interpretação.
Status de destino
O suporte a objetos não é o mesmo que suporte hospedado a executáveis. A matriz canônica é compiler/llvm/tests/GATE14_TARGET_MATRIX.tsv.
| Alvo | Nível declarado atual |
|---|---|
| Linux x86-64 | fechado hospedado compile/link/run, static/dynamic bibliotecas, padrão nativo livre de libc |
| Linux AArch64 | hospedado compile/link/runtime com política de corredor; static/dynamic comportamento coberto em seu nível declarado |
| Linux RISC-V64 | linha hospedada somente de objeto; a inicialização independente é separada |
| Windows x86-64 | determinístico PE/DLL, serviços de tempo de execução, incluindo owned/shared bytes e arquivo read/seek, FFI de parâmetro agregado Microsoft x64, tarefas estruturadas, rede, pacote ABI, reforço da carregadeira e relocável SDL3 pacote de jogo passa sob o Wine obrigatório |
| macOS x86-64 | Gate 14 fechado pelo executável nativo da Intel necessário, dylib/static, tempo de execução, pthread, rede, pacote ABI e evidência do carregador |
| macOS braço64 | Nativo baseado em SDK compile/link/run, runtime/ABI, agendador, rede e evidências de pacote no Apple Silicon; mantido separadamente da linha de fechamento Intel necessária |
| Android braço64 | LLVM/object/static/shared/executable alvos mais tempo de execução JNI, empacotamento Gradle, API 21/29/37 Execução ARM64 AVD, API-37 cenários de lançamento, evidências de ciclo de vida instrumentadas pelo alocador Garden e um escopo API-35 fatias de dispositivos físicos; MP4 lifecycle/services passar todos os três AVDs de fumaça |
| Android x86-64 | LLVM/object/static/shared/executable compile/link compatibilidade; não emulator/device reivindicação de execução |
| iOS braço64 | LLVM/object/archive/device-link e evidência de consumidor C/Swift/XCFramework gerada, além do objeto Seed Garden model/assets/Apple-audio completo e construção cruzada de pacote de aplicativos não assinado; execução física do jardim, assinatura e liberação de evidências permanecem como trabalho do dispositivo com escopo definido |
| iOS braço simulador64 | iOS Simulador ARM64 26,5 lifecycle/services, bytes/async, IU adaptável phone/tablet, entrada, rotação, semântica, acessibilidade XCUITest, execução de núcleo MP4 compartilhado e Seed Garden context/persistence/continuous-frame/Apple-AudioQueue cobertura do produto |
| wasm32-WASI | linha em nível de objeto com serviços hospedados ausentes mantidos explícitos na matriz Gate 14 |
| independente x86-64/AArch64/RISC-V64 | evidência de inicialização livre de libc no QEMU em Gate 7 níveis declarados |
Gate 14 é necessário Intel runner, SDK, ABI, FFI, biblioteca dinâmica, compilação separada, corrupção, carregador e requisitos de regressão são aprovados. macOS arm64 continua sendo um host nativo rotulado de forma independente, em vez de um substituto para a linha de fechamento da Intel.
CLI e ferramentas
O inicializador do repositório fornece new, check, format, incremental build, run, test, resolução do pacote, install/uninstall, doc, lint, LSP e publish --check, além de encaminhamento direto do sinalizador do compilador e file.sd -o output. Registro remoto publication/signing não está implementado; o comando de publicação existente executa apenas validação local.
O compilador direto formata a fonte, imprime semantic/IR formulários, emits/reads/hashes .sdi, emite LLVM/object/shared/static/binary artefatos, instalações target/ABI- bibliotecas qualificadas e executa alvos suportados. Sua ajuda executável é a lista de sinalizadores autorizados:
seed/compiler/llvm/build/seed --help
Documentação fonte da verdade
| Tópico | Página |
|---|---|
| Especificação de idioma atual | seed/docs/lang-spec.md |
| Gramática | seed/compiler/llvm/LANGUAGE_GRAMMAR.md |
| Semântica | seed/compiler/llvm/SEMANTIC_RULES.md |
| Usuário syntax/CLI | Referência de idioma |
| Propriedade | Propriedade |
| Núcleos integrados | Incorporações principais |
| Runtime/backend | Primitivos do Sistema |
| Gates | seed/compiler/llvm/ROADMAP.md |
Documentos históricos podem descrever llvm-v1, o protótipo v2 ou diretórios stub de assembly que não existem mais. Eles devem ser explicitamente rotulados e não devem ser usados como orientação atual em linguagem limpa.