Реліз мови програмування Perl 5.30.0

Після 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 у розкладку символів (кодова точка), наприклад, виконання операції 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 и Локаль::Коди.

Джерело: opennet.ru

Додати коментар або відгук