테크레시피

25년 만의 메이저 버전업…펄7 발표됐다

지난 6월 24일 열린 펄 콘퍼런스(The Perl Conference in the Cloud)에서 스크립트 언어 펄(Perl)의 새로운 버전인 펄7(Perl 7)이 발표됐다. 펄5를 현대화한 것으로 코드 기반 자체에는 큰 변화는 없다.

펄7은 펄 5.32와 거의 동일하지만 더 현대화된다. 이전 버전에서 사용되던 것 대부분은 그대로 쓸 수 있다. 펄5의 새로운 버전이 아닌 펄7으로 버전을 고친 이유는 지금까지 방식과의 경계선을 설정하기 위한 것이라고 한다. 또 펄6 대신 펄7로 업그레이드한 이유는 당초 펄6으로 개발을 진행하던 라쿠(Raku)와의 혼동을 피하기 위한 것이다. 이런 업그레이드는 PHP5에서 PHP7로 버전업한 사례가 있기도 하다.

펄에는 새로운 프로그램 추가가 필요했지만 펄의 호환성에 대처해 기본 설정을 바꿀 수 없었다. 현재 펄은 뭔가 시작하기 전에 많은 전제가 되는 코드를 작성해야 하며 예전 C언어 시대와 같은 상황이라는 지적이다. 이런 상황 개선은 펄5 마이너 업데이트에서도 엿볼 수 있다. 버전 5.12에선 최소 버전을 지정해 ‘strict’를 사용할 필요가 없어졌다.

펄7 버전을 지정하지 않아도 이런 기술을 기본으로 설정 가능하다. 펄5는 극단적인 호환성이 남아 있지만 펄7은 하위호환성을 위한 영향을 최소화하고 현대적인 동작을 실현하고 있다. 펄7의 출시 목표는 내년 여러 릴리스 후보가 나오는 것이다. 펄5는 장기 유지 관리 모드에 들어가며 최대 10년간 지원될 것이라고 한다.

펄 라이브러리나 모듈 등을 모은 CPAN에는 20만 개 가량 모듈이 있다. CPAN에 있고 유지 관리되는 모듈은 펄7에서도 작동되는 것이며 그렇지 않더라도 호환성 모드가 준비되어 있다고 한다. 물론 펄7에 대한 CPAN이 준비될 가능성도 있을 수 있지만 가능한 한 적은 작업 관리가 용이한 일이 될 수 있다. 또 PAUSE(Perl Authors Upload Server)는 지난 몇 년간 많은 사랑을 받았던 만큼 미래 요구에 대응하기 쉬워지고 PAUSE에 관한 경험과 재능 있는 사람이 코드 베이스를 더 다루기 쉬운 것으로 해주고 있다.

펄7에서 사용할 수 있는 기능은 간접 객체 표기법으로 ‘bareword’에 의한 파일 핸들, 의사 다차원 배열과 다차원 해시, 펄4 형식 프로토타입 선언 등이며 펄7에서 새로 활성화하는 기능은 ‘Postfix’ 참조와 새로운 ‘isa’ 연산자 등이 있다. 또 펄 5.32 기능을 포함해 기본적으론 모든 기능이 활성화되어 있다. 만일 ‘bareword’에 의한 파일 핸들이나 간접 개체 기법 등을 이용하고 있는 경우는 변환을 수행해야 하지만 이를 할 수 없는 귀찮은 코드에서 펄5에서 펄7 마이그레이션을 지원하는 호환 모드가 준비되어 있다. 또 펄7에서 기본적으로 사용할 수 있는 기능은 버전 5.32도 해제할 수 있기 때문에 문제없이 펄7으로 마이그레이션할 수 있는지 확인할 수 있다. 관련 내용은 이곳에서 확인할 수 있다.