rust主播排行_「Rust日报」2019每周精选 • 第四期

前言:

从2018年开始,我每天会花1个小时关注Rust社区动态,并且在Rust.CC论坛、tg channel、Steemit、GitHub、语雀订阅都开通了Rust日报,分享我每天的见闻,偶尔也夹杂了一些个人的观点。新的一年过去了,Rust每日新闻已经成为了Rust社区群大家每天必看的内容。每周也会精选几篇Rust社区中的动态,和大家分享。分享的内容就不按时间排序了。

2019-02-03

全球Rust招聘信息

「远程工作」丹麦Impero的一家正规公司招全栈Web Rust工程师

要求全栈Web工程师,懂Rust。主要工作应该是后端API设计。可远程

Discord 招聘Rust工程师

Discord游戏商店大量使用了Rust,它们现在开始招Rust工程师,来做一个顶级保密的新项目。没有看到支持远程。

「北京」移动端图形渲染开发工程师

岗位描述:开发业界顶级跨平台(macOS/iOS/Android)渲染器。

编写Shader解析器。

优化Shader执行效率。

岗位要求:熟悉Rust/C++语言,有一年以上Rust开发经验更好。

熟练掌握OpenGL ES /Metal/Vulkan其中两项或以上,最好熟悉SPIR-V规范。

拥有良好的工程意义,可编写高质量、简洁、易维护的代码。

内推邮箱,请备注简历+姓名 : zhoujianquan 「@」http://kuaishou.com。欢迎推荐,转发。

系统工程师工作GitHub仓库

有人在GitHub上专门建立了一个帐号,建立了四个仓库:C/Cpp/Rust/Swift,用于收集世界各地用这四个语言的系统工程师招聘职位信息。

是一个新库,可以关注下,没准有需要呢?

官方新闻

Rustwasm 2019 Roadmap

当前,Roadmap已经提交PR,但未合并。可以先关注。

总的来说,目标就是从「可用」到「稳定」:通过模块化的工具来继续培养rust wasm的生态系统

为Rust生成的wasm带来多线程支持

在工具链中集成最佳的调试工具

打磨工具链和发布流程,直到wasm-pack发布1.0版

Cargo的长期计划

Cargo负责人nrc发文2019年:交叉编译,包括wasm和embeddded / 改进cargo,让插件更易编写

2020:将Cargo嵌入到构建系统和IDE中。

2021:为最终用户定制工作流程。

「官方」Rust基础设施团队正在考虑停止使用Travis CI

将在下周柏林举行的Rust All Hands会议上讨论更换到哪个CI平台上面。文章里还罗列了Rust基础设施团队在Travis CI碰到的诸多问题,感兴趣可以看看。

社区新闻

RFC:为log增加dbg!风格的宏

log #dbg #debug

Crossbeam 2019: 无锁Rust

文章从介绍Crossbeam开始,先后罗列了从Crossbeam库从2015走到2018期间经历的变化,并展望了接下来重点要完成的工作:AtomicReference

ConcurrentHashMap

增加这两个并发数据结构的支持。另外还有一些优先级较低的零碎工作。

Salsa: 增量式重新编译

Niko介绍了他的新库:salsa。该库是将rustc中的增量式重新编译技术提出来变成一个通用的框架。Salsa现在已经被用在了一些项目中,比如rust-analyzer。但rustc本身并没有使用该库。Niko还录制了两个使用Salsa的视频教程。

Rust在基准测试排行榜中上升到了第一

在以下几个算法测试项目中,Rust都战胜了其他语言,排行上升到了第一

另一个性能测试

