Efter mere end et halvt års udvikling blev version 10.45 af biblioteket til PERL-kompatible regulære udtryk lanceret PCRE2, skrevet i C og distribueret under BSD-licensen. Dette er en relativt stor udgivelse, der inkluderer nye funktioner, nogle fejlrettelser og flere ændringer, der har en mindre indvirkning på bagudkompatibilitet.
Version 10.45 er den første udgivelse forberedt af de nye vedligeholdere af projektet, der takker Philip Hazel, skaberen og vedligeholderen af projekterne PCRE og PCRE2.
Ændringslog:
- JIT-kompilationsprojektet sljit bruger nu som et Git-submodul.
- Unicode-data er blevet opdateret til version 16.
- Case-insensitive match af Unicode-egenskaberne Ll, Lt og Lu er blevet ændret for at overholde Perl. Tidligere tog mønsteret \/p{Ll}\/i kun hensyn til små bogstaver (selv om case-insensitive match blev angivet). Denne ændring påvirker også case-insensitive match af POSIX-klasser såsom [:lower:].
- En ny funktion scan_substring er blevet tilføjet. Dette er en ny type påstand, der matcher indholdet af et fanget blok med et undermønster.
For eksempel finder mønsteret b(w++)(*scan_substring:(1).+rh) et ord, der indeholder den sjældne sekvens af bogstaver 'rh', som ikke er i starten. - Støtte til symbolklasser, der er kompatible med UTS#18 (Unicode Regulerede Udtryk), er blevet tilføjet ved hjælp af den nye mulighed PCRE2_ALT_EXTENDED_CLASS. For dette skal [ anvendes som metategn i symbolklasser og operatorer &&, — og ~~ for nemt at udføre subtraktioner og snit af symbolklasser.
For eksempel kan mønsteret [p{L}&&[p{Thai}||p{Greek}]] bruges til at matche thailandske eller græske bogstaver (men ikke bogstaver eller andre symboler i disse skriftsystemer). - Støtte til udvidede Perl-lignende symbolklasser er blevet tilføjet med syntaksen (?[…]). Dette giver også mulighed for at udtrykke subtraktioner og snit af symbolklasser, men ved hjælp af en syntaks, der adskiller sig fra UTS#18 (Unicode Regulerede Udtryk).
For eksempel kan mønsteret (?[p{L} & (p{Thai} + p{Greek})]) bruges til at matche thailandske eller græske bogstaver (men ikke bogstaver eller andre symboler i disse skriftsystemer). - Betydelige forbedringer i mekanismen til matchning af tegnklasser. Kompilerede tegnklasser er nu mere kompakte og giver hurtigere matchning for store eller komplekse tegnsæt ved hjælp af binær søgning i sættet.
- En ny funktion, pcre2_set_optimize(), er tilføjet til API'et for at styre optimeringer.
- Mange forbedringer til funktionen pcre2_substitute().
- Anbefalinger fra Linux Foundation om overholdelse af sanktioner i åbne projekter
Kilde: linux.org.ru
