< 返回版块

lidongjies 发表于 2022-01-02 21:40

Rust中文视界2021年总结

Rust 中文社区一直在不断发展,持续地向外输出:

  • 2021 年,Rust 中文社区共发表日报 326 篇,累计阅读数十万次,涵盖 Rust 各个方面,详情可查看:https://rustcc.cn/section?id=f4703117-7e6b-4caf-aa22-a3ad3db6898f
  • 社区的张老师投身 Rust 界多年,他在 2021 年发布了《Rust 编码规范》,参与商用 Rust 项目落地,创办《Rust 精选》,筹备《Rust China Conf 2021》大会,并创建中文社群,组织线上沙龙。与此同时还完成了诸多图书和课程工作,为 Rust 的发展和推广起到了不可磨灭的作用。详情可查看:https://mp.weixin.qq.com/s/eBYlvokJ5Q-Up87OP7qVUw
  • 2021 年 6 月 3 日,RustSBI 在 GitHub 成立组织,RustSBI 是 RISC-V 平台下的引导程序实现,它完全由 Rust 编写,并已经被录入 RISC-V SBI 国际标准。来自社区的维护者洛佳表示,“RustSBI 可以完成硬件到硬件的兼容性,从而延长硬件的生命周期,降低管理和迭代更新成本。”详情可查看:https://github.com/rustsbi/rustsbi

Rust嵌入式工作组2021年总结

来自社区的张汉东老师对文章进行了总结:

  1. 树莓派 2021 发布首款 RP2040 微控制器中有两个 Cortex M0 内核。这让工作组的成员开始思考,在多核微控制器下该如何提供安全性,由此有了 rp-rs 组织。
  2. Espressif (乐鑫)正式雇佣 mabez 针对 eso 芯片开发 Rust 支持:esp-rs
  3. 其他平台也逐渐开始支持 Rust,包括:Atmel ARM SAM-D 和 SAM-E、Atmel AVR、NXP ARM iMX. RT 微控制器、ARM nRF51、52和 9160 蓝牙/LTE 设备、RISC-V、树莓派、STM32 等。
  4. 嵌入式 Rust 生态得到长足发展:嵌入式并发框架已经 1.0 、嵌入式异步框架正在大力开发且支持 STM32,nRF 和 RP2040平台,并且还深深影响着 Rust 异步的改进、嵌入式开发和调试工具又发布了新的探针工具、嵌入式 smoltcpTCP/IP 栈发布了新版本、嵌入式图形库 Matrix 发布了新版本、新的嵌入式实时 OS Hubirs 开源。
  5. 嵌入式工作组自身维护的项目在这一年也是大力开发和维护中。

链接:https://blog.rust-embedded.org/this-year-in-embedded-rust-2021/

GitHub:https://github.com/rust-embedded/wg

另外,也有一些新的创业公司,比如这个专注于 GUI 的 Sixty FPS,该 GUI 工具库面向全平台,目标之一是取代 Qt。2022 年他们可能要长足支持嵌入式。

链接:https://sixtyfps.io/blog/2021-in-review.html

GitHub:https://github.com/sixtyfpsui/sixtyfps

Rust写Python扩展的9个原则

  1. 创建一个同时包含 Rust 和 Python 项目的仓库。
  2. 使用 maturin & PyO3 在 Rust 中创建 Python 可调用的翻译器函数。
  3. 让 Rust 翻译器函数调用 “好的” Rust 函数。
  4. 在 Python 中预分配内存。
  5. 将好的 Rust 错误处理转换为好的 Python 错误处理。
  6. 使用 Rayon 和 ndarray::parallel 的多线程,返回任何错误。
  7. 允许用户控制并行线程数。
  8. 将好的动态类型 Python 函数转换为好的 Rust 通用函数。
  9. 同时创建 Rust 和 Python 的测试。

链接:https://towardsdatascience.com/nine-rules-for-writing-python-extensions-in-rust-d35ea3a4ec29

Superstruct:处理版本化数据

可以使用单个定义来定义多个不同版本的 Struct,并生成一个枚举来统一它们:

use superstruct::superstruct;

# V1
pub struct Request {
    start: u16,
}

# V2
pub struct Request {
    start: u16,
    end: u16,
}

# Superstruct
#[superstruct(variants(V1, V2))]
pub struct Request {
    pub start: u16,
    #[superstruct(only(V2))]
    pub end: u16,
}

#[cfg_attr(test, test)]
fn main() {
    let r1 = Request::V1(RequestV1 { start: 0 });
    let r2 = Request::V2(RequestV2 { start: 0, end: 10 });

    assert_eq!(r1.start(), r2.start());
    assert_eq!(r1.end(), Err(()));
    assert_eq!(r2.end(), Ok(&10));
}

文档:https://sigp.github.io/superstruct/intro.html

面向对象的Query

支持查询、插入、更新和删除。以查询为例,使用方法如下:

use qoo::base::*;
use qoo::select::*;

fn main() {
    let select_query =
        SelectBuilder::select(["col0", "col1"].to_vec())
            .columns(["col2", "col3"].to_vec())
            .from("table1")
            .wheres("id >= 100");
    assert_eq!(
        select_query.to_sql(),
        "select col0, col1, col2, col3 from table1 where id >= 100".to_string()
    );
}

GitHub:https://github.com/ddddddO/qoo

了解原子和内存排序的工作原理

作者使用一个带有简单单元测试的 repo 增强对这个主题的理解。其中,包含了一个简单例子和一个复杂例子。

GitHub:https://github.com/blasrodri/atomic-story

egui 0.16.0 发布

本次发布的主要内容:

  1. Context menus
  2. Rich Text (colors, underline, ...) in all widgets
  3. Bar Charts and box plots
  • 阅读原文 https://github.com/emilk/egui/blob/master/CHANGELOG.md

Kira, 一个用于游戏开发的音频库

Kira 是用 Rust 编写的用于游戏开发的音频库,并且具有不太常见的功能,例如平滑的补间参数和声音的精确定时,作者正在用它来制作一个动态生成的音乐游戏。

  • Repo github.com/tesselode/kira

一个用于有序集合的比较器 pre-RFC

  • Read More https://internals.rust-lang.org/t/pre-rfc-add-comparator-api-for-ordered-collections/15889

From 日报小组 冬杰 长琴

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页