Documentation for a newer release is available. View Latest

Novità in Fedora 43 per gli sviluppatori

Python 3.14

Lo stack Python in Fedora è stato aggiornato dalla versione 3.13 alla 3.14, l’ultima release principale del linguaggio di programmazione Python.

Per ulteriori informazioni, consulta il link: https://docs.python.org/dev/whatsnew/3.14.html#what-s-new-in-python-3-14, e in particolare la sezione https://docs.python.org/dev/whatsnew/3.14.html#porting-to-python-3-14.

python-async-timeout è ora deprecato

Il pacchetto python-async-timeout è stato deprecato in Fedora. Gli sviluppatori sono incoraggiati a migrare a asyncio.Timeout in Python 3.11+ per una migliore compatibilità con la libreria standard.

python-nose rimosso

Il pacchetto python3-nose è stato rimosso (retired) a causa della mancanza di sviluppo a monte (upstream) per un lungo periodo.

Aggiornamento della toolchain GNU

L’installer installa il pacchetto kbd-legacy per supportare i layout di tastiera non-ASCII. (https://bugzilla.redhat.com/show_bug.cgi?id=1919483)

  • GNU C Compiler (gcc) 15.2

  • GNU Binary Utilities (binutils) 2.45

  • GNU C Library (glibc) 2.42

  • GNU Debugger (gdb) 16.3

Vedere inoltre le note di rilascio ufficiali per GCC, Binutils, GLibC NEWS e GDB NEWS.

Deprecazione del linker Gold

Il linker Gold è stato deprecato e alla fine verrà rimosso completamente da Fedora a causa dell’interruzione dello sviluppo upstream. Gli sviluppatori hanno ancora a disposizione tre altri linker (ld.bfd, lld e mold), quindi le alternative non mancano.

Golang 1.25

L’ultima versione stabile del linguaggio di programmazione Go è ora disponibile in Fedora 43.

For more information, see the upstream release notes.

I pacchetti Golang sono ora sottoposti a "vendoring" per impostazione predefinita

Fedora ora utilizza le dipendenze vendored come opzione predefinita e preferita per la creazione di applicazioni Golang, invece di fare affidamento su dipendenze pre-pacchettizzate. Ciò include l’adozione di Go Vendor Tools, un nuovo insieme di strumenti per gestire la scansione delle licenze, generare un’espressione SPDX cumulativa per tutte le dipendenze e creare archivi vendor riproducibili. Questa modifica mira a semplificare la pacchettizzazione delle applicazioni Golang in Fedora. Gli utenti non dovrebbero riscontrare alcun cambiamento nel comportamento del sistema.

LLVM 21

I sottoprogetti LLVM in Fedora sono stati aggiornati alla versione 21. C’è stato un cambio di versione soname per le librerie LLVM ed è stato aggiunto un pacchetto di compatibilità llvm20 per garantire che i pacchetti che attualmente dipendono dalle librerie clang e llvm versione 20 continuino a funzionare.

Altre modifiche degne di nota includono:

  • Compilato con PGO: Il pacchetto `llvm`è ora compilato con l’ottimizzazione PGO (Profile-Guided Optimization), pertanto gli utenti delle sue librerie e dei suoi binari dovrebbero riscontrare miglioramenti nelle prestazioni. Ad esempio, `clang`dovrebbe essere notevolmente più veloce nella compilazione di file C e C++.

  • Annullamento delle modifiche al prefisso da LLVM 20: questa modifica è stata apportata in rawhide e f42 dopo il rilascio di f42, quindi è già stata completata. Vedere https://pagure.io/fesco/issue/3414.

Ulteriori informazioni sono disponibili nelle note di rilascio a monte.

Ruby on Rails 8.0

Lo stack Ruby on Rails è stato aggiornato dalla versione 7.0 di Fedora 42 alla versione 8.0 di Fedora 43. Tra le modifiche principali si includono:

  • Trifecta di nuovi adapter basati su database chiamati Solid Cable, Solid Cache e Solid Queue (al momento non facenti parte di Fedora).

  • SQLite è pronto per l’uso in produzione.

  • Sprockets replaced with Propshaft.

  • Generazione delle basi dell’autenticazione.

Vedi le note di rilascio a monte per ulteriori informazioni.

Tomcat 10.1

The Tomcat application server has been upgraded to version 10.1 in Fedora 43.

"Le modifiche in questa versione includono:"

  • Apache Tomcat 10.1.x richiede Java 11 o versioni successive.

  • Modifiche drastiche alle API di specifica: esiste un cambiamento radicale significativo tra Tomcat 9.0.x e Tomcat 10.1.x. Il pacchetto Java utilizzato dalle API di specifica è passato da javax.* a jakarta.*. Sarà necessario ricompilare le applicazioni web utilizzando le nuove API. Per i dettagli, consulta la pagina della modifica sul Wiki di Fedora.

  • Altre modifiche alle specifiche dell’API:

    • Jakarta Servlet 6.0 API: il pacchetto Java è cambiato da javax.servlet a jakarta.servlet. È stato aggiunto un nuovo metodo, Cookie.setAttribute(String name, String value). Il processo di decodifica e normalizzazione degli URI è stato chiarito. Sono stati aggiunti nuovi metodi e classi per fornire l’accesso a identificatori univoci per la richiesta corrente e/o la connessione associata.

    • Jakarta Server Pages 3.1 API: The Java package has changed from javax.servlet.jsp to jakarta.servlet.jsp. Added an option to raise a PropertyNotFoundException when an EL expression contains an unknown identifier.

    • Jakarta Expression Language 5.0: il pacchetto Java è cambiato da javax.el a jakarta.el. L’API EL ora utilizza i generics dove appropriato. Il metodo deprecato MethodExpression.isParmetersProvided() è stato rimosso dall’API.

    • Jakarta WebSocket 2.1: il pacchetto Java è cambiato da javax.websocket a jakarta.websocket. Il packaging dei JAR dell’API è stato modificato per rimuovere le classi duplicate. L’API server ora ha una dipendenza dal JAR dell’API client.

    • Jakarta Authentication 3.0: il pacchetto Java è cambiato da javax.security.auth.message a jakarta.security.auth.message.

  • API interne di Tomcat: sebbene le API interne di Tomcat 10 siano ampiamente compatibili con quelle di Tomcat 9, sono state apportate numerose modifiche a livello di dettaglio e non vi è compatibilità binaria. Gli sviluppatori di componenti personalizzati che interagiscono con le parti interne di Tomcat dovrebbero consultare i JavaDoc delle API pertinenti.

  • Impostazioni predefinite di web.xml: il file conf/web.xml imposta la codifica dei caratteri predefinita per richieste e risposte a UTF-8.

  • Gestione della sessione: la persistenza della sessione al riavvio è stata disabilitata per impostazione predefinita. Può essere riabilitata a livello globale nel file conf/context.xml oppure per singola applicazione web.

  • HTTP/2: le impostazioni di configurazione che risultavano duplicate tra i connettori HTTP/1.1 e HTTP/2 sono state rimosse dal connettore HTTP/2, il quale ora le erediterà dal connettore HTTP/1.1 associato.

  • Logging: l’implementazione della registrazione (logging) ora crea i file di log solo nel momento in cui c’è effettivamente qualcosa da scrivervi all’interno.

  • Il modulo Payloads ora gestisce l’installazione di RPM-OStree. (https://github.com/rhinstaller/anaconda/pull/3234)

Consulta il changelog upstream per ulteriori informazioni.

Haskell GHC 9.8 e Stackage LTS 23

Per Fedora 42, il pacchetto principale del compilatore Haskell GHC è stato aggiornato dalla versione 9.6.6 all’ultima release stabile 9.8.4 (effettuando il rebase del pacchetto ghc a partire dal pacchetto ghc9.8). Insieme a questo, i pacchetti Haskell in Stackage (la distribuzione stabile di pacchetti sorgente Haskell) sono stati aggiornati dalle versioni presenti in LTS 22 all’ultima release LTS 23. I pacchetti Haskell non inclusi in Stackage sono stati aggiornati alla versione più recente e appropriata disponibile nel repository di pacchetti upstream link:++https://hackage.haskell.org/

Per informazioni complete su questa release, consulta le note di rilascio ufficiali e la guida alla migrazione.

Il linguaggio di programmazione Hare

Fedora 43 introduce i pacchetti per Hare, un linguaggio di programmazione di sistema progettato per essere semplice, stabile e robusto. Hare utilizza un sistema di tipi statico, una gestione manuale della memoria e un runtime minimale. È particolarmente indicato per la scrittura di sistemi operativi, strumenti di sistema, compilatori, software di rete e altre attività di basso livello ad alte prestazioni.

La toolchain di Hare su Fedora include:

  • hare (build driver)

  • harec (front-end del compilatore, già disponibile in Fedora)

  • qbe (back-end del compilatore, già disponibile in Fedora)

  • binutils(per l’assemblaggio e il linking statico)

  • gcc(per il linking dinamico; funziona anche con altri compilatori C)

La toolchain di Hare può avere come target le architetture x86_64, aarch64 e riscv64, ed è configurata per fare affidamento predefinito su `gcc-<arch>-linux-gnu`e`binutils-<arch>-linux-gnu`per la compilazione incrociata (cross-compilation).

Il pacchetto sorgente di `hare`include quanto segue:

  • hare(driver di compilazione, utility `haredoc`e manuali)

  • hare-stdlib (standard library)

  • hare-rpm-macros (utility di packaging)

Inoltre, viene fornito un pacchetto hare-update per assistere gli sviluppatori Hare nella gestione delle modifiche radicali (breaking changes) al rilascio di nuove versioni di Hare, finché il linguaggio e la sua libreria standard non diventeranno stabili.

Per ulteriori informazioni su Hare, consultare la documentazione a monte e la specifica. Sul sito ufficiale è inoltre disponibile un tutorial.

Java

La versione 43 rende disponibile`java-25-openjdk`in Fedora, l’ultima versione LTS rilasciata a settembre 2025.

java-21-openjdk è ancora disponibile in F43 e lo sarà anche in F44. Verrà rimosso in F45.

In Fedora 43, entrambe le versioni di OpenJDK forniscono "java" con la stessa priorità. Non esiste più un JDK di "sistema" o "predefinito" imposto. Gli utenti possono (e dovrebbero) scegliere quale versione utilizzare, potendo combinare diverse versioni di Java per lo sviluppo e l’esecuzione. Più istanze di uno stesso software, come Tomcat, possono essere eseguite con versioni di Java differenti. Convenzionalmente, è probabile che la versione più recente diventi quella predefinita a livello di sistema, ma non vi è alcuna garanzia in merito. Utilizzare il comando alternatives --config java per selezionare la versione da utilizzare come predefinita per l’intero sistema.

L’aggiornamento dalla release 42 con java-21-openjdk installato si limita ad aggiornare Java 21 alla versione prevista per la release 43. L’avanzamento di versione non esegue automaticamente l’aggiornamento a Java 25; l’amministratore deve installare quest’ultima separatamente.

Per ulteriori informazioni su Java 25, consultare il JDK 25 Features and Release notes.

Per i dettagli tecnici di questa modifica, consultare la pagina dedicata al cambiamento.

TBB2022.2.0

Il pacchetto `tbb`contiene la libreria Intel oneAPI Threading Building Blocks, utilizzata per suddividere i calcoli in attività parallele. In Fedora 43, questo pacchetto è stato aggiornato dalla versione 2022.0.0 alla versione 2022.2.0.

A causa di una modifica dell’ABI (Application Binary Interface), i pacchetti non appartenenti a Fedora che utilizzano tbb dovranno probabilmente essere ricompilati. La versione 2022.2.0 è compatibile a livello di API con la versione 2022.0.0, quindi una semplice ricompilazione dovrebbe essere sufficiente.

Per informazioni dettagliate, consultare le note di rilascio ufficiali di TBB 2022.1.0 e TBB 2022.2.0.

Perl 5.42

Fedora 43 include Perl 5.42.0, una nuova versione stabile che si concentra sul miglioramento delle prestazioni, sul perfezionamento delle funzionalità esistenti e sull’aggiunta di nuove capacità sperimentali.

Miglioramenti principali

  • Nuovi operatori any e all: sono stati introdotti due nuovi keyword sperimentali, any e all, per un’elaborazione più efficiente delle liste. Sono progettati per il "short-circuit" (cortocircuito), quindi interrompono l’elaborazione della lista non appena il risultato è noto. Essendo compilati direttamente nel core, risultano più veloci delle loro controparti presenti nel modulo List::Util.

  • Metodi lessicali: è ora possibile dichiarare metodi privati e lessicali utilizzando la sintassi my method. Il nuovo operatore >& consente di chiamare questi metodi, garantendo che siano visibili solo all’interno del rispettivo ambito (scope) di definizione.

  • source::encoding Pragma: A new pragma is available to explicitly declare whether a source file is encoded in ASCII or UTF-8. This helps to catch encoding-related errors early during development.

  • Spazio dei nomi CORE:::: ampliato: le funzioni integrate come `chdir`e `rand`possono ora essere utilizzate in modo sicuro come riferimenti a subroutine di prima classe (first-class subroutine references). Ciò garantisce una maggiore flessibilità quando si passano le funzioni core come argomenti.

  • Attributo :`:writer`per i campi: quando si definiscono classi utilizzando use feature 'class', è ora possibile utilizzare l’attributo :writer sui campi scalari per generare automaticamente i metodi di accesso in scrittura (setter).

Reconsidered features

  • smartmatch e switch reintegrati: le funzionalità switch e smartmatch (~~), la cui rimozione era stata precedentemente pianificata, hanno ottenuto una proroga indefinita. Sono ora disponibili, ma è necessario abilitarle tramite uno specifico flag feature.

  • Apostrofo come separatore di pacchetti: l’uso legacy del singolo apostrofo (') come separatore di pacchetti è stato ripristinato per impostazione predefinita in seguito al feedback della community. È comunque possibile controllare questo comportamento tramite un flag feature.

    • Altri aggiornamenti

  • Questa versione include inoltre miglioramenti delle prestazioni per l’operatore tr///, l’aggiornamento al supporto per Unicode 16.0 e diverse correzioni di bug relativi alla gestione delle impostazioni locali (locale), a goto e a eval.

Per informazioni più dettagliate, consultare la documentazione ufficiale perldelta per 5.42.0.

Maven 4

Maven 4 è una nuova versione principale di Maven, rilasciata dopo 15 anni di onorato servizio di Maven 3. Introduce numerosi miglioramenti, ma anche cambiamenti che rompono la compatibilità con il passato (breaking changes). Fedora 43 fornisce Maven 4 tramite il pacchetto maven4, rendendolo installabile in parallelo a Maven 3.

Consultare il post Novità di Maven 4 e la documentazione ufficiale per ulteriori dettagli.

Idris 2

Idris 2 è un linguaggio di programmazione funzionale pratico con tipi dipendenti (dependently typed), ora disponibile in Fedora 43. Si tratta di una riscrittura completa di Idris 1 (che era scritto in Haskell ed è ora deprecato) basata su un compilatore Scheme.

Per ulteriori dettagli, consultare la documentazione ufficiale, che include un elenco delle modifiche rispetto a Idris 1 e un tutorial per Idris 2.

Rust

async-std è ora deprecato

Il crate async-std non è più mantenuto ed è ora considerato deprecato a favore del crate smol.

gtk3-rs, gtk-rs-core v0.18, and gtk4-rs v0.7 are now removed

I binding Rust per GTK3 (e le librerie correlate) erano stati contrassegnati come deprecati in Fedora 43 a causa della mancanza di manutenzione a monte. In Fedora 43, sono stati completamente rimossi.

Debuginfod IMA verification

Gli strumenti client debuginfod, utilizzati per scaricare automaticamente informazioni di debug e codice sorgente in tool come gdb, ora verificano crittograficamente l’integrità dei file scaricati dal server debuginfod di Fedora. Questa impostazione è appropriata per i normali pacchetti RPM di rilascio/aggiornamento firmati tramite Koji in Fedora. Tuttavia, se il proprio flusso di lavoro include anche pacchetti RPM Flatpak non firmati (%dist ".fc#app#"), potrebbe essere necessario rimuovere manualmente ima:enforcing dalla variabile d’ambiente $DEBUGINFOD_URLS.

Cross-compilatori Free Pascal

Fedora Linux 43 include il supporto alla cross-compilazione per il compilatore Free Pascal (FPC), attraverso diversi nuovi pacchetti. Gli utenti interessati alla cross-compilazione per MS Windows dovrebbero installare i pacchetti fpc-units-x86_64-win64 o fpc-units-i386-win32. Per la cross-compilazione da Linux verso altre architetture, è necessario installare il pacchetto fpc-units-$ARCH-linux appropriato.