Free Pascal

Niente fonti!
Questa voce o sezione sull'argomento Software non cita le fonti necessarie o quelle presenti sono insufficienti.
Free Pascal Compiler
software
Logo
Logo
Free Pascal eseguito tramite riga di comando
Free Pascal eseguito tramite riga di comando
Free Pascal eseguito tramite riga di comando
GenereCompilatore
SviluppatoreThe Free Pascal Compiler team
Data prima versione1997
Ultima versione3.2.2 (20 maggio 2021)
Sistema operativoMultipiattaforma
LinguaggioPascal
linguaggio assembly
Object Pascal
LicenzaGPL
(licenza libera)
Sito webwww.freepascal.org/
Modifica dati su Wikidata · Manuale

Free Pascal (chiamato anche FPK Pascal od ancora FPC Pascal) è un compilatore Pascal multipiattaforma. È un software libero.

Introduzione

Free Pascal è un compilatore multipiattaforma per processori a 32/64 bits. Il compilatore implementa il linguaggio Pascal della Borland: Turbo Pascal e Delphi (Object Pascal). Inoltre possiede alcune caratteristiche tipiche del MacPascal ed è disponibile per i più comuni sistemi operativi.

Free Pascal era conosciuto con il nome di FPK Pascal, poiché le lettere FPK erano le iniziali del suo autore, Florian Paul Klämpfl. FPK non ha mai significato "Free Pascal Kompiler" anche se molte persone pensavano ciò. Inoltre, scrivere "Compiler" con la "K" non è molto comune in Tedesco. Alla fine del 1997, il nome del progetto fu cambiato in Free Pascal Compiler (FPC) per evitare confusioni e perché sempre più persone stavano contribuendo al progetto.

FPC è un progetto ragionevolmente ben documentato, con manuali per un totale di 1800 pagine. Le parti visuali delle librerie di Delphi (la VCL) e la creazione d'un IDE e di un RAD visuali fanno parte di un progetto separato, Lazarus.

Free Pascal è distribuito con un IDE in modalità testuale somigliante a quello del Turbo Pascal. Questo IDE si è deteriorato per un certo periodo di tempo per la mancanza di un manutentore, ma con uno sforzo comune tra la seconda metà del 2005 e i primi mesi del 2006, la maggior parte dei bug maggiori sono stati risolti e l'IDE è tornato di nuovo ad essere pronto per le release.

Come il Turbo Pascal e Delphi, Free Pascal ha un eccellente supporto per l'integrazione del linguaggio Assembly all'interno del codice Pascal. FPC supporta perfino architetture e notazioni multiple nell'assembler interno.

Free Pascal è stato eletto 'progetto del mese' nel dicembre 2018 su SourceForge.

Dialetto del linguaggio

Necessita di un aggiornamento
FPC adottava il dialetto standard dei programmatori Pascal: quello Borland (nello specifico: Borland Pascal 7 e Delphi 2 nella versione 1.0.x; nella versione 2.0.x si è avuto il passaggio a Delphi 6/7 per compatibilità).

Comunque sia, il progetto utilizza il concetto di modalità di compilazione e il team ha chiarito che è disponibile ad incorporare delle patch per i dialetti standardizzati ANSI/ISO per creare una modalità di compilazione conforme agli standard.

Inoltre è stato fatto un piccolo sforzo per supportare una parte della sintassi del Pascal Apple per facilitare l'interfacciamento con il Mac OS (X). Poiché il dialetto Apple implementa alcune caratteristiche del Pascal Standard che mancano in TP/Delphi, FPC è leggermente più compatibile con gli standard ISO rispetto a questi ultimi, con ulteriori caratteristiche supportate in arrivo.

Funzionalità di Delphi mancanti

Nonostante goda di una buona compatibilità, ci sono alcune funzionalità di Delphi non supportate da Free Pascal:

  • Delegazione tramite l'utilizzo della parola chiave "implements" (2.0.x, corretta in 2.1+);
  • Automatic COM IDispatch dual interfaces (dispinterfaces);
  • dispid in normal interfaces (2.0.x, corretta in 2.1+);
  • packages: supporto nel compilatore di importazione/esportazione di classi da/verso librerie condivise (utile, per esempio, per Lazarus, che implementa package di componenti);
  • set types possono avere dimensioni differenti. (2.0.x, corretta in 2.1+);

Storia

Primi anni

quando Borland annunciò che non ci sarebbe stato nessun Borland Pascal 8 e le successive versioni sarebbero state solo per Windows (che sarebbe divenuto Delphi in seguito), uno studente (Florian Paul Klämpfl) iniziò a lavorare sul suo compilatore. Il compilatore inizialmente era scritto nel dialetto (Borland) Turbo Pascal e produceva codice a 32-Bit per il DOS extender go32v1, utilizzato e sviluppato dal progetto DJGPP. Originariamente lo stesso compilatore era un eseguibile DOS a 16-bit compilato con il Turbo Pascal. Dopo due anni, il compilatore fu capace di compilarsi e diventò anche a 32-bit.

