Free Pascal Compiler (FPC) 和 Lazarus IDE(一个用于 Pascal 语言的开源开发环境)发布了一项重大更新,引入了完整的动态包支持。此功能允许开发者在几秒钟内创建和安装组件、控件和 IDE 扩展。此前,对这些元素进行重大更改通常需要重新构建整个 IDE 或整个应用程序。有了动态包,这些组件可以在运行时加载和更新,从而促进更模块化的插件系统,其中原生 Pascal 类和类型通过动态包库进行暴露。

为了实现这一目标,开发团队对编译器、运行时库 (RTL) 和 Lazarus IDE 进行了广泛的改进。新系统使用 Linux、Windows 和 macOS 上的标准共享库文件,这些文件包含由编译器生成的专用元数据。运行时现在包含安全管理动态类型(如字符串和动态数组)的机制,并能在不同的包边界之间保留线程变量。新增了一个 RTL 单元 `DynPkgTypes.pas`,旨在帮助开发者检查和查询这些包的内容,包括它们的 RTTI(运行时类型信息)。

虽然此次更新提供了极大的灵活性,但也引入了一些特定的技术限制。例如,包内的单元不能与包本身具有相同的名称;编译器现在会自动在源文件名后添加 'Package' 以防止此类冲突。此外,单元名称在所有已安装的包中必须保持唯一,以避免冲突。由于动态包包含其内部内容的完整映射,它们比标准共享库更大,且剥离这些包将破坏其动态功能。这些变化旨在现代化 FPC 生态系统,为 IDE 扩展和独立软件插件提供更敏捷的开发体验。