写点什么

Rust 1.10,对引导、Panic 处理及更多特性的改进

  • 2016-07-14
  • 本文字数:986 字

    阅读完需:约 3 分钟

发布的Rust 1.10 引入了新的、旨在对开源版本更友好的引导方法。此外,该版本中添加的新特性还包括:用于panic 处理的构建选项,可提升编译器性能并降低生成二进制文件的大小;一种新的共享库格式;以及其它的一些性能改进。

Rust 引导方法,就是使用 Rust 编译器去编译其自身的方法。对于 Rust 1.10 版本,Rust 引导方法得到了更新,使得其不同于以往版本那样存在对一些不稳定 Rust 特性的依赖。使用不稳定特性的最大缺点在于,其中必定使用了某个特定的 Rust 编译器夜间版,这对于 Linux 发行版而言是不太理想的做法。事实上,许多 Linux 发行版在构建它们的软件包时,更愿意仅仅使用过往的打包版本,而非使用不可信的二进制版本文件。由此改进引发的一个结果是,现在 Rust 1.10 可从 Rust 1.9 版本编译而来。将来,Rust 的任何新版本将由当前的稳定版本所构建。例如,Rust 1.11 可构建自 Rust 1.10。

上文提及 Rust 1.10 引入了一个新的构建选项,该选项允许开发人员定义Rust 的panic!行为。默认情况下,panic!将触发堆栈解退,这对于编译器的性能和生成的二进制文件的大小引入了一些开销。虽然对于一些应用而言,异常终止也是处理异常问题的一个合理方法,但是为使Rust 程序退出而非堆栈解退,现在开发人员可以指定命令行选项-C panic=abort,或者在配置文件Cargo.toml 中添加panic=abort,这将为生成二进制文件的大小和编译时间带来10% 的改进。

此外,Rust 1.10 的新特性还包括 cdylib 打包类型,主要用可嵌入其它语言的库。dylib 作为现有的库格式,依然是 Rust 项目中首选的库格式。cdylib 与 dylib 主要不同之处在于:

  • cdylib 用于静态链接;
  • cdylib 中包含了元数据;
  • 类似于可执行文件,在 cdylib 库中可访问的外部函数是可见的标识;
  • cdylib 可使用 -C 编译选项,指定链接时优化

此外,Rust 1.10 还带来了若干性能改进,包括:

Rust 1.10 还包括了更多本文中所未提及的改进,可参阅其发行备注

查看英文原文: Rust 1.10 Improves Bootstrapping, Panic Handling, and More


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-07-14 19:001820
用户头像

发布了 227 篇内容, 共 78.0 次阅读, 收获喜欢 28 次。

关注

评论

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

文盘Rust -- 如何把配置文件打包到二进制文件里

京东科技开发者

rust 后端 文件 配置文件 spring-boot

vivo 全球商城:电商平台通用取货码设计

vivo互联网技术

Java 系统设计 服务器

「趣学前端」桂花留晚色,聊聊zlib压缩

叶一一

node.js 前端 9月月更

Elasticsearch聚合学习之一:基本操作

程序员欣宸

Elastic Search 9月月更

OpenHarmony源码的编译构建

坚果

OpenHarmony 9月月更

美团前端二面高频面试题合集

loveX001

JavaScript 前端

手部骨骼跟踪能力,打造控制虚拟世界的手势密码

HarmonyOS SDK

「趣学前端」“寓教于乐”的Node.js学习记录

叶一一

node.js 前端 9月月更

Qt实现文本编辑器(二)

中国好公民st

c++ qt 9月月更

腾讯前端二面面试题(附答案)

beifeng1996

JavaScript 前端

还能把浏览器当作 Web 服务器?骚操作,学废了~

掘金安东尼

前端 9月月更

nft平台搭建:nft商城开发nft平台开发

开源直播系统源码

NFT 数字藏品 数字藏品开发 数字藏品系统

MySQL架构与历史

阿柠xn

MySQL innodb 事务 sql 9月月更

近期对前端性能优化的总结

南城FE

性能优化 前端 性能 性能提升

数据治理(十五):Ranger 管理 Hive 安全

Lansonli

数据治理 9月月更

Python基础(三) | Python的组合数据类型

timerring

Python. 9月月更

库调多了,都忘了最基础的概念《Mysql相关知识》

知识浅谈

MySQL 9月月更

频面试题合集

helloworld1024fd

JavaScript 前端

社招前端二面面试题

夏天的味道123

JavaScript 前端

Java常见名词解释

源字节1号

软件开发 后端开发

详解KubeEdge边缘网络项目EdgeMesh

华为云开发者联盟

云计算 云原生 后端 边缘计算 企业号九月金秋榜

关于 DynamoDB

Joseph295

分布式事务解决思想以及实现方案

想要飞的猪

3PC 2PC注意事项 TCC 本地消息表

SpringCloud Feign 远程调用(史上最详细讲解)

SpringCloud Fegin 9月月更

基于阿里云GPU云服务器的AIACC助力UC搜索业务性能提效380%,每年节省数千万成本

阿里云弹性计算

神龙 加速引擎 TensorRT QTC

打通JAVA与内核!一个ReentrantLock锁的实现原理

Java快了!

java;

架构实战营模块七作业

zhihai.tu

预约报名!阿里云EDA上云解决方案直播开启

阿里云弹性计算

EDA

「趣学前端」图片操作之“多媒体顶流”不羁的一生

叶一一

node.js 前端 9月月更

专业低代码如何选型?看这12项关键能力

牛刀专业低代码

低代码 低代码开发 低代码平台

社招前端必会面试题

bb_xiaxia1998

JavaScript 前端

Rust 1.10,对引导、Panic处理及更多特性的改进_语言 & 开发_Sergio De Simone_InfoQ精选文章