前言:
从2018年开始,我每天会花1个小时关注Rust社区动态,并且在Rust.CC论坛、tg channel、Steemit、GitHub、语雀订阅都开通了Rust每日新闻,分享我每天的见闻,偶尔也夹杂了一些个人的观点。大半年过去了,Rust每日新闻已经成为了Rust社区群大家每天必看的内容。在这个知乎专栏里,每周会精选几篇Rust社区中的动态,和大家分享。分享的内容就不按时间排序了。
2018-11-24
官方新闻
「官方」crates.io帐号审核措施
从2019-02-28开始,需要经过验证电子邮件地址的帐号才能往crates.io发布crate。所以,之前注册帐号的,2019-02-28之前,可能会收到警告,要求你去验证注册的email地址。如果不验证,2019-02-28之后就会收到发布错误了。 crates.io承诺将保护好你的隐私。
「CLI工作组」Cli Book新发布了打包章节的第一个版本
社区新闻
RustFest Roma大会开始了
塞萨洛尼基(希腊古城) GNOME+Rust Hackfest 活动记录
TiKV Rust Client呼吁社区开发者参与
TiKV Rust Client 的RFC马上完工,现在呼吁社区开发者为其做贡献。也是一次最佳练手的机会。
当然,如果你对去PingCAP工作感兴趣的话,也许也是一次绝佳的机会。
如何参与?
开发环境配置:
- 最简单的就是本机启动一个pd(Placement Driver ),然后启动一个 Tikv,都用默认的配置应该就能跑起来。
然后提交PR或Issues就可以了。
RedHat发布对Rust、Go、Clang/LLVM6.0的支持计划
RedHat对Rust1.29、Go1.10和Clang/LLVM6.0的可用性评估之后,现在已经将它们提升到了完全支持状态。在完全支持阶段,一些合格的重要的勘误表(RHSA)和一些选定的高优先级的错误修复表(RHBA)将会在可用时及时发布。
由于这些包正在快速发展阶段,RedHat将对它们提供特别的更新支持。Rust每个季度会有更新,对于LLVM和Go,则是半年一次。
2018 JS状态报告里提到了Rust
With projects like Web Assembly arriving on the scene, writing code directly in JavaScript might soon seem quaint as developers embrace languages like Rust instead.
Rust中的泛型方法:Exonum如何从Iron迁移到Actix-Web
本文是Exonum工程师记录了使用泛型编程将Iron迁移到Actix-Web框架的过程。
由于平台自身的增长需求,需要从同步迁移到异步,Iron是同步框架,已经无法满足需求,所以选择了actix-web。
他们不仅仅是迁移Web框架,更重要的是,重新设计新的API体系。本文较长,其中详细给出了如何利用泛型编程对API进行设计的思考,感兴趣的可以看看。
学习资源
使用Rust为PostgreSQL编写扩展函数
作者提供了一个库pgxr,可以方便地使用该库提供的宏来编写postgresql的扩展函数
无等待线程本地存储
本文介绍了一种无等待线程本地存储。
PHP中运行WASM
用C语言编写的PHP扩展,通过FFI调用Rust lib,用wasmi来执行wasm。 只是一个POC版本!
「教程」Rust中的编译时Features Flag
Features Flag用于启用或禁用features的配置。本文讲解了如何在项目里使用它。
这篇文章是作者参加一个2018 塔防游戏机器人大赛过程中总结出来的。
也是用Rust实现,源码: entelect-challenge-tower-defence
游戏官网: challenge.entelect.co.za/ ,好像挺好玩。
使用Pest实现EBNF语法
作者在实现一个XML解析器,这篇文章记录了使用Pest来实现使用EBNF-esque形式的词法分析器。
「演讲」ADC'18大会: Rust音频编程
Rust+WASM实现的小程序
群友@JiaYe 使用Rust和WASM实现了Gif图片制作的小程序。
让小程序加载wasm模块,还需要做一些针对性修改,可以在该源码里看到。感兴趣的可以看看。
项目
建立在mio之上的网络库:Sonr
相比于Tokio来说,更加轻量。但不晓得是不是玩票之作,至少可以满足学习的需求。
TypedHtml: 带类型检查的JSX模板
这个库上次(前几天)介绍还是100左右的star,现在已经上升到800多star了。也增加了Readme说明。
Vulkano:Vulkan API的Rust安全绑定
Vulkan是由Khronos Group组织(知道OpenGL的话应该都听过这个组织)提供的一个新型的图形接口,它对现代图形显卡做了一个更好的抽象。跟现有的图形接口例如OpenGL和DirectX相比,Vulkan的性能更加强劲,驱动表现更加符合预期行为。Vulkan背后的设计思路跟 Direct3D 12 和 Metal 类似,但它具有跨平台的优势,可以让你同时在windows,linux和android上进行开发。 来源
用Rust实现ecmascript 2019 parser和ast visitor
wasmer: 高性能WASM JIT解释器
基于Cranelift 代码生成引擎实现的。
quinn : Rust实现的QUIC协议
也就是HTTP3,这两天火了呢。
注意看项目Readme,有相关演讲。
「嵌入式」 Rust实现的闹钟
纯Rust打造的DIY液晶闹钟,很酷。
pijul 0.11发布
pijul是基于Rust实现的类Git版本控制工具,用法介绍
amp: 类Vim的终端文本编辑器
这个库最近在GitHub趋势榜上升很快,最近几天发布了0.5.2版本。使用Vim的核心的交互模型,但是对其做了简化。其内部结构(工具集)已经独立为scribe库,包含数据结构、语法高亮、工作空间管理等功能。
drone: Rust无人机项目
四轴飞行器
Proptest:Rust实现的属性测试框架
Proptest受Python Hypotheis测试框架启发,而Hypotheis是由Haskell的QuickCheck包启发而成的。
本质上它是用来产生测试数据的,但是它会注意到内存泄露以及越界等会使测试崩溃的问题,因而,在某种程度上它可以为你编写单元测试。
工具与库
Wither 0.6发布
wither是为Mongodb编写的Rust驱动。可以参考宣传文章,有更多介绍。
命令行HTTP客户端
一个Rust实现的类crul命令行http客户端,灵感来自于Python的HTTPie