Free Pascal 컴파일러와 Lazarus IDE에 동적 패키지 전면 지원이 추가됨
- 동적 패키지를 쓰면 Lazarus를 전체 재빌드하지 않고도 컴포넌트, 컨트롤, IDE 확장을 몇 초 만에 만들고 설치할 수 있음
- 동적 패키지는 Linux, Windows, macOS의 표준 공유 라이브러리 파일로 만들어지고, 컴파일러가 생성한 메타데이터가 들어 있어서 새 RTL 유닛으로 내용을 조회할 수 있음
- 제약으로 패키지와 같은 이름의 유닛은 쓸 수 없고, 생성되는 소스 파일명에는 Package가 붙음(ElectroTools.lpk는 ElectroToolsPackage.pas가 됨). 또 유닛 이름은 패키지 사이에서 고유해야 함
- 프로그램은 모든 걸 단일 실행 파일로 묶을 수도 있고, 여러 동적 패키지로 나눠 실행 중에 교체하는 플러그인 구조로 만들 수도 있음
- Lazarus에서는 등록된 패키지 소스를 바꾸면 IDE가 시작되기 전에 자동으로 재빌드하고, 패키지 창에서 Compile하면 관련 컴포넌트가 1~2초 안에 갱신됨
Hacker News opinions
Pascal이랑 Lazarus는 수정하고 바로 결과 보이는 반응성이 좋아서 개발 흐름이 안 끊김. 축하할 일임.
Delphi 패키지랑 비슷한 거 맞지? 그쪽 쓰던 사람은 감이 바로 올 듯.
Delphi가 버전 올라갈 때마다 점점 별로가 되는 와중에 FOSS 대안이 생긴 건 반가움.
이거 Lazarus 포크 아님? 공식 사이트는 lazarus-ide.org인데.
getlazarus.org는 13년째 운영 중인 사이트임. FPC랑 Lazarus에 정식 릴리스보다 먼저 기능을 얹는 곳이고, 동적 패키지는 오래 작업했음. 검증 끝나면 MR로 메인라인에 들어갈 예정이라고 함.
예전에 Lazarus 써봤는데 Delphi처럼 블록 중간에서 변수 선언하는 게 FPC에 없어서 답답했음. 아직 C89 방식에 머문 느낌임.
그 기능은 Delphi가 클로저 때문에 넣은 거임. 뒤에서 인터페이스를 만들고 스택 정보를 채워 넣는 방식이라 설계가 좀 엉성하다고 봄. 그래도 FPC와 Lazarus는 C# 같은 편의성이랑 네이티브 연동 사이에서 괜찮은 타협점임. libcairo, libxml2, libssl, libsdl, OpenGL 붙이는 건 훨씬 편함.