Pascal grátis - Free Pascal

Pascal grátis
FPC 3.1.1 command-line options.png
FPC 3.1.1 no Windows
Desenvolvedor (s) Florian Klämpfl e voluntários
lançamento inicial 1997 ; 24 anos atrás ( 1997 )
Versão estável
3.2.2 / 20 de maio de 2021 ; 3 meses atrás ( 2021-05-20 )
Versão de visualização
3.3.1
Repositório Edite isso no Wikidata
Escrito em Object Pascal
Sistema operacional Plataforma cruzada , incorporado
Modelo Compilador , sistema operacional integrado
Licença GNU General Public License para o compilador e executáveis ​​de utilitários. GNU General Public License com exceção de link estático para o tempo de execução, pacote, componente e outras bibliotecas que se tornam parte dos executáveis ​​criados com o compilador
Local na rede Internet www .freepascal .org

Free Pascal Compiler ( FPC ) é um compilador para os dialetos de linguagem de programação intimamente relacionados Pascal e Object Pascal . É um software gratuito lançado sob a GNU General Public License , com cláusulas de exceção que permitem links estáticos em suas bibliotecas e pacotes em tempo de execução para qualquer propósito em combinação com qualquer outra licença de software.

Ele suporta seu próprio dialeto Pascal de objeto, bem como os dialetos de vários outros compiladores da família Pascal até certo ponto, incluindo aqueles de Borland Pascal (denominado "Turbo Pascal" até 1990 v6), Borland (posteriormente Embarcadero) Delphi e alguns compiladores históricos do Macintosh . O dialeto é selecionado por unidade (módulo) e mais de um dialeto pode ser usado por programa.

Ele segue uma filosofia de escrever uma vez, compilar em qualquer lugar e está disponível para muitas arquiteturas de CPU e sistemas operacionais (consulte Alvos ). Ele suporta a linguagem assembly inline e inclui um assembler interno capaz de analisar vários dialetos, como AT&T e estilo Intel.

Existem projetos separados para facilitar o desenvolvimento de aplicações de interface gráfica com o usuário (GUI) multiplataforma , sendo o mais proeminente o ambiente de desenvolvimento integrado (IDE) Lazarus .

Dialetos suportados

Inicialmente, o Free Pascal adotou o dialeto padrão de fato dos programadores Pascal, Borland Pascal, mas depois adotou o Object Pascal do Delphi. A partir da versão 2.0, a compatibilidade Delphi tem sido continuamente implementada ou melhorada.

O projeto tem um conceito de modo de compilação e os desenvolvedores deixaram claro que incorporariam patches de trabalho para os dialetos padronizados do American National Standards Institute (ANSI) e da International Organization for Standardization (ISO) para criar um modo de conformidade com os padrões.

Um pequeno esforço foi feito para oferecer suporte a parte da sintaxe do Apple Pascal para facilitar a interface com o Mac OS clássico e o macOS . O dialeto da Apple implementa alguns recursos padrão do Pascal que o Turbo Pascal e o Delphi omitem.

O 2.2. A série de lançamentos x não alterou significativamente os objetivos do dialeto além da sintaxe de nível do Delphi 7, em vez disso, objetivando compatibilidade mais próxima. Uma exceção notável a isso foi a adição de suporte para genéricos ao Free Pascal na versão 2.2.0, vários anos antes de serem suportados em qualquer capacidade pelo Delphi.

Em 2011, vários recursos específicos do Delphi 2006 foram adicionados ao ramo de desenvolvimento e parte do trabalho inicial para os novos recursos do Delphi 2009 (mais notavelmente a adição do UnicodeStringtipo) foi concluído. O ramo de desenvolvimento também tem uma extensão Objective-Pascal para interface Objective-C ( Cocoa ).

A partir da versão 2.7.1, Free Pascal implementado modo básico ISO Pascal, embora muitas coisas, como o Gete Putprocedimentos, e o conceito variável de arquivo-tampão para a manipulação de arquivos ainda estavam ausentes.

