IT时代网8月22日消息,据外媒8月21日报道,Rust团队推出1.98版本,重点为f32和f64浮点类型加入了“代数浮点”(algebraic floating-point)方法,同时加快整数格式化速度,并稳定多项标准库API。
新引入的代数运算方法包括algebraic_add、algebraic_sub、algebraic_mul、algebraic_div以及algebraic_rem。要理解它的意义,得回到IEEE 754标准:浮点数加法不具备严格的结合律,编译器优化时因此不能随意重排运算顺序。这个限制的代价相当直观——Rust处理简单的点积运算时,速度曾只有C++的八分之一。
代数方法给了开发者一个开口:在特定代码块中明确告知编译器,这部分可以按实数的代数性质做激进重排和并行计算。这一改动大幅增强了循环向量化(SIMD)能力,数值计算效率成倍提升,而且不会引发未定义行为。
底层工具链也有动作。1.98.0为所有原生整数类型带来了format_into方法,并同步稳定了NumBuffer类型。该方法把整数直接格式化写入预分配的透明缓冲区,完全绕过传统的动态分发,执行效率已经能与业界知名的itoa依赖库掰手腕。
另一处改动落在文档层面。新版本更新了ManuallyDrop的官方说明,为ManuallyDrop与Box的交互给出长期稳定性保证:在显式释放Box之后移动其外层ManuallyDrop包裹结构,这一操作未来将彻底摆脱未定义行为风险。
注:本文综合自IT之家等,文中包含AI辅助创作的内容。