< 返回版块

洋芋 发表于 2021-04-10 22:54

Tags:rust, 日报

AWS Shane Miller 当选新 Rust 基金会首任主席

Rust 基金会将于4月12日公布 Shane Miller(肖恩·米勒,亚马逊 AWS 高级工程经理),当选为新创建的 Rust 基金会的首任主席。

Miller,领导 AWS Rust 平台团队并担任软件工程师已有近30年的时间。 在 AWS,Miller一直是开源战略计划以及软件工程和交付方面的领导者。 Miller 的 Rust 平台团队包括 Rust 语言和编译器的维护开发人员,及 Tokio 运行时( Rust 开发可靠异步应用)的开发者。 在 Miller 的领导下,AWS Rust 团队正在针对工程师构建和运营设计优化工具,以充分利用 Rust 的性能和安全性。

Rust 基金会将 AWS,Google,华为和 Microsoft 以及 Rust 的初始赞助商 Mozilla 召集在一起,共同指导 Rust 的开发。

详细链接,https://www.zdnet.com/article/awss-shane-miller-to-head-the-newly-created-rust-foundation/

rustup nightly 将添加 rustc_codegen_cranelift

rustc_codegen_cranelift,或者简称为cg_clif,是 Rust 编译器的一个新的实验性代码生成后端。现有的后端是 LLVM,它非常擅长生成快速,高度优化的代码,但并不擅长快速编译代码。 使用 Cranelift 项目的 cg_clif 将提供一个快速的后端,大大缩短了编译时间,但执行的优化很少。 这非常适合调试版本,希望 cg_clif 最终将成为调试模式下的默认后端。

Rust PR 链接,https://github.com/rust-lang/rust/pull/81746

rustc_codegen_cranelift 介绍链接,https://blog.rust-lang.org/inside-rust/2020/11/15/Using-rustc_codegen_cranelift.html

simd-adler32

simd-adler32,使用 AVX2 以〜40GiB/s 的速度计算 Adler-32 校验和。

  • 没有依赖;
  • 支持 no_std;
  • 当 std 启用时,运行时 CPU 功能检测;
  • 目前仅 x86 和 x86_64,支持尽可能多的目标上实现快速性能;
  • 当 simd 不可用时,默认为标量实现
// Cargo.toml

[dependencies]
simd-adler32 = "*"
// example.rs

use simd_adler32::Adler32;

let mut adler = Adler32::new();
adler.write(b"rust is pretty cool, man");
let hash = adler.finish();

println!("{}", hash);
// 1921255656

Github链接,https://github.com/mcountryman/simd-adler32

autodefault

自动化生成..Default::default()初始化。

#[derive(Debug, Default, PartialEq, Eq)]
struct Inner {
    x: i32,
    y: i32,
    z: i32,
}

#[derive(Debug, Default, PartialEq, Eq)]
struct Mid {
    a: Inner,
    b: Inner,
    c: Inner,
    d: Inner
}

#[derive(Debug, Default, PartialEq, Eq)]
struct Outer {
    mid1: Mid,
    mid2: Mid,
    mid3: Mid,
    mid4: Mid,
}

fn build_outer() -> Outer {
    Outer {
        mid1: Mid {
            a: Inner {
                x: 10,
                ..Default::default()  // :D
            },
            b: Inner {
                y: 10,
                ..Default::default()  // :)
            },
            ..Default::default()  // :|
        },
        mid2: Mid {
            b: Inner {
                z: 10,
                ..Default::default()  // :/
            },
            ..Default::default()  // :(
        },
        ..Default::default()  // >:(
    }
}

只需使用#[autodefault]属性标记函数:

use autodefault::autodefault;

#[autodefault]
fn build_outer_simple() -> Outer {
    Outer {
        mid1: Mid {
            a: Inner { x: 10 },
            b: Inner { y: 10 },
        },
        mid2: Mid {
            b: Inner { z: 10 },
        }
    }
}  // :O

assert_eq!(build_outer(), build_outer_simple())

Orion,Rust实现Lisp

Orion 是高级的纯函数式 Lisp 方言。

示例:

(load "core/math.orn")
(def fibo (λ (n) 
	(match (< n 2) 
		(True n) 
		(_ (+ (fibo (- n 1)) (fibo (- n 2)))))))

Github 链接,https://github.com/wafelack/orion

评论区

写评论

还没有评论

1 共 0 条评论, 1 页