Fenner
Começando

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:

RTLOndePara que serve
A do compiladorCompiler\rtlMínima: System, SysInit, classes, TTask, Meta. É a que o fc acha sozinho e a que a suíte de testes do compilador usa.
BedRockCommon\BedRock\rtlCompleta: 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 fc no 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).

Veja Projetos escritos em Fenner.