写点什么

Rust 最新版本 1.23 揭秘

  • 2018-01-15
  • 本文字数:945 字

    阅读完需:约 3 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

内存使用率的减少是 Rust 最新版本中最显著的优化,这通过避免不必要的拷贝来实现。此外,rustdoc目前使用一个兼容 CommonMark 的引擎来渲染文档。

据 Rust 团队称,通过避免为特定对象创建副本,rustc内存使用率降低了 5-10%,尽管这个数据可能随着被编译的具体程序而变化。rustc目前强制本地变量和方法参数要完全相同。这可以在 rustc将参数绑定给一个本地变量时不必再创建一份这个参数的拷贝。这个拷贝行为是原来就存在的因为本地变量和参数在 MIR 级别的不同而需要进行的遗留处理行为,并在某个时间点被移除。除了优化内存使用率,这种优化还可以通过避免同时显示本地变量和传入参数的信息而使得调试信息更加清楚。当本地变量绑定了一个可变的值时,调试信息会变得更加混乱,因为在参数没有改变的同时调试器可能会显示本地变量在变化。

另外一个有趣的变更是,rustc提供在 LLVM 中对 TrapUnreachable 的支持,这使得 LLVM 将 unreachable 指令翻译成硬件陷阱。以前,控制流可以绕过无法到达的指令,访问到内存中在这条指令之后执行的代码。现在,这个变更可以降低 unreachable 代码的未定义行为的影响。

在文档方面,rustdoc一直努力完全兼容 CommonMark。在 Rust 1.23 版本中,文档用 Rust 语法渲染器—— Hoedown 和兼容 CommonMark 的渲染引擎进行渲染。这种行为会保持一段时间,在渲染过程中如果有差别被发现,rustdoc会给出警告,从而让文档维护人员修复这些差别。在将来的版本中,兼容 CommonMark 的引擎会成为默认引擎。

Rust 1.23 版本还增强了一些库的稳定性,包括增加对原始类型的AsciiExt trait 。这意味着,u8、char 和str 不用导入 AsciiExt` trait 就可以使用它的任何方法。

Rust 的包管理器——Cargo,也进行了优化,包括支持一次性卸载多个包以及用cargo install --version 来安装某个包的特定版本

Rust 1.23 包含了许多变更和优化,可以通过运行rustup update stable 来更新。

查看英文原文: Rust 1.23 Improves Memory Usage and More


感谢罗远航对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2018-01-15 18:001863

评论

发布
暂无评论
发现更多内容

IBM Semeru Windows 下的安装 JDK 17

HoneyMoose

深度解析首个Layer3 链 Nautilus Chain,有何优势?

西柚子

解决mac电脑打开应用“意外退出”的问题 (点按“重新打开”以再次打开应用程序)

Rose

意外退出 Mac软件

面试官:如何防止 Java 源码被反编译?我:有点懵

做梦都在改BUG

Java Java源码

应该升级 JDK 到 17 了吗

HoneyMoose

深度解析首个Layer3 链 Nautilus Chain,有何优势?

股市老人

Amazon GuardDuty 的新增功能 – Amazon EBS 卷的恶意软件检测

亚马逊云科技 (Amazon Web Services)

厉害了!刷完这份 532 算法秘笈后,我成功斩获字节、快手offer

做梦都在改BUG

Java 数据结构 面试 算法

深入理解CSS Grid网页布局,并通过示例代码来演示如何使用它

兴科Sinco

前端 前端开发 网页布局 CSS Grid 网络相册

从ChatGPT到AGI还有多远?| 社区征文

轻口味

ChatGPT

字节一面:“为什么网络要分层?每一层的职责、包含哪些协议?”

做梦都在改BUG

Java 计算机网络 网络协议

热点面试题:Vue2、3 生命周期及作用?

沉浸式趣谈

JavaScript 生命周期 Vue 3 vue2 前端面试题

BetterSnapTool for Mac 帮你整理窗口,提升效率

Rose

BetterSnapTool 窗口管理软件 mac软件下载

看完这一篇,ShardingSphere-jdbc 实战再也不怕了

勇哥java实战分享

阿里内网开源:多位大佬联合撰写的Java多线程手册被我拿到了

做梦都在改BUG

Java 多线程

燃!网易架构大牛熬夜手敲千页网络协议笔记,竟在GitHub标星数万

做梦都在改BUG

Java 计算机网络 网络协议

清华AIR与英特尔开展合作,研发全新绿色数据中心解决方案

科技之家

表格检测识别技术的发展历程

合合技术团队

人工智能 算法 表格识别

在 Linux 上有哪些运行程序的方式?

蓬蒿

Shell fork Linux 上启动程序 execv

普通大专生,从面试无人问到拿下阿里offer!说说我的艰辛历程

做梦都在改BUG

Java 面试 专科

想要快速学会Blender雕刻?这些Blender雕刻技巧不要错过

Finovy Cloud

Matlab常用图像处理命令108例(一)

timerring

图像处理 数字图像处理

全面项目管理软件:Project Office 激活版

真大的脸盆

项目管理 Mac Mac 软件 项目流程

GridView(网格视图)的基本使用

芯动大师

ListView Android; girdview

OpenAI-J 如何进行测试

HoneyMoose

Okhttp 的 retrofit2 运行警告信息异常

HoneyMoose

学会用规则引擎Drools,让你早点下班

JAVA旭阳

Java drools

苹果办公必备远程工具:Royal TSX使用教程

Rose

SSH Royal TSX 教程 Royal TSX 破解 Royal TSX mac下载

云边端协同时序数据库的挑战与解决方案

CnosDB

时序数据库 开源社区 CnosDB 云边端协同

图数据结构-路径查找

alexgaoyh

DFS 图数据库 知识图谱 路径规划 三元组

Rust最新版本1.23揭秘_语言 & 开发_Sergio De Simone_InfoQ精选文章