Modifiche in Fedora 42 per sviluppatori
Il framework di verifica del runtime di Copilot
Fedora 42 fornisce il link: https://copilot-language.github.io/[Copilot Language and Runtime Verification System] è un framework di verifica runtime basato su flussi per la generazione di codice C in tempo reale, sviluppato per la NASA. Permette agli utenti di scrivere programmi concisi in modo semplice ma potente utilizzando un approccio basato su flussi.
I programmi possono essere interpretati a scopo di test o tradotti in codice C99 per essere incorporati in un progetto o come applicazione autonoma. Il backend C99 garantisce che l’output sia costante in memoria e nel tempo, rendendolo adatto a sistemi con requisiti di real-time elevati.
Puoi iniziare installando il pacchetto ghc-copilot
. Per ulteriori informazioni, consulta la seguente documentazione upstream:
Ruby 3.4
L’ultima versione stabile di questo linguaggio di programmazione è ora disponibile in Fedora 42. Tra le modifiche più importanti:
-
Il parser predefinito è stato modificato da parse.y a Prism per migliorare la manutenibilità, la tolleranza agli errori, la portabilità e le prestazioni.
-
Il compilatore YJIT offre ora prestazioni migliori nella maggior parte dei benchmark sia sulle architetture CPU x86-64 che arm64.
-
La libreria socket include Happy Eyeballs versione 2 per fornire connessioni di rete efficienti e affidabili, adattate agli ambienti Internet moderni.
-
Il passaggio di blocco non è più consentito nell’indice.
-
Il nome di primo livello
::Ruby
è ora riservato. -
rb_newobj
erb_newobj_of
(e le macro corrispondentiRB_NEWOBJ
,RB_NEWOBJ_OF
,NEWOBJ
,NEWOBJ_OF
) sono stati rimossi. -
Rimossa la funzione deprecata
rb_gc_force_recycle
.
Per maggiori dettagli, vedere il link: note di rilascio upstream.
PHP 8.4
L’ultima versione stabile di questo linguaggio di programmazione è ora disponibile in Fedora 42. Tra le modifiche più importanti:
-
Hook di proprietà per supportare proprietà calcolate che possono essere comprese in modo nativo da IDE e utility statiche senza la necessità di commenti docblock.
-
Ora è possibile controllare l’ambito di scrittura di una proprietà indipendentemente dall’ambito di lettura della proprietà.
-
Il nuovo attributo
#[\Deprecated]
. -
Nuove funzioni
array_find()
,array_find_key()
,array_any()
earray_all()
-
Nuove sottoclassi
Pdo\Dblib
,Pdo\Firebird
,Pdo\MySql
,Pdo\Odbc
,Pdo\Pgsql
ePdo\Sqlite
Per maggiori dettagli, vedere il link: note sulla versione upstream.
Aggiornamento della catena degli strumenti GNU
La toolchain GNU in Fedora 41 è stata aggiornata a:
-
GNU C Compiler (gcc) 15
-
Utilità binarie GNU (binutils) 2.44
-
Libreria GNU C (glibc) 2.41
-
Debugger GNU (gdb) 15+
Vedere anche le note di rilascio upstream per GCC, Binutils, GLibC NEWS e GDB NEWS.
LLVM 20
I sottoprogetti LLVM in Fedora sono stati aggiornati alla versione 20.
È stata apportata una modifica alla versione soname per le librerie llvm ed è stato aggiunto un pacchetto compatibile llvm19
per garantire che i pacchetti che attualmente dipendono dalle librerie clang e llvm versione 19 continuino a funzionare.
Altri cambiamenti degni di nota:
-
Modifiche al prefisso di installazione: il prefisso di installazione per tutti i nuovi pacchetti llvm sarà
/usr/lib64/llvm$VERSION/
invece di/usr/
. Verranno aggiunti collegamenti simbolici per ogni binario e libreria a/usr/
che puntano al binario corrispondente in/usr/lib64/llvm$VERSION/
. L’obiettivo di questa modifica è ridurre le differenze tra le versioni compatibili e non compatibili, in modo che sia più facile per i pacchetti che dipendono da llvm passare dall’una all’altra. -
Unione di altri pacchetti in
llvm
: in Fedora 41, abbiamo unito i pacchetticlang
,libomp
,compiler-rt
,lld
,python-lit
elldb
nell’SRPM dillvm
. Per Fedora 42, uniremo anchellvm-bolt
,polly
,libcxx
emlir
nell’SRPM dillvm
.
Haskell GHC 9.8 e Stackage LTS 23
Per Fedora 42, il pacchetto principale del compilatore GHC Haskell è passato dalla versione 9.6.6 all’ultima versione stabile 9.8.4 (ribasando il pacchetto ghc dal pacchetto ghc9.8). Inoltre, i pacchetti Haskell presenti nel Stackage (la distribuzione stabile del pacchetto sorgente di Haskell) sono stati aggiornati dalle versioni presenti nel LTS 22 all’ultima versione disponibile nel LTS 23. I pacchetti Haskell non presenti in Stackage sono stati aggiornati all’ultima versione disponibile nel repository upstream Hackage.
Per informazioni complete su questa versione, vedere il collegamento:https://downloads.haskell.org/~ghc/9.8.4/docs/users_guide/9.8.4-notes.html[note sulla versione upstream] e il collegamento:https://gitlab.haskell.org/ghc/ghc/-/wikis/migration/9.8[guida alla migrazione].
Golang 1.24
L’ultima versione stabile del linguaggio di programmazione Go è ora disponibile in Fedora 42. Tra le modifiche più importanti:
-
I moduli Go ora possono tenere traccia delle dipendenze eseguibili utilizzando le direttive
tool
ingo.mod
. -
Il nuovo flag
-tool
per go get fa sì che una direttiva tool venga aggiunta al modulo corrente per i pacchetti denominati, oltre ad aggiungere le direttive require. -
Il nuovo meta-pattern
tool
si riferisce a tutti gli strumenti del modulo corrente. Può essere utilizzato per aggiornarli tutti congo get tool
o per installarli nella directory GOBIN congo install tool
. -
Gli eseguibili creati da
go run
e il nuovo comportamento digo tool
vengono ora memorizzati nella cache di build di Go. Questo velocizza le esecuzioni ripetute, a scapito però dell’aumento delle dimensioni della cache. -
I comandi
go build
ego install
ora accettano il flag-json
che segnala l’output di build e gli errori come output JSON strutturato sullo standard output. Per i dettagli sul formato di reporting, vederego help buildjson
. -
Inoltre,
go test -json
ora segnala l’output di build e gli errori in formato JSON, intervallati dal risultato del test in formato JSON. Questi sono distinti dai nuovi tipiAction
, ma se causano problemi in un sistema di integrazione di test, è possibile ripristinare l’output di build in formato testo con GODEBUG impostandogotestjsonbuildtext=1
. -
La nuova variabile d’ambiente
GOAUTH
offre un modo flessibile per autenticare i recuperi di moduli privati. Per ulteriori informazioni, consultarego help goauth
. -
Il comando
go build
ora imposta la versione del modulo principale nel binario compilato in base al tag del sistema di controllo versione e/o al commit. Il suffisso+dirty
verrà aggiunto in caso di modifiche non ancora committate. Utilizzare il flag-buildvcs=false
per omettere le informazioni sul controllo versione dal binario. -
La nuova impostazione GODEBUG
toolchaintrace=1
può essere utilizzata per tracciare il processo di selezione della toolchain del comando go.
Per maggiori informazioni, vedere il note di rilascio upstream.
Tcl/Tk 9
Tcl (Tool Command Language) e Tk (TCL graphical toolkit) sono stati ribasati alla versione 9 in Fedora 42. Ci sono alcune incompatibilità importanti e non è realistico portare tutti i pacchetti dipendenti, quindi sono stati forniti pacchetti compatibili Tcl/Tk 8 (tcl8
e tk8
).
Le nuove funzionalità includono:
-
Capacità a 64 bit: valori di dati superiori a 2 Gb.
-
Unicode e codifiche: gamma completa di punti di codice, codifiche aggiunte, profili di codifica per gestire I/O e altro ancora.
-
Accesso alle funzionalità del sistema operativo: notifiche, stampa e sistemi tray.
-
Grafica vettoriale scalabile: supporto parziale nelle immagini, ampio utilizzo per abilitare widget scalabili e aspetti dei temi.
-
Funzionalità e convenzioni della piattaforma: numerosi miglioramenti, tra cui il supporto dei gesti a due dita, ove disponibile.
Per maggiori informazioni su questa versione, vedere il collegamento:https://www.tcl-lang.org/software/tcltk/9.0.html[note sulla versione upstream].
Generatore di dipendenze dell’estensione GNOME Shell
Fedora 42 fornisce un nuovo generatore di dipendenze per le estensioni di GNOME Shell, confezionato come gnome-shell-extension-rpm-macros
.
Le estensioni di GNOME Shell includono un file metadata.json
che elenca le versioni supportate di GNOME Shell. In precedenza, questi dati non venivano utilizzati in Fedora durante la creazione del pacchetto di un’estensione, a meno che il responsabile del pacchetto non trasferisse esplicitamente queste informazioni alla specifica e non le mantenesse aggiornate.
A partire da Fedora 42, l’RPM binario dichiara automaticamente la sua dipendenza dalle versioni corrette di GNOME Shell, garantendo che dopo la ricostruzione di massa si rileverà se alcune estensioni necessitano di essere aggiornate, perché verranno installate automaticamente. Questo si traduce in un’esperienza utente migliorata per gli utenti Fedora, poiché le estensioni installate hanno ora maggiori probabilità di funzionare.
Aggiornamento di Intel Compute Runtime e interruzione dell’hardware
I pacchetti intel-compute-runtime
e intel-igc
sono stati ribasati alle ultime versioni upstream, fornendo supporto per il nuovo hardware Intel. Tuttavia, si noti che queste versioni più recenti eliminano il supporto di elaborazione per le GPU Intel precedenti al 2020 (gen 12 e precedenti) - vedere il link: https://github.com/intel/compute-runtime/blob/master/LEGACY_PLATFORMS.md[questo file] per un elenco delle architetture eliminate.
Questa modifica non riguarda intel-media-driver
incluso nel set di pacchetti predefinito, che per ora continua a supportare le vecchie generazioni di hardware nei principali rami di sviluppo.
JDK legacy di terze parti
In Fedora 42, i pacchetti java
e java-devel
, provides
e requires
, sono stati modificati per rendere obsoleti tutti i JDK LTS non di sistema. In pratica, questo significa:
-
java-1.8.0-openjdk
,java-11-openjdk
ejava-17-openjdk
sono ora deprecati in Fedora 39, 40 e 41. Verrà visualizzato un messaggio di avviso al momento dell’utilizzo. -
java-1.8.0-openjdk
,java-11-openjdk
ejava-17-openjdk
sono ritirati in Fedora 42.
Chi ha bisogno di questi pacchetti dovrebbe usare il pacchetto adoptium-temurin-java-repository
, che abilita il repository Adoptium Temurin, che a sua volta consente di installare i seguenti pacchetti:
-
temurin-8-jdk
-
temurin-8-jre
-
temurin-11-jdk
-
temurin-11-jre
-
temurin-17-jdk
-
temurin-17-jre
-
temurin-21-jdk
-
temurin-21-jre
Il pacchetto adoptium-temurin-java-repository
è disponibile da Fedora 39 in poi.
Per informazioni più dettagliate, consultare il pagina delle modifiche sul Wiki di Fedora. Un elenco dei problemi noti è disponibile al GitHub.
Setuptools 74
Fedora 42 aggiorna il pacchetto pyhon3-setuptools
alla versione 74.
Si noti che questa versione non è compatibile al 100% con le versioni precedenti. In particolare, la versione 72.0.0 ha rimosso il supporto per il comando setup.py test
(deprecato da 5 anni). Questa è una modifica significativa e i pacchetti Fedora che utilizzano il comando setup.py test
durante la compilazione devono essere adattati per utilizzare un test runner diverso, come unittest
, pytest
, ecc.
Per informazioni su questa versione, vedere il collegamento:https://setuptools.pypa.io/en/stable/history.html#v74-1-3[documentazione upstream].
NumPy aggiornato alla versione 2
Il pacchetto NumPy è stato aggiornato dalla versione 1.26 alla 2.2.4. L’aggiornamento apporta numerosi miglioramenti alla libreria.
Consultare il documentazione upstream per un elenco delle modifiche, una guida alla migrazione e consigli per gli autori dei pacchetti downstream. È disponibile anche un blogpost degli sviluppatori di NumPy che illustra alcune delle modifiche più sostanziali introdotte nella versione 2.x.
Django 5.1
Lo stack Django è stato aggiornato alla versione 5.1 in Fedora 42.
Analogamente all’approccio di pacchettizzazione per l’interprete Python stesso, Fedora sta passando a un singolo RPM sorgente per ogni versione principale di Django. La versione principale inizialmente fornita con una determinata release di Fedora avrà pacchetti binari senza suffisso (ad esempio python3-django
), mentre qualsiasi versione più recente o precedente avrà pacchetti binari con suffisso (ad esempio python3-django5
). I pacchetti con suffisso (sorgente e binario) elencheranno solo la versione principale (ad esempio python-django5
invece di python-django5.1
).
Per informazioni sulla versione 5.1, vedere il collegamento:https://docs.djangoproject.com/en/5.2/releases/5.1/[note sulla versione upstream].
Ritiro di Python 3.8
Il pacchetto python3.8
verrà ritirato senza sostituzione da Fedora Linux 42. Python 3.8 ha raggiunto la fine del ciclo di vita upstream il 07/10/2024. RHEL 8 Python 3.8 Stream è stato ritirato da maggio 2023. Debian Buster aveva Python 3.7, Bullseye ha 3.9. Ubuntu 20.04 LTS (Focal Fossa) ha Python 3.8, ma il supporto standard terminerà ad aprile 2025, data in cui verrà rilasciata anche Fedora 42. Python 3.8 è stato mantenuto in Fedora solo per consentire agli utenti Fedora di testare il proprio software, ma con il ritiro di Python anche da altre distribuzioni, questo caso d’uso non è più rilevante.
Si noti che python3.6
rimarrà disponibile nel prossimo futuro per supportare gli sviluppatori che puntano a RHEL 8.
Ritiro di Py03 v0.19, v0.20 e v0.21
I pacchetti per le versioni obsolete di PyO3 (v0.21, v0.20 e v0.19), i binding Rust per CPython e PyPy, sono stati rimossi da Fedora. Tutti i pacchetti Python che contengono estensioni Python native scritte in Rust sono ora compilati con PyO3 v0.22 o versioni successive, offrendo il supporto ufficiale per Python 3.13 e/o il supporto per l’esecuzione su un interprete Python "free-threaded".
python-pytest-runner è ora deprecato
Il pacchetto python-pytest-runner
(python3-pytest-runner
) è deprecato in Fedora 42 perché è stato deprecato upstream dal 2019 e il repository upstream è stato archiviato dal 2023. Si consiglia ai pacchetti dipendenti di passare direttamente all’utilizzo di pytest
.
Per effettuare la migrazione, segui questi passaggi:
-
Rimuovi
pytest-runner
dasetup_requires
, preferibilmente rimuovendo l’opzionesetup_requires
. -
Rimuovere
pytest
e qualsiasi altro requisito di test datests_require
, preferibilmente rimuovendo l’opzionesetup_requires
. -
Vedere il collegamento:https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/#_test_dependencies_2[Linee guida per il packaging di Fedora] per informazioni su come specificare le dipendenze di test.
-
Esegui i test con
pytest
. -
Un’altra buona opzione è quella di configurare un
tox.ini
accanto al tuosetup.cfg
. https://tox.readthedocs.io/en/latest/
Ritiro dello Zbus v1
I pacchetti per la v1 del pacchetto zbus
(e i pacchetti per la v2 del pacchetto zvariant
) sono stati ritirati da Fedora 42. I pacchetti dipendenti devono essere trasferiti a una versione non obsoleta di queste librerie (ad esempio zbus v4 o v5) o ritirati anch’essi.
I pacchetti della libreria Rust non sono pensati per essere installati sui sistemi degli utenti finali e vengono installati quasi esclusivamente in ambienti di compilazione temporanei (ad esempio chroot fittizi), quindi questa modifica non dovrebbe avere alcun impatto sugli utenti finali.
gtk3-rs è ora deprecato
I binding Rust per GTK3 sono obsoleti e ufficialmente non più mantenuti. I relativi pacchetti sono stati contrassegnati come deprecati per impedire l’aggiunta di nuovi pacchetti che dipendono da essi in Fedora, e saranno rimossi da una versione futura.
Want to help? Learn how to contribute to Fedora Docs ›