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

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

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

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.