【Rust日报】2023-04-06 让Rust语言成为PostgreSQL的新过程语言

Rust 开发者探讨自定义分配器的优点和实现方法

最近,Lyon 库的作者 Nicolas Silva 在他的博客中深入探讨了在 Rust 中使用自定义分配器的优点和权衡。他分享了多种实现自定义分配器的方法,包括使用泛型参数、Allocator trait 和手动分配与 trait 对象等,提醒开发者在实际场景中验证假设并测量性能。

在博客中,Nicolas Silva 强调了添加泛型参数对代码性能的意外影响,以及验证假设和在实际场景中测量性能的重要性。如果您正在考虑在 Rust 项目中使用自定义分配器,那么 Nicolas Silva 的博客提供了有用的见解,可帮助您做出明智的决策。

详情: https://nical.github.io/posts/rust-custom-allocators.html

rustc使用SipHash-1-3算法加速稳定哈希器

Rust编程语言的编译器rustc近期进行了一项重要的性能优化,通过使用SipHash-1-3算法来加速其稳定哈希器,从而大幅提升了编译速度。稳定哈希器是rustc用于哈希增量编译数据的组件,因此这个改进将使得增量编译的速度更快,尤其是在处理大型代码库时效果更加明显。这个改进已经被合并到了rustc的主分支,并将在未来的版本中发布。虽然这个改进可能存在一些潜在的风险,但作者认为这些风险对于稳定哈希器的使用并不重要。

详情: https://github.com/rust-lang/rust/pull/107925

让Rust语言成为PostgreSQL的新过程语言

PL/Rust是一个全新的过程语言处理器(New Procedural Language Processor),可以让开发人员使用Rust语言编写PostgreSQL函数。与其他过程语言不同,PL/Rust函数不是解释执行的,而是编译为本机机器代码,从而获得更好的性能。

PL/Rust还提供了对Postgres的Server Programming Interface(SPI)的访问以及安全的Rust类型,包括TEXT、INT、BIGINT、NUMERIC、FLOAT、DOUBLE PRECISION、DATE和TIME等。此外,PL/Rust还提供了更加用户友好的文档格式。

未来,PL/Rust也可能会提供适用于不同平台的plrust和plrustu版本。

如果您想快速开始使用PL/Rust进行评估,请先安装cargo-pgx,然后执行以下操作...

$ git clone https://github.com/tcdi/plrust.git
$ cd plrust/plrust
$ cargo pgx run pg14
psql> \q

$ SCRATCH_DIR=/home/${USER}/plrust-scratch
$ cat <<-EOF >> ~/.pgx/data-14/postgresql.conf
  plrust.work_dir = '${SCRATCH_DIR}'
EOF
$ mkdir -p scratch
$ chmod -R 777 scratch

然后,您就可以真正运行它并开始编写函数了!

$ cargo pgx run pg14
psql> CREATE EXTENSION plrust;
psql> CREATE FUNCTION strlen(name TEXT) RETURNS int LANGUAGE plrust AS $$
    Ok(Some(name.unwrap().len() as i32))
$$;
psql> select strlen('Hello, PL/Rust');
strlen 
--------
     14

详情: https://github.com/tcdi/plrust

This Week In Rust 489

新一期的 Rust 周报速递发布,快来看看有哪些内容你曾经关注过 :)

This Week in Rust 489: https://this-week-in-rust.org/blog/2023/04/05/this-week-in-rust-489/

From 日报小组 Cupnfish

社区学习交流平台订阅:

  • Rust.cc 论坛: 支持 rss

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

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