Free Pascal compiler now supports dynamic packages
First reported by Getlazarus ·
You can install and update Lazarus components and IDE extensions instantly without rebuilding the entire IDE.
The Free Pascal Compiler (FPC) and Lazarus Integrated Development Environment (IDE) now fully support dynamic packages. This long-awaited feature allows users to create and install components, controls, and IDE extensions in seconds without requiring a full IDE rebuild. Dynamic packages are implemented as standard shared library files compatible with Linux, Windows, and macOS, containing metadata for runtime inspection and querying. The runtime library includes enhancements for safely managing thread variables and dynamic types across package boundaries. The Lazarus IDE has been updated with a new progress window for rebuilds, a persistent Packages window to browse and open installed packages, and faster application of changes. New IDE integrations allow packages to be restricted by platform or widgetset, and a form/frame conversion feature enables visual design of installable controls. These improvements aim to significantly speed up development workflows by enabling near-instantaneous application of package changes.
This release fundamentally changes the development lifecycle for Lazarus users, shifting from a monolithic rebuild process to a more modular and agile approach. The ability to hot-swap components and extensions dramatically reduces development friction, potentially accelerating the pace of innovation and adoption for third-party tools and plugins within the Lazarus ecosystem. The explicit handling of thread variables and dynamic types also addresses critical stability concerns for complex applications relying on dynamic loading.
The implications extend to the deployment of Lazarus applications, allowing for runtime plugin systems that can be updated or swapped without interrupting a running program. This opens doors for applications that can adapt and evolve in real-time, such as those in gaming, simulation, or live data processing. The restrictions around unique unit names across packages, while a necessary safeguard, will require developers to adopt more organized naming conventions to avoid conflicts.
AI-written summary. May contain errors.