După mai bine de șase luni de dezvoltare, a fost lansată versiunea 10.45 a bibliotecii de expresii regulate compatibile PERL. PCRE2, scrisă în limbajul C și distribuită sub licența BSD. Aceasta este o lansare relativ mare, care include noi funcții, câteva remedieri de erori și câteva modificări care au un impact minor asupra compatibilității înapoi.
Versiunea 10.45 este prima lansare pregătită de noii mențineri ai proiectului, care îi mulțumesc lui Philip Hazel, creatorul și menținatorul proiectelor PCRE și PCRE2.
Lista modificărilor:
- Proiectul de compilare JIT sljit este acum folosit ca submodul Git.
- Datele Unicode au fost actualizate la versiunea 16.
- Potrivirea insensibilă la majuscule a proprietăților Unicode Ll, Lt și Lu a fost modificată pentru a corespunde Perl. Precedent, modelul /p{Ll}/i lua în considerare doar caracterele cu litere mici (chiar dacă se specifica o potrivire insensibilă la majuscule). Această modificare afectează de asemenea potrivirile insensibile la majuscule ale claselor POSIX, precum [:lower:].
- A fost adăugată o nouă funcție scan_substring. Aceasta este un nou tip de afirmație care potrivește conținutul unui bloc capturat cu un submodel.
De exemplu, expresia b(w++)(*scan_substring:(1).+rh) găsește un cuvânt care conține o secvență rară de litere "rh" în limba engleză, care nu se află la început. - A fost adăugat suport pentru clasele de simboluri compatibile cu UTS#18 (Expresii Regulate Unicode), folosind noua opțiune PCRE2_ALT_EXTENDED_CLASS. Pentru aceasta, utilizarea [ ca metaflux în clasele de simboluri și operatorii && și ~~ permite efectuarea ușoară a diferențelor și intersecțiilor între clasele de simboluri.
De exemplu, pentru a se potrivi cu literele thailandeze sau grecești (dar nu cu literele sau alte simboluri din aceste scrieri) se poate folosi expresia [p{L}&&[p{Thai}||p{Greek}]]. - A fost adăugat suport pentru clasele extinse de simboluri în stil Perl, folosind sintaxa (?[…]). Acest lucru permite, de asemenea, exprimarea diferențelor și intersecțiilor între clasele de simboluri, dar folosind o sintaxă diferită față de UTS#18 (Expresii Regulate Unicode).
De exemplu, pentru a se potrivi cu literele thailandeze sau grecești (dar nu cu literele sau alte simboluri din aceste scrieri) se poate folosi expresia (?[p{L} & (p{Thai} + p{Greek})]). - Îmbunătățiri semnificative ale mecanismului de potrivire a claselor de caractere. Clasele de caractere compilate sunt acum mai compacte și oferă o potrivire mai rapidă pentru seturi mari sau complexe de caractere, utilizând căutarea binară în set.
- O nouă funcție pcre2_set_optimize() a fost adăugată în API pentru gestionarea optimizărilor.
- Numeroase îmbunătățiri ale funcției pcre2_substitute().
- Alte îmbunătățiri și corecții de erori.
Sursa: linux.org.ru
