|
1 |
| -# PL/Rust: A Trusted Procedural Language Handler |
| 1 | +[](https://docs.rs/plrust-trusted-pgrx) |
2 | 2 |
|
3 |
| -PL/Rust is a loadable procedural language that enables writing PostgreSQL functions in the Rust programming |
4 |
| -language. These functions are compiled to native machine code. Unlike other procedural languages, PL/Rust functions |
5 |
| -are not interpreted. |
| 3 | +# PL/Rust: A Trusted Procedural Language Handler for Rust |
| 4 | + |
| 5 | +[PL/Rust](https://tcdi.github.io/plrust/spi.html) is a loadable procedural language that enables [writing PostgreSQL functions in the Rust programming language](https://tcdi.github.io/plrust/use-plrust.html). These functions are compiled to native machine code. Unlike other procedural languages, PL/Rust functions are not interpreted. |
6 | 6 |
|
7 | 7 | The primary advantages of PL/Rust include writing natively-compiled functions to achieve the absolute best performance,
|
8 | 8 | access to Rust's large development ecosystem, and Rust's compile-time safety guarantees.
|
9 | 9 |
|
10 |
| -PL/Rust provides access to Postgres' Server Programming Interface (SPI) including dynamic queries, prepared |
11 |
| -statements, and cursors. It also provides safe Rust types over most of Postgres built-in data types, including (but |
12 |
| -not limited to), TEXT, INT, BIGINT, NUMERIC, FLOAT, DOUBLE PRECISION, etc. |
| 10 | +PL/Rust provides access to Postgres' [Server Programming Interface](https://tcdi.github.io/plrust/spi.html) ([SPI](https://tcdi.github.io/plrust/spi.html)) including dynamic queries, prepared |
| 11 | +statements, and cursors. It also provides safe Rust types over most of Postgres built-in [data types](https://tcdi.github.io/plrust/data-types.html), including (but |
| 12 | +not limited to), `TEXT`, `INT`/`BIGINT`, `NUMERIC`, `FLOAT`/`DOUBLE PRECISION`, `JSON`/`JSONB`, arrays, and more. You can also use PL/Rust to write [trigger functions](https://tcdi.github.io/plrust/triggers.html). |
13 | 13 |
|
14 |
| -On x86_64 and aarch64 Linux systems PL/Rust can be a "trusted" procedural language, assuming the proper compilation |
15 |
| -requirements are met. On other systems, it is perfectly usable as an "untrusted" language but cannot provide the |
16 |
| -same level of safety guarantees. |
| 14 | +On x86_64 and aarch64 Linux systems PL/Rust can be a "[trusted](https://tcdi.github.io/plrust/trusted-untrusted.html)" procedural language, assuming the proper compilation requirements are met. On other systems, it is perfectly usable as an "[untrusted](https://tcdi.github.io/plrust/trusted-untrusted.html)" language but cannot provide the same level of safety guarantees. |
17 | 15 |
|
18 |
| -# Learn More |
| 16 | +# Documentation |
19 | 17 |
|
20 |
| -PL/Rust's documentation, an ongoing project, can be found at https://tcdi.github.io/plrust. Also see the |
| 18 | +PL/Rust's [documentation](https://tcdi.github.io/plrust) can be found at https://tcdi.github.io/plrust. Also see the |
21 | 19 | [`plrust-trusted-pgrx`](https://docs.rs/plrust-trusted-pgrx/latest/plrust_trusted_pgrx/) Rust documentation.
|
22 | 20 |
|
23 | 21 | # Install on Debian today!
|
|
0 commit comments