供開發者的 Fedora 43 變更
Python 3.14
Fedora 中的 Python 堆疊已從 3.13 版更新至 3.14 版,這是 Python 程式語言的最新主要發行版本。
如需更多資訊,請參閱 上游「What’s new」文件,特別是 Porting to Python 3.14 章節。
GNU 工具鏈更新
Fedora 43 中的 GNU 工具鏈已更新為:
-
GNU C 編譯器(
gcc)15.2 -
GNU 二進位公用程式(
binutils)2.45 -
GNU C 函式庫(
glibc)2.42 -
GNU 除錯器(
gdb)16.3
另請參閱上游發行註記:GCC、Binutils、GLibC NEWS,以及 GDB NEWS。
Golang 1.25
Go 程式語言的最新穩定版本現已可於 Fedora 43 取得。
如需更多資訊,請參閱 上游發行註記。
Golang 套件現在預設使用 vendored
Fedora 現在在建置 Golang 應用程式時,預設且偏好使用 vendored 依賴項,而非倚賴預先打包的依賴項。這包括採用 Go Vendor Tools,一套新的工具組,負責處理授權掃描、為所有依賴項產生彙總的 SPDX 運算式,以及建立可重現的 vendor 壓縮檔。此變更旨在簡化 Golang 應用程式在 Fedora 中的打包流程。使用者不應看到任何行為上的變更。
LLVM 21
Fedora 中的 LLVM 子專案已更新至 21 版。由於 llvm 函式庫發生 soname 版本變更,已新增 llvm20 相容套件,以確保目前相依於 clang 與 llvm 20 版函式庫的套件仍可繼續運作。
其他值得注意的變更包括:
-
以 PGO 建置:
llvm套件現以 PGO 最佳化建置,因此其函式庫與可執行檔的使用者應能看到部分效能改善。例如,clang在編譯 C 與 C++ 檔案時應會明顯更快。 -
撤銷 LLVM 20 的前綴變更:此變更已在 rawhide 與 f42(於 f42 發行後)完成,因此目前已就緒。請見 https://pagure.io/fesco/issue/3414。
更多資訊請見 上游發行註記。
Ruby on Rails 8.0
Ruby on Rails 堆疊已自 Fedora 42 的 7.0 版升級至 Fedora 43 的 8.0 版。重要變更包括:
-
名為 Solid Cable、Solid Cache、Solid Queue 的三個以資料庫為後端的新 adapter(目前不屬於 Fedora)。
-
SQLite 已可用於生產環境。
-
以 Propshaft 取代 Sprockets。
-
產生驗證(authentication)基本項目。
更多資訊請參閱 上游發行註記。
Tomcat 10.1
Tomcat 應用伺服器已在 Fedora 43 升級至 10.1 版。
本版變更包括:
-
Apache Tomcat 10.1.x 需要 Java 11 或更新版本。
-
Specification API 重大破壞性變更:在 Tomcat 9.0.x 與 Tomcat 10.1.x 之間存在顯著的破壞性變更。規範 API 所使用的 Java 套件已由
javax.*變更為jakarta.*。必須針對新 API 重新編譯網頁應用程式。詳情請見 Fedora Wiki 的變更頁面。 -
其他 Specification API 變更:
-
Jakarta Servlet 6.0 API:Java 套件已由
javax.servlet變更為jakarta.servlet。新增了Cookie.setAttribute(String name, String value)方法。針對 URI 的解碼與正規化流程已有更清楚的說明。並新增方法與類別,以便存取目前請求與/或關聯連線的唯一識別子。 -
Jakarta Server Pages 3.1 API:Java 套件已由
javax.servlet.jsp變更為jakarta.servlet.jsp。新增選項可在 EL 運算式包含未知識別子時拋出PropertyNotFoundException。 -
Jakarta Expression Language 5.0:Java 套件已由
javax.el變更為jakarta.el。EL API 現在在合適之處使用泛型。已棄用的MethodExpression.isParmetersProvided()方法已自 API 移除。 -
Jakarta WebSocket 2.1:Java 套件已由
javax.websocket變更為jakarta.websocket。API JAR 的封裝方式已變更以移除重複的類別。伺服器端 API 現在相依於用戶端 API JAR。 -
Jakarta Authentication 3.0:Java 套件已由
javax.security.auth.message變更為jakarta.security.auth.message。
-
-
內部 Tomcat API:雖然 Tomcat 10 的內部 API 與 Tomcat 9 大體相容,但在細節層面已有許多變動,且並非二進位相容。撰寫與 Tomcat 內部互動的自訂元件之開發者,應檢視相關 API 的 JavaDoc。
-
web.xml預設值:conf/web.xml將預設的請求與回應字元編碼設定為 UTF-8。 -
工作階段管理:重新啟動時的工作階段持久化已預設停用。可在
conf/context.xml內全域重新啟用,或由各個網頁應用程式個別啟用。 -
HTTP/2:HTTP/1.1 與 HTTP/2 連接器之間重複的組態設定已自 HTTP/2 連接器移除;HTTP/2 連接器現在會自關聯的 HTTP/1.1 連接器繼承這些設定。
-
記錄:日誌實作現在只會在有內容要寫入時才建立日誌檔案。
-
存取日誌樣式:為了與 httpd 對齊,
%D樣式現在以微秒而非毫秒記錄請求時間。若要以毫秒記錄請求時間,請使用%{ms}T。
更多資訊請參閱 上游變更記錄。
Hare 程式語言
Fedora 43 引進了 Hare 的套件,這是一種為簡潔、穩定、可靠而設計的系統程式語言。Hare 採用靜態型別系統、手動記憶體管理與最小化的執行階段。它非常適合撰寫作業系統、系統工具、編譯器、網路軟體,以及其他低階、高效能的工作。
Fedora 上的 Hare 工具鏈包含:
-
hare(建置驅動程式) -
harec(編譯器前端,已可於 Fedora 取得) -
qbe(編譯器後端,已可於 Fedora 取得) -
binutils(用於組譯與靜態連結) -
gcc(用於動態連結;也可與其他 C 編譯器搭配)
Hare 工具鏈可目標為 x86_64、aarch64 與 riscv64 架構,並預設設定為在交叉編譯時倚賴 gcc-<arch>-linux-gnu 與 binutils-<arch>-linux-gnu。
hare 原始碼套件包含下列項目:
-
hare(建置驅動程式、haredoc工具與手冊) -
hare-stdlib(標準函式庫) -
hare-rpm-macros(打包公用程式)
此外,提供 hare-update 套件,以協助 Hare 開發者在有新版本的 Hare 發行時處理破壞性變更,直到該語言及其標準函式庫趨於穩定為止。
Java
第 43 版使 java-25-openjdk 可於 Fedora 取得,這是於 2025 年 9 月發佈的最新 LTS 版本。
java-21-openjdk 在 F43 仍可取得,且會持續提供至 F44。它將在 F45 中被移除。
在 Fedora 43 中,兩個 openjdk 版本皆同等提供「java」。已不再有「系統」或「預設」JDK。使用者可以(且應該)自行選擇要使用的版本,並可在開發與執行時混合搭配不同的 Java 版本。某個軟體的多個實例(例如 Tomcat)可以以不同的 Java 版本執行。慣例上,最新版本很可能會成為系統層面上被使用的預設版本,但並無保證。請使用 alternatives --config java 來選擇系統預設要使用的版本。
從第 42 版升級且已安裝 java-21-openjdk 的情況下,只會將 Java 21 升級至第 43 版。該升級不會自動升級至 Java 25。系統管理員必須另外安裝這些套件。
關於 Java 25 的更多資訊,請參閱 JDK 25 Features and Release notes。
此變更的技術細節請見 變更頁面。
TBB2022.2.0
tbb 套件包含 Intel 的 oneAPI Threading Building Blocks,這是一個將計算工作拆解為平行任務的程式庫。在 Fedora 43 中,此套件已自 2022.0.0 版升級至 2022.2.0 版。
由於 ABI 變更,使用 tbb 的非 Fedora 套件很可能需要重新建置。2022.2.0 版與 2022.0.0 版在 API 上相容,因此只需重新建置即可。
詳細資訊請參閱 TBB 2022.1.0 與 TBB 2022.2.0 的上游發行註記。
Perl 5.42
Fedora 43 提供 Perl 5.42.0,這是一個新的穩定發行版本,著重於提升效能、精緻化既有功能,並加入新的實驗性能力。
Core enhancements
-
新的
any與all運算子:引入兩個新的實驗性關鍵字any與all,可更有效率地處理清單。它們採用短路(short-circuit)設計,一旦結果已知便停止處理清單。它們由核心直接編譯,因此比List::Util模組中的對應實作更快。 -
詞彙範圍方法(Lexical Methods):你現在可以使用
my method語法宣告私有、具詞彙範圍的方法。新的 ->&運算子允許你呼叫這些方法,並確保它們僅在其定義的作用域內可見。 -
source::encoding編譯指示(Pragma):新增一個編譯指示,可明確宣告原始碼檔案是以 ASCII 或 UTF-8 編碼。這有助於在開發早期就偵測與編碼相關的錯誤。 -
擴展的
CORE::命名空間:像chdir與rand等內建函式現在可以安全地作為第一類(first-class)副程式參照來使用。這讓你在將核心函式作為引數傳遞時更具彈性。 -
:writer欄位屬性:當以use feature 'class'定義類別時,你現在可以在純量欄位上使用:writer屬性,自動產生 setter 存取子。
Reconsidered features
-
smartmatch與switch恢復提供:先前預計移除的switch與smartmatch (~~)功能已獲得無限期的緩刑。它們現在可用,但你必須以特定的功能旗標啟用。 -
以撇號作為套件分隔符:在社群回饋後,單一撇號(`)作為套件分隔符的舊用法已恢復為預設。你仍可透過功能旗標控制此行為。
-
Other updates**
-
-
本次發行亦包含對
tr///運算子的效能改善、Unicode 16.0 支援的更新,以及與地區設定處理、goto與eval相關的多項錯誤修正。
更多詳細資訊請參閱官方 perldelta for 5.42.0 說明文件。
Maven 4
Maven 4 是在 Maven 3 推出 15 年後的新主要版本。它帶來許多改進,但也包含破壞性變更。Fedora 43 以 maven4 套件提供 Maven 4,讓它可以與 Maven 3 並行安裝。
更多細節請見 What’s new in Maven 4? 一文,以及 上游文件。
Idris 2
Idris 2 是一種具相依型別、實用的函數式程式語言,現已可於 Fedora 43 取得。它是在 Scheme 編譯器之上對 Idris 1 的完整重寫(Idris 1 以 Haskell 撰寫,且現已棄用)。
詳細內容請見 上游文件,其中包括與 Idris 1 的差異清單,以及 Idris 2 教學。
Debuginfod IMA 驗證
debuginfod 用戶端工具(用來自動下載 debuginfo 與原始碼到如 gdb 等工具)現在會以密碼學方式驗證自 Fedora debuginfod 伺服器下載之檔案的完整性。此設定適用於一般由 Fedora koji 簽署之發行/更新 RPM。然而,若你的工作流程同時涉及未簽署的 flatpak RPM(%dist ".fc#app#"),那麼你可能需要手動自 $DEBUGINFOD_URLS 中移除 ima:enforcing。
Free Pascal 交叉編譯器
Fedora Linux 43 透過多個新套件提供 Free Pascal Compiler 的交叉編譯支援。若你想為 MS Windows 進行交叉編譯,請安裝 fpc-units-x86_64-win64 或 fpc-units-i386-win32 packages。若要在 Linux 上為其他架構進行交叉編譯,請安裝適當的 fpc-units-$ARCH-linux 套件。請注意,若你希望交叉編譯的 Pascal 程式能連結至外部函式庫,可能需要執行一些額外步驟。
Want to help? Learn how to contribute to Fedora Docs ›