Free Pascal
El Free Pascal es un compilador Pascal portable, libre y de código abierto, que representa una alternativa a los productos comerciales Turbo Pascal y Delphi.

Introducción 

Free Pascal es un compilador tanto de 32 como de 64 bits para múltiples arquitecturas de CPU y múltiples sistemas operativos. El compilador implementa los dialectos de Pascal de Borland Turbo Pascal y Delphi, además de algunas construcciones de MacPascal. Está disponible para la mayoría de los sistemas operativos populares.

Free Pascal se conocía inicialmente como FPK Pascal. Debido a que FPK son las iniciales del autor, Florian Paul Klämpfl, el FPK Pascal nunca significó "Free Pascal Kompiler", aunque mucha gente pensaba eso; de todos modos, escribir el "Compilador" con "K" es infrecuente en Alemania. A finales de 1997, el nombre del proyecto fue cambiado a Free Pascal Compiler (FPC) (Compilador Free Pascal) para evitar esta confusión y por la cantidad cada vez mayor de gente que contribuía.

FPC es un proyecto razonablemente bien documentado, con manuales que alcanzan las 1800 páginas en total.

Las partes visuales de las bibliotecas de Delphi (el VCL) y la creación de un IDE y un RAD visuales son parte de un proyecto separado, denominado Lazarus.

La distribución de Free Pascal incluye un IDE en modo de texto semejante al de Turbo Pascal. Aunque este IDE se estuvo deteriorando por algún tiempo debido a una falta de mantenimiento, en un esfuerzo común la mayoría de los bugs fueron corregidos, así que ahora está en una muy buena forma.

De manera similar a Turbo Pascal y Delphi, Free Pascal tiene excelente soporte para la integración del lenguaje ensamblador en el código Pascal. Además, soporta múltiples arquitecturas y notaciones.

Dialecto del lenguaje 

El FPC adoptó los dialectos estándar de facto de los programadores Pascal, los dialectos de Borland, específicamente Borland Pascal 7 y Delphi 2 para la versión 1.0.x del FPC, y Delphi 6/7 para la versión 2.0.x del FPC.

Sin embargo el proyecto tiene un concepto de "modo de compilación", y el equipo hizo claro que incorporaría los parches para los dialectos estandarizados ANSI/ISO para crear un modo conforme con el estándar.

También, se ha hecho un pequeño esfuerzo de soportar algo de la sintaxis del Apple Pascal, para la fácil interconexión con el Mac OS (X).

Funcionalidad de Delphi faltante en Free Pascal:
 Delegación usando la palabra clave "implements"
 Interfaces duales COM IDispatch automáticas (dispinterfaces)
 dispid en interfaces normales
 Paquetes:el compilador soporta importación y exportación de clases desde y hacia librerías compartidas (útil, por ejemplo, para Lazarus, el cual implementa el empaquetado de componentes)
 set types pueden tener diferentes tamaños

Historia

Primeros años 

Free Pascal emergió cuando Borland dejó claro que no habría un Borland Pascal 8, y que la versión siguiente sería un producto solamente para Windows (que posteriormente resultó convertirse en Delphi). Un estudiante, Florian Paul Klämpfl, comenzó a trabajar en su propio compilador. El compilador fue escrito desde el principio en el dialecto de Turbo Pascal de Borland y producía código de 32 bits para el DOS extender go32v1, desarrollado en ese tiempo por el proyecto DJGPP. Originalmente el compilador en sí mismo era un ejecutable DOS de 16 bits compilado por Turbo Pascal. Después de dos años, el compilador podía compilarse a sí mismo, así que también llegó a ser de 32 bits.

Expansión 

