Skip to content

Releases: tcdi/postgrestd

v1.1.2

09 May 18:51
7b38505
Compare
Choose a tag to compare

This corresponds to PL/Rust v1.1.2. They should be used together.

No changes since the v1.1.1 release.

v1.1.1

27 Apr 19:54
7b38505
Compare
Choose a tag to compare

This corresponds to PL/Rust v1.1.1. They should be used together.

No changes since the v1.1.0 release.

v1.1.0

25 Apr 20:52
7b38505
Compare
Choose a tag to compare

This corresponds to PL/Rust v1.1.0. They should be used together.

No changes since the v1.0.0 release.

v1.0.0

03 Apr 21:33
7b38505
Compare
Choose a tag to compare

This release corresponds to the plrust v1.0.0 release. They should be used together.

No changes since the v1.0.0-rc.1 release.

v1.0.0-rc.1

14 Mar 21:16
7b38505
Compare
Choose a tag to compare
v1.0.0-rc.1 Pre-release
Pre-release

Note: All of the following changes apply only to the "trusted" target_family = "postgres" platforms, inside the user function.

A large number of changes were made, mostly removing cases where postgrestd contained APIs which still exposed various pieces of system information. The internals have also been cleaned up, and much of the code got an extra pass of review and tune-up. Concretely, the set of available functions that bottom out into calls into system libraries like libc have been (to the best of our knowledge and ability) fully examined, and in many cases the functionality has been disabled.

Note that below we describe several APIs are now "disabled", "unavailable", "blocked" or so on. This does not mean that their modules do not exist, but instead that the functions they expose either panic, return unconditional errors, or fail to function in some other manner (sometimes silently doing nothing, if such operation is appropriate for the API).

In some cases, functions that are disabled by postgrestd are also prevented by lints in PL/Rust. Because PL/Rust's lints do not (currently) run on external code, these cases mean the postgrestd change impacts libraries, but also ways to access the same functionality which are not covered by lints.

Specific Changes

Note: This list may not be complete.

  • std::backtrace::Backtrace is now unsupported under postgrestd.

    • This is mostly not user facing, however format!("{:?}", std::backtrace::Backtrace::capture()) will no longer provide a (possibly symbolicated) stack trace full of system paths and other information
  • The std::panic APIs have been restricted in some small ways.

    • It is no longer possible to customize the panic hook.
    • The information written stderr via the default panic hook has been eliminated.
  • Threads are more robustly and completely disabled and some undesirable behavior around them has been cleaned up.

    • There is no longer any way to access (or modify) the main thread's pthread_t.
    • We are much less likely to exhaust system thread local storage over time.
  • Networking is more completely disabled, as several pieces of functionality had not been blocked offf due to various oversights.

    • All std::net functionality should be fully disabled. In particular it is no longer possible to perform DNS resolution via ToSocketAddrs.
    • System access through std::os::unix::net has now been fully disabled.
    • Several other obscure networking APIs which may have been available in some cases are now definitively removed.
  • System access through std::os has now been fully disabled (some pieces of functionality had not been blocked off due to oversight).

  • Various other system IO apis are now more completely blocked off. (there had been several lingering implementations have been removed).

    • This means that external libraries will be unable to perform I/O on File, Stdin/Stdout/Stderr, OwnedFd/BorrowedFd, and so on.
  • Certain cases where operations would previously panic now should error cleanly.

  • Several miscellaneous changes have been made to support plrustc's ability to detect various functions in lints

And so on.

New features

  • Experimental macOS support under two new {aarch64,x86_64}-apple-darwin-postgres targets. (Note: support for these does not exist upstream in PL/Rust yet).

postgrestd-0.0.0-pgx-0.6.0-alpha.1-rustc-1.61.0: Revisions to README.md (#15)

postgrestd compatible with

  • pgx 0.6.0-alpha.1
  • rustc 1.61.0

Intended for use with PL/Rust.