【Rust日报】2023-12-20 surrealkv -- 基于 Rust 的 嵌入式、符合 ACID 的键值数据库

surrealkv -- 基于 Rust 的 low level、版本化、嵌入式、符合 ACID 的键值数据库

surrealkv 是基于 Rust 中的版本化、low level、嵌入式键值数据库。它持久保存到磁盘,符合 ACID,并支持多个读取器和写入器。

特性
  • 内存数据库

  • 可嵌入

  • ACID 语义,具有丰富的事务支持和回滚

  • 内置项目版本控制

  • 多版本并发控制

  • 多个并发读取器和写入器

  • 持久的仅附加文件格式以实现持久性(支持 WAL)


  • https://github.com/surrealdb/surrealkv

rspack -- 基于 Rust 的高性能模块打包工具

Rspack(读音为 /'ɑrespæk/,)是一个基于 Rust 的高性能构建引擎, 具备与 Webpack 生态系统的互操作性,可以被 Webpack 项目低成本集成,并提供更好的构建性能。

初衷

作者写道:创建 Rspack 的原因是要解决在 ByteDance 维护构建工具时遇到的各种性能问题。由于 ByteDance 内部存在许多巨石应用,它们都具有复杂的构建配置,生产环境构建需要耗费十几分钟,甚至超过半小时;开发环境的耗时也超过十几分钟。我们在 Webpack 上尝试了多种方法来优化这些巨石应用,但是效果甚微。我们意识到在 Webpack 上的优化已经难以为继,必须要从底层改造,才能适应我们的需求。同时在聆听解决业务各种复杂的构建需求中,我们意识到开发人员对构建工具有以下要求:

  • 快速的 Dev 启动性能。 npm run dev 是开发者每天需要运行很多次的命令,但大型项目每次都需要等待 10 分钟,这对于工程师来说非常痛苦,因此优化开发模式下启动的时间至关重要。


  • 高效的 Build 性能。 npm run build 经常在 CI/CD 环境中运行,它决定了应用生产交付的效率。有些应用在生产环境中需要 20 到 30 分钟的构建时间,如果能缩短这段时间,对开发流程也将非常有帮助。


  • 灵活的配置。 用户工程的配置非常灵活,不够统一。在之前的尝试中,将 Webpack 配置迁移到其他构建工具时,我们遇到了许多问题,因为其他构建工具的配置不如 Webpack 灵活。


  • 生产环境的优化能力。 在启用 Rspack 之前,我们尝试了社区内的各种方案,但它们都面临着一定程度的生产环境负优化,例如拆分包不够精细等。因此,优化生产环境的产物是我们不可放弃的功能。


在确定了这四个需求后,我们调查了社区中的所有技术方案,它们通常都能很好的满足其中个别需求,但没有一个方案能同时满足所有条件。因此,我们决定自研 Rspack。

Rspack 目前的状态

到 2023 年 3 月为止 Rspack 已经开发了 11 个月,虽然 Rspack 仍处于比较早期的状态,且缺失了一些 webpack 的功能,但根据二八原则,目前的功能已经能够满足大多数项目的需求。同时,我们已经在内部的多个业务上完成了落地,取得了 5~10 倍编译性能的提升。目前的性能仍然存在较大提升空间,我们会持续对 Rspack 进行更深入的性能优化。Rspack 已经完成了对 webpack 主要配置的兼容,并且适配了 webpack 的 loader 架构。目前,你已经可以在 Rspack 中无缝使用你熟悉的各种 loader,如 babel-loader、less-loader、sass-loader、vue-loader 等等。目前 Rspack 对缓存支持还比较简单,仅支持了内存级别的缓存,未来我们会建设更强的缓存能力,包括可迁移的持久化缓存,这将带来更大的想象空间,如在 monorepo 里不同的机器上都可以复用 Rspack 的云端缓存,提升大型项目的缓存命中率。

特性
  • 启动速度极快: 基于 Rust 实现,构建速度极快,带给你极致的开发体验。

  • ⚡ 闪电般的 HMR: 内置增量编译机制,HMR 速度极快,完全胜任大型项目的开发。

  • 兼容 webpack 生态: 针对 webpack 的架构和生态进行兼容,无需从头搭建生态。

  • 内置常见构建能力: 对 TypeScript、JSX、CSS、CSS Modules、Sass 等提供开箱即用的支持。

  • ️ 默认生产优化: 默认内置多种优化策略,如 Tree Shaking、代码压缩等等。

  • 框架无关: 不和任何前端框架绑定,保证足够的灵活性。

  • https://github.com/web-infra-dev/rspack


From 日报小组 侯盛鑫

社区学习交流平台订阅:

  • Rust.cc 论坛:支持 rss

  • 微信公众号:Rust 语言中文社区

你可能感兴趣的:(rust,数据库,开发语言,后端)