写点什么

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:002230

评论

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

软通动力 OpenHarmony 师资培训班隆重开启,聚焦高校教师赋能

开放原子开源基金会

阿里云-云开发平台存储篇——给应用接上后端存储能力

若尘

阿里云 云开发 8月日更

【Vue2.x 源码学习】第二十八篇 - diff算法-问题分析与patch优化

Brave

源码 vue2 8月日更

Vue进阶(十四):config/index.js 配置文件详解

No Silver Bullet

Vue 8月日更 配置文件

SpringCloud微服务日志经kafka缓冲写入到ELK

Rubble

kafka Spring Cloud ELK 8月日更

用不了AlphaFold2?北鲲云高性能计算平台解决这个问题

北鲲云

疫情之后,幸获内推,4面京东拿下offer(Java后台研发岗)

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

03- 面向复杂度的架构设计

Lane

模块4作业

青鸟飞鱼

模块四作业:千万级学生管理系统试卷存储方案

Felix

仅靠七个步骤,4面通过拿offer,终“跳进”字节跳动

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

二本渣渣5面阿里,从准备简历到“直怼”面试官,经历了什么?

公众号_愿天堂没有BUG

架构实战营-学习总结

泄矢的呼啦圈

架构实战营

最全的MySQL总结,助你向阿里“开炮”(面试题+笔记+思维图)

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

从外包进入苏宁再跳槽阿里,分享这五年来我“走过的路”

Java 编程 程序员 面试 计算机

Python3 基础语法

Geek_aee0b4

一线架构师开发总结:剖析并发编程+JVM性能,深入Tomcat与MySQL

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

写作 7 堂课——【2. 复利式写作】

LeifChen

写作技巧 8月日更 复利写作

学习总结

青鸟飞鱼

Java 操作 Office:POI之word图片处理

程序员架构进阶

Java 架构 自我提升 实战问题 8月日更

北鲲云超算接入GPUA100,让AlphaFold2轻松使用

北鲲云

Python代码阅读(第5篇):根据过滤器拆分列表

Felix

Python 编程 Code Programing 阅读代码

Minerva -- Airbnb的大规模数据指标系统 Part 1

俞凡

架构 Airbnb 大厂实践 指标

Vue进阶(十三):MOCK

No Silver Bullet

Vue Mock 8月日更

花几天时间肝了一个在线制作词云图网站

Python研究者

Python 可视化 词云图 Python JSON 8月日更

十大排序算法--堆排序

Ayue、

排序算法 8月日更

模块四作业

俊杰

架构实战营

FastApi-07-查询参数校验

Python研究所

FastApi 8月日更

Minerva -- Airbnb的大规模数据指标系统 Part 2

俞凡

架构 Airbnb 大厂实践 指标

打咩哟!Github热榜第七的SpringBoot笔记(阿里内测版)终于开源!

Java 编程 程序员 架构 面试

模块4.存储架构设计

Geek_ywh40v

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