Rust更新u128、i128資料型別記憶體對齊,確保與C語言一致
· 2024-04-03

Rust開發團隊修正u128、i128資料型別在x86架構上的對齊問題,確保與C語言完全相容,不過卻可能會增加記憶體占用

Rust開發團隊解決了長期以來與C語言在x86-32和x86-64架構上,處理128位元整數對齊(Alignment)上的不一致。採用LLVM 18的Rust現在處理i128、u128資料型別,會與所有版本的GCC,以及Clang 18以上版本相容。

Rust開發團隊解決了u128、i128資料類型,在記憶體中的布局問題,這個問題涉及資料型別在記憶體中的對齊方式。所謂的記憶體對齊,是指資料型別被允許放置的記憶體地址規範,對齊方式可以依據需求變化,像是一個8位元組大小的整數,可以儲存在任意記憶體地址,而64位元電腦系統可能會選擇採用8位元組的對齊方式。

在Rust與C語言中,針對u128、i128資料型別在x86-32和x86-64架構上的對齊方式,長期以來存在不一致。這種不一致來自於兩個實作的對齊要求不同,在C語言中,__int128(相當於Rust的u128、i128)的對齊要求遵循該平臺應用程式二進位介面(ABI)的規範,代表著在x86-64系統上,__int128的對齊可能被要求為16位元組,目的是最大程度提高存取這些資料型別的效率。

Rust在早期版本中,對於u128、i128的對齊不完全遵循C的ABI規範,導致在部分情況下,這些資料型別的對齊方式與C不一樣,使得外部函式介面(FFI)呼叫時可能出現難以預料的行為或是效能問題。

為了解決與C語言在處理u128、i128資料型別對齊不一致的問題,Rust進行了調整,現在使資料型別對齊方式與C保持一致,而由於資料類型在記憶體中的布局更加可預測,減少了潛在轉換或是對齊物的問題,因此直接提高了外部函式介面的相容性和效能。不過,也因為這些類型現在需要更大的對齊空間,可能導致程式碼的記憶體占用增加。

對大多數Rust開發者來說,這次更改並不會有太大的影響,但是如果開發者在程式碼中直接假設這些類型的對齊而沒有使用align_of,或是在外部函式介面中使用這些資料型別,卻忽略improper_ctypes*的Lint,則開發者可能會需要更新程式碼,避免發生潛在的問題。

從Rust 1.77開始,開發者在外部函式介面中使用128位元整數時會相對安全,而隨著1.78版本更新LLVM,開發者就能獲得更多操作確定性。

Popular articles
PropellerAds Positions Itself as a Go-To Traffic Source for iGaming Advertisers Ahead of a High-Demand Season
Marketing
GAT Expo CDMX 2026 Kicks Off Today in Mexico with a Sold-Out Opening Reception at Big Bola Casino Santa Fe
Marketing
Institutional Academy that exceeded expectations marked the opening of GAT CDMX
Online Game
That’s a Wrap: AffPapa Conference Madrid 2026 Highlights
Online Game
Super PAC Raises $48 Million: Sports Betting Forces Ramp Up Political Push
Regulation
1spin4win releases unique slot Don Catleone Hold and Win featuring gangster cats
Online Game
1spin4win grows its Latin American presence by partnering with Fortuna Juegos
Online Game
B2B Tech Infrastructure Gains Momentum in Philippine Gaming Sector
Southeast Asia
GAT Expo Puerto Rico Will Pulse with the New Era of Gaming in the Caribbean
Marketing
Indiana online casino bill stalls in House committee
Regulation
What’s on the SBC Summit Conference Agenda in 2026?
Marketing
Manila delivers: Highlights from SiGMA Asia 2026 
Southeast Asia
New Jersey July Gambling Revenue Hits $606M, Sweeps Casinos Banned
Regulation
Full House at GAT Expo Cartagena 2026 Academic Agenda
Online Game
SBC Summit Canada to Make Player Safety a Key Pillar of 2026 Agenda
Marketing
Home
Game
Cooperation
Find
My