Releases: tcdi/postgrestd
v1.1.2
This corresponds to PL/Rust v1.1.2. They should be used together.
No changes since the v1.1.1 release.
v1.1.1
This corresponds to PL/Rust v1.1.1. They should be used together.
No changes since the v1.1.0 release.
v1.1.0
This corresponds to PL/Rust v1.1.0. They should be used together.
No changes since the v1.0.0 release.
v1.0.0
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
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 underpostgrestd
.- 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
- This is mostly not user facing, however
-
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.
- There is no longer any way to access (or modify) the main thread's
-
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 viaToSocketAddrs
. - 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.
- All
-
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.
- This means that external libraries will be unable to perform I/O 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.