Skip to content

Commit

Permalink
Release pgrx 0.12.0-alpha.1 (#1598)
Browse files Browse the repository at this point in the history
Welcome to pgrx 0.12.0-alpha.1!

Say the magic words with me!

```shell
cargo install cargo-pgrx --locked --version 0.12.0-alpha.1
```

# Breaking Changes

## No more dlopen!

Perhaps the most exciting change this round is @usamoi's contribution in
#1468 which means that
we no longer perform a `dlopen` in order to generate the schema. The
cost, such as it is, is that your pgrx extensions now require a
`src/bin/pgrx_embed.rs`, which will be used to generate the schema. This
has much less cross-platform issues and will enable supporting things
like `cargo binstall` down the line.

It may be a bit touchy on first-time setup for transitioning older
repos. If necessary, you may have to directly add a
`src/bin/pgrx_embed.rs` and add the following code (which should be the
only code in the file, though you can add comments if you like?):

```rust
::pgrx::pgrx_embed!();
```

Your Cargo.toml will also want to update its crate-type key for the
library:
```toml
[lib]
crate-type = ["cdylib", "lib"]
```

## Library Code

- pgrx-pg-sys will now use `ManuallyDropUnion` thanks to @NotGyro in
#1547
- VARHDRSZ `const`s are no longer `fn`, thanks to @workingjubilee in
#1584
- We no longer have `Interval::is_finite` since
#1594
- We translate more `*_tree_walker` functions to the same signature
their `*_impl` version in Postgres 16 has:
#1596
- Thanks to @eeeebbbbrrrr in
#1591 we no longer have
the `pg_sql_graph_magic!()` macro, which should help with more things in
the future!

# What's New

We have quite a lot of useful additions to our API:

- `SpiClient::prepare_mut` was added thanks to @XeniaLu in
#1275
- @usamoi also contributed bindings subscripting code in
#1562
- For `#[pg_test]`, you have been able to use `#[should_panic(expected =
"string")]` to anticipate a panic that contains that string in that
test. For various reasons, `#[pg_test(error = "string")]` is much the
same. Now, you can also use `#[pg_test(expected = "string")]`, in the
hopes that is easier to stumble across, as of
#1570

## `Result<composite_type!("..."), E>` support

- In #1560 @NotGyro
contributed support for using `Result<composite_type!("Name"), E>`, as a
case that had not been handled before.

## Significantly expanded docs
Thanks to @rjuju, @NotGyro, and @workingjubilee, we now have
significantly expanded docs for cargo-pgrx and pgrx in general. Some of
these are in the API docs on https://docs.rs or the READMEs, but there's
also a guide, now! It's not currently published, but is available as an
[mdbook](https://github.com/rust-lang/mdBook) in the repo.

Some diagnostic information that is also arguably documentation, like
comments and the suggestion to `cargo install`, have also been improved,
thanks to @workingjubilee in
- #1579
- #1573

## `#[pg_cast]`

An experimental macro for a `CREATE CAST` was contributed by @xwkuang5
in #1445!

## Legal Stuff

Thanks to @the-kenny in
#1490 and
@workingjubilee in
#1504, it was brought to
our attention that some dependencies had unusual legal requirements. So
we fixed this with CI! We now check our code included into pgrx-using
binaries is MIT/Apache 2.0 licensed, as is common across crates.io,
using `cargo deny`!. The build tools will have more flexible legal
requirements (partly due to the use of Mozilla Public License code in
rustls).

# Internal Changes
Many internal cleanups were done thanks to
- @workingjubilee in too many PRs to count!
- @thomcc found a needless condition in
#1501
- @nyurik in too many PRs to count!

In particular:
- we now actually `pfree` our `Array`s we detoasted as-of
#1571
- creating a `RawArray` is now low-overhead due to
#1587

## Soundness Fixes
We had a number of soundness issues uncovered or have added more tests
to catch them.
- Bounds-checking debug assertions for array access by @NotGyro in
#1514
- Fix unsound `&` and `&mut` in `fcinfo.rs` by @workingjubilee in
#1595

## Less Deps
Part of the cleanup by @workingjubilee was reducing the number of deps
we compile:
* cargo-pgrx: reduce trivial dep usages in
#1499
* Update 2 syn in #1557

Hopefully it will reduce compile time and disk usage!

## New Contributors
* @the-kenny made their first contribution in
#1490
* @xwkuang5 made their first contribution in
#1445
* @rjuju made their first contribution in
#1516
* @nyurik made their first contribution in
#1533
* @NotGyro made their first contribution in
#1514
* @XeniaLu made their first contribution in
#1275

**Full Changelog**:
v0.12.0-alpha.0...v0.12.0-alpha.1
  • Loading branch information
workingjubilee committed Mar 1, 2024
1 parent a644458 commit db7b09d
Show file tree
Hide file tree
Showing 22 changed files with 7,142 additions and 1,643 deletions.
79 changes: 38 additions & 41 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 8 additions & 5 deletions Cargo.toml
Expand Up @@ -51,19 +51,22 @@ members = [
cargo-pgrx = { path = "cargo-pgrx" }

[workspace.dependencies]
pgrx-macros = { path = "./pgrx-macros", version = "=0.12.0-alpha.0" }
pgrx-pg-sys = { path = "./pgrx-pg-sys", version = "=0.12.0-alpha.0" }
pgrx-sql-entity-graph = { path = "./pgrx-sql-entity-graph", version = "=0.12.0-alpha.0" }
pgrx-pg-config = { path = "./pgrx-pg-config", version = "=0.12.0-alpha.0" }
pgrx-macros = { path = "./pgrx-macros", version = "=0.12.0-alpha.1" }
pgrx-pg-sys = { path = "./pgrx-pg-sys", version = "=0.12.0-alpha.1" }
pgrx-sql-entity-graph = { path = "./pgrx-sql-entity-graph", version = "=0.12.0-alpha.1" }
pgrx-pg-config = { path = "./pgrx-pg-config", version = "=0.12.0-alpha.1" }

cargo_toml = "0.16" # used for building projects
cargo_metadata = "0.18.0"
cargo_toml = "0.19" # used for building projects
clap-cargo = { version = "0.14.0", features = [ "cargo_metadata" ] }
eyre = "0.6.9" # simplifies error-handling
libc = "0.2" # FFI compat
owo-colors = "3.5" # for output highlighting
proc-macro2 = { version = "1.0.78", features = [ "span-locations" ] }
quote = "1.0.33"
regex = "1.1" # used for build/test
syn = { version = "2", features = [ "extra-traits", "full", "parsing" ] }
toml = "0.8" # our config files
thiserror = "1"
unescape = "0.1.0" # for escaped-character-handling
url = "2.4.1" # the non-existent std::web
Expand Down
8 changes: 4 additions & 4 deletions cargo-pgrx/Cargo.toml
Expand Up @@ -10,7 +10,7 @@

[package]
name = "cargo-pgrx"
version = "0.12.0-alpha.0"
version = "0.12.0-alpha.1"
authors = ["PgCentral Foundation, Inc. <contact@pgcentral.org>"]
license = "MIT"
description = "Cargo subcommand for 'pgrx' to make Postgres extension development easy"
Expand All @@ -27,17 +27,17 @@ edition = "2021"
pgrx-pg-config.workspace = true
pgrx-sql-entity-graph.workspace = true

cargo_metadata.workspace = true
cargo_toml.workspace = true
clap-cargo.workspace = true
libc.workspace = true
regex.workspace = true
toml.workspace = true

cargo_metadata = "0.17.0"
clap = { version = "4.4.2", features = [ "env", "suggestions", "cargo", "derive", "wrap_help" ] }
clap-cargo = { version = "0.11.0", features = [ "cargo_metadata" ] }
jobslot = "0.2.12" # as seen in gmake -j{N}
semver = "1.0.20" # checking pgrx versions match
tempfile = "3.8.0"
toml = "0.8.2" # our config files

# SQL schema generation
object = { version = "0.32.1", default-features = false, features = [ "std" ] }
Expand Down
4 changes: 2 additions & 2 deletions cargo-pgrx/src/templates/cargo_toml
Expand Up @@ -20,10 +20,10 @@ pg16 = ["pgrx/pg16", "pgrx-tests/pg16" ]
pg_test = []

[dependencies]
pgrx = "=0.12.0-alpha.0"
pgrx = "=0.12.0-alpha.1"

[dev-dependencies]
pgrx-tests = "=0.12.0-alpha.0"
pgrx-tests = "=0.12.0-alpha.1"

[profile.dev]
panic = "unwind"
Expand Down
4 changes: 2 additions & 2 deletions nix/templates/default/Cargo.toml
Expand Up @@ -26,10 +26,10 @@ pg16 = ["pgrx/pg16", "pgrx-tests/pg16" ]
pg_test = []

[dependencies]
pgrx = "=0.12.0-alpha.0"
pgrx = "=0.12.0-alpha.1"

[dev-dependencies]
pgrx-tests = "=0.12.0-alpha.0"
pgrx-tests = "=0.12.0-alpha.1"
tempfile = "3.2.0"
once_cell = "1.7.2"

Expand Down
2 changes: 1 addition & 1 deletion pgrx-macros/Cargo.toml
Expand Up @@ -10,7 +10,7 @@

[package]
name = "pgrx-macros"
version = "0.12.0-alpha.0"
version = "0.12.0-alpha.1"
authors = ["PgCentral Foundation, Inc. <contact@pgcentral.org>"]
license = "MIT"
description = "Proc Macros for 'pgrx'"
Expand Down
4 changes: 2 additions & 2 deletions pgrx-pg-config/Cargo.toml
Expand Up @@ -10,7 +10,7 @@

[package]
name = "pgrx-pg-config"
version = "0.12.0-alpha.0"
version = "0.12.0-alpha.1"
authors = ["PgCentral Foundation, Inc. <contact@pgcentral.org>"]
license = "MIT"
description = "A Postgres pg_config wrapper for 'pgrx'"
Expand All @@ -27,11 +27,11 @@ cargo_toml.workspace = true
eyre.workspace = true
owo-colors.workspace = true
thiserror.workspace = true
toml.workspace = true
url.workspace = true

home = "0.5.9"
pathsearch = "0.2.0"
serde = { version = "1.0", features = [ "derive" ] }
serde_derive = "1.0"
serde_json = "1.0"
toml = "0.8.2"
2 changes: 1 addition & 1 deletion pgrx-pg-sys/Cargo.toml
Expand Up @@ -10,7 +10,7 @@

[package]
name = "pgrx-pg-sys"
version = "0.12.0-alpha.0"
version = "0.12.0-alpha.1"
authors = ["PgCentral Foundation, Inc. <contact@pgcentral.org>"]
license = "MIT"
description = "Generated Rust bindings for Postgres internals, for use with 'pgrx'"
Expand Down

0 comments on commit db7b09d

Please sign in to comment.