Rust新版本发布,默认使用系统分配器,告别jemalloc

归去来兮 2019-01-20

Rust发布了最新版本1.32.0,新增了方便纠错用的dbg宏,更换了默认的分配器,从原本默认使用jemalloc改为系统分配器。

Rust新版本发布,默认使用系统分配器,告别jemalloc

Rust 1.32.0加入了dbg宏(Macro),这个宏是打印纠错开发者(Print Debugger)一大福音,过去用println!打印变量,要麻烦地设定参数,而使用dbg,只需要把参数丢进dbg!中,就能简单地显示变量中的值,而且还不需要担心上下文。当开发者有好几个println!需要处理,便很容易混淆,除非开发者想要多花费心力,自己增加上下文。

官方还提到,开发者使用println!并不是好习惯,因为println!打印标准输出,反而eprintln!会是一个比较好的选择,因为eprintln!打印标准错误,而使用dbg!也不需要担心,该宏以正确的方式处理标准错误。虽然dbg!只是一个小宏,但是却能帮助开发者的纠错体验。

过去Rust使用jemalloc而非系统分配器(Allocator),虽然普遍认为jemalloc的性能比较好,但随着时间发展,情况已经改变了,不过,官方却也越来越难把jemalloc拿掉,因为势必造成部分使用jemalloc的程序发生错误。另外,jemalloc只是特定平台的默认配置,在Windows上,早已使用系统分配器很长一段时间了。

官方提到,虽然jemalloc性能不错,但也有其缺点,像是jemalloc会增加每个Rust文档约300K的大小。基于种种原因,加上从Rust 1.28开始提供全局分配器,因此官方也就在Rust 1.32把默认分配器切换成系统分配器,但开发者仍然可以从Crate使用到jemalloc。

此外,在过去两个发布版本中,官方对模块系统进行了一些改进,而在Rust 1.32.0完成最后一步,统一路径现在允许之前无效的输入路径语句,其解析的方法与非输入路径的方式相同。到这个版本,官方已经完成模块系统的简化工作。

相关推荐