Compilador
Recursos do compilador
A tabela de todos os recursos do fc e da linguagem tratados nestas páginas, com a página, o demo e o pacote em que cada um entrou.
Como usar esta página#
Cada linha liga um recurso à página que o explica, ao demo que o exercita (uma pasta numerada de programas comentados, com a saída real gravada) e ao pacote de melhorias em que ele entrou no fc, segundo as notas de versão do compilador (novidades.md). O padrão do compilador não muda: o que não é pedido por opção, diretiva ou sintaxe nova gera o mesmo código e as mesmas mensagens de antes.
Os pacotes, em ordem: 1º (feat), 2º (feat2), 3º (feat3), 8º (feat7 a feat8) e 9º (feat9). "Base" quer dizer que já existia antes dos pacotes.
A linguagem#
| Recurso | Página | Demo | Pacote |
|---|---|---|---|
defer | defer | 36, 40 | 1º |
for..in com enumerador, downin | for..in e enumeradores | 39, 07 | 1º |
uses A as B, uses A (T1, T2 as U) | uses com apelido | 52 | 1º |
Tuplas, desestruturação, T.0.1 | Tuplas | 41 | 1º (T.0.1 e comparação < no 3º) |
Interpolação $'…' e formatos | Interpolação | 13, 55 | 1º (formatos: 2º; g e datas: 3º) |
case com guarda e padrões, case-expressão | case com guardas | 42 | 1º |
Tipos soma choice | choice | 43, 30 | 2º (métodos e padrões aninhados: 3º) |
Fenner.Result | Result e propagação | 44 | 1º |
Propagação F()? | Result e propagação | 44 | 9º |
| Closures e funções anônimas | Closures em detalhe | 45, 38 | base (correções no 3º; noescape e FE1457 depois) |
async/await | async e Fenner.Tasks | 46 | base |
Fenner.Tasks | async e Fenner.Tasks | 46 | 2º |
iterator function e yield | Iteradores e corrotinas | 47 | Compiler\extras |
Corrotinas TGenerator | Iteradores e corrotinas | 48 | Compiler\extras |
static_assert e constantes ampliadas | static_assert | 49 | 1º |
deprecated, experimental | Marcas de uso | 50 | 1º (experimental passou a aviso no 2º) |
tip, todo, fc --todo | Marcas de uso | 50 | 2º |
{$config … fatal} | Marcas de uso | 50 | 3º |
Avisos opt-in e Lint | Avisos opt-in | 51 | 1º (cinco); depois ampliados |
nameof(X) | nameof | 34 | 8º |
?., ??=, aritmética lifted | Acesso condicional | 31, 19 | 8º |
?, PEnum^, TEnum = … (tipo anulável) | Nulos e exceções | 19 | 8º |
R with (Campo: Valor), literal de record | with de expressão | 29 | 8º |
readonly, property init | readonly e init | 25 | 9º |
Fatias A[1..3], A[^1] | Fatias e concatenação | 15 | 9º |
Concatenação de vetores A + B | Fatias e concatenação | 15 | 8º (feat8) |
| Argumentos nomeados | Argumentos nomeados | 11, 55 | 9º |
| Módulos que se citam (ciclos) | Ciclos entre módulos | 53 | 2º (ciclo por declaração: 3º) |
| Identificadores Unicode | Ciclos entre módulos | 53 | 2º |
public region, forward, initialization | Regiões e forward | 54 | base |
O compilador e as ferramentas#
| Recurso | Página | Demo | Pacote |
|---|---|---|---|
[Test], Fenner.Testing | Testes | 57 | 1º (fc test: 2º) |
fc fmt | Formatador | 59 | 1º (--width, --colon-space: 3º) |
fc --doc e /// | Documentação | 58 | 1º |
fc --symbols | symbols e LSP | 1º | |
fc --lsp e a extensão do VS Code | symbols e LSP | 2º | |
--diag=plain|rich|json | Códigos de diagnóstico | 1º | |
--diag-codes, --explain | Códigos de diagnóstico | 2º (75 explicações: 3º) | |
-coverage, --sanitize=undefined, -reproducible | Cobertura e sanitizadores | 2º | |
fc new|build|run|test|check|clean|doc|add, fenner.toml | Projetos | 2º | |
fc --server, fc --client | Servidor de compilação | 2º | |
package e .fxd | Packages na prática | desenho de 2026-08; formato v20 |
Onde achar mais#
- O manual do compilador (
index.html) e as notas de versão (novidades.md) têm o detalhe de cada recurso; os arquivosnamed-args.md,slices.md,arrconcat.md,readonly.md,nullcond.md,try-propagate.mdeerros.mdaprofundam os mais novos. - Linha de comando e Configuração para as opções gerais.
- Perguntas frequentes e Diferenças do Delphi.