A partir da versão 3.0.0, o modo ISO Pascal está bastante completo. Ele foi capaz de compilar o compilador P5 ISO Pascal de standardpascal.org sem alterações.

História

Primeiros anos

O Free Pascal foi criado quando a Borland esclareceu que o desenvolvimento do Borland Pascal para DOS pararia com a versão 7, para ser substituído por um produto somente para Windows , que mais tarde se tornou o Delphi.

O aluno Florian Paul Klämpfl começou a desenvolver seu próprio compilador escrito no dialeto Turbo Pascal e produziu o código de 32 bits para o extensor GO32v1 DOS , que foi usado e desenvolvido pelo projeto GNU Programming Platform ( DJGPP ) do DJ na época.

Originalmente, o compilador era um executável DOS de 16 bits compilado por Turbo Pascal . Após dois anos, o compilador foi capaz de compilar a si mesmo e se tornou um executável de 32 bits.

Expansão

O compilador inicial de 32 bits foi publicado na Internet e os primeiros colaboradores se juntaram ao projeto. Mais tarde, um porte Linux foi criado por Michael van Canneyt, cinco anos antes do compilador Borland Kylix Pascal para Linux se tornar disponível.

A porta DOS foi adaptada para uso no OS / 2 usando o Eberhard Mattes eXtender (EMX), o que fez do OS / 2 o segundo destino de compilação suportado. Assim como Florian Klämpfl, o autor original, Daniël Mantione também contribuiu significativamente para que isso acontecesse, fornecendo a porta original da biblioteca de tempo de execução para OS / 2 e EMX. O compilador melhorou gradualmente e a versão DOS migrou para o extensor GO32v2. Isso culminou na versão 0.99.5, que foi muito mais amplamente usada do que as versões anteriores, e foi a última versão voltada apenas para conformidade com o Borland Pascal; versões posteriores adicionaram um modo de compatibilidade Delphi. Esta versão também foi portada para sistemas que usam processadores da família Motorola 68000 (m68k).

Com a versão 0.99.8, o destino Win32 foi adicionado e um início foi feito com a incorporação de alguns recursos do Delphi. A estabilização para uma versão não beta começou e a versão 1.0 foi lançada em julho de 2000. A versão 1.0. A série x foi amplamente utilizada nos negócios e na educação. Para o 1.0. x lançamentos, a porta para 68k CPU foi refeita, e o compilador produziu código estável para vários sistemas operacionais 68k do tipo Unix e AmigaOS .

Versão 2

Durante a estabilização do que se tornaria 1.0. x , e também ao portar para os sistemas Motorola 68k, estava claro que o design do gerador de código era muito limitado em muitos aspectos. Os principais problemas eram que adicionar processadores significava reescrever o gerador de código e que a alocação de registro era baseada no princípio de sempre manter três registros livres entre blocos de construção, o que era inflexível e difícil de manter.

Por essas razões, o 1.1. A série x se ramificou a partir de 1.0. x ramo principal em dezembro de 1999. No início, as mudanças eram principalmente limpezas e reescrita-redesenhos em todas as partes do compilador. O gerador de código e o alocador de registro também foram reescritos. Qualquer compatibilidade Delphi restante ausente foi adicionado.

O trabalho em 1.1.x continuou lenta, mas firmemente. No final de 2003, uma porta PowerPC funcional tornou-se disponível, seguida por uma porta ARM no verão de 2004, uma porta SPARC no outono de 2004 e uma porta x86-64 -AMD64 no início de 2004, que disponibilizou o compilador para uma plataforma de 64 bits .

Em novembro de 2003, uma primeira versão beta do 1.1. x filial foi empacotada e numerada 1.9.0. Estas foram rapidamente seguidas pelas versões 1.9.2 e 1.9.4; o último introduziu o suporte OS X. O trabalho continuou com a versão 1.9.6 (janeiro de 2005), 1.9.8 (final de fevereiro de 2005), 2.0.0 (maio de 2005), 2.0.2 (dezembro de 2005) e 2.0.4 (agosto de 2006).

