< 返回版块

Folyd 发表于 2020-08-28 15:54

Rust 1.46稳定版发布

const fn提升

这个版本主要是对 const fn 的提升: https://github.com/rust-lang/rust/pull/72437/

现在已经支持:

  1. if, if let, and match
  2. while, while let, and loop
  3. the && and || operators

不过 if true 和while true 的问题还是没解决?

fn main() {
        let x;
        if true { x = 1;  }
        println!("{}", x);   // error : use of possibly-uninitialized `x`
}

博客中介绍了这个库 const-sha1https://github.com/rylev/const-sha1,该库允许你在编译期计算 sha1。

稳定了#[track_caller]属性

#[track_caller]是一个很有用的属性,使用这个属性标记了的函数中发生panic之后,异常堆栈中可以很详细的得知panic的地点(比如文件、行数、列数)。以前的版本调用Option和Result的unwrap()函数如果发生panic,错误堆栈里不会显示具体panic的地点,直到1.42版Option和Result的unwrap()函数使用#[track_caller]标记之后解决了这个问题。现在#[track_caller]稳定之后,开发者可以给任何可能发生panic的函数采用#[track_caller]标记了。

#[track_caller]
pub fn unwrap(self) -> T {
    match self {
        Some(val) => val,
        None => panic!("called `Option::unwrap()` on a `None` value"),
    }
}

官方博客:https://blog.rust-lang.org/2020/08/27/Rust-1.46.0.html

Rust Search Extension 0.11版发布

主要新功能如下:

  • 全新的域名:从旧的https://rust-search-extension.now.sh/改为http://rust.extension.sh/
  • 标准库索引更新到1.46
  • 支持使用前缀/来搜索Nightly文档
  • 增加:mirror命令,方便查找所有Rust源

链接:https://rust.extension.sh/changelog/

Linux内核开发者继续在评估如何使用rust来编写内核

7月份的时候有消息提到Linux内核那边在评估使用Rust来编写内核的可能性,这周的线上举行的Linux Plumbers Conference会议上有被更进一步的讨论到,并且以后还会有更多这样的讨论。

不过需要明确的是,这些Rust Linux 内核计划并不涉及用 Rust 重写内核的大部分内容(至少在可预见的未来是这样...) 。对于 Rust 的使用范围,会议上讨论到如果考虑到内存安全、并发性和其他 Rust 受到开发人员欢迎的领域可以优先考虑使用Rust,其他方面C将仍然是内核的主导语言。

除了弄清楚内核中 Rust 支持的限制,还要弄清楚 Kbuild/Kconfig 的构建集成,是否使用 Rust 的 Cargo 作为构建器,以及其他一些指导原则。

目前还没有确定的结果,但是这个话题在本周的 LPC 上仍然在讨论,当然在未来几周或几个月内核邮件列表上也会讨论。

会议的PPT:https://linuxplumbersconf.org/event/7/contributions/804/attachments/641/1168/barriers-to-in-tree-rust.pdf

新闻链接:https://www.phoronix.com/scan.php?page=news_item&px=Linux-Kernel-Rust-Path-LPC2020

学一点Rust内存模型会发生什么呢(2)

这是CrLF0710在知乎连载的一系列讨论Rust内存模型的专栏,讲得浅显易懂,推荐一看。

链接:https://zhuanlan.zhihu.com/p/201220495

Conflict-free Replicated Data Type (CRDT)的Rust实现

作者参考了这篇论文用Rust实现了CRDT算法。

CRDT是Conflict-free Replicated Data Type的简称,也称为a passive synchronisation,即 免冲突的可复制的数据类型,这种数据类型可以用于数据跨网络复制并且可以自动解决冲突达到一致,非常适合使用AP架构的系统在各个partition之间复制数据时使用;

链接:https://github.com/maidsafe/crdt_tree

参考资料:https://segmentfault.com/a/1190000019109149

Contributing to the Intellij-Rust plugin: writing an intention from scratch

作者在自己博客连载他给Intellij-Rust插件贡献的经历,这是第二篇文章。

链接:https://kobzol.github.io/rust/intellij/2020/08/25/contributing-2-subst-assoc-type-int.html

-- From 日报小组 Folyd

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页