本周8个Github上有趣Rust编程项目

本周github有趣项目

1、trie-hard
针对小型稀疏映射优化的 Trie 数据结构的新实现。已在 Cloudflare 的Pingora中投入生产,用于每秒检测并删除 3000 万个请求中的特定标头,然后将其代理到最终目的地。

Rust 还有其他几种功能更全面的 trie 实现,因此如果您正在寻找更强大的工具,您可能需要查看radix_trie哪种工具似乎具有最佳功能和性能。如果您想要原始速度并且具有相同的狭窄用例,那么您来对地方了!

trie-hard 仅适用于批量加载。

Trie Hard 通过两种方式实现速度。

  1. 所有节点和边信息都保存在堆的连续区域中。这可以防止获取过程中在内存中跳转,并最大程度地提高子节点已出现在缓存中的机会。
  2. 节点和边之间的关系被编码为无符号整数中的各个位。

2、fast_float
快速而精确地实现数字类型的 C++ from_chars 函数:比 strtod 快 4 到 10 倍,是 GCC 12、Chromium、Redis 和 WebKit/Safari 的一部分

fast_float 库为 C++ from_chars 函数提供了快速的头文件实现,适用于float和double类型以及整数类型。这些函数将表示十进制值的 ASCII 字符串(例如1.3e10)转换为二进制类型。我们提供精确舍入(包括舍入为偶数)。根据我们的经验,这些fast_float函数比现有 C++ 标准库中的同类数字解析函数快很多倍。

具体来说,fast_float提供以下两个函数以类似 C++17 的语法解析浮点数(库本身只需要 C++11):

from_chars_result from_chars(const char* first, const char* last, float& value, ...);
from_chars_result from_chars(const char* first, const char* last, double& value, ...);

3、Java-FullStack-NeoVim-Configuration
欢迎开始或继续你的NeoVim之旅,我很高兴你能加入!这个仓库保存了我为Fullstack Java开发者提供的简单而有效的NeoVim配置代码,这些开发者的主要工作是使用TypeScript和React开发Spring Boot应用和前端。

当然,这只是你配置的一个起点,也只是定制化的冰山一角,所以当你使用不同的语言,或者需要更多功能时,我设计的配置结构都可以轻松定制。 这个配置资源库与我关于如何为Java开发者设置NeoVim的教程相辅相成,你可以在这里找到该教程,并获得我们正在配置的不同插件的解释。

4、rustc_codegen_clr
能够在 .NET 项目中使用 Rust。

rustc_codegen_clr是一个实验性的 Rust 到 .NET 编译器后端。它允许 Rust 编译器将 Rust 代码转换为 .NET 程序集。这种转换非常高级,并且保留了类型、字段/变量名称等内容。

该项目旨在提供一种在 .NET 中轻松使用 Rust 库的方法。它带有一个 Rust/.NET 互操作层,可让您轻松地从 Rust 与 .NET 代码进行交互:

use mychorizza::*;
fn main(){
    // Alocate a new GC-managed string builder
    let stringBuilder = StringBuilder::empty();
   
// You can easily operate on GC-managed types
    mstring.AppendChar('H');
    mstring.AppendChar('i');
    mstring.AppendChar('.');
}


5、sqlx4k
适用于 PostgreSQL、MySQL 和 SQLite 的高性能 Kotlin Native 数据库驱动程序。

为 Kotlin Native 编写的适用于 PostgreSQL、MySQL 和 SQLite 的高性能、非阻塞数据库驱动程序。希望使用 Kotlin Native 构建高效的跨平台应用程序。

可以maxConnections从驱动程序构造函数中设置:

val db = PostgreSQL(
    host = "localhost",
    port = 15432,
    username =
"postgres",
    password =
"postgres",
    database =
"test",
    maxConnections = 10
// set the max-pool-size here
)

val db = MySQL(
    host =
"localhost",
    port = 13306,
    username =
"mysql",
    password =
"mysql",
    database =
"test",
    maxConnections = 10
)

val db = SQLite(
    database =
"test.db",
    maxConnections = 10
)

// With named parameters:
val st1 = Statement
    .create(
"select * from sqlx4k where id = :id")
    .bind(
"id", 65)

db.fetchAll(st1).getOrThrow().map {
    val id: ResultSet.Row.Column = it.get(
"id")
    Test(id = id.value.toInt())
}

// With positional parameters:
val st2 = Statement
    .create(
"select * from sqlx4k where id = ?")
    .bind(0, 65)

db.fetchAll(st2).getOrThrow().map {
    val id: ResultSet.Row.Column = it.get(
"id")
    Test(id = id.value.toInt())
}

6、virgil
一种快速、轻量级的系统编程语言

Virgil 的编译器可为 JVM 生成优化的独立本机可执行文件、WebAssembly 模块或 JAR。

Virgil 专注于平衡静态类型语言中的这些主要特性:

  • 类 - 用于基本的面向对象编程
  • 功能——用于小规模重用功能
  • 元组——用于高效聚合和统一处理多参数函数
  • 类型参数——用于对类型进行强大而清晰的抽象
  • 代数数据类型——用于轻松构建和匹配数据结构

7、maven-hocon-extension
该项目为 Maven 4 提供了一个 Hocon POM 解析器扩展。它允许使用Hocon语法编写 POM ,该语法是JSON语法 的超集。

要使用此扩展,您需要在您的中进行以下声明${rootDirectory}/.mvn/extensions.xml:

<extensions xmlns="http://maven.apache.org/EXTENSIONS/1.2.0">
    <extension>
        <groupId>org.apache.maven.extensions</groupId>
        <artifactId>maven-hocon-extension</artifactId>
        <version>@project.version@</version>
    </extension>
</extensions>

这允许使用 Hocon 语法定义 POM:

modelVersion = 4.1.0
parent {
    groupId = org.apache.maven.hocon.its
    artifactId = parent
    version = 1.0.0-SNAPSHOT
}
artifactId = test

properties = {
  "my.property" = foo
  pluginVersion = 3.9
}

dependencies = [
    just add one dummy dependency
   
"com.typesafe:config:1.4.2"
]


7、abstractness-instability-calculator
该应用程序计算 Java、Spring Boot 项目的抽象性和不稳定性指标,帮助开发人员分析其代码库的结构和依赖关系。

它通过分析应用程序模块包来遵循 Spring Modulith 的原则。这些是包含注释类的主包的直接子包@SpringBootApplication。理想情况下,这些包应该是功能层,而不是技术层(控制器、服务、存储库等)。

特征

  • 扫描 Spring Boot 项目以识别包及其关系
  • 计算每个包的抽象度、不稳定性以及与主序列的距离
  • 提供网页界面,方便进行项目分析
  • 使用交互式散点图可视化结果
  • 依赖关系可视化

8、slice_deque
rust中环形缓冲区或循环缓冲区。

一般来说,你可以将 SliceDeque 视为一个具有 O(1) 个 pop_front 和 O(1) 个 push_front 方法的 Vec。