Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prepare v1.0.0 #277

Merged
merged 2 commits into from Apr 3, 2023
Merged

Prepare v1.0.0 #277

merged 2 commits into from Apr 3, 2023

Conversation

eeeebbbbrrrr
Copy link
Collaborator

@eeeebbbbrrrr eeeebbbbrrrr commented Apr 3, 2023

We are excited to present PL/Rust v1.0.0. Writing Postgres UDFs in Rust has never been easier (mostly because it hasn't been possible)!

PL/Rust is a loadable, trusted procedural language handler enabling developers to create PostgreSQL functions in the Rust programming language. Unlike other procedural languages, PL/Rust functions are not interpreted. Instead, the definition you supply to CREATE FUNCTION ... LANGUAGE plrust is wrapped in Rust, compiled to native machine code, and dynamically loaded.

Many of the usual tradeoffs of compilation apply:

  • Compilation can be slow
  • Execution can be very fast, often 脳10 faster than PL/pgSQL!
  • Types are static and must be explicitly handled
  • Code can be fully analyzed and errors caught at compile time
  • PL/Rust must understand both what it compiles and how to compile, so 1.0 currently only supports some Postgres types and Rust targets

However, many other burdens of compiling native ("C") functions are removed. PL/Rust can transparently reload, recompile, and replace functions without additional prompting, as if it was any other procedural language. Documentation, while still under development, can be found here: https://tcdi.github.io/plrust/

Please feel free to open an issue if you have any additional questions!

Platform Support

  • x86-64 and aarch64 Linux are supported for host compilation with Postgres 13, 14, and 15
  • Cross-compiling between x86-64 and aarch64 for replication purposes may be enabled with the latest update of Debian Bullseye using a Rust toolchain obtained from https://rustup.rs and other setups may be enabled by user configuration on other distributions
  • Trusted PL/Rust is supported for Rust 1.67.1
  • Untrusted PL/Rust may be built for development purposes on macOS

Thanks Everyone!

We want to make sure to properly thank all the past (and hopefully future!) PL/Rust contributors. Without their work, PL/Rust wouldn't exist. Thank you! 馃檹

Also, a huge thanks to TCDI for funding this work and putting together an absolutely outstanding team.

What's Changed Since v1.0.0-rc.1

plrustc Lints

Documentation

Miscellaneous Niceties

Full Changelog: v1.0.0-rc.1...v1.0.0

This is what it did (and didn't) do.  I don't see a need to upgrade syn
and pretttyplease to a possibly breaking version right now.  Can do that
post-1.0.0:

```
name         old req compatible latest  new req note
====         ======= ========== ======  ======= ====
serde        1.0.156 1.0.159    1.0.159 1.0.159
serde_json   1.0.94  1.0.95     1.0.95  1.0.95
tempfile     3.4.0   3.5.0      3.5.0   3.5.0
prettyplease 0.1     0.1.25     0.2.4   0.1     incompatible
syn          1       1.0.109    2.0.13  1       incompatible
omnipath     0.1.1   0.1.5      0.1.5   0.1.5
memfd        0.6.2   0.6.3      0.6.3   0.6.3
```
Copy link
Contributor

@thomcc thomcc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@eeeebbbbrrrr
Copy link
Collaborator Author

LGTM

This is terrifying

@BradyBonnette
Copy link
Contributor

I like it. 馃殺 it

Copy link
Contributor

@workingjubilee workingjubilee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

@eeeebbbbrrrr
Copy link
Collaborator Author

Thanks for the edits! Let's ship it!

@eeeebbbbrrrr eeeebbbbrrrr merged commit a2cbbfc into main Apr 3, 2023
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants