Sono principalmente da incolpare per questa situazione, ma c'erano altri coinvolti, quindi userò la prima persona plurale nei luoghi sottostanti.
Innanzitutto, è un errore di battitura che il perldelta per 5.22.1 dice 5.20.0 quando significa 5.22.0. Menziona solo un problema, perché nella nostra mente erano solo una cosa, i confini di rottura di Unicode.
Questi sono stati aggiunti in ritardo in 5.22 e non ci siamo resi conto che c'erano problemi fino a dopo 5.22 spedito. E quando i problemi iniziarono a comparire, alcuni di essi si rivelarono bug nell'algoritmo specificato da Unicode, e presumemmo che fossero tutti tali.
Ma tutto è stato testato, e ho pensato, abbastanza estensivamente. Le versioni recenti di Unicode hanno incluso test di pubblicazione per varie funzionalità e 5.22.0 ha superato tutti i test. Li puoi trovare in lib/unicore/TestProp.pl, che viene eseguito ogni volta che "make test" viene eseguito, eseguito da t/re/uniprops.t. Quelli in questione sono chiamati da Test_SB() (oltre 500) e Test_WB() (quasi 1500), e ogni test consiste in diversi sottotest. Questi erano più test di quanti ne avrei ricavati.
In modo indipendente, qualcuno ha segnalato il segfault all'inizio del processo di sviluppo 5.23. Nell'indagare ciò, ho visto, attraverso la lettura del codice, che c'erano altri problemi nel codice appena spedito. Le interazioni sono complesse e non facilmente riassumibili, quindi il perldelta non ci ha nemmeno provato. Entrambe queste condizioni al contorno richiedono di tenere traccia del contesto in cui possono verificarsi i confini, spesso facendo look-ahead e/o look-behind. Quando il codice analizza la stringa di destinazione, salva il contesto corrente per l'iterazione successiva, dove sarà il contesto look-behind e non dovrà essere ricalcolato. Questo era rotto e il contesto non veniva sempre salvato correttamente. Questo è il motivo per cui sono stati superati tutti i test forniti da Unicode. Erano per brevi input, dove la rottura del contesto non aveva importanza. Quando tutto questo è stato risolto, sono rimasto piacevolmente sorpreso dal fatto che \ b {sb} stesse dando risultati che erano più di quanto si aspettasse un umano.
I bug Unicode sono programmati per essere corretti nella prossima versione di UAX # 29, e penso che abbiamo preso la decisione giusta nel far funzionare \ b {wb} e \ b {sb} in 5.22.1.
Quale versione Perl esatta stai usando? La manpage perldelta menziona parecchie correzioni per \ b {sb} in 5.22.1, e quando eseguo il codice di test con quella versione ottengo i limiti di frase riportati nelle posizioni 0, 10, 27, 41, 56 e 70. –
@Calle Dybedahl : Rendi quel commento una risposta. Ho avuto alcuni problemi nella compilazione di Perls 5.22.1 e dei RCs per 5.24 la scorsa notte. –