该作者制作了一个Ruby脚本,包括了多种语言的基准测试(C,C ++,Rust,Go,Java和C#,但可以添加更多),重新标准化了平均值。

得出的结论是:Rust在基准测试游戏中的表现优于C++ 3%,比C慢4%。

「嵌入式Rust」实验:STM32 MCU 性能如何?

在TiKV中使用tower-grpc

TiKV负责人siddontang写的一篇文章。TiKV团队之前自己实现了一个grpc库,但问题是该库。不是纯Rust实现,在生产环境中遇到了一些panic,所以想彻底拥抱Rust社区,使用纯Rust的库。但是又不想发明轮子。所以从grpc-rust和tower-grpc中选择了tower-grpc。

tower-grpc并不稳定,但是它的好处也是比较明显的。比如作者是非常活跃且知名的,基于tokio等。

另外:TiKV已经升级到了Rust 2018 Edition

GNome中的流媒体广播应用Gradio将用Rust重构

重构后的项目叫Shortwave

现代C++和游戏开发的一些思考

这篇文章和Rust没关系,但是可以看看CPP的现状。

长文,但是作者总结了两个观点:要么,你什么都不要做。也就是说,你可以继续使用Cpp,但不要用它的任何新功能。继续用C++98。但这不是一个长期的解决方案。

要么,参与到Cpp的变革中。来参见CppCon,来参与Cpp委员会的讨论和议程,发出你的声音。

其实还有第三个选择:看看Rust。(作者并没有说)

Apple为Swift语言申请了专利

该文作者阐述了对Apple为Swift语言申请专利的担忧。该专利覆盖了Swift语言的整体理念。比如:该语言在某些领域提供C语言兼容性的功能,以提高用该语言编写的软件的固有安全性。新语言包括默认安全注意事项,例如边界和溢出检查。

大家如何看待?不知道会对Rust带来何种影响。

「系列文章」WebAssembly算不上一个栈虚拟机 Part I

本文作者指出了当前WebAssembly设计的缺陷,表面是一个栈虚拟机,但实际上在编译层面是一个性能不算好的(liveless,对变量没有活跃期分析,而导致重复计算)寄存器式虚拟机,只是在最后才表现的像一个栈虚拟机。这个缺陷是来自于之前的设计规范是基于进一步简化asm.js而导致的历史原因。所以现在出现wasmtime这样的流式WebAssembly编译器来解决这种问题。

作者在后续还会写几篇关于WebAssembly问题的文章。

GitHub Actions: 自动format代码格式

这是一个GitHub Action,支持对多种语言的软件的代码进行自动格式化。支持Rustfmt和Clippy。

「讨论」你认为Rust代码组织有哪些最佳实践或陷阱?

我个人是一个代码组织的实践就是:组件化。这也是Rust所倡导的。在单个组件之内,进行模块化,分清层次结构。

讨论中,也有喜欢扁平化的结构,这样方便测试,直到找到足够的理由再分拆单个组件包。

大家有什么分享的?

「讨论」读Rust代码比写Rust代码更容易

我也同意,Rust的代码可读性很好,读代码比写代码更容易。并且还可以总结出一些高效阅读代码的技巧,这完全得益于Rust的高度一致性。

讨论中提到了Cpp、Python、JS等其他语言的可读性探讨。这种争论应该还算可以接受,感兴趣可以关注下。

学习资源

Rust「无悔」并发

无畏(fearless)并发难道已经过时了?现在是要流行无悔(regretless)并发了吗?

作者认为,无畏并发并不意味着「没有后悔」的时候。作者在本文中主要探讨了event-loop并发建模的诸多好处,并且如何利用Rust多线程来进行event-loop建模。

Rust web框架比拼

这个GitHub项目汇集了Rust各种web框架的相关资料,包括Rust实现的前端WASM框架、Websocket、Template等项目。

还包括了很多博客、项目demo等学习资源。相当全面了。

「系列文章」Rust如何发送邮件

作者将通过三篇文章来讲解如何用Rust编写邮件发送的代码。

Blog OS系列: 高级分页

这是继上篇内存分页介绍之后,进一步介绍操作系统内核如何访问物理页的技术,通过这种技术可以实现虚拟地址到物理地址的转化,以及如何在页表内创建映射。

如何用Rust开发iOS应用

该文章介绍了如何使用Rust开发iOS应用,里面也有一份Rust on Android的文章链接。

Rust闭包的秘密

作者总结了Rust闭包中的一些规则,可以看看。

「视频」直播合集:构建WebAssembly/WebGL渲染器

作者在油管做了一系列的直播,这个视频是这些直播的合集,所以比较长,大约3小时多。

inferno: 火焰图工具移植为Rust

上次介绍过油管开直播视频讲如何移植火焰图工具那位作者的库

「长文」Rust性能:match vs 表查找

该文作者在研究生物信息学(bioinformatics)算法的过程中,发现将Rust的match改成表查找,算法的性能得到了很大的提升。参见

将下面的match代码:

fn match4(x: u8)-> u64 {matchx{b'A'=>1,b'B'=>2,b'C'=>3,b'D'=>4,_=>0,}}

修改为:

uselazy_static::lazy_static;lazy_static!{staticrefLOOKUP4: [u64;256]={letmutl=[0;256];l[b'A'asusize]=1;l[b'B'asusize]=2;l[b'C'asusize]=3;l[b'D'asusize]=4;l};}fn lookup4(x: u8)-> u64 {LOOKUP4[xasusize]}

并且使用了lazy_static。

作者好奇,为什么编译器没有为match表达式生成最佳代码。于是他开始了一系列的测试和挖掘,从生成的汇编到LLVM都进行了一番考究。

使用systemd、配置文件和.deb二进制构建Linux Web服务器

通过cargo-deb,将你的web项目生成.deb文件,并配合systemd和配置文件,就可以把tide、actix-web或rocket等项目,变成像nginx那样的“Linux App”。就可以通过系统命令来启动你的服务。

sudo systemctl restart tide-server

FFI:在Node和Rust之间交换数据

本文探讨了如何在Node和Rust之间传递数组、结构体等数据,以及如何使用回调。对于学习FFI也是一个好的案例。

使用rust和uinput创建Android虚拟输入设备

用AWS和Rust进行Serverless App开发

项目、工具与库

tactical: wasm游戏

之前介绍过,基于Rust实现的2D回合制游戏zemeroth,现在支持wasm

whatlang-rs: Rust实现的自然语言检测库

基于Rust和Wasm实现。可以检测语言属于哪国语言。

OOProxy: OpenID代理库

该文作者介绍了OOProxy库,支持OpenID和OAuth2。

「嵌入式Rust」构建支持嵌入式系统的Future Executor

作者在实现一个模块化机械键盘的项目,在这个过程中,实现了一个可用于嵌入式的Future exector。为什么要自己实现?因为发现现在的嵌入式生态并不能满足他的需求。

Pushrod: Rust的UI库

是属于Piston项目中的跨平台UI Weight库

websocat: 命令行webscoket客户端工具

log-derive: 方便加log的宏工具

#[logfn(Err ="Error", fmt ="Failed Sending Packet: {:?}")]fn send_hi(addr: SocketAddr)-> Result{letmutstream=TcpStream::connect(addr)?;stream.write(b"Hi!")?;Ok(())}

可以自动生成log输出,跟踪函数调用,可用于调试代码。

Rust实现Redux

且支持no_std

Fluent-rs 0.5发布

ProjectFluent是一个本地化(L18N)框架,fluent-rs是Rust实现。

用Rust实现Haskell中的group_by

更短的UUID实现

rust-numext: 扩展Rust的内建数字类型

包含了大数和散列操作。

derive_more 发布0.14版

现在支持no_std环境

「嵌入式Rust」Rust实现的显示器驱动

Holtek CO₂ USB显示器的驱动程序

insta: snapshot测试库

一个Rust的快照测试库,给第一次跑测试的结果生成一个快照,后面就可以用这个快照来保证代码不会被破坏。

Rust周边

「Rust周边」订制活动预报

想要的朋友,可以联系我。感兴趣可发我邮件,地址: 247o26628 at http://qq.com。注明你想要哪种周边,目前还清楚价格,只是收集意愿,达到一定数量才会开启订制。等年后,再宣布具体的款式和价格,图案都会订制成Rust相关,但质量会和它一样的。

一: 棒球帽

二: 书签

你可能感兴趣的:(rust主播排行)