+38/050/370-3627
+38/093/220-0872
+38/044/257-2444
Новини

Perl 5.30.0 – відбувся реліз нової стабільної гілки мови програмування Perl

Perl 5.30.0 - відбувся реліз нової стабільної гілки мови програмування Perl

Після 11 місяців розробки відбувся реліз нової стабільної гілки мови програмування Perl - 5.30. Під час підготовки нового випуску було змінено близько 620 тис. рядків коду, зміни торкнулися 1300 файлів, у розробці взяли участь 58 розробників.

Гілка 5.30 випущена відповідно до затвердженого шість років тому фіксованого графіка розробки, що передбачає випуск нових стабільних гілок раз на рік і коригувальних релізів - раз на три місяці. Приблизно через місяць планується випустити перший коригуючий реліз Perl 5.30.1, у якому буде виправлено найбільш значні помилки, виявлені у процесі впровадження Perl 5.30.0. Одночасно з виходом Perl 5.30 припинено підтримку гілки 5.26, для якої в майбутньому можуть бути випущені оновлення тільки у випадку виявлення критичних проблем із безпекою. Також розпочався процес розробки експериментальної гілки 5.31, на базі якої у травні 2020 року буде сформовано стабільний реліз Perl 5.32.

Ключові зміни:

  • У регулярні вирази додано експериментальну підтримку операцій "(?‹!pattern)" та "(?‹=pattern)" для обмеженого звернення до раніше оброблених іменованих шаблонів. Визначення шаблону має бути не більше 255 символів від місця звернення;
  • До 65534 збільшено максимальне значення специфікатора розміру ("n") у блоках "{m,n}" регулярних виразів;
  • Додано обмежену підтримку масок для виділення певних категорій символів у регулярних виразах, охоплюючи різні набори Unicode. Наприклад, вираз "qr!\p{nv=/(?x)\A[0-5]\z/}!" дозволяє виділити всі Unicode-символи, що визначають цифри від 0 до 5, включаючи тайські або бенгальські варіанти написання цифр;
  • У регулярних виразах додано підтримку іменованих символів усередині шаблонів, обмежених одинарними лапками (qr'\N{name}');
  • Підтримка специфікації Unicode оновлена ​​до версії 12.1. Знято ознаку експериментальної розробки з викликів sv_utf8_downgrade та sv_utf8_decode, що використовуються при розробці розширень мовою Сі;
  • Додано можливість складання perl з реалізацією операцій з локаллю, що підтримує роботу в багатопотоковому режимі (-Accflags='-DUSE_THREAD_SAFE_LOCALE'). Раніше подібна реалізація використовувалася тільки при складанні багатопотокового варіанта Perl, а тепер може бути включена для будь-яких збірок;
  • Поєднання прапорів "-Dv" (розширений налагоджувальний висновок) і "-Dr" (налагодження регулярних виразів) тепер призводить до включення всіх можливих режимів налагодження регулярних виразів;
  • Видалено можливості, раніше оголошені застарілими:
    • В якості символів-розділювачів рядків і шаблонів тепер допускається використання тільки графом (заборонено складові символи Unicode).
    • Припинено підтримка деяких давно застарілих форм застосування в регулярних виразах символу "{" без його екранування.
    • Заборонено використання функцій sysread(), syswrite(), recv() і send() з обробниками ":utf8".
    • Заборонено використання визначень "my" в початково неправдивих умовних операторах (наприклад, "my $x if 0").
    • Видалено підтримку спеціальних "$*" і "$#". Припинено підтримку неявного виклику функції dump() (тепер потрібно явно вказувати CORE::dump()).
    • Видалено функцію File::Glob::glob (потрібно використовувати File::Glob::bsd_glob).
    • У pack() додано захист від повернення некоректних послідовностей Unicode.
    • До наступного випуску відкладено припинення підтримки використання в коді XS (блоки на Сі) макросів, які виконують операції з UTF-8.
  • Оптимізація продуктивності:
    • Прискорено виконання операцій трансляції UTF-8 у розкладку символів (code point), наприклад, виконання операції ord("x7fff") тепер вимагає виконання на 12% менше інструкцій. Також збільшено продуктивність операцій перевірки коректності послідовностей символів UTF-8;
    • Вимкнені рекурсивні виклики до функцій finalize_op();
    • Внесено невеликі оптимізації до коду згортання ідентичних символів та визначення класів символів у регулярних виразах;
    • Оптимізовано перетворення знакових визначників типу на беззнакові (IV у UV);
    • Прискорено алгоритм перетворення цілих чисел у рядок за рахунок обробки разом двох цифр замість однієї;
    • Внесено поліпшення, підготовлені за результатами аналізу компанією LGTM;
    • Оптимізовано код у файлах regcomp.c, regcomp.h та regexec.c;
    • У регулярних виразах значно прискорено обробку шаблонів типу "qr/[^a]/" із символами ASCII.
  • Відновлено підтримку платформи Minix3. Забезпечено можливість збирання з використанням компілятора Microsoft Visual Studio 2019 (Visual C++ 14.2);
  • Оновлено версії модулів, які входять до базової поставки. З основного складу видалені модулі B::Debug і Locale::Codes.

Інші новини

Найкраща ціна