El compilador Free Pascal (FPC) y el IDE Lazarus, un entorno de desarrollo de código abierto para Pascal, han lanzado una actualización importante que introduce el soporte completo para paquetes dinámicos. Esta funcionalidad permite a los desarrolladores crear e instalar componentes, controles y extensiones del IDE en cuestión de segundos. Anteriormente, los cambios significativos en estos elementos a menudo requerían una reconstrucción completa del IDE o de toda la aplicación. Con los paquetes dinámicos, estos componentes pueden cargarse y actualizarse en tiempo de ejecución, facilitando un sistema de complementos más modular donde las clases y tipos nativos de Pascal se exponen a través de bibliotecas de paquetes dinámicos.
Para lograr esto, el equipo de desarrollo implementó mejoras extensas en el compilador, la biblioteca de tiempo de ejecución (RTL) y el IDE Lazarus. El nuevo sistema utiliza archivos de biblioteca compartida estándar para Linux, Windows y macOS, los cuales incluyen metadatos especializados generados por el compilador. El tiempo de ejecución ahora incluye mecanismos para gestionar de forma segura tipos dinámicos —como cadenas y arreglos dinámicos— y preservar variables de hilo a través de diferentes límites de paquetes. Se añadió una nueva unidad RTL, `DynPkgTypes.pas`, para ayudar a los desarrolladores a inspeccionar y consultar el contenido de estos paquetes, incluyendo su RTTI (Run-Time Type Information).
Si bien la actualización ofrece una flexibilidad significativa, introduce restricciones técnicas específicas. Por ejemplo, una unidad dentro de un paquete no puede compartir el mismo nombre que el propio paquete; el compilador ahora añade automáticamente 'Package' al nombre del archivo fuente para evitar este conflicto. Además, los nombres de las unidades deben permanecer únicos en todos los paquetes instalados para evitar colisiones. Debido a que los paquetes dinámicos contienen un mapa completo de sus contenidos internos, son más grandes que las bibliotecas compartidas estándar, y eliminar estos paquetes romperá su funcionalidad dinámica. Estos cambios tienen como objetivo modernizar el ecosistema de FPC, proporcionando una experiencia de desarrollo más ágil tanto para las extensiones del IDE como para los complementos de software independientes.
