前言:
从2018年开始,我每天会花1个小时关注Rust社区动态,并且在Rust.CC论坛、tg channel、Steemit、GitHub、语雀订阅都开通了Rust每日新闻,分享我每天的见闻,偶尔也夹杂了一些个人的观点。大半年过去了,Rust每日新闻已经成为了Rust社区群大家每天必看的内容。在这个知乎专栏里,每周会精选几篇Rust社区中的动态,和大家分享。分享的内容就不按时间排序了。
2018-11-04
$ rustup install beta
该文是官方团队成员withoutblogs所写。
锚定(Anchored)和统一(Uniform)路径,是当前Rust 2018中还存在的两种模块路径引入变体支持。但是官方计划在12月正式发布Rust 2018的时候只保留一种变体。
在Rust 2018版本中:
impl ::std::fmt::Debug,而只需要写impl std::fmt::Debug锚定(Anchored)和统一(Uniform)路径区别:
self::submodule::。use submodule:: 。use ::foo 来消除歧义。经过官方团队的内部会议之后,该文作者认为以后应该走统一路径的方向。
self::这样的障碍。use :: 这种方式,比使用use self要好的多。官方会在未来3周内对此问题做出决定。即,withoutboats建议,在1.31版本中,只保留统一路径。
从Rust 1.28开始稳定了#[global_allocator]属性,从PR55238开始,Jemalloc已经被彻底移出了标准库。
如果想使用Jemalloc,则需要配合#[global_allocator]属性喝jemalloc第三方包。
现在默认是系统分配器。
#trait_alias
trait DebugDefault = Debug + Default;
简要:
一、 好消息:终于可以用Rust Stable开发嵌入式程序了。
因为#[panic_handler]登录了Rust 1.30稳定版,这就意味着可以用Stable Rust写Cortex-M的裸机程序了。cortex-m, cortex-m-rt 和 embedded-hal这几个库都可以用于Stable了。
但要注意在Discovery 和 The Embedded Rust Book这两本书中的代码还必须在1.30 beta或1.31 beta或最新Nightly版本中使用,因为它们用了2018 Edition版本。
二、嵌入式工作组已经启动了一个Cortex-A团队,专注于为ARM-Cortex-A系列微处理器的裸机程序开发提供支持。
三、为了解决多个设备连接到同一个外设的问题,@Rahix开发了shared-bus
四、嵌入式社区有了蓬勃的发展。工作组也从最初的8个人,增加到了现在的27名开发人员(分散在11个团队中,每个团队都在嵌入式开发中有自己的擅长领域)
现在是开始用Rust进行嵌入式开发的最好时机。
该文章有更新。
Rust核心团队成员Ashley Williams(@ag_bubs),同时也是crates.io、Rust社区的团队领导,WebAssembly工作组的成员分享了这篇主题。
「视频地址:」How I Convinced the World's Largest Package Manager to Use Rust, and So Can You!
现在Rust 2018的crate已经默认是使用NLL了。在2018 测试版本稳定之后,官方也准备将NLL加到Rust 2015中。
NLL的目的是提升Rust的使用体验。也就是说,开发者只需要按自己的直觉去写代码,而不需要做一些特殊的行为来取悦借用检查器。极大降低了Rust的学习曲线。
Nll的诊断信息也得到了很大的提升,比之前的借用检查器更好,开发者可以看到更详细的错误提示信息。
虽然NLL现在还有一些轻微的开销,但是性能基本已经不再成为实践的阻碍了。
当前NLL运行在迁移模式下,也就是说,对于一些不遵循NLL的老代码,会报出警告信息。这只是一个过渡,假以时日,这些警告会变成硬性的错误。
Rust所有权和借用检查的未来如何?
还有一些小问题需要修复,以及应对未来人们开发过程中的新问题,并且还要加紧发布相关的文档。继续改进Polonius。等等
Rustsim组织是一个GitHub组织,聚焦于提供各种数值模拟的库。包括
今年最后的两个月,在改进ncollide和nalgebra,以便支持可变性物体的物理模拟。并且新增了两个crate:nalgebra-glm和nphysics-ecs。其中nphysics-ecs是打算让开发者方便将物理系统集成到ECS应用程序中。
还将改进文档。
#oj #kattis #codewars #leetcode #code_challenge
顺便统计一下国内外支持Rust的OJ平台。
欢迎补充
该库是parking_lot作者开发的新库, 基于SwissTable算法实现了HashMap和HashSet。
Rust标准库的HashMap和HashSet基于RobinHood散列,hashbrown基于SwissTable散列。
SwissTable整体性能要优于Robinhood,尤其是在搜索上面:
| name |stdhash ns/iter | hashbrown ns/iter|diff ns/iter| diff % |speedup
|find_existing | 23,831 | 2,935 | -20,896 |-87.68% | x 8.12
|find_nonexisting | 25,326 | 2,283 | -23,043 |-90.99% | x 11.09
|get_remove_insert| 124 | 25 | -99 |-79.84% | x 4.96
|grow_by_insertion| 197 | 177 | -20 |-10.15% | x 1.11
|hashmap_as_queue | 72 | 18 | -54 |-75.00% | x 4.00
|new_drop | 14 | 0 | -14 |-100.00%| x inf
|new_insert_drop | 78 | 55 | -23 |-29.49% | x 1.42
正式版将于11月9号发布,到时候作者会写一篇完整介绍V0.4最大特色和变化的文章。
Rust团队核心成员Niko又开了新坑,莎莎(salsa),是一个通用的增量计算框架。
然后我又看到Cargo的贡献者Yehuda创建了一个新库:salsa-examples,我在猜测,Yehuda是不是想在salsa的基础上实现一个新的ORM框架呢?
本周新增的CPU架构为:
本文是来自 @driftluo 的投稿。
他在使用全异步开发cita-cli过程遇到了自引用的问题,但他是在稳定版Rust下开发,使用的还是futures 0.1,为了解决这个问题,他给出了一个自己的思路。
--
该篇文章在gfx-hal基础上构思了一个2D图形库的一些底层实现细节。他讨论的这些内容并非2D图形API,而是基础的组件,在此组件上面可以实现各种渲染技术,并且该组件将独立于这些渲染技术。
目的是想让Qt的安装和运行更加简单
Pyro是一个快速的、小型的、带文档的ECS。
特点:
rs_pbrt是对《Physically Based Rendering,PBRT(光线跟踪:基于物理的渲染) 》这本书中代码的Rust实现。
当前为POC项目。
zkSNARKS是一种零知识证明算法,以太坊据说要应用这种技术来提升以太坊的性能。
Buterin 估计,ZK-SNARK 的整合和采用能够使以太坊每秒处理高达500笔交易,而目前的上限约为15笔。
该项目是来自于生产环境实践的开源项目,从kafka topic读取protocol buffer的数据并将推送通知发送到apns2,fcm和web-push三个平台,也可以用来发送普通的http请求。
新的版本更加可靠,且实现了零Copy读取,Rust的所有权模型让引用安全地返回给缓存而无需防御性的拷贝。
支持用Rust编写桌面软件,基于Mozilla WebRender渲染引擎。
目前还在完善中,期望特点(也就是说,当前这些功能并非全部支持):
特点:
该库可以快速计算内存中给定字节或UTF8字符串出现的次数
新版本中支持了新的更快的算法,基于stdsimd。
该库是在Rust 2018 Conf闭幕演讲中介绍的,基于 Generational Index模式实现的库。
新功能:
aws_lambda_events 提供了AWS Lambda事件类型,以便与AWS Lambda事件源一起使用。
SUPER 是一款Android应用程序分析工具,可以检测潜在的安全漏洞并创建漂亮的报告。
该工具是基于Google的Roughtime协议的Rust实现,包含了客户端和服务端。可以用来做时间同步验证。比如区块链矿工可以用它来验证自己的时间早于其他矿工。
新版本中支持KMS、HTTP运行状况检查和服务器模糊测试
关键字: [xcp, cp]
提供进度条和.gitignore支持
关键字: [volkswagen, ci, auto pass]
extern crate volkswagen;
#[cfg(test)]
mod tests {
#[volkswagen::test]
fn it_works() {
assert_eq!(1 + 1, 3);
}
}
比如这个测试,会失败。但是volkswagen会根据失败的结果,生成一个新的测试,让其通过。
目测,用这个工具的时候最好确定你真的需要它来自动生成测试,否则可能引起问题
「附带八卦」
该作者起volkswagen这个名字,可能另有深意啊。
大众汽车「排放门」,2015年9月18日,美国环境保护署指控大众汽车所售部分柴油车安装了专门应对尾气排放检测的软件,可以识别汽车是否处于被检测状态,继而在车检时秘密启动,从而使汽车能够在车检时以“高环保标准”过关,而在平时行驶时,这些汽车却大量排放污染物,最大可达美国法定标准的40倍。
工作地点:北京
因为项目涉及保密,所以公司名和公司联系方式不便对外公布。
内容:开发iOS/Android短视频渲染框架
预算:30-50k
要求:
- 熟悉Rust/C++语言,有一年以上Rust开发经验更好。
- 熟练掌握OpenGL ES 3.x/Metal/Vulkan其中之一,拥有一个或以上已上线图形渲染项目开发经验。
联系方式: 82084788 [at] qq [dot] com
工作城市: 上海
岗位描述:
1、开发跨平台高性能native客户端核心组件;
2、负责沟通及创作工具的系统设计, 实现, 优化和演进;
3、研究分析主流 IM,优化实现方案,改进产品功能;
4、负责设计和优化 IM 协议、弱网通信、推送、存储、网络并发、并行计算、加密以及安全等;
5、保证工程质量和开发效率。
岗位要求:
1、良好的系统编程能力. 喜爱或有Rust经验以及扎实的C/C++功底更佳;
2、喜爱关注新技术, 愿意尝试更优解决方案;
3、不设边界, 愿意探索了解事物运转原理;
4、熟悉开源社区;
5、热衷自动化完成事情;
6、关注代码设计,有持续学习习惯。
注:如有需要,可以联系我,帮转(猎头)简历。