首页
学习
活动
专区
圈层
工具
发布

Rust 1.98发布引入代数浮点运算方法

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辅助创作的内容。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O1XZtjiQDj_9KXyjFTsc0hJQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。
领券