È stata rilasciata la versione 31.0 del web browser Pale Moon, un fork della base di codice di Firefox, progettata per garantire una maggiore efficienza, preservare un'interfaccia classica, ridurre il consumo di memoria e fornire ulteriori possibilità di personalizzazione. Le build di Pale Moon sono disponibili per Windows e Linux (x86 e x86_64). Il codice del progetto è distribuito sotto la licenza MPLv2 (Mozilla Public License).
Il progetto mantiene un'organizzazione classica dell'interfaccia, senza passare all'interfaccia integrata in Firefox 29, chiamata Australis, e offre ampie opportunità di personalizzazione. Tra i componenti rimossi si possono citare DRM, Social API, WebRTC, visualizzatore PDF, Crash Reporter, codice per la raccolta di statistiche, strumenti per il controllo parentale e per le persone con disabilità. Rispetto a Firefox, il browser conserva il supporto per la tecnologia XUL e mantiene la possibilità di utilizzare sia temi completi che leggeri.
Nella nuova versione:
- Dopo aver riscontrato una serie di problemi di stabilità e la protesta di uno dei principali sviluppatori, sono state annullate le versioni precedentemente rilasciate 30.0.0 e 30.0.1 di Pale Moon. È stato ripristinato l'uso della piattaforma UXP (Unified XUL Platform), che sviluppa un fork dei componenti di Firefox dal repository di Mozilla Central, rimuovendo i legami con il codice in Rust e senza includere i lavori del progetto Quantum. Come motore del browser è stato utilizzato Goanna 5.1, una variante del motore Gecko, ripulita dal codice di componenti e piattaforme non supportati. Gli utenti della branch Pale Moon 29.x sono stati invitati a passare direttamente alla versione 31.0.
- È stata garantita la compatibilità con sia le vecchie estensioni non modificate di Firefox che le nuove estensioni specificamente create per Pale Moon. La stabilità delle vecchie estensioni non è garantita, quindi saranno contrassegnate nel gestore delle estensioni con un'etichetta arancione speciale.
- È stata aggiunta la supporto per il controllo singolo dell'intera catena di proprietà o chiamate in JavaScript tramite l'operatore «?.». Ad esempio, tramite «db?.user?.name?.length» è possibile accedere al valore «db.user.name.length» senza controlli preliminari.
- Per migliorare la compatibilità con i siti, sono stati aggiunti i metodi Selection.setBaseAndExtent() e queueMicroTask().
- Nel costruttore IntersectionObserver(), passando una stringa vuota è stata impostata per default la proprietà rootMargin anziché generare un'eccezione.
- È stato migliorato il rendering delle strutture definite tramite CSS grid e flexbox.
- È stata aumentata la performance dell'esecuzione parallela dei web worker in JavaScript.
- È stato migliorato il rendering dei caratteri in corsivo.
- Sono state aggiornate le versioni delle librerie incluse nella distribuzione base.
- È stata aggiunta la supporto per identificatori estesi dei codec video VPx.
- È stata risolta una vecchia problematica con il rendering degli elementi definiti direttamente nei tag body e iframe senza l'uso di CSS.
- È stato rimosso il codice associato all'uso dei servizi Google SafeBrowsing e URLClassifier.
- È stato ripristinato il codice per la build sulla piattaforma macOS.
- È stata rimossa l'API non standard ArchiveReader.
- È stata effettuata una pulizia del codice rimuovendo i componenti Mozilla per la raccolta della telemetria.
- Rimosso il codice relativo al supporto della piattaforma Android.
- Rimosso il framework di test automatici Marionette.
- Sono state apportate correzioni relative alla risoluzione di vulnerabilità.

Fonte: opennet.ru
