Бір жылдық дамудан кейін Perl бағдарламалау тілінің жаңа тұрақты тармағы 5.42 шығарылды. Жаңа шығарылымды дайындау кезінде кодтың 280 мыңға жуық жолы өзгертілді (құжатсыз және автоматты түрде жасалған код - 93 мың), өзгерістер 1500 файлға әсер етті, әзірлеуге 64 әзірлеуші қатысты.
5.42 филиалы он екі жыл бұрын бекітілген дамудың бекітілген кестесіне сәйкес шығарылады, бұл жылына бір рет жаңа тұрақты филиалдарды және үш ай сайын шағын шығарылымдарды шығаруды білдіреді. Шамамен бір айдан кейін Perl 5.42.1 нұсқасының бірінші шағын шығарылымын шығару жоспарлануда, ол Perl 5.42.0 енгізу кезінде табылған ең маңызды қателерді түзетеді. Perl 5.42 шығарылымымен бірге 5.38 тармағына қолдау көрсету аяқталды және қауіпсіздіктің маңызды мәселелері анықталған жағдайда ғана оның жаңартулары болашақта шығарылуы мүмкін. Тәжірибелік 5.43 тармағын әзірлеу жақын арада басталады, оның негізінде Perl 2026 тұрақты шығарылымы 5.44 жылдың маусымында қалыптасады, егер 7.x нөмірлеуге көшу туралы шешім қабылданбаса.
Негізгі өзгерістер:
- Қосылған эксперименттік тізімді өңдеу операторлары — "кез келген { BLOCK } @list" және "all { BLOCK } @list", олар "grep { BLOCK } @list" операторына ұқсайды, бірақ тек ақиқат немесе жалған мәнді қайтара алады. Шарт тізімнің барлық элементтері үшін ақиқат болса, «барлығы» операторы «шын» мәнін қайтарады, ал егер шарт кем дегенде бір элемент үшін дұрыс болса, «кез келген» операторы «шын» мәнін қайтарады. Операторлардың функционалдығы List::Util модуліндегі функцияларға ұқсас, бірақ кірістірілген нұсқалар жылдамырақ және жадты аз тұтынады. v5.42 пайдаланыңыз; 'keyword_all' мүмкіндігін пайдалану; ескертулер жоқ 'experimental::keyword_all'; my @numbers = … if (барлығы { $_ % 2 == 0 } @numbers ) { "Барлық сандар жұп" деңіз; }
- Сынып ішінде анықталған өрістер үшін класстың ағымдағы данасы үшін өріске айнымалы мәнді жазатын әдісті автоматты түрде жасау үшін пайдаланылатын «:writer» төлсипаты жүзеге асырылады. class Point { өріс $x :оқушы :жазушы :param; өріс $y :оқушы :жазушы :param; } my $p = Point->new( x => 20, y => 40 ); $p->set_x(60);
- Лексикалық ішкі бағдарламаларды анықтауға ұқсас («лексикалық_қосалқылар») олар жасалған блоктың лексикалық ауқымында ғана қолжетімді әдістерді жасауға мүмкіндік беретін лексикалық әдістерді анықтауға қолдау қосылды. Мұндай әдістерді жасау үшін «менің әдісімнің_аты» өрнегін пайдаланыңыз.
- "->&" операторы қосылды, бұл лексикалық ауқымдағы процедураларды әдістер сияқты шақыруға мүмкіндік береді. Лексикалық әдістерді анықтау мүмкіндігімен біріктірілген жаңа оператор жеке әдістерге ұқсас функционалдылықты қамтамасыз етеді.
- «A = A XOR B» операциясын орындайтын «A ^^= B» тағайындау операторы қосылды.
- Бастапқы кодты кодтауды анықтау үшін "source::encoding" прагмасы қосылды. ASCII коды үшін "use source::encoding 'ascii'" (әдепкі) және UTF-8 үшін "use source::encoding 'utf8′" параметрін көрсетуге болады, бұл "utf8 пайдалану" дегенге тең. Егер ASCII ретінде белгіленген кодта UTF-8 таңбалары кездессе немесе UTF-8 ретінде белгіленген кодта "\x{}" шығу реттері пайдаланылса, аудармашы қате жібереді. Кодтың бір бөлігін тексеруді өшіру үшін "қайнар көзін пайдаланбаңыз::кодтауды" пайдалануға болады. Іс жүзінде қосылған прагма әзірлеуші UTF-8 коды үшін «utf8 пайдалану» көрсетуді ұмытып кеткен жағдайларды анықтау үшін пайдалы болуы мүмкін.
- chdir() функциясы "CORE::" аттар кеңістігіне қосылды. Мысалы, бұл функцияға енді "&CORE::chdir($dir)" немесе "my $ref = \&CORE::chdir; $ref->($dir)" ретінде кіруге болады.
- Бума атауының бөлгіші ретінде " ' таңбасын пайдалануды қолдауды өшіру үшін "апостроф_ас_package_separator" функциясы жоқ" мәлімдемесі қосылды (мысалы, "My::Module::Var" орнына "My'Module'Var"). Perl 5.42 бастапқыда ескірген мұндай бөлгіштерге қолдауды алып тастамақ болды, бірақ талқылаулардан кейін бұл мүмкіндікті әдепкі бойынша сақтау, бірақ оны өшіру опциясын беру туралы шешім қабылданды.
- Бұрын ескірген және жоюға жоспарланған "ауыстырғыш" функциясы мен "~~" операторы мүмкіндіктерге қайта жылжытылды. Perl 5.36 және 5.42 нұсқалары бойынша кодты тіл нұсқаларына байланыстыру кезінде «ауысру» және «~~» мүмкіндіктері әдепкі бойынша ажыратылады (мысалы, «v5.42 пайдалану» параметрін көрсету арқылы), бірақ «қосу мүмкіндігін пайдалану» және «смарт сәйкестікті пайдалану» мүмкіндігі арқылы қосуға болады.
- Юникод 16.0 спецификациясына қолдау қосылды.
Ақпарат көзі: opennet.ru
