Rust Quiz 解读:Quiz 6
汝为何是Romio?
#async #romio #tokio
无船同志新文:Wherefore art thou Romio?
( "Romeo, Romeo, wherefore art thou Romeo? —— 莎士比亚《罗密欧与朱丽叶》)
本文讲述了Romio的前世今生。主要目的是为了将Tokio接口移植到Future 0.3。
- 处理显式的waker参数。 0.1和0.3的差异之一是对waker的处理。0.3中提供了一个唤醒当前任务的waker,而0.1则没有。0.1提供的是task::current这样的函数。现在统一使用LocalWaker。
- 消除代码重复。Tokio中的AtomicTask内部类型,实际上在Futures 0.3已经演变为AtomicWaker类型。通过给Tokio发PR来消除这些重复。
- tokio-io到future::io的变化。这部分是最困难的一个部分。目前tokio-io中自定义了AsyncRead和AsyncWrite,而Futures 0.3也定义了AsyncRead和AsyncWrite,这两个版本的接口有很大变化。tokio-io是在unsafe代码上构建的AsyncRead和AsyncWrite,而Futures新的AsyncRead和AsyncWrite是构建于专门的poll_vectored_read扩展。
- Pin。实际上Pin对于0.1到0.3的迁移工作影响很小。基本上就是用
&mut self:Pin <&mut Self>
来替换mut self
。 - 这次迁移有利于
non-'static
Future的应用。将来使用async/await将不必担心因为不是'static
的Future而产生任何问题。 - Romio是fork自Tokio,但不打算和Tokio竞争。Romio旨在解锁async/await,因为现在Tokio使用futures 0.1已经阻碍了想用async/await人的步伐。毕竟Tokio在生态系统中占比太高。
关于Romio的说明:
- Romio仅包含与异步网络API相关的代码 - TCP,UDP和Unix域套接字。换句话说,Romio只是 futures + mio。
- Romio只暴露最小的API。
- Romio目前版本为0.3.0-alpha.1,配合futures 0.3来发布更新。
文章中给出了一个echo server的示例。这一切工作都是为了尽可能快速地稳定async/await。
使用Actix和Sentry构建安全web服务
#actix #sentry
本文介绍了如何使用Actix创建Web服务,并使用Sentry对其进行监控。主要基于两个sentry平台相关的crate:
- sentry
- sentry-actix
sentry是Sentry平台为Rust开发的SDK,详情:getting-started-with-rust-error-tracking
案例Librsvg:用Rust重构C项目值得遵循的模式
#C
一个简单的光线跟踪实现
#lucis #ray_tracer
超级账本新项目Ursa将使用Rust编写
#Hyperledger #blockchain #ursa
Ursa主要是一个加密库,区块链开发人员可以通过简单的配置文件更改来选择和修改其加密方案。主要使用Rust语言编写,但也会包含Hyperledger中常用到的其他语言的接口。
随着Hyperledger的成熟,Hyperledger中的各个项目已经开始需要复杂的加密实现。不是让每个项目都实现自己的加密协议,而是在共享库上进行协作要更好。
「视频」2018-12-04 RustAKL: ECS编程范例
#game #ecs
php-ext-wasm加入了新的功能
#php #wasm
「工具」更智能展示你shell历史的工具: mcfly
#mcfly #shell
这个工具不得了,自带小型神经网络(mall neural network),可以替换默认ctrl-r Bash历史搜索
了,更加智能。
JQL: 命令行JSON查询工具
#jql
differential-dataflow:数据并行编程框架
#dataflow #data_parallel
基于实时数据流实现的差分数据流框架,可以实现数据并行。
在Rust中使用Passenger
Passenger是一个Web应用服务器,常用于Ruby、Node、Python等语言,现在也支持Rust了。
官方写了文章,介绍如何在Rust中使用Passenger作为应用服务器。
每日新闻订阅地址:
欢迎通过GitHub issues投稿。
评论区
写评论还没有评论