【Rust日报】 2019-08-05

in rust •  5 years ago 

「Rust异步之书」中文翻译

#async #book

感谢 @huangjj的分享

Read More

nphysics的未来:纯Rust的2D和3D实时物理引擎

#physics #game #Rustsim

作者在本文中探到了Nphysics将来的愿景,是做一个性能水平可与现有流行的C++开源物理引擎(如Box2D和Bullet Physics)相媲美的Rust实时物理引擎。

该库现在属于Rustsim组织。

Read More

veloren: 一个类似于我的世界的游戏发布了0.3版本

#game

「SO问答」Rust中的128位整数如何在64位系统上工作?

#stackoverflow

问题:

Rust有128位整数,用数据类型i128表示(u128表示无符号整数):

let a:i128 = 170141183460469231731687303715884105727;

Rust如何使该i128值在64位系统上工作?它是如何做算术的?因为据我所知,这个值不能放在x86-64处理器的一个寄存器中。编译器是以某种方式为一个i128值使用两个寄存器,还是使用某种大整数结构来表示它们?

回答:

所有Rust的整数类型都编译为LLVM整数。LLVM允许1到2^23 - 1之间任意位宽的整数。LLVM指令通常处理任意大小的整数。

在LLVM IR级别,答案是:两者都不是。i128适合一个寄存器,就像其他单值类型一样。另一方面,一旦翻译成机器码,两者之间就没有什么区别,因为结构可以像整数一样分解成寄存器。然而,当进行算术运算时,将整个数装入两个寄存器是一个非常安全的选择。

*虽然我知道对大于128的大小和非2的幂的支持是不稳定的,并且实现可能有错误,这可能部分解释了为什么Rust只公开1、8、16、32、64和128位整数。

Read More

indextree 4.0发布

#indextree

pulldown_cmark库为了增加解析速度,快速构建和遍历AST,就使用了indextree。

Read More

Battleship: 控制台游戏

#cli

新手可参考它来学习Rust

Battleship

SPOJ将Rust升级到1.33版本

#spoj

SPOJ是波兰最为出色的Online Judge之一,界面和谐,题目类型也非常丰富,适合有一定基础的选手练习,对高手而言也是个提高能力的良好平台。现在已经支持了Rust 1.33版本。

Read More

Rust vs GUI: Rust所有权对于GUI开发的影响

#GUI #GTK

本文通过一个简单的示例探讨了Rust所有权对GUI开发的影响。

结论:在构建GTK应用程序时,Rust带来了一些合理的权衡。但这并不意味着它没有代价。如果你决定使用Rust进行GTK应用程序开发,那么在开始设计自己的框架之前,你可能需要检查relm(Rust实现的,基于GTK+的仿elm框架)是否有更高级别的应用程序接口。

isahc: 之前的cHTTP已经改为此名

#http

一个实用的HTTP客户端。

Isahc vs Reqwest:

  • Isahc使用http crate作为其公共API的一部分,而reqwest将其隐藏在实现中
  • Isahc具有更小的依赖树和更小的二进制内存占用

改名的原因:

  • cHTTP太难念
  • cHTTP不容易被记住

(所以,isahc难道是 is a http client 缩写吗? 这新名字起的也不咋地。。。233)

isahc

「系列文章」用Rust重写物联网网关 Part 2: 饮鸩止渴:为什么我们不用C++重写IoT应用

#IoT

标题为:「Abusing Fire for Light - Why we didn’t rewrite our IoT app in C++」,翻译过来就是: 「饮鸩止渴:为什么我们不用C++重写IoT应用」

文章里这个类比比较经典(普罗米修斯盗了天火,为世界带来了光明,但与此同时也带来了灾难):

我们本可以用C++重写我们的物联网平台应用。使用C就像用蜡烛照明一样。它的基本属性是众所周知的,它从文明之初就存在了,如果你滥用它,它会让你周围的房子着火。(在这个比喻中,C++将是“所有可以被点燃产生光的东西的集合”。)

该文的作者是智能家居系统公司Dwelo的IoT工程师,该文主要罗列了一些Cpp编写嵌入式应用可能拥有的问题。

用epochs修复c++

#cpp

有人写了篇文章,呼吁Cpp也学Rust那样引入Epochs。

想象一下,你已经设计了一种编程语言超过30年,并且它逐渐在全球广泛使用。你在开始时所做的一些决定非常出色,并为你的项目的成功做出了贡献。然而,还有一些不是最好的:多年来,你和你的用户意识到,如果你多年前所做的选择略有不同的话,这个世界会变得更好。
你不断发展你的语言,增加有用的功能,并使它跟上竞争的步伐。然而,糟糕的选择和旧的(现在已经过时的)结构仍然挥之不去。
你试着删除语言中最危险和最少使用的部分,虽然他们的删除非常成功,但是一些用户无疑会受到它的阻碍。对于更受欢迎的构造,您尝试不赞成:社区的大部分人欢迎它并迁移它们的代码库,而另一个人发现实现一致性所需的工作要么大得不合理,要么由于遗留依赖关系或许可问题而不可能。
除非你偶然发现这篇文章,否则似乎没有出路。它的作者提出了一个不可思议的主张:
如果我告诉你,我可以解决你所有的问题呢?更好的是,如果我告诉你向后兼容性永远不会被打破,并且可以自动迁移到你的语言的更新版本呢?
此时,你立即认为这家伙一定是疯了。然后他说...
而且,已经有人做了。而且奏效了。
现在你感兴趣了。

这篇文章的Rddit讨论贴里有人说:这就是我为什么学习Rust的原因,Cpp那帮人是不会同意的。

proc_macro_roids 0.3 发布

#proc_macro

proc_macro_roids是一个辅助你写过程宏的小工具。

proc_macro_roids

staticvec: 基于const generics实现的栈分配固定容量的Vec替代方案

#Vector

发布了0.2版本

staticvec


From 日报小组 Chaos

日报订阅地址:

独立日报订阅地址:

社区学习交流平台订阅:

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!