Negli ultimi anni GNOME ha integrato una nuova “macchina” per il caricamento delle immagini chiamata glycin, sviluppata in Rust e adottata da applicazioni come Loupe. Questo progetto porta con sé vantaggi significativi dal punto di vista della sicurezza, sfruttando la gestione della memoria sicura del linguaggio Rust e le potenzialità del sandboxing. Ora, grazie a una nuova opzione, è possibile sfruttare il motore glycin all’interno della tradizionale libreria GdkPixbuf, senza necessità di modificare il software esistente.

Il cambiamento avviene in modo trasparente: la libreria continua a far funzionare i loader ereditati, ma glycin viene preferito in base all’ordine alfabetico. Questo consente agli utenti e alle distribuzioni di beneficiare subito dei miglioramenti di sicurezza pur mantenendo compatibilità e stabilità. Esiste già la possibilità di compilare GdkPixbuf attivando glycin tramite opzioni come -Dbuiltin_loaders=glycin, richiedendo però che le librerie libglycin e i relativi loader siano presenti durante l’esecuzione.
Le ragioni di uno sforzo così ambizioso affondano le loro radici in problemi ben noti: decodificatori di formati come WebP e TIFF hanno mostrato in passato vulnerabilità critiche, persino capace di esecuzione di codice remoto. Per oltre 25 anni GdkPixbuf ha servito GNOME, ma il mondo dei decoder è da sempre terreno fertile per bug di memoria. Adottare Rust e il sandboxing minimizza questi rischi e introduce robustezza nelle operazioni di parsing e rendering. Un’adozione così radicale comporta alcune limitazioni. Al momento glycin funziona solo su Linux, a causa della dipendenza da tecnologie di sandboxing come bubblewrap (o Flatpak). Su Snaps o in ambienti CI senza sandbox, potrebbero servire configurazioni particolari. Inoltre, non tutti i sottotipi di formati come TIFF sono ancora supportati: alcuni rari casi potrebbero non funzionare e in questi scenari GdkPixbuf torna ai loader tradizionali.
Ma i vantaggi non si limitano alla sicurezza. Glycin apporta numerosi miglioramenti qualitativi: una migliore gestione dei colori, con supporto HDR e profili ICC; accesso semplificato ai metadati (Exif, XMP); strumenti di editing base integrati direttamente (come crop e rotazione), mantenendo qualità e metadata. Inoltre le implementazioni in Rust sono spesso più veloci e, grazie all’esecuzione in processi separati, un crash del loader non blocca l’applicazione principale. È anche possibile limitare la memoria utilizzata dai loader stessi, riducendo l’impatto di immagini ostinate o malformate.
In sostanza, la transizione verso glycin dentro GdkPixbuf rappresenta un passaggio cruciale per GNOME: unendo la continuità con l’ecosistema esistente e tracciando una strada solida verso un futuro più sicuro, efficiente e versatile. Gli sviluppatori di distribuzioni e gli utenti tecnici sono invitati a testare questa funzione nel ciclo di sviluppo di GNOME 49, per individuare problemi e contribuire a un cambiamento profondo e ben radicato.