写点什么

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

评论

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

孩子上网冲浪更安全,这份儿童节礼物值得拥有

最新动态

换个角度带你学C语言的基本数据类型

华为云开发者联盟

开发 C语言 数据类型位数

那些年,我们在Apache SeaTunnel 2.1.0部署中踩过的坑【含源码分析】

Apache SeaTunnel

Apache 大数据 开源 workflow Seatunnel

特别的儿童节,OceanBase 送上一份特别的惊喜

OceanBase 数据库

oceanbase

MSVC编译动态库

Loken

音视频 5月月更

OpenHarmony 3.1 Release版本关键特性解析——OpenHarmony新音视频引擎——HiStreamer

OpenHarmony开发者

Open Harmony

为什么PO的角色在Scrum框架中不可替代

ShineScrum

Scrum 产品经理 PO 产品负责人

C#入门系列(一) -- 初识C#语言

陈言必行

C# 6月月更

将不费吹灰之力成为卷王的秘籍传授于你!

龙智—DevSecOps解决方案

Jira插件 龙智自研插件 Jira飞书插件

字节跳动数据库的过去、现状与未来

火山引擎开发者社区

数据库 微服务 分布式数据库

对话ACE第三期:数据库技术生态应如何构建

OceanBase 数据库

oceanbase

对不起,我错了,这代码不好写

捉虫大师

Java Go sentinel 6月月更

了解es6语法简介

小恺

6月月更

DataPipeline:让数据生产力的历史进程,再前进一步

DataPipeline数见科技

DataOps 数据管理

儿童节,和 AI 一起通关 “超级马里奥兄弟”

华为云开发者联盟

应用实践|Lifewit 数据平台基于Apache Doris的建设实践

SelectDB

数据库 数据仓库 apache doris SelectDB

雅加达利用SAS优化抗疫救助资金发放,帮助中小微企业度过难关

E科讯

使用Sonar来优化您的基础架构代码

龙智—DevSecOps解决方案

漏洞 SonarQube

MixNet解析以及pytorch源码

AI浩

人工智能 6月月更

leetcode 547. Number of Provinces 省份数量(中等)

okokabcd

LeetCode 搜索

StrategyPattern-策略模式

梁歪歪 ♚

设计模式

看完这篇异地多活的改造,我决定和架构师battle一下 / 得物技术

得物技术

架构 容灾 双活 双活容灾 异地多活

常遇到读多写少,教你用ReadWriteLock实现一个通用的缓存中心

华为云开发者联盟

缓存 高并发 开发 ReadWriteLock

云图说丨应用宕机怎么办?MAS帮您实现业务无缝切换

华为云开发者联盟

云计算 MAS 宕机 多云高可用服务

关键点标注的酷炫,你想象不到

澳鹏Appen

人工智能 数据标注 数据训练 关键点检测 关键点

InfoQ 极客传媒 15 周年庆!无限生长未来可期!

InfoQ写作社区官方

热门活动 InfoQ极客传媒15周年庆

将虚幻引擎5与Perforce Helix Core集成使用吧!

龙智—DevSecOps解决方案

perforce 虚幻引擎5 Helix Core

从冬奥跳台飞跃向千家万户:联通“臻宽带”的起跳瞬间

脑极体

字节跳动一站式数据治理解决方案及平台架构

字节跳动数据平台

数据治理 元数据

八大误区,逐个击破:担忧安全防护与合规性?这可能是您对云最大的误解

龙智—DevSecOps解决方案

Atlassian atlassian云版 Atlassian白皮书

深入剖析 | HeartBeat方案的标准设计

九叔(高翔龙)

架构 dubbo 源码解析 HeartBeat 心跳设计

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