0%

最近在学习 Rust,发现 Rust 社区真的是有非常丰富的资源,从社区中学到了很多有用的东西。与此同时,也一直想着能够为社区做点什么。

正好发现《The Rustonomicon》(也称为 Rust 秘典、死灵书)之前的一版中文翻译(感谢@tjxing)是更新到了 2018 年,之后就再也没再更新维护过了;而这三年官方也对于这本书进行了大量的迭代升级,于是想着重新翻译一版,并尽可能持续跟进迭代,贡献给社区,也算是尽一份绵薄之力。

在线阅读地址:https://nomicon.purewhite.io/

github 地址:https://github.com/PureWhiteWu/nomicon-zh-Hans

阅读全文 »

原文:https://github.com/dtolnay/rust-faq

本文档的存在是为了回答有关 Rust 编程语言的常见问题。它不是一个完整的语言指南,也不是一个教授该语言的工具。它只是一个参考,用来回答 Rust 社区中人们经常遇到的问题,并澄清 Rust 的一些设计决定背后的原因。

阅读全文 »

大家应该都听说过 Rust 语言是以安全(Safe)作为特性之一的,但是由于一个悲哀的事实——硬件是不安全(Unsafe)的,所以其实所有的“安全”一定是在“不安全”之上的封装,这也导致了完全意义上的“Safe”是很难做到且功能极其受限的。

那让我们来看看,Rust 的 Safe 边界在哪里。

阅读全文 »

写在前面:

最近看到了一篇讲 Rust 如何对框架进行抽象的文章,写得非常好,这两天抽空翻译了一下。

原文:https://tokio.rs/blog/2021-05-14-inventing-the-service-trait

正文

Tower是一个模块化和可重复使用的用来构建 client 和 server 的组件库。其核心是Service特性。一个Service是一个异步函数,它接受一个请求并产生一个响应。然而,Tower设计的某些方面可能不是那么一目了然。

与其解释今天存在于Tower中的Service特性,不如来看看Service背后的设计考量。让我们试试看,如果今天重新设计实现它,我们会怎么做。

阅读全文 »

缘起

最近想尝试在 Golang 里面实现clock_gettimeCLOCK_REALTIME_COARSECLOCK_MONOTONIC_COARSE,正好深入研究了下 time.Now的实现,还机缘巧合下顺便优化了一把time.Now(虽然最终提交的是 Ian 大佬的版本)。

在这里记录下来整个过程,以供查阅。

阅读全文 »

Golang 的泛型实现已经正式合并到 master 分支上啦,之后也会在 master 分支上进行开发,那么作为期待这个 feature 许久的 gopher,也想第一时间看看到底是如何实现的。

阅读全文 »

有多少人工就有多少智能。 ——鲁迅

缘起

众所周知,字节跳动内部主要使用 Thrift,为了更好地掌控生成代码,我们用 Go 自己实现了 Thrift 代码生成工具。

而我们的故(shi)事(gu),正是由一次重构开始……

阅读全文 »

缘起

最近 Go 1.15 发布了,我也第一时间更新了这个版本,毕竟对 Go 的稳定性还是有一些信心的,于是直接在公司上了生产。

结果,上线几分钟,就出现了 OOM,于是 pprof 了一下 heap,然后赶紧回滚,发现某块本应该在一次请求结束时被释放的内存,被保留了下来而且一直在增长,如图(图中的 linkBufferNode):

火焰图

这次上线的变更只有 Go 版本的升级,没有任何其它变动,于是在本地开始测试,发现在本地也能百分百复现。

阅读全文 »