El compilador inicial de 32 bits fue publicado en la red, y los primeros contribuidores se unieron el proyecto. En los años siguientes a publicarse en Internet, Michael van Canneyt hizo un traslado al Linux, 5 años completos antes de Kylix. El traslado al DOS fue adaptado para el uso en el OS/2 a través del EMX extender. La versión del DOS también mejoró gradualmente, y emigró al go32v2 extender. Esto culminó en el lanzamiento de la versión 0.99.5 que fue usada mucho más extensamente que las versiones anteriores, y el último lanzamiento que apuntaba solamente a la conformidad con el Turbo Pascal. Lanzamientos posteriores agregarían un modo de compatibilidad con Delphi. El 0.99.5 también fue trasladado a sistemas que usaban los CPU de la serie 680x0.

En la versión 0.99.8, fue agregado como destino la compilación para el Win32, y se inició la incorporación de algunas características de Delphi. Fue iniciada la estabilización para el lanzamiento de la versión 1.0, y este hito fue alcanzado en julio de 2000. La serie 1.0.x, y los lanzamientos para estabilización y corrección de errores que siguieron hasta la versión 1.0.10 en julio de 2003 fueron ampliamente usadas como una herramienta tanto empresarial como educativa. Para los lanzamientos de esta serie, el traslado a los CPUs 680x0 fue hecho de nuevo, con lo cual el compilador pudo producir código estable para un número de computadores con procesadores 68k, como sistemas UNIX y AmigaOS.

La siguiente generación 

Durante la estabilización de lo que se convirtió en la versión 1.0.x, y especialmente cuando se transportaba a los sistemas m68k, estaba claro que el diseño del generador de código estaba muy limitado de muchas maneras. Los dos problemas más importantes eran que (1) agregar procesadores significaba básicamente que había que reescribir el generador de código, y (2) la asignación de registros estaba basada en un principio que era difícil de mantener e inflexible, obligando a tener 3 registros entre los bloques de construcción.

Por estas razones, FPC 1.1.x se separó de la rama principal del 1.0.x, en diciembre de 1999. Al principio, los cambios eran sobre todo limpieza, reescritura de código, en todas las partes del compilador; entonces se reescribieron el generador de código y la asignación de registros. Como un bono, se agregó la compatibilidad que faltaba con Delphi.

El trabajo sobre 1.1.x continuó lentamente pero con constancia, y a finales de 2003 el traslado al PowerPC comenzó trabajar, seguido por los traslados al ARM y al Sparc en el verano y otoño de 2004. Continuó luego el traslado al AMD64 a principios de 2004. Este último efectivamente convirtió al compilador en uno de 32 y 64 bits.

En noviembre de 2003, un primer lanzamiento beta de la rama del 1.1.x fue empaquetado, y para la ocasión, el número de versión fue subido a 1.9.0. Estos fueron seguidos rápidamente por 1.9.2 y 1.9.4. La versión 1.9.4 fue especial porque fue la primera versión con soporte para Mac OS X.

El trabajo continuó con la versión 1.9.6 en enero de 2005, 1.9.8 a finales de febrero de 2005, 2.0.0 en mayo de 2005, 2.0.2 en diciembre de 2005 y 2.0.4 en agosto de 2006. Actualmente la última versión estable es la 3.2.2.

El futuro 

