【Rust日报】 2019-04-17:官方异步runtime库发布

RustCon Asia 27位讲师介绍合集

#rustconasia

Read More



「官方」runtime: 为更容易地创建异步应用而生的库

#runtime #async

Runtime,是由Rust异步工作组发布的一个与平台无关的库,旨在使Async Rust既灵活又简单。该库也是异步生态系统标准化的基石。它通过以下方式实现:

  • 消除共享异步运行时的麻烦,包括I/O和异步执行程序

  • 遵循Rust标准库主导的API约定

  • 标准化运行时接口,实现应用程序和底层实现的分离,并且支持自定义运行时

#![feature(async_await, await_macro, futures_api)]	

	
use futures::prelude::*;	
use runtime::net::TcpListener;	

	
#[runtime::main]	
async fn main() -> std::io::Result<()> {	
    let mut listener = TcpListener::bind("127.0.0.1:8080")?;	
    println!("Listening on {}", listener.local_addr()?);	

	
    let mut incoming = listener.incoming();	
    while let Some(stream) = await!(incoming.next()) {	
        runtime::spawn(async move {	
            let stream = stream?;	
            println!("Accepting from: {}", stream.peer_addr()?);	

	
            let (reader, writer) = &mut stream.split();	
            await!(reader.copy_into(writer))?;	
            Ok::<(), std::io::Error>(())	
        });	
    }	
    Ok(())	
}

现在是基于宏,并且期望在未来能实现如下写法:

use std::futures::net::TcpListener;	

	
async fn main() -> std::io::Result<()> {	
    let mut listener = TcpListener::bind("127.0.0.1:8080")?;	
    println!("Listening on {}", listener.local_addr()?);	

	
    #[spawn(parallel)]	
    for await? stream in listener.incoming() {	
        println!("Accepting from: {}", stream.peer_addr()?);	
        let (reader, writer) = &mut stream.split();	
        await? reader.copy_into(writer);	
    }	
}

希望成为标准库的一部分。

  • Read More

  • runtime



cargo-call-stack: 从rustc中获取调用图信息

#cargo #call_stack

官方嵌入式组老大japaric写的库。可以对整个程序做静态调用栈的分析,可以最终生成svg图片。调用栈分析结果还包含了栈的具体使用情况(以字节为单位),以及包括Max最大值。

在写一些对栈内存要求苛刻的程序,比如嵌入式,比较有用。本篇文章是第二篇内容。

cargo-call-stack



使用skeptic库保证项目Readme文档中的示例是最新的

#readme

Read More



Rust中的新奇功能

#Rust1.34

该文作者对Rust1.34稳定版中引入的新功能std::iter::from_fn的探索。该功能允许通过一个函数来直接创建迭代器,以往此功能只能通过宏来辅助实现。现在看上去方便多了。

Read More


Rust Debug下LLD性能有大幅提升

#lld

最近的LLVM补丁大大提升了Rust debug模式下lld的链接性能,并且显著缩小了二进制文件。该文对此做了一个分析,包括,为什么这么。

Read More



从头使用Rust编写UEFI应用程序

#UEFI

UEFI是平台固件的软件接口,可替代BIOS.

  • Read More

  • uefi-rs



Niko:代码之外

#niko

Niko最近意识到,Rust编译器团队,需要的不仅仅是开发人员,更加需要的是编码之外的人才,包括文档作者、组织者、传道者、项目经理等角色,只有加入了这些角色,编译器团队才能正常发展。因为编译器团队不仅仅是写代码,其他任务(各种会议、管理工作组、带新人、编写文档、协助沟通问题、帮助贡献者等等)也是同样重要。

Read More



Gleam发布了0.1版本

#lang #gleam

Gleam是Rust实现的一门函数式编程语言,拥有一个类似于erlang和elixir的分布式并发系统。这是该语言的第一次release版本。

Read More



neat-flappy-bird: NEAT算法玩像素鸟

#neat #game

来自社区 @planet0104 的作品,使用了quicksilver。

Neuro Evolution Of Augmenting Topologies(拓扑扩张的神经演化), NEAT代码来自《游戏编程中的人工智能技术》一书

neat-flappy-bird


From 日报小组 @Chaos

公众号不支持外链,请查看“阅读原文”查看链接。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值