Fenner
Começando

Introdução

O que é Fenner, para que serve e como as peças — linguagem, compilador, biblioteca e RAD — se encaixam.

Fenner é uma linguagem da família Object Pascal — a sintaxe que o Delphi tornou popular — compilada para código nativo através do LLVM. Ela vem com um compilador (fc), uma biblioteca-padrão escrita na própria linguagem, uma biblioteca de componentes visuais para Windows e um ambiente de desenvolvimento rápido, o RAD, no espírito do Delphi.

hello.fxp
program Hello;

begin
  WriteLn('Olá, mundo!');
end.
Saída
Olá, mundo!

Quem conhece Pascal lê esse programa sem esforço. O que muda está nos detalhes, e a maior parte deles foi pensada para que o compilador recuse cedo o que costuma virar defeito tarde.

Em poucas linhas#

  • Nativa e autocontida. O compilador gera um .exe (ou uma .dll) com o LLVM, liga em processo e não depende de máquina virtual. O próprio compilador é escrito em Fenner.
  • Sensível a maiúsculas. Nome e nome são identificadores diferentes, e cada palavra reservada tem uma única grafia (begin, mas Exit, Break, True).
  • Tipos que dizem a largura. Int32, UInt8, Int256, Float64, Currency64. Não existe Integer: o nome antigo é um erro que aponta o novo.
  • Quatro cadeias de texto. LString (bytes), U8String (UTF-8), UString (UTF-16) e WString (BSTR, para COM). A codificação faz parte do tipo.
  • Dinheiro e números enormes de verdade. A família Currency é ponto fixo exato, e os inteiros vão até 4096 bits com aritmética nativa.
  • Objetos com contagem de referências, weak, ligações dono/filho (Ref) e listas intrusivas (ChainRoot) como formas da linguagem.
  • O valor que pode não existir é um tipo: ?Int32, com ??, ?. e !.
  • Recursos modernos sobre a base Pascal: genéricos com restrições, lambdas com captura, async/await, helpers, variáveis declaradas no meio do bloco.
  • Compilação programável: {$if} sobre tipos, macros, late modules e meta modules que enxergam o programa compilado e acrescentam código.

As peças#

PeçaO que é
fcO compilador: do .fxp ao .exe/.dll. Veja a linha de comando.
RTLA biblioteca-padrão, em Fenner. Existem duas: a mínima, que acompanha o compilador, e a BedRock, completa. Veja a visão geral da biblioteca.
WCLBiblioteca de componentes visuais para Windows (formulários, botões, grades, árvores, editor de código). Veja WCL.
RADO designer de formulários e editor de código, escrito em Fenner sobre a WCL. Veja o guia do RAD.
FennerScriptMotor de scripts embutível, para o usuário do seu programa escrever scripts. Veja FennerScript.
Extensão do VS CodeRealce, trechos e leitura dos erros do compilador. Veja VS Code.

Para quem é#

Para quem já conhece Delphi ou Pascal e quer um compilador nativo moderno, e para quem escreve aplicativos de janelas e serviços para Windows e quer uma linguagem com cadeias, dinheiro e banco de dados bem resolvidos. Se você vem do Delphi, a página Diferenças do Delphi reúne o que muda.

Participe da comunidade#

Entre no grupo do WhatsApp para tirar dúvidas, contar o que você está construindo e acompanhar as novidades da linguagem, do compilador e do RAD.

Apoie o projeto#

A Fenner é desenvolvida de forma independente. Veja como apoiar o projeto: financiamento recorrente no Apoia.se ou doação avulsa via PIX.

Por onde continuar#

  1. Primeiro programa: compile e rode seu primeiro .fxp.
  2. Projetos e arquivos: as extensões, e como um programa se divide em módulos.
  3. A linguagem: a referência da sintaxe, página a página.
  4. O RAD: se você prefere desenhar formulários.