Free Pascal 컴파일러, 동적 패키지 지원 추가

1 hour ago 2

Free Pascal Compiler와 Lazarus IDE용 동적 패키지 지원의 첫 완전 구현이 공개됨. 다운로드용 설치 프로그램에 포함되며, 변경 사항은 개발자의 GitLab 포크 브랜치에 반영됨 IDE 전체를 다시 빌드하지 않고 컴포넌트, 컨트롤, Lazarus 확장을 수초 안에 설치하거나 갱신할 수 있음 자체 프로그램에서도 네이티브 Pascal 클래스와 타입을 노출하는 플러그인을 만들 수 있으며, 실행 중 동적 패키지를 교체하는 배포 방식과 단일 실행 파일 방식을 모두 지원함 Linux, Windows, macOS의 표준 공유 라이브러리에 컴파일러가 생성한 메타데이터를 추가하는 구조이며, 런타임이 패키지 경계의 동적 타입과 스레드 변수를 안전하게 관리함 유닛 이름 충돌과 메타데이터 보존에 제약이 있음. 패키지 간 유닛 이름이 고유해야 하고 패키지 이름과 내부 유닛 이름도 달라야 하며, 스트리핑하면 필수 메타데이터가 제거됨 동적 패키지의 구현과 배포 방식 동적 패키지 지원을 위해 컴파일러, 런타임, Lazarus IDE를 개선하고, 패키지 작업 편의를 높이는 IDE 확장도 추가함 다운로드용 설치 프로그램은 모두 동적 패키지 지원을 포함함 패키지는 Linux, Windows, macOS용 표준 공유 라이브러리 파일로 구현되며, 컴파일러가 생성한 추가 메타데이터를 새 RTL 유닛으로 조사하고 조회할 수 있음 프로그램 배포 시 단일 실행 파일에 모두 묶거나, 실행 중 교체 가능한 여러 동적 패키지로 나눠 플러그인 시스템을 구성할 수 있음 플러그인은 동적 패키지 라이브러리를 통해 네이티브 Pascal 클래스와 타입을 노출할 수 있음 이름과 메타데이터 제약 패키지 안의 유닛 이름은 패키지 이름과 달라야 함 기본 패키지 시스템은 자동 생성하는 Pascal 소스 파일 이름에 Package를 붙이도록 변경됨 ElectroTools.lpk를 만들면 포함 유닛을 나열하는 파일은 ElectroTools.pas 대신 ElectroToolsPackage.pas가 됨 유닛 이름은 패키지 전체에 걸쳐 고유해야 함 Widgets라는 유닛이 이미 설치되어 있으면 같은 이름의 유닛을 포함한 다른 패키지는 설치할 수 없음 설치할 패키지를 하나만 선택하거나 충돌하는 유닛 중 하나의 이름을 바꿔야 함 메타데이터를 보존해야 함 내부 구성 전체의 맵을 포함하므로 일반 공유 라이브러리보다 파일 크기가 큼 스트리핑하면 동적 패키지로 동작하는 데 필요...

Read Entire Article