scylla-rust-driver:适用于 Rust 的异步 CQL 驱动程序

这是 ScyllaDB 的客户端驱动程序,用纯 Rust 编写,使用 Tokio 实现完全异步 API。尽管针对 ScyllaDB 进行了优化,但也与 Apache Cassandra 兼容。

例子:

let uri = "127.0.0.1:9042";let session: Session = SessionBuilder::new().known_node(uri).build().await?;if let Some(rows) = session.query("SELECT a, b, c FROM ks.t", &[]).await?.rows {for row in rows.into_typed::<(i32, i32, String)>() {let (a, b, c) = row?;println!("a, b, c: {}, {}, {}", a, b, c);}
}

对此,团队还专门写了一篇文章《为什么我们要将数据库驱动程序移植到异步 Rust》,他们想把所有的数据库驱动底层都用 Rust。

文章链接:https://thenewstack.io/why-were-porting-our-database-drivers-to-async-rust/

文档:https://rust-driver.docs.scylladb.com/stable/index.html

GitHub:https://github.com/scylladb/scylla-rust-driver

felix:tui文件管理器

有类似 vim 的键映射。受到 vifm 的启发,同时关注:

  • 简单快速

  • 容易配置如何打开文件

GitHub:https://github.com/kyoheiu/felix

diskonaut:终端磁盘导航

工作原理:给定硬盘驱动器上的路径(也可以是根路径,例如 /),diskonaut 会扫描它并将其元数据索引到内存,以便浏览其内容(即使在仍在扫描时)。完成后,可以在子文件夹中导航,获取占用磁盘中文件的树状图表示,甚至可以删除文件或文件夹,diskonaut 将跟踪在此会话中释放了多少空间。

GitHub:https://github.com/imsnif/diskonaut

seize:为并发数据结构提供快速、高效且可靠的内存回收

并发数据结构面临着决定何时可以安全地释放内存的问题。尽管某个对象可能已在逻辑上被删除,但之前加载该对象的其他线程可能仍在访问它,因此立即释放该对象并不安全。多年来,已经设计了许多算法来解决这个问题。但是,大多数传统的内存回收方案在性能、效率和稳健性之间进行权衡。例如,基于 epoch 的回收快速且轻量级,但缺乏鲁棒性,因为停滞的线程可以阻止回收所有已停用的对象。Hazard pointers 是另一种流行的方案,可跟踪单个指针,使其高效且鲁棒,但通常要慢得多。

另一个通常不被考虑的问题是工作负载平衡。在大多数回收方案中,停用对象的线程是回收对象的线程。这会导致读取为主(read-dominated)的工作负载中的回收不平衡;当只有一小部分线程正在写入时,并行性会降低。这在使用由 Tokio 等异步运行时提供的 M:N 线程模型时尤其普遍。

Seize 基于 hyaline 回收方案,该方案使用引用计数来确定何时可以安全地释放内存。但是,引用计数器仅用于已停用的对象,从而避免了传统引用计数方案带来的高开销,其中每次内存访问都需要修改共享内存。性能通常与基于 epoch 的方案相当或优于基于 epoch 的方案,而内存效率与 Hazard pointers 相似。回收是自然平衡的,因为最后一次引用对象的线程是释放它的线程。还跟踪了 Epoch 以防止线程停滞,使回收真正无锁。

Seize 与所有支持单字原子操作(如 FAA 和 CAS)的现代硬件兼容。

文档:https://docs.rs/seize/latest/seize/

GitHub:https://github.com/ibraheemdev/seize

OffensiveNotion:C2平台

特征包括: