【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

评论

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

Web3 聚合平台 AIDAMETA,圣诞BNB 大放送

股市老人

华为全球加速GA带给你稳定的网络体验!

清欢科技

从非洲到全球,看华为云连接CC如何助力出海企业更好发展

IT科技苏辞

极客时间运维进阶训练营第九周作业

老曹

微服务洞察,让微服务更透明

阿里巴巴云原生

阿里云 微服务 云原生

主数据的3大特征、4个超越和3个二八原则

用友BIP

未来智安入围《2022年度中国数字安全能力图谱》威胁检测与响应领域能力者

未来智安XDR SEC

华为云桌面,助力企业智慧办公

科技之光

华为云全球加速GA,为现代企业跨国办公保驾护航

清欢科技

怎么搭建自己的小型渲染农场?个人渲染农场配置

Renderbus瑞云渲染农场

渲染农场 搭建渲染农场

【前端】JS(javascript)中this的几种用法实例详解

No8g攻城狮

JavaScript js

2022年混过的那些SAP项目

SAP虾客

wms 2022年 SAP-QM

华为云连接CC——多场景构建数据网,助力企业享受高质量办公体验

IT科技苏辞

数智为线,经纬中国:新华三勾勒出的山河锦绣

脑极体

拒绝内卷挖掘境外新蓝海,华为云虚拟专用网络VPN有多特别?

爱科技的水月

HTTP响应首部字段

穿过生命散发芬芳

HTTP 12月月更

【JavaWeb】Java Web三大组件之Filter过滤器

No8g攻城狮

javaWeb #web

【JVM规范】第二章-JVM结构

四月

Java JVM

架构实战营10期-作业3

炮仗

2022-12-26:有一个数组包含0、1、2三种值, 有m次修改机会,第一种将所有连通的1变为0,修改次数-1, 第二种将所有连通的2变为1或0,修改次数-2, 返回m次修改机会的情况下,让最大的0

福大大架构师每日一题

Linux 算法 Shell 福大大

华为云左少夫:面向分布式云原生 构筑无处不在的云原生基础设施

爱科技的水月

【JVM规范】第三章-Java虚拟机编译

四月

Java JVM

“灵、简、畅、安”,就选华为云桌面

科技之光

《数字经济全景白皮书》中国产业数字化趋势报告2023

易观分析

产业数字化 报告

基于声网 Flat 实现“成语解谜”的 Web 小游戏

声网

JavaScript 开源 Web 互动白板

极客时间运维进阶训练营第一周作业

独钓寒江

华为云桌面为建筑行业BIM落地实施提供有力支撑

科技之光

Genymotion模拟器安装

攻城狮Wayne

android Genymotion Android模拟器

正确理解和使用JAVA中的字符串常量池

JAVA旭阳

Java

国内首家!博睿数据获信通院AIOps能力成熟度模型优秀评级

博睿数据

智能运维 博睿数据 Swift AI K可观测性 荣誉奖项

架构实战营 3-6 消息队列架构详设随堂练习

西山薄凉

「架构实战营」

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