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
社区学习交流平台订阅:
评论区
写评论还没有评论