# Gua prctica para escribir extensiones seguras en Rust
> [! nota]-
> El contenido de esta página se ha generado a partir de la transcripción de audio/vídeo y la transformación del texto del contenido y los enlaces de esta fuente.
Fuente: [https://fosdem.org/2025/schedule/event/fosdem-2025-4317-writing-safe-postgresql-extensions-in-rust-a-practical-guide/](https://fosdem.org/2025/schedule/event/fosdem-2025-4317-writing-safe-postgresql-extensions-in-rust-a-practical-guide/)
<video src=«https://video.fosdem.org/2025/ub2252a/fosdem-2025-4317-writing-safe-postgresql-extensions-in-rust-a-practical-guide.av1.webm» controls></video>
## Resumen y aspectos destacados:
La sesión 'Writing safe PostgreSQL extensions in Rust: a practical guide' presentada por Damien Clochard en FOSDEM 2025, destaca la importancia de Rust en la creación de extensiones de PostgreSQL, ofreciendo mejoras en seguridad y rendimiento.
**Introducción a PostgreSQL y Rust**
PostgreSQL es una plataforma extensible con más de 1000 extensiones. Rust emerge como un estándar para escribir extensiones robustas, prometiendo seguridad de memoria y mejor rendimiento. Clochard, un desarrollador con experiencia en PostgreSQL, comparte su transición de C a Rust utilizando el marco PGRX.
**El Marco PGRX**
PGRX facilita la integración de Rust con PostgreSQL, permitiendo la exposición de funciones de Rust dentro de PostgreSQL. Proporciona conversiones automáticas de tipos de datos y mejora la seguridad al manejar errores de manera eficiente, evitando caídas del servidor.
**Ejemplos Prácticos y Lecciones Aprendidas**
Clochard presenta ejemplos prácticos de uso de PGRX, como la reescritura de la extensión PostgreSQL Anonymizer de C a Rust. Destaca los beneficios inmediatos en estabilidad y desarrollo, aunque reconoce desafíos como la lentitud en la compilación y la complejidad inicial.
**Importancia Ecosocial**
El uso de Rust en extensiones de PostgreSQL promueve prácticas sostenibles al mejorar la eficiencia y seguridad del software. Esto es crucial para diseñadores ecosociales que buscan soluciones tecnológicas robustas y seguras.
## Importancia para una transformación ecosocial
La adopción de Rust para extensiones de PostgreSQL es significativa para la transformación ecosocial, ya que mejora la seguridad y el rendimiento, reduciendo el riesgo de fallos catastróficos. Esto es relevante para diseñadores ecosociales que buscan herramientas tecnológicas eficientes y seguras. Rust ofrece un entorno de desarrollo gestionado que puede facilitar la creación de software más sostenible, al tiempo que aborda cuestiones de seguridad y eficiencia energética. Sin embargo, existen retos como la lentitud en la compilación y la falta de soporte en Windows, que podrían limitar su adopción más amplia. Es crucial que las comunidades tecnológicas trabajen para superar estos obstáculos y promover la integración de Rust en más plataformas.
## Slides:
| | |
| --- | --- |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_001.jpg\|300]] | La primera diapositiva introduce el tema de escribir extensiones seguras para PostgreSQL utilizando Rust, destacando la combinación de seguridad y eficiencia que Rust puede ofrecer al desarrollo de extensiones.
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_002.jpg\|300]] | Damien Clochard se presenta como cofundador de DALIBO, una empresa líder en PostgreSQL en Francia desde 2005. Es un miembro activo de la comunidad francesa de PostgreSQL y el principal desarrollador de la extensión PostgreSQL Anonymizer.
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_003.jpg\|300]] | Clochard comparte su experiencia con PostgreSQL, que comenzó hace 25 años, y su reciente descubrimiento de Rust el año pasado, mostrando su entusiasmo por aprender y aplicar nuevas tecnologías.
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_004.jpg\|300]] | La historia de Clochard comienza con el proyecto PostgreSQL Anonymizer en 2018, donde inicialmente escribió código en C. El año pasado, decidió reescribir todo en Rust, y esta presentación narra esa experiencia.
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_005.jpg\|300]] | El menú de la presentación incluye una visión general de las extensiones de PostgreSQL, el marco PGRX, un ejemplo práctico y las lecciones aprendidas de la versión 2.0 de PostgreSQL Anonymizer, concluyendo que el futuro de PostgreSQL es Rust.
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_006.jpg\|300]] | La diapositiva enfatiza la recomendación de usar PostgreSQL debido a su robustez y capacidad para manejar una amplia variedad de casos de uso a través de sus extensiones.
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_007.jpg\|300]] | PostgreSQL se presenta no solo como una base de datos, sino como una plataforma versátil que admite una amplia gama de aplicaciones, desde gráficos hasta inteligencia artificial, gracias a su ecosistema de extensiones.
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_008.jpg\|300]] | Se destaca el ecosistema único de PostgreSQL, con más de 1000 extensiones conocidas, de las cuales casi 250 están activas y mantenidas, subrayando la amplitud y diversidad de su comunidad.
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_009.jpg\|300]] | Una extensión de PostgreSQL se define como una combinación de objetos SQL, código de lenguaje procedimental y/o una biblioteca compilada, lo que permite una gran flexibilidad en su implementación.
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_010.jpg\|300]] | Escribir una extensión en código SQL o PL es fácil y rápido, y es una excelente manera de compartir código entre varias bases de datos, manteniendo estabilidad entre versiones principales.
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_011.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_012.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_013.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_014.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_015.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_016.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_017.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_018.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_019.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_020.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_021.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_022.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_023.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_024.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_025.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_026.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_027.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_028.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_029.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_030.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_031.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_032.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_033.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_034.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_035.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_036.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_037.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_038.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_039.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_040.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_041.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_042.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_043.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_044.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_045.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_046.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_047.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_048.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_049.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_050.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_051.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_052.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_053.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_054.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_055.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_056.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_057.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_058.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_059.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_060.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_061.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_062.jpg\|300]] | |
| ![[FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_063.jpg\|300]] | |
## Enlaces
[Writing Safe Postgres extensions with Rust - Slide 1](FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_001.jpg)
[Damien Clochard - Slide 2](FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_002.jpg)
[My journey - Slide 3](FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_003.jpg)
[My Story - Slide 4](FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_004.jpg)
[Menu - Slide 5](FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_005.jpg)
[Just use Postgres - Slide 6](FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_006.jpg)
[Postgres is not a database, it’s a platform - Slide 7](FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_007.jpg)
[A unique ecosystem - Slide 8](FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_008.jpg)
[So what is an Postgres extension? - Slide 9](FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_009.jpg)
[Writing an extension in SQL or PL code - Slide 10](FOSDEM 2025/assets/Writing-safe-PostgreSQL-extensions-in-Rust-a-pract/preview_010.jpg)