Versão 2.2.x

Em 2006, alguns dos grandes retrabalhos planejados para o 2.2, como a reescrita do sistema de unidades, ainda não haviam sido iniciados, e foi decidido iniciar a estabilização dos recursos já implementados.

Alguns dos motivos para essa mudança no roadmap foram as necessidades do projeto de ambiente de desenvolvimento integrado Lazarus, particularmente o linker interno, suporte para Win64 , Windows CE e OS X em x86 , e recursos relacionados como DWARF . Após os betas 2.1.2 e 2.1.4, a versão 2.2.0 foi lançada em setembro de 2007, seguida pela versão 2.2.2 em agosto de 2008 e a versão 2.2.4 em março de 2009.

O 2.2. A série x melhorou amplamente o suporte para a interface ActiveX e Component Object Model (COM) , e Object Linking and Embedding (OLE), embora bugs ainda estivessem sendo encontrados. A delegação para interface usando a palavra - chave foi parcialmente implementada, mas não foi concluída em março de 2011. O suporte da biblioteca para ActiveX também foi aprimorado. implements

Outro recurso importante foi o vinculador interno para Win32, Win64 e Windows CE, que melhorou muito o tempo de vinculação e o uso de memória, e tornou o ciclo de compilação-link-execução no Lazarus muito mais rápido. A eficiência para smart-linking, ou eliminação de código morto , também foi melhorada.

Os novos recursos incluem suporte aprimorado para formato de depuração DWARF (2/3) e otimizações como recursão final , omissão de frames de pilha desnecessários e otimização de eliminação de subexpressão comum (CSE) baseada em registro . Uma primeira implementação de suporte de programação genérica (genéricos) também se tornou disponível, mas apenas experimentalmente.

Versão 2.4.x

A série de lançamento 2.4.x tinha um conjunto de objetivos menos claro do que as versões anteriores. A reescrita do sistema de unidades foi adiada novamente, e o branch que se tornou 2.4 foi criado para manter os commits arriscados do 2.2 para estabilizá-lo. Na maioria das vezes, esses commits arriscados eram aprimoramentos mais envolvidos para as novas plataformas, Mac PowerPC 64, Mac x86-64, iPhone e muitas correções para as arquiteturas ARM e x86-64 em geral, bem como DWARF.

Outras melhorias do compilador incluíram a otimização de todo o programa (WPO) e desvirtualização e suporte a interface binária de aplicativo embutido ARM (EABI).

Posteriormente, durante o ciclo 2.2, um suporte de recursos mais parecido com Delphi (baseado em seções especiais no binário em vez de constantes Pascal) foi adicionado. Esse recurso, extremamente necessário para Lázaro, tornou-se o principal destaque do ramo.

Outras adições menores foram um gerenciador de memória que melhorou o desempenho do gerenciador de heap em ambientes encadeados , pequenas melhorias na compatibilidade do Delphi, como OleVariant, e melhorias na delegação de interface .

Em 1 de Janeiro de 2010, Free Pascal 2.4.0 foi lançado, seguido em 13 de novembro de 2010, pela versão de correção 2.4.2, com suporte para for..inloops, sealede abstractaulas, e outras mudanças.

Versão 2.6.x

Em janeiro de 2012, Free Pascal 2.6 foi lançado. Esta primeira versão da série de lançamento 2.6 também oferece suporte a Objective Pascal em destinos OS X e iOS e implementa muitas pequenas melhorias e correções de bugs. Em fevereiro de 2013, o FPC 2.6.2 foi lançado. Ele continha versões do NetBSD e do OpenBSD pela primeira vez desde 1.0.10, com base em novas portas. Em março de 2014, a última versão pontual da série 2.6, 2.6.4, foi lançada, apresentando principalmente atualizações de banco de dados (fcl-db).

