【Rust每日新闻】 2018-11-28

in rust •  6 years ago 

「官方」Rust 2018年度调查报告


秘猿开源CKB和CKB-VM

#ckb #ckbvm #riscv

Nervos CKB是一个公共授权区块链,是Nervos网络的共识层。CKB的VM是基于RISC-V指令集实现的。


Rust Belt Rust 2018 大会 视频合集

#RustBeltRust2018

视频合集


Rust语言CheatSheet

#cheatsheet

Cheats.rs


高性能JavaScript到JavaScript编译器

#ratel_core #js #compiler #wasm

基于Rust和Wasm实现

ratel-core


「官方」演变中的Tide中间件

#tide #middleware

在上篇文章里说到,Tide借鉴了actix-web中before/after风格的中间件。然而@tirr-c基于此又发现了更好的抽象方式。

/// Middleware that wraps around remaining middleware chain.
pub trait Middleware<Data>: Send + Sync {
    /// Asynchronously handle the request, and return a response.
    fn handle<'a>(&'a self, ctx: RequestContext<'a, Data>) -> FutureObj<'a, Response>;
}

新的trait使用一个方便的RequestContext,封装了中间件可用的所有上下文信息。

pub struct RequestContext<'a, Data> {
    pub app_data: Data,
    pub req: Request,
    pub params: RouteMatch<'a>,
    // plus additional, private fields
}

impl<'a, Data: Clone + Send> RequestContext<'a, Data> {
    /// Consume this context, and run remaining middleware chain to completion.
    pub fn next(self) -> FutureObj<'a, Response> { ... }
}

在这种方法中,每个中间件都可以完全控制剩余的请求处理管道。在此接口上构建before/after的中间件构造函数很简单。但使用这种around中间件作为核心接口有一些关键的优势:

  • 在before/after发生的步骤之间传递数据要更简单。
  • 之前的方法强制为每个请求分配FutureObj,但是现在的around风格中间件只需要在执行异步工作或管道其余部分需要的时候再分配新的FutureObj

新的接口可以说更简单、更整洁。

Tide也新增了带有自定义中间件的嵌套路由。现在使用nest方法可以将中间件应用于具有公共路由的子路由里。

let mut app = App::new(your_data);

app.at("/some/prefix").nest(|r| {
    r.middleware(some_middleware);      // applies to everything under `/some/prefix`
    r.at("/").get(prefix_top_endpoint); // matches `/some/prefix`
    r.at("/foo").get(foo_endpoint);     // matches `/some/prefix/foo`
});

// no middleware is applied to this route
app.at("/").get(index_endpoint);

app.serve(address);

nest方法实现:

impl<'a, Data> Resource<'a, Data> {
    /// "Nest" a subrouter to the path.
    ///
    /// This method will build a fresh `Router` and give a mutable reference to it to the builder
    /// function. Builder can set up a subrouter using the `Router`. All middleware applied inside
    /// the builder will be local to the subrouter and its descendents.
    pub fn nest(self, builder: impl FnOnce(&mut Router<Data>));
}

另外还增加了一个使用计算值的示例:computed_values

原文中列出了还待解决的一些问题列表,你也可以来参与。

Read More


AWS 出品 : Firecracker

Firecracker是一种开源虚拟化技术,专门用于创建和管理安全,多租户容器和基于功能的服务,提供无服务器操作模型。 Firecracker在轻量级虚拟机中运行工作负载,称为microVM,它将硬件虚拟化技术提供的安全性和隔离性与容器的速度和灵活性相结合。

看上去应该是兼容docker生态链,倾向于Serverless。


「博文」Bitfury公司的工程师为俄罗斯邮政服务设计区块链

#blockchain

本月,Bitfury®工程师Yury Yanovich,Ivan Prokhorov,Darya Korepanova和Sergey Vorobyov与Skolkovo科学技术研究所(Skoltech)的计算和数据密集型科学与工程中心一起在科学研究期刊Informatics上发表; 信息传输问题研究所数据挖掘和预测建模实验室; 罗蒙诺索夫莫斯科国立大学世界经济地理系; 和高等经济学院的工作是设计一个基于区块链的供应链,以防止印章伪造。


每日新闻订阅地址:

欢迎通过GitHub issues投稿。

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Hi @blackanger, I'm @checky ! While checking the mentions made in this post I noticed that @tirr-c doesn't exist on Steem. Did you mean to write @ira-c ?

If you found this comment useful, consider upvoting it to help keep this bot running. You can see a list of all available commands by replying with !help.

no

Congratulations @blackanger! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You made your First Comment

Click here to view your Board of Honor
If you no longer want to receive notifications, reply to this comment with the word STOP

Support SteemitBoard's project! Vote for its witness and get one more award!