【Rust日报】2022-11-01 async-backtrace 发布

async-backtrace 发布

tokio 官方团队近日发布了 async-backtrace 的初个版本,旨在让开发者能够高效地追踪应用中异步任务的状态。

使用步骤如下:

  1. 首先将该 crate 加入到 Cargo.toml 文件中:

[dependencies]
async-backtrace = "0.2"
  1. 使用 #[async_backtrace::framed] 标注一个异步函数可用于追踪,使用 taskdump_tree 以树的形式输出当前所有被追踪的任务状态:

#[tokio::main(flavor = "current_thread")]
async fn main() {
    tokio::select! {
        // run the following branches in order of their appearance
        biased;

        // spawn task #1
        _ = tokio::spawn(foo()) => { unreachable!() }

        // spawn task #2
        _ = tokio::spawn(foo()) => { unreachable!() }

        // print the running tasks
        _ = tokio::spawn(async {}) => {
            println!("{}", async_backtrace::taskdump_tree(true));
        }
    };
}

#[async_backtrace::framed]
async fn foo() {
    bar().await;
}

#[async_backtrace::framed]
async fn bar() {
    baz().await;
}

#[async_backtrace::framed]
async fn baz() {
    std::future::pending::<()>().await
}
  1. 运行上述代码示例,会输出以下内容

╼ multiple::foo::{{closure}} at backtrace/examples/multiple.rs:22:1
  └╼ multiple::bar::{{closure}} at backtrace/examples/multiple.rs:27:1
     └╼ multiple::baz::{{closure}} at backtrace/examples/multiple.rs:32:1
╼ multiple::foo::{{closure}} at backtrace/examples/multiple.rs:22:1
  └╼ multiple::bar::{{closure}} at backtrace/examples/multiple.rs:27:1
     └╼ multiple::baz::{{closure}} at backtrace/examples/multiple.rs:32:1

需要注意的是,async-backtrace 才刚刚起步,如果遇到任何问题,欢迎大家在 github issue 上进行反馈

  • 仓库地址: https://github.com/tokio-rs/tokio-metrics

  • 原文链接: https://tokio.rs/blog/2022-10-announcing-async-backtrace

astro-float:一个任意精度的浮点数库

作者 stencillogic 近日发布了使用纯 rust 实现的一个任意精度的浮点数库 astro-float,采用了很多广泛使用的算法,例如 Toom-3Schönhage–Strassen 等大数乘法。

此类完全使用 Rust 实现的浮点数运算库还有 ibig、num-bigint,相比于 rug 这类对于 GMP 的绑定库,它们最大的好处是完全用 Rust 实现,不依赖 std,但是在性能上仍有差距。

更详细的 benchmark 结果可以参考以下文章:

  • bigint benchmark: https://github.com/tczajka/bigint-benchmark-rs

  • astro-float benchmark: https://github.com/stencillogic/bigfloat-bench

-- From 日报小组 RustPlumber

社区学习交流平台订阅:

  • Rust.cc 论坛: 支持 rss

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值