Versão 3.0.x

A versão 3.0.0 foi lançada em 25 de novembro de 2015 e foi o primeiro grande lançamento desde 1º de janeiro de 2012. Ela introduziu muitos novos recursos de linguagem.


A versão 3.0.2 foi lançada em 15 de fevereiro de 2017 e inclui correções de bugs e pequenas atualizações do compilador.
A versão 3.0.4 foi lançada em 28 de novembro de 2017.
Inclui muitas melhorias de linguagem em relação às versões anteriores, incluindo um vinculador interno para Executable and Linkable Format (ELF), Arm AARCH64 para iOS e Linux, uma plataforma i8086 revivida, bibliotecas estendidas e muito mais mais.

Versão 3.2.x

A próxima versão principal, a versão 3.2.0, foi publicada em 19 de junho de 2020. Ela introduziu muitos novos recursos de linguagem, incluindo rotinas genéricas, namespaces padrão, registros gerenciados e funcionalidade expandida para matrizes dinâmicas, além do advento de novas unidades padrão e o suporte de plataformas adicionais.

Alvos

Arquitetura do processador Sistema operacional, dispositivo Versão 3.0.0 - 3.3.1 (tronco) Versão 2.6.2 Versão 2.6.0 Versão 2.4.4 Versão 2.4.2 Versão 2.4.0 Versão 2.2.4 Versão 2.0. x Versão 1.0. x
i386 DOS ( extensor GO32v2 ) sim sim sim sim sim sim sim sim sim
FreeBSD sim sim sim sim sim sim sim sim sim
OpenBSD sim sim Não Não Não Não Não Não sim
NetBSD sim sim Não Não Não Não Não Não sim
Linux sim sim sim sim sim sim sim sim sim
Mac OS sim sim sim sim sim sim sim Não Não
OS / 2 sim sim sim sim sim sim sim sim sim
janelas sim sim sim sim sim sim sim sim sim
Windows CE sim sim sim sim sim sim Não Não Não
BeOS sim sim sim sim sim sim sim sim sim
Haicai sim sim sim sim sim sim Não Não Não
NetWare sim sim sim sim sim sim sim sim Não
Solaris sim sim sim sim sim Não Não Não sim
iPhone Sim sim sim sim Não Não Não Não Não Não
QNX Neutrino Não Não Não Não Não Não Não Não sim
Android sim sim Não Não Não Não Não Não Não
AROS sim Não Não Não Não Não Não Não Não
x86-64 FreeBSD sim sim sim sim sim Não Não Não Não
OpenBSD sim sim Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido
NetBSD sim sim Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido
Linux sim sim sim sim sim sim sim Desconhecido Não
Mac OS sim sim sim sim sim sim Não Não Não
janelas sim sim sim sim sim sim Não Não Não
iPhone Sim sim sim sim Não Não Não Não Não Não
AROS sim sim sim sim sim Não Não Não Não
DragonFly BSD sim sim sim sim sim Não Não Não Não
Solaris sim sim sim sim sim Não Não Não Não
Haicai sim Não Não Não Não Não Não Não Não
BRAÇO iOS sim sim sim sim sim sim Não Não Não
Game Boy Advance sim sim sim sim sim sim Não Não Não
Nintendo DS sim sim sim sim sim sim Não Não Não
Linux sim sim sim sim sim sim sim Desconhecido Não
Windows CE sim sim sim sim sim sim sim Desconhecido Não
Android sim sim Não Não Não Não Não Não Não
Integrado sim sim Não Não Não Não Não Não Não
Rasp-Pi incorporado sim Não Não Não Não Não Não Não Não
AROS sim Não Não Não Não Não Não Não Não
AArch64 Linux sim sim Não Não Não Não Não Não Não
iOS sim sim Não Não Não Não Não Não Não
Android sim Não Não Não Não Não Não Não Não
AVR Integrado sim Não Não Não Não Não Não Não Não
PowerPC Linux sim sim sim sim sim sim sim sim Não
Mac OS sim sim sim sim sim sim sim sim Não
Mac OS clássico sim sim sim sim Não Não sim sim Não
AmigaOS 4 sim sim sim sim Desconhecido Desconhecido Desconhecido sim Não
MorphOS sim sim sim sim Desconhecido Desconhecido Desconhecido sim Não
AIX sim sim sim Não Não Não Não Não Não
Wii sim sim sim sim Não Não Não Não Não
PowerPC 64 bits Linux sim sim sim sim sim sim sim Não Não
Mac OS sim sim sim sim sim sim Não Não Não
AIX sim sim sim Não Não Não Não Não Não
SPARC Solaris sim sim sim sim sim Não Não Não Não
NetBSD sim sim sim sim sim Não Não Não Não
Integrado sim sim sim sim sim Não Não Não Não
Linux sim sim sim sim sim Não Não Não Não
SPARC64 Linux sim sim sim Não Não Não Não Não Não
RISC-V Integrado sim Não Não Não Não Não Não Não Não
RISC-V64 Integrado sim Não Não Não Não Não Não Não Não
Máquina Virtual JAVA Java sim Não Não Não Não Não Não Não Não
Android sim Não Não Não Não Não Não Não Não
MIPS (BE e LE) Linux sim Não Não Não Não Não Não Não Não
Integrado sim Não Não Não Não Não Não Não Não
8086 (16 bits) DOS sim Não Não Não Não Não Não Não Não
Win16 sim Não Não Não Não Não Não Não Não
Integrado sim Não Não Não Não Não Não Não Não
m68k Linux sim Não Não Não Não Não Não Não sim
NetBSD sim Não Não Não Não Não Não Não sim
AmigaOS sim Não Não Não Não Não Não Não sim
Atari TOS sim Não Não Não Não Não Não Não Sim, apenas cross-compilador limitado
Palm OS sim Não Não Não Não Não Não Não Desconhecido

