写点什么

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

评论

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

C#入门系列(二十) -- 面向对象之封装

陈言必行

C# 6月月更

本周二晚19:00战码先锋第6期直播丨共建测试子系统,赋能开发者提高代码质量

OpenHarmony开发者

OpenHarmony

文旅新体验!3DCAT助力广州非遗“元宇宙”街区炫酷亮相

3DCAT实时渲染

非遗 元宇宙 实时云渲染

Webshell检测引擎:青藤开放200个雷火SaaS版免费账号!

青藤云安全

安全攻防 网络安全 攻防演练

强推10款Python常用的开发工具

左手の明天

Python ide python开发工具

案例驱动 :从入门到掌握Shell编程详细指南

百思不得小赵

bash 运维 6月月更

2022年秋季广州美博会-2022广州9月份美博会

Geek_0b38bb

2022年广州美博会 秋季广州美博会 美博会 广州美博会

Wallys/Routerboard/DR8072A-HK09/IPQ8072A/802.11ax

wallys-wifi6

802.11AX WIFI 6e

数据平台调度升级改造 | 从Azkaban 平滑过度到 Apache DolphinScheduler 的操作实践

白鲸开源

Apache 大数据 开源 workflow

开源生态|超实用开源License基础知识扫盲帖(下)

Orillusion

开源 WebGL 元宇宙 Metaverse webgpu

告别手写,使用 Doc View 快速生成接口文档

程序员小航

IDEA 插件

Java开发培训之设计模式UML类图

@零度

JAVA开发 UML

TiDB 性能分析&性能调优&优化实践大全

TiDB 社区干货传送门

通过一个具体的例子,讲解 SAP Cloud Platform Integration(CPI) 的使用方法

汪子熙

Cloud 系统集成 SAP 6月月更 cpi

【愚公系列】2022年06月 通用职责分配原则(八)-中介原则

愚公搬代码

6月月更

Java技术培训之设计模式七大原则

@零度

设计模式 JAVA开发

低代码实现探索(四十三)前台对象数据树

零道云-混合式低代码平台

知识管理——知识经济时代的增资利器

小炮

福昕软件重磅发布福昕高级PDF编辑器12.0

联营汇聚

el-table 分页全选功能讲解

CRMEB

vivo 容器集群监控系统架构与实践

vivo互联网技术

云原生 监控 系统架构 Prometheus

IAST 初探:博采众长、精准定位、DevOps友好

SEAL安全

DevOps 安全 IAST 应用安全测试 开源软件供应链

基于集群的动态反馈负载均衡策略

No Silver Bullet

集群 6月月更 负载均衡策略

【LeetCode】出现次数最多的子树元素和Java题解

Albert

LeetCode 6月月更

SREWorks v1.2 版本发布 | 运维市场能力发布

阿里云大数据AI技术

大数据 运维 云原生 开发运维

读书笔记之:麦肯锡高效工作法

甜甜的白桃

读书笔记 读书 笔记 6月月更

我的远程办公经验 | 社区征文

五分钟学大数据

初夏征文

APICloud 实现文档下载和预览功能

YonBuilder低代码开发平台

文件 APP开发 APICloud

OLAP分析型应用场景中,数仓中vacuum为何对列存表无效

华为云开发者联盟

数据库 后端 存储 华为云

DOM核心——Element类型

大熊G

JavaScript 前端 6月月更

大数据培训Flink之Table API 与 SQL

@零度

flink 大数据开发

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