写点什么

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

评论

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

日志框架简介-Slf4j+Logback入门实践

京东科技开发者

8款好用的PPT免费生成器推荐,堪称办公神器!

彭宏豪95

效率工具 职场 PPT AIGC AI生成PPT

基于Java+SpringBoot+Vue前后端分离健美操评分系统设计和实现

hunter_coder

后端开发

源码补丁神器—patch-package

京东科技开发者

InPlant SCADA笔记 day2与知识点

万里无云万里天

工厂运维 InPlant SCADA

照明黑马智谋纪,让小白玩转AI照明

编程猫

2024 年美国大选将如何影响 Web3 行业?

股市老人

使用线程池你应该知道的知识点

不在线第一只蜗牛

Java 线程池

开个技术外挂|电池热失控致电车自燃爆炸?用仿真技术解决它!

Altair RapidMiner

电动汽车 电池 仿真 altair 新能源车

京东工业平台API:关键词搜索京东工业平台商品列表数据接口

tbapi

京东API接口 京东工业平台API 京东工业平台商品列表接口 京东工业平台商品数据接口

InPlant SCADA笔记 io modbus tcp协议的应用

万里无云万里天

Modbus 工厂运维 InPlant SCADA

InPlant SCADA笔记 io OPC DA协议的应用

万里无云万里天

OPCUA InPlant SCADA

医疗器械行业数智化创新实践:数据可视化与 AI+ 是实现高质量发展的关键

tapdata

使用 Easysearch 打造企业内部知识问答系统

极限实验室

easysearch 征文系列

InPlant SCADA笔记 io iec104协议的应用

万里无云万里天

工厂运维 InPlant SCADA iec104

精选开源项目管理系统:为您的团队挑选最佳选项

爱吃小舅的鱼

项目管理 开源系统

InPlant SCADA笔记 io MQTT协议的应用

万里无云万里天

mqtt 工厂运维 InPlant SCADA

从历史到未来,看技术发展趋势

凌晞

技术 科技 构架

fx框架上手-基础篇

FunTester

TapData 信创数据源 | 国产信创数据库 TiDB 数据迁移指南,加速国产化进程,推进自主创新建设

tapdata

InPlant SCADA笔记 day1与首次安装

万里无云万里天

工厂运维 InPlant SCADA

InPlant SCADA笔记 io OPC UA协议的应用

万里无云万里天

工厂运维 OPCUA InPlant SCADA

记录一次RPC服务有损上线的分析过程

京东科技开发者

ChinaJoy 2024启动!西部数据展示丰富游戏存储解决方案让发烧友直面各式挑战

Geek_2d6073

以太坊 ETF 获批:如何影响 Web3

股市老人

TinyVue 组件库官网焕然一新!

OpenTiny社区

Vue 组件库 OpenTiny

Java 内推 | 教育行业缺口来了,研发,运维,产品,教研,职能,营销... 别错过

Seachal

Java 内推

InPlant SCADA笔记 io memory驱动的应用

万里无云万里天

工厂运维 InPlant SCADA

Spring 常用的三种拦截器详解

快乐非自愿限量之名

Java spring Spring Boot

探索 Milvus 数据存储系统:如何评估和优化 Milvus 存储性能

Zilliz

人工智能 AI Milvus Zilliz 向量数据库

AutoMQ 开源可观测性方案:夜莺 Flashcat

AutoMQ

云计算 kafka 云原生 Apache Kafka AutoMQ

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