Welcome to pgrx v0.10.0-beta.0.
This is a big release in that it brings PostgreSQL 16 Beta 2 support along with a few bug fixes.
🎉 This is also our first release under the stewardship of the PgCentral Foundation 🎉
If you'd like to help beta test please install cargo-pgrx with:
# cargo install cargo-pgrx --version 0.10.0-beta.0 --locked`
and then run
cargo pgrx init
to get the pgrx-managed version of Postgres 16beta2 locally installed.
This pgrx release is a beta because of the new Postgres 16beta2 support. There's some new infrastructure in the code for managing Postgres beta releases which will hopefully make it easy down the road when Postgres 17 comes around. So we'd like to make sure that's working on computers that aren't ours in addition to generally making sure the pgrx-specific changes to support 16beta2 are solid.
However, after a couple of pgrx v0.10.0 beta releases, we'll release the final version regardless of the Postgres 16 state. We'll simply continue to include the latest 16 beta/rc and publish point releases as 16 progresses.
When 16 is finally GA, we'll add that to whatever the latest pgrx release happens to be at that time.
Postgres 16 Beta2 Support
pgrx v0.10.0-beta.0 is the first pgrx release to support the new Postgres Beta series. Note that this release is tied to 16beta2, and a new pgrx release will need to be done for any subsequent 16 betas or release candidates. We intend to support these in a timely manner.
Note that pgrx only understands pg16
as the Postgres version feature flag. It is not possible for pgrx or pgrx-based extensions to support multiple betas at the same time.
You'll want to run a cargo pgrx init
to get the support, if you want it.
Using pg16beta2 is a simple matter of adding:
pg16 = ["pgrx/pg16", "pgrx-tests/pg16" ]
to the [features]
block of your Cargo.toml
files and then targeting pg16
instead of any other version.
In general, there aren't a lot of user-facing internal Postgres API changes between 15 and 16, but there are some, so it's possible you'll need some #[cfg(feature = "pg16")]
directives.
One breaking change that impacts pgrx across all supported versions is that string GUCs are now represented as GucSetting<Option<&'static CStr>>
. Previously they were GucSetting<Option<&'static str>>
which is a) strictly incorrect and b) incompatible with pg16.
If you find any issues with 16beta2 support, please file issues here on GitHub.
- Postgres 16beta1 Support by @eeeebbbbrrrr in #1169
- list specific versions in feature gates by @eeeebbbbrrrr in #1175
beta1 support was soon replaced by:
- update to pg16beta2 support by @eeeebbbbrrrr in #1188
Bug Fixes
- Support building against macOS universal binaries by @clowder in #1166
- fcinfo: fix incorrect length set in unsafe code by @Sasasu in #1190
- Array-walking is aligned by @workingjubilee in #1191
CI Changes
- Fixes macos-11 tests by @BradyBonnette in #1197
- Disable hello_versioned_so test by @workingjubilee in #1192
This test has been causing our CI some trouble -- we are investigating why
New Features
- Include security labels header by @daamien in #1189
- Implement PGRXSharedMemory for Deque by @feikesteenbergen in #1170
Misc Changes
- doc: fix link broken by @yihong0618 in #1181
- PgCentral Foundation copyright updates by @eeeebbbbrrrr in #1200
New Contributors
- @clowder made their first contribution in #1166
- @yihong0618 made their first contribution in #1181
- @Sasasu made their first contribution in #1190
- @daamien made their first contribution in #1189
Thanks
Thanks to @ChronicallyJD and the @pgcentralfoundation for their stewardship. We're looking forward to a bright future of extending Postgres with Rust!
Full Changelog: v0.9.7...v0.10.0-beta.0