< 返回版块

odd-cat 发表于 2021-08-24 20:46

Tags:RustSBI,RustDesk

RustSBI 0.2.0-alpha.5 版本发布

RustSBI 0.2.0-alpha.5版本发布。良好支持您的业务和学术研究系统,兼容性强,先进的模块化设计,值得信赖。 RustSBI是RISC-V下的引导程序环境,它支持多款模拟器和芯片平台。在今年的首届全国大学生系统能力竞赛操作系统赛中,RustSBI被来自全国高校的赛队广泛使用,用于实现自己的比赛用系统,并取得全国一、二和三等奖。

本次更新特性:

  1. 完整支持RISC-V SBI 0.3正式版标准
  2. 支持SBI PMU性能监视扩展

兼容性修改指南:

  1. rustsbi::ecall指令要求[usize; 6],加入ctx.a5;
  2. 降级embedded-hal到0.2.6

文档主页:https://docs.rs/rustsbi/0.2.0-alpha.5/


default-args: 零开销实现带缺省值的函数

default-args: zero-cost default arguments in rust!

通过使用default_args::default_args!宏来实现带缺省值的函数,下面是用例:

use default_args::default_args;

// this would make a macro named `foo`
// and original function named `foo_`
default_args! {
    fn foo(important_arg: u32, optional: u32 = 100) -> String {
        format!("{}, {}", important_arg, optional)
    }
}

// in other codes ...
assert_eq!(foo!(1), "1, 100"); // foo(1, 100)
assert_eq!(foo!(1, 3), "1, 3"); // foo(1, 3)
assert_eq!(foo!(1, optional = 10), "1, 10"); // foo(1, 10)

// let's make another one
default_args! {
    #[inline]
    pub async unsafe extern "C" fn bar<S1, S2, S3>(a: S1, b: S2 = "b", c: S3 = "c") -> String
    where
        S1: AsRef<str>,
        S2: AsRef<str>,
        S3: AsRef<str>,
    {
        format!("{}, {}, {}", a.as_ref(), b.as_ref(), c.as_ref())
    }
    // that was long signature!
}

// in other codes ...
assert_eq!(unsafe { bar!("a") }.await, "a, b, c");
assert_eq!(unsafe { bar!("a", "d") }.await, "a, d, c");
// you can even mix named & unnamed argument in optional arguments
assert_eq!(unsafe { bar!("a", "d", c = "e") }.await, "a, d, e");
assert_eq!(unsafe { bar!("a", c = "e") }.await, "a, b, e");

项目主页:https://github.com/buttercrab/default-args.rs


RustDesk 1.1.8 发布:开源远程桌面软件

RustDesk 1.1.8 release: yet another remote desktop software

开源远程桌面软件RustDesk 1.1.8 版本发布,更多细节参见Release Notes

项目主页:https://github.com/rustdesk/rustdesk


From 日报小组 odd-cat

社区学习交流平台订阅:

Rust.cc 论坛: 支持 rss

微信公众号:Rust 语言中文社区

评论区

写评论

还没有评论

1 共 0 条评论, 1 页