O ecossistema
O compilador, as duas RTLs, a WCL, o RAD e o que já foi escrito em Fenner.
O compilador: fc#
O fc é o Fenner Compiler. Ele lê o .fxp e resolve nomes, tipos, sobrecargas e genéricos, marca o que é alcançável a partir do corpo principal, gera LLVM IR, otimiza com o LLVM e liga com o lld embutido. Tudo isso dentro de um só executável, sem ferramentas externas no Windows. O compilador é escrito em Fenner e compila a si mesmo.
Também existem caminhos alternativos a partir do mesmo front-end: um backend de bytecode em desenvolvimento (.fxb, executado pela fxvm, para encurtar o ciclo do dia a dia) e a emissão só do .ll. Veja Como o compilador funciona.
As duas RTLs#
A RTL (run-time library) é a biblioteca-padrão, escrita em Fenner e compilada junto com o seu programa. Há duas, escolhidas pela chave RtlSource da configuração:
| RTL | Onde | Para que serve |
|---|---|---|
| A do compilador | Compiler\rtl | Mínima: System, SysInit, classes, TTask, Meta. É a que o fc acha sozinho e a que a suíte de testes do compilador usa. |
| BedRock | Common\BedRock\rtl | Completa: o núcleo System, o System.Remainder (o grosso do ecossistema no estilo Delphi que a WCL exige), a própria WCL, bancos de dados, JSON, HTTP, TLS, XML, compressão… É a que os aplicativos e o RAD usam. |
A BedRock também é distribuída pré-compilada, como um package (Fenner.BedRock.dll com seu .fxd): o aplicativo compila em bem menos tempo e todos os programas passam a compartilhar um alocador só. Veja Packages e o .fxd.
A WCL#
A WCL é a biblioteca de componentes visuais: TForm, TButton, TEdit, TListView, TTreeView, grades, abas, menus, e um editor de código (o SynEdit portado, com dezenas de realces de sintaxe). Ela desenha sobre a API do Windows, com estilos visuais carregáveis (.vsf). Veja WCL.
O RAD#
O Fenner RAD é o ambiente de desenvolvimento: paleta de componentes, formulário preso numa aba por módulo, inspetor de objetos com propriedades e eventos, editor de código com realce, completar código e navegação. Ele gera código Fenner comum. O RAD é escrito em Fenner, sobre a WCL. Veja o guia do RAD.
Ferramentas em volta#
- FennerScript: um motor de scripts embutível (como o PascalScript no Delphi), para o usuário do seu aplicativo escrever scripts executados dentro do processo, vendo só o que você registrar.
- Extensão do VS Code: realce case-sensitive, trechos e leitura dos erros do
fcno painel de Problemas.
O que já foi escrito em Fenner#
Fenner não é só um compilador de exemplos: ele é usado para escrever as próprias ferramentas.
- O compilador
fc(analisador com dezenas de milhares de linhas, geração de código, ligação). - O RAD.
- O FSetup, um gerador de instaladores no estilo do InnoSetup.
- O PE Explorer, um visualizador de arquivos executáveis (PE, ELF, Mach-O, WebAssembly, .NET…).
- Um visualizador de PDF com motor próprio (análise, fontes, rasterização).