Espansione

L'iniziale compilatore a 32-bit fu pubblicato in rete e i primi contributori si unirono al progetto. Negli anni successivi alla pubblicazione in Internet, il compilatore venne portato verso Linux da Michael van Canneyt (5 anni prima di Kylix) e la versione per DOS venne adattata per l'utilizzo in OS/2 tramite l'EMX extender. Anche la versione per DOS venne migliorata gradualmente e migrata verso l'extender go32v2. Questo processo culminò nella release 0.99.5 che fu molto più utilizzata delle versioni precedenti, e che fu l'ultima release mirata soltanto alla conformità con il Turbo Pascal: le release successive aggiungeranno anche una modalità compatibile con Delphi. La release 0.99.5 fu anche portata verso i sistemi dotati di CPU 680x0.

Con la 0.99.8 venne aggiunto il target Wii32 e si cominciò ad aggiungere alcune caratteristiche di Delphi no. La pietra miliare della release 1.0 stabile fu raggiunta nel luglio 2000. La serie 1.0.x (e le release con bug-fix/stabilizzazioni che seguirono, l'ultima, la 1.0.10, nel luglio 2003) fu usata largamente, sia a fini commerciali che educativi. Per le release 1.0.x venne rifatto il porting verso le CPU 680x0 e il compilatore fu in grado di produrre codice stabile per i sistemi Unix dotati di CPU 68k e per l'AmigOS.

La generazione successiva

Durante il processo di stabilizzazione di quella che sarebbe diventata la release 1.0.x, in particolar modo durante il porting verso i sistemi m68k, risultò chiaro che il design del generatore di codice era troppo limitato sotto diversi aspetti. I problemi principali riguardavano l'aggiunta di un nuovo processore, che significava fondamentalmente riscrivere il generatore di codice, e l'allocazione del registro, che si basava sul principio di mantenere sempre 3 registri liberi tra i building blocks, cosa poco flessibile e difficile da mantenere.

Per questi motivi, nel dicembre 1999 venne ramificato il ramo FPC 1.1.x dal ramo principale 1.0.x. All'inizio, i cambiamenti riguardarono principalmente la pulizia e la riscrittura di tutte le parti del compilatore; vennero quindi riscritti il generatore di codice e l'allocatore del register. Come bonus vennero aggiunte le caratteristiche che mancavano alla compatibilità con Delphi.

Il lavoro sul 1.1.x continuò lentamente ma costantemente, e verso la fine del 2003 cominciò a funzionare il porting per PowerPC, seguito da quello per ARM e SPARC verso l'estate/inverno del 2004 a cui seguì il porting per AMD64. Il porting per AMD64 rese il compilatore per 32/64-bit.

Nel novembre 2003, una prima release beta del ramo 1.1.x venne distribuita e, per l'occasione, il numero di versione venne modificato in 1.9.0. Seguirono rapidamente la 1.9.2 e la 1.9.4. La versione 1.9.4 risultò speciale perché fu la prima con il supporto per Mac OS X.

Il lavoro continuò con la versione 1.9.6 (gennaio 2005), 1.9.8 (fine febbraio 2005), 2.0.0 (maggio 2005), 2.0.2 (dicembre 2005), 2.0.4 (agosto 2006) e 2.2.0 (settembre 2007).

Sviluppi successivi

Le seguenti caratteristiche mancano nella versione 2.0.x e sono richieste. Quelle segnate con † sono attualmente in lavorazione nel ramo 2.1.x/2.3.1.

  • Creare/migliorare il supporto per COM/OLE. Questo compito ha diverse sfaccettature:
    • Interfacce/vmt compatibili con COM
    • (OLE)Variants (richiesto per OLE)
    • † delegazione tramite implements
  • Linking/debug/formato di file:
    • † Migliorare lo smart linking (eliminare i file .a, minor uso di memoria), al momento solo per wince/32/64.
    • Migliorare i "package" e in generale il supporto per le librerie dinamiche (PIC!).
    • † Migliorare il cross linking.
    • † Stabs->dwarf crossover. (da implementare prima le piattaforme a 64-bit)
    • Creare una sorta di compatibilità per le risorse di Kylix. (Ancora in discussione)
  • Apple Pascal:
    • Possibilità di passare una sotto procedura ad una differente procedura come procvar.
    • Bitpacking dei record
  • Ottimizzazione:
    • Tail recursion
    • Stackframe omission
    • Ottimizzazione CSE basata su temp (register)

Alcune di queste caratteristiche, in particolar modo quelle nella sezione relativa al linking, possono richiedere alcune modifiche:

  • † Introduzione di un linker interno per alcune piattaforme. (rimozione del linker esterno, LD) (da implementare solo per wince/32/64)
  • Riscrittura della gestione dei moduli (unit), rimandato a dopo la versione 2.2

Target

La disponibilità del compilatore FPC dipende dalle versioni maggiori.

Versione 3.2.2 (stabile corrente)

Sezione vuotaQuesta sezione sull'argomento informatica è ancora vuota. Aiutaci a scriverla!

Versione 2.4.x

In questa versione sono state aggiunte ed ultimate diverse piattaforme:

  • Migliorato il target macOS 64-bit (x86_64/ppc64)
  • iPhone (Mac OS X/Arm)
  • Haiku (dalla famiglia BeOS)
  • Migliorato il supporto ad ARM EABI

Versione 2.3.x

Oltre a tutti i target supportati dalla versione 2.2, questa versione supporta:

  • Symbian OS - con il toolkit UIQ
  • Mac OS X 64-bit (Darwin/x86_64)

Versione 2.2.x

La versione stabile corrente 2.2.0 aggiunge il supporto per:

Versione 2.0.x

Processore:

Sistemi operativi:

Versione 1.0.x

La precedente versione stabile 1.0.x era disponibile per Processore

e supportava i seguenti sistemi operativi

e le piattaforme beta:

  • BeOS, beta
  • Una versione beta per OpenBSD/x86 è esistita per un determinato periodo.
  • SunOS, Solaris
  • QNX
  • Windows CE

Software applicativi prodotti con Free Pascal

  • Pixel image editor Archiviato il 28 settembre 2007 in Internet Archive.: Editor di immagini simile a Photoshop
  • Peazip: Programma di archiviazione a sorgente aperto, prodotto con Lazarus/FPC
  • Morfik: Morfik WebOS AppBuilder utilizza Free Pascal per produrre binari CGI

Voci correlate

  • Lazarus (software)
  • Pascal (linguaggio di programmazione)

Altri progetti

Altri progetti

  • Wikibooks
  • Wikimedia Commons
  • Collabora a Wikibooks Wikibooks contiene testi o manuali su Pascal
  • Collabora a Wikimedia Commons Wikimedia Commons contiene immagini o altri file su Free Pascal

Collegamenti esterni

Note generali
  • Introduzione al Free Pascal 2.0, di Daniël Mantione, con una introduzione approfondita alla nuova versione e un breve escursus della storia del suo sviluppo.
  • Iniziare con FPC.
Siti web ufficiali
  • Free Pascal, su freepascal.org.
  • Lazarus, RAD per FPC, su lazarus.freepascal.org.
  • FPC sul Mac—Pagina dello stato del compilatore FPC per il Mac OS Classic. (Il port verso Mac OS X è curato dalla squadra Unix di FPC)
  • Community italiana di Lazarus, su lazaruspascal.it.
Tool di sviluppo
  • FPS un completo IDE Win32 per FPC, comprensivo di debugger (trace, breakpoint e finestre di watch)
  • DevPascal IDE Win32 per FPC.
  • FPCShell un altro IDE Win32 per FPC.
  • MSEide+MSEgui un sistema di sviluppo GUI RAD/multipiattaforma per FPC
  • CrossFPC un toolkit libero per integrare il compilatore Free Pascal, capace di produrre eseguibili per svariati sistemi operativi e per diverse piattaforme, nell'IDE Borland Delphi. Altre informazioni sul progetto su questa discussione nella mailing list Archiviato il 22 agosto 2007 in Internet Archive..
Siti specializzati nello sviluppo di videogiochi
  • Pascal Game Development.
  • FPC 4 GBA Initiative Sito di supporto al progetto per il porting del Free Pascal su piattaforma GameBoy Advance
  • Francesco's knick-knacks Sito del progetto per il porting del compilatore Free Pascal e relative librerie su piattaforma Nintendo (GameBoy Advance e Nintendo DS)
Freeware
Retail
Fuori produzione
Java
Open source
Freeware
Retail
  • JCreator
  • MyEclipse
  • IBM
    • Rational Application Developer
    • WebSphere Integration Developer
  • JetBrains IntelliJ IDEA
  • Servoy Business Application Platform Edition
  • Understand
Fuori produzione
CLI
Open source
Freeware
Retail
Fuori produzione
  • Xamarin Studio
  • Suite Microsoft Visual Studio Express
PHPPython
Pascal e Object Pascal
Open source
  • Free Pascal IDE
  • Lazarus
  • Dev-Pascal
  • GNAVI
Freeware
Retail
Fuori produzione
BASIC
Open source
Freeware
Retail
Fuori produzione
Categoria
Controllo di autoritàGND (DE) 7659226-1
  Portale Software libero: accedi alle voci di Wikipedia che trattano di software libero