Free Pascal, 동적 패키지 지원 추가
원제 Free Pascal compiler now supports dynamic packages
101 포인트댓글 17
Key Point
Free Pascal 생태계에서 오랫동안 요청받아온 동적 패키지가 드디어 완전히 구현되어, IDE 재빌드 없이 플러그인을 동적으로 설치하고 실행 중 교체할 수 있게 됨으로써 개발 효율이 크게 향상된다.
핵심 요약
- Free Pascal 컴파일러와 Lazarus IDE가 동적 패키지(Dynamic Packages) 기능을 완전히 지원하게 되었다.
- 동적 패키지를 통해 IDE를 재빌드하지 않고도 컴포넌트, 제어 요소, 확장 기능을 몇 초 안에 설치할 수 있으며, 프로그램 실행 중 플러그인 시스템을 만들 수도 있다.
- Linux, Windows, macOS에서 표준 공유 라이브러리 파일로 구현되며, 컴파일러가 생성한 메타데이터를 포함하여 런타임에 검사하고 조회할 수 있다.
- 런타임은 스레드 변수 보호와 문자열·동적 배열 같은 동적 타입을 패키지 간에 안전하게 관리하는 메커니즘을 제공한다.
- 패키지 내 유닛 이름은 전체 패키지 간에 고유해야 하고, 패키지 이름과 같은 유닛을 포함할 수 없다는 제약이 있다.
- 동적 패키지는 메타데이터를 포함하므로 일반 공유 라이브러리보다 크며, 메타데이터를 제거하면 동적 패키지로 기능할 수 없다.
- 새로운 RTL 유닛 DynPkgTypes.pas를 통해 패키지 내용을 읽을 수 있고, 런타임에 패키지를 로드·열거·검색·언로드할 수 있는 함수를 제공한다.
- Lazarus IDE는 패키지 수정 시 자동 재빌드 진행 창, 최근 열린 패키지를 표시하는 새로운 패키지 창, 플랫폼별 패키지 제한 기능 등이 추가되었다.
- 패키지의 단일 컴파일로 변경사항이 1~2초 내에 IDE에 반영되어 개발 속도가 대폭 단축된다.
- IDE를 재빌드하지 않고 패키지 추가·제거가 가능해지며, 폼이나 프레임을 설치 가능한 컴포넌트로 변환하는 새로운 기능도 추가되었다.
- 전체 FPC와 Lazarus 변경 사항은 GitLab의 'dynamic packages' 포크 브랜치에 커밋되었다.
- 개발자는 M1 맥 기증이나 macOS 빌드 지원 등으로 프로젝트에 기여할 수 있다.