Mapa de camino a corto plazo (2.1.x)
 crear y mejorar el soporte para COM y OLE. Esto tiene múltiples facetas:
 interfaces/vmt compatible con COM
 Variants, (necesario para OLE)
 delegación al estilo de implements
 cambios y mejoras en los formatos de enlazado/depuración/archivo
 mejora de enlazado inteligente (elimina los archivos .a, menos uso de memoria
 mejora de "paquetes" y librerías dinámicas soporte PIC! en general
 enlazado cruzado (cross linking) (actualmente el 2.0 ya tiene bastante capacidad de enlazado cruzado)
 crossover stabs -> dwarf
 Algún soporte para resources compatibles con Kylix (todavía bajo discusión)
 soporte para tipos de archivo nativo de tamaño de 64 bits (hecho)
 cambios en relación con Apple Pascal
 tener la capacidad de pasar un subprocedimiento, como un procvar, a un diferente proc;
Algunas de las funcionalidades de destino (especialmente en la sección enlazadora) pudieron requerir reestructuras relacionadas con
 introducción de un linker interno para algunas plataformas principales (no más LD)
 reescritura del manejo del módulo (unit)

Plataformas disponibles 

La disponibilidad del compilador FPC depende de la versión principal.

Versión 2.4.0, 2.4.2, 2.4.4, 2.6.0 

 ARM
 Game Boy Advance
 Nintendo DS
 linux
 Windows CE
 intel/i386
 DOS (GO32v2 extender)
 FreeBSD (FreeBSD 6.x and 7.x)
 linux
 Mac OS X
 OS/2
 Win32 and Windows CE (Windows 98, Windows ME, Windows NT, Windows 2000, Windows XP, Windows Vista)
 Power PC
 linux
 Mac OS X
 Power PC 64 bit
 linux
 Mac OS X
 sparc
 linux
 amd64/x86 64
 linux
 Win64

Versión 2.2.4 

 ARM
 linux
 Windows CE
 intel/i386
 DOS (GO32v2 extender)
 FreeBSD (FreeBSD 6.x and 7.x)
 linux
 Mac OS X
 OS/2
 Win32 and Windows CE (Windows 95, Windows 98, Windows ME, Windows NT, Windows 2000, Windows XP, Windows Vista)
 Power PC
 linux
 Mac OS X
 Power PC 64 bit
 linux
 sparc
 linux
 amd64/x86 64
 linux
 Win64

Versión 2.1.x 

 Win64
 Mac OS X (en la plataforma Intel)
 PowerPC de 64 bits

Versión 2.0.x 

La versión estable actual 2.0.4 soporta lo siguiente
 Procesadores:
 iA-32: Intel 80386 y compatibles
 AMD64: x86_64
 PowerPC
 ARM
 Sparc v8 y v9
 sistemas operativos:
 Linux: todos los CPUs
 FreeBSD
 Mac OS X y Darwin (PowerPC)
 Mac OS
 DOS: Go32V2 extender. PMode extender usado a veces para sistemas empotrados
 Win32
 OS/2: EMX y nativo
 Novell Netware
 WinCE

Versión 1.0.x 

El previo lanzamiento estable 1.0.x estaba disponible para:
 procesadores:
 Intel 80386 y compatibles
 Motorola 680x0
 sistemas operativos:
 Linux: x86/m68k
 FreeBSD
 NetBSD: x86/m68k
 DOS: Go32V2 extender. PMode extender a veces usado para proyectos embebidos
 Win32
 OS/2: EMX
 Amiga Classic, m68k
 plataformas beta:
 BeOS, beta
 SunOS, Solaris
 QNX
 Windows CE

Véase también 
 Lazarus un (IDE) (Integrated Development Environment o Entorno de Desarrollo Integrado) para (RAD) (Rapid Application Development o Desarrollo Rápido de Aplicaciones).

Enlaces externos 

 Free Pascal (página oficial)
 Lazarus, un RAD para el FPC
 MSEide+MSEgui, RAD multiplataforma para el FPC.
 FPC on Mac, página del estado de los ports de FPC al Mac OS clásico. (El port a Mac OS X está a cargo del equipo de FPC Unix)
 Introduction to Free Pascal 2.0, por Daniël Mantione, una introducción detallada a la nueva versión, y un poco sobre la historia de su desarrollo.
 FPS, una IDE completamente basada en Win 32 para FPC, que incluye un depurador (trazas, puntos de interrupción y ventanas de observación).
 Pascal con Free Pascal, en español.

Compiladores e intérpretes libres
Entornos de desarrollo integrados libres
Lenguaje de programación Pascal
Software escrito en ensamblador
Software libre programado en Assembler
Lenguajes de programación de sistemas