< 返回版块

makeco 发表于 2019-11-22 21:41

crates.io 切换了DNS服务器

#rust #crate

Crates.io于今日切换了DNS服务器,在接下来的几天,这个改动将会影响到所有人,这个过程应该不会有什么问题,如果有问题的话可以Twitter @rustlang。

Read More

Rust for NDK development

#rust #android

Android 程序员对 Android NDK 并不陌生,它是一套允许您使用 C 和 C++ 等语言,以原生代码实现部分应用的工具集。在开发某些类型的应用时,这有助于重复使用以这些语言编写的代码库。这是一篇使用Rust在Android位图中渲染Fractal图像的示例,如果团队中有Android程序员需要Rust NDK开发,可以看一下这篇入门文章。

Read More

std::future合并到了actix-web

#rust #web

Read More

在Rust中使用Redis内存分配器

#rust

作者在开发redismodule-rs时遇到一个问题,他需要创建自定义的内存分配器。我们知道Rust为String和Vec类型分配内存时使用的是Global Allocator,然而redis 模块的是以共享库的形式被编译的,也就是说Rust要使用这个模块就要用到System Allocator,这是系统默认提供的内存分配器,这种行为会导致几个问题:

首先,Redis可能根本不使用系统分配器,而是依靠jemalloc。 jemalloc分配器是系统malloc的替代方案,它除其他功能外还包括许多避免碎片的调整。 如果模块使用系统分配器,而Redis使用jemalloc,则分配行为将不一致。

其次,即使Redis始终使用系统分配器,Redis也不会看到模块直接分配的内存:它不会显示在诸如信息内存之类的命令中,也不会受到Redis执行的清除操作(例如逐出键)的影响 。

由于这些原因,Redis模块API提供了钩子,例如RedisModule_Alloc和RedisModule_Free。 它们的用法与标准malloc和free调用非常相似,但是除了将调用实际传递给内存分配器之外,还使Redis知道分配的内存。

Rust提供了实现自定义内存分配器的能力,可以通过impl GlobalAlloc 实现自己一个RedisAlloc,通过Redis 模块API提供的钩子来实现内存分配和释放。

Read More


From 日报小组 格朗

日报订阅地址:

独立日报订阅地址:

社区学习交流平台订阅:

评论区

写评论
c5soft 2019-11-22 22:34

最激动人心的就是Actix-Web 发布2.0.0-alpha.1,支持async/await新语法

1 共 1 条评论, 1 页