2013/05/19

Perl 5.18.0 출시

2013년 5월 18일 Perl 5.18.0 버젼이 출시되었다. 5.18은 우리 현대사에서도 의미 있는 날인데 Perl 5.18.0 버젼을 5월 18일에 내놓는 센스를 발휘하다니...

Perl 5.18.0 에서 바뀐 내용들은 https://metacpan.org/module/RJBS/perl-5.18.0/pod/perldelta.pod 에 잘 정리되어 있다.

5.18.0버젼은 5.16.0 버젼이후 1년동안의 개발기간 동안 113명의 개발자에 의해 2100개의 파일, 400000라인의 수정/추가가 이루어 졌다고 한다.

중요한 점만 짚어 보자면..

Unicode 6.2를 지원.

예전에는 암묵적으로 허용되었던 foreach my $item qw/A B C/ { ... } 같은 코드는 ( )를 명시적으로 싸서 foreach my $item (qw/A B C/)  { ... } 처럼 해 주지 않으면 에러가 난다.  

given ~ when 구문과 ~~스마트매치 연산자가 실험적기능(experimental)으로 빠졌다. 그동안 너무 복잡하고 설계에 문제점이 있다고 말이 많았는데 이 기회에 일단 빼놓고 다시 검토할 계획인가 보다. 5.18에서는 해당 문법을 쓰면 경고가 난다.
 참고: https://metacpan.org/module/RJBS/perl-5.18.0/pod/perldelta.pod#The-smartmatch-family-of-features-are-now-experimental

그리고  encoding, Archive::Extract, CPANPLUS 등 코어모듈에서 제외된 모듈들이 제법 있다.
 참고: https://metacpan.org/module/RJBS/perl-5.18.0/pod/perldelta.pod#Module-removals

또 hash의 취약점 공격을 막기 위해 hash에서 값을 뽑아낼때 마다 랜덤하도록 바뀌었다. 이 때문에 테스트에서 에러가 나는 모듈이 종종 있다.  특히 많이 쓰는 JSON::XS모듈도 그 중 하나인데 패치 되기전에 일단 cpan -T JSON::XS 나 cpanm -n JSON::XS 명령으로 테스트과정을 생략하고 설치해서 쓰도록 하면 된다고 한다.(JSON::XS 모듈은 2.34버젼에서 고쳐졌음)
 참고: http://blog.twoshortplanks.com/2013/05/20/5-18-hash-keys/


마지막으로 Perl 5.18.0 버젼은 안타깝게도 우리 곁을 일찍 떠나버린 @am0c 군을 추모하는 글( https://metacpan.org/module/RJBS/perl-5.18.0/pod/perldelta.pod#Obituary ) 이 포함되어 더욱 뜻깊은 버젼이기도 하다.