1.77和1.78版本中`u128`/`i128`布局的变更

1.77和1.78版本中`u128`/`i128`布局的变更

💡 原文英文,约1800词,阅读约需7分钟。
📝

内容提要

Rust修复了与C在x86-32和x86-64架构上对齐128位整数的不一致问题,对大多数用户没有影响。修复可能提高运行时性能,但可能增加内存使用。

🎯

关键要点

  • Rust修复了与C在x86-32和x86-64架构上对齐128位整数的不一致问题。
  • 修复可能提高运行时性能,但可能增加内存使用。
  • 用户通常不需要担心这些变化,除非假设i128/u128的对齐或在FFI中使用这些类型时忽略不当的ctypes警告。
  • 除了x86-32和x86-64架构外,其他架构没有变化。
  • 数据类型的大小和对齐是内存排列的两个固有值。
  • Rust的原始类型默认具有最有效的对齐方式。
  • Rust的i128和u128类型在对齐上曾与C不一致,导致数据共享问题。
  • LLVM在处理128位整数作为函数参数时存在问题。
  • 解决这些问题的过程耗时较长,最终在2023年10月完成。
  • Rust 1.78及以上版本与GCC和Clang 18及以上版本完全兼容。
  • 大多数用户在使用128位整数时不会注意到这些变化,除非进行不当操作。
➡️

继续阅读