O Free Pascal também oferece suporte à geração de código de byte para Java Virtual Machine a partir da versão 3.0.0 e tem como alvo o Java da Oracle e o Android JVM do Google, embora a sintaxe Object Pascal não seja totalmente suportada. Free Pascal 3.0.0 também suporta plataformas ARMHF como Raspberry Pi, incluindo ARMV6-EABIHF rodando em Raspbian. O trabalho no ARM de 64 bits resultou no suporte para iOS no 3.0.0 também. Um alvo ARM Android nativo foi adicionado, encerrando o alvo ARM Linux anteriormente hackeado para gerar bibliotecas ARM nativas para Android. Isso torna a portabilidade de aplicativos Lazarus para Android (usando a interface personalizada) mais fácil. Desde o FPC 2.6.2, OpenBSD e NetBSD são suportados nas arquiteturas IA32 e X86_64. Um novo alvo incorporado foi adicionado para uso sem sistema operacional (ARM Cortex M e MIPS principalmente). Com o InstantFPC é possível executar programas Pascal, que são traduzidos na hora certa, como scripts Unix ou back-end CGI .

Ultibo core é um ambiente de desenvolvimento de metal puro ou embutido para Raspberry Pi. Ultibo é baseado em Free Pascal e desenvolvido sob uma versão modificada do Lazarus. O IDE é baseado em PC, mas também foi portado para Linux e Mac. Ultibo é um tempo de execução sem sistema operacional e tem suporte para a maioria das funções e permite ao programador controle total sobre o hardware por meio das unidades RTL. O tempo de execução implementa multitarefa preemptiva e multithread. O programador pode colocar threads em uma CPU específica ou deixar o tempo de execução dividir a carga automaticamente ou uma combinação dos dois. A maioria dos modelos Raspberry Pi são compatíveis, incluindo A, B, A + e B +, bem como Raspberry Pi 2B, 3B, 4B / 400 / CM4 e Zero.

Ambientes de desenvolvimento integrados

Como a maioria dos compiladores modernos, o Free Pascal pode ser usado com um ambiente de desenvolvimento integrado (IDE). Além de IDEs independentes, também existem plug-ins para vários IDEs existentes

Pascal IDE grátis no Linux
  • O Free Pascal tem seu próprio IDE em modo texto semelhante ao IDE do Turbo Pascal. É feito usando o framework Free Vision (também incluído no Free Pascal), um clone do Turbo Vision. Além de muitos recursos do Turbo Pascal IDE, ele possui autocompletar de código e suporte para vários formatos de arquivo de ajuda (HTML, Ajuda HTML Compilada da Microsoft (CHM), Information Presentation Facility (IPF). Em vez de usar ferramentas de linha de comando, o IDE usa seu próprio compilador embutido, baseado na mesma fonte do compilador e depurador de linha de comando (usando libgdb ou GDBMI) para fornecer sua funcionalidade.
  • Lazarus é o IDE mais popular usado por programadores de Free Pascal. É semelhante ao IDE Delphi e pode ser usado para criar aplicativos de console e gráficos , serviços do Windows , daemons e aplicativos da web . Lazarus fornece uma estrutura de interface de usuário de plataforma cruzada, chamada Lazarus Component Library (LCL). Os aplicativos gráficos criados com LCL podem ser transferidos para outra plataforma por meio de recompilação ou compilação cruzada .
  • Dev-Pascal é um IDE gratuito somente para Windows para Free Pascal e GNU Pascal , sem nenhum desenvolvimento posterior após a versão 2004 do FPC e a versão 2005 do GPC.

Bibliotecas empacotadas

Além de um compilador e um IDE, Free Pascal fornece as seguintes bibliotecas:

Exemplos de software produzido com Free Pascal

  • Beyond Compare é um utilitário de comparação de dados para Windows, OS X e Linux. As versões Linux e OS X são compiladas com Lazarus / FPC.
  • Cartes du Ciel é um programa de planetário gratuito para Linux, OS X e Windows. Ele mapeia e rotula a maioria das constelações, planetas e objetos visíveis pelo telescópio. Foi totalmente escrito em Lazarus / FPC e lançado sob GPL.
  • Cheat Engine é um scanner de memória de código aberto, editor hexadecimal e depurador. Ele pode ser usado para trapacear em jogos de computador. Desde a versão 6.0 é compilado com Lazarus / FPC.
  • Programas de plotagem de dados D_2D e D_3D .
  • Double Commander é um gerenciador de arquivos ortodoxo de dois painéis e multiplataforma de código aberto inspirado no Total Commander somente para Microsoft Windows.
  • O Pascal livre é escrito em Object Pascal e linguagem assembly, e é auto-compilado.
  • HNSKY , Hallo Northern Sky é um programa de planetário gratuito para Windows e Linux. Desde a versão 3.4.0 escrita e compilada com Lazarus / FPC.
  • Lazarus : Pacote de software gratuito semelhante ao Delphi, afiliado a Pascal, para desenvolvimento rápido de aplicativos gráficos.
  • MeKin2D : pacote para cinemática de articulação planar, came e mecanismo de engrenagem.
  • Morfik : Morfik WebOS AppBuilder usa Free Pascal para produzir binários CGI.
  • MyNotex é um software livre para fazer anotações e gerenciador de notas para Linux.
  • As primeiras versões do compilador Nim foram desenvolvidas em Free Pascal, antes de se tornar auto-hospedado em Nim.
  • Peazip é um arquivador de código aberto, feito com Lazarus / FPC.
  • TorChat , anteriormente escrito em Python, agora está sendo reescrito em Free Pascal e Lazarus.

Veja também

  • fpGUI Free Pascal GUI toolkit - um kit de ferramentas de plataforma cruzada e personalizado implementado em Object Pascal

Referências

links externos

Sites oficiais

Introdução geral

Sites especializados em desenvolvimento de jogos