# 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)