There's a real trade-off behind that. C extensions build quickly. Rust extensions don't. One Rust build can take longer than all the C builds combined. But users still need them. A self-hosted Supabase stack, for example, needs about a dozen extensions, three of them Rust. So the question is not whether the work is necessary. It's where the work should live.

Part III : The Delivery Layer

The Trade-Off

PIGSTY
C Extension:Fast and Small
Rust Extension:Slow and Bulky
NameStarRPM / DEB PackageAvg SizeDescription
pg_search8,783pg_search_$v / postgresql-$v-pg-search56.8 MBFull text search for PostgreSQL using BM25
pg_tokenizer43pg_tokenizer_$v / postgresql-$v-pg-tokenizer10.7 MBTokenizers for full-text search
pg_analytics537pg_analytics_$v / postgresql-$v-pg-analytics9.92 MBPostgres for analytics, powered by DuckDB
pg_mooncake1,965pg_mooncake_$v / postgresql-$v-pg-mooncake9.47 MBColumnstore Table in Postgres
pg_bestmatch96pg_bestmatch_$v / postgresql-$v-pg-bestmatch6.59 MBGenerate BM25 sparse vector inside PostgreSQL
vectorize831pg_vectorize_$v / postgresql-$v-pg-vectorize6.51 MBThe simplest way to do vector search on Postgres
pg_parquet670pg_parquet_$v / postgresql-$v-pg-parquet6.39 MBcopy data between Postgres and Parquet
pgml6,789pgml_$v / postgresql-$v-pgml4.97 MBRun AL/ML workloads with SQL interface
pg_trickle107pg_trickle_$v / postgresql-$v-pg-trickle3.70 MBStreaming tables and differential view maintenance for PostgreSQL 18
tzf8pg_tzf_$v / postgresql-$v-tzf3.48 MBFast lookup timezone name by GPS coordinates
anon0pg_anon_$v / postgresql-$v-pg-anon2.89 MBPostgreSQL Anonymizer (anon) extension
timescaledb_toolkit470timescaledb-toolkit_$v / postgresql-$v-timescaledb-toolkit2.84 MBLibrary of analytical hyperfunctions, time-series pipelining, and other SQL utilities
plprql473plprql_$v / postgresql-$v-plprql2.38 MBUse PRQL in PostgreSQL - Pipelined Relational Query Language
vchord1,680vchord_$v / postgresql-$v-vchord2.05 MBVector database plugin for Postgres, written in Rust
etcd_fdw4etcd_fdw_$v / postgresql-$v-etcd-fdw1.49 MBForeign data wrapper for etcd
pg_tiktoken52pg_tiktoken_$v / postgresql-$v-pg-tiktoken1.49 MBtiktoken tokenizer for use with OpenAI models in postgres
pgmqtt3pgmqtt_$v / postgresql-$v-pgmqtt1.44 MBCDC-to-MQTT broker for PostgreSQL
pg_pinyin10pg_pinyin_$v / postgresql-$v-pinyin1.36 MBPinyin romanization and search helpers for PostgreSQL
pg_later373pg_later_$v / postgresql-$v-pg-later1.26 MBRun queries now and get results later
pg_jsonschema1,188pg_jsonschema_$v / postgresql-$v-pg-jsonschema1.19 MBPostgreSQL extension providing JSON Schema validation
pglite_fusion826pglite_fusion_$v / postgresql-$v-pglite-fusion1.11 MBEmbed an SQLite database in your PostgreSQL table
pg_render65pg_render_$v / postgresql-$v-pg-render0.92 MBRender HTML in SQL
pg_summarize6pg_summarize_$v / postgresql-$v-pg-summarize0.91 MBText Summarization using LLMs. Built using pgrx
explain_ui5pg_explain_ui_$v / postgresql-$v-pg-explain-ui0.91 MBeasily jump into a visual plan UI for any SQL query
pg_graphql3,326pg_graphql_$v / postgresql-$v-pg-graphql0.72 MBAdd in-database GraphQL support
pgsmcrypto15pgsmcrypto_$v / postgresql-$v-pgsmcrypto0.70 MBPostgreSQL SM Algorithm Extension
pg_enigma11pg_enigma_$v / postgresql-$v-enigma0.63 MBEncrypted postgres data type
pglinter167pglinter_$v / postgresql-$v-pglinter0.47 MBPostgreSQL Linting and Analysis Extension
pg_smtp_client10pg_smtp_client_$v / postgresql-$v-pg-smtp-client0.43 MBPostgreSQL extension to send email using SMTP
vchord_bm25368vchord_bm25_$v / postgresql-$v-vchord-bm250.42 MBA postgresql extension for bm25 ranking algorithm
vectorscale3,017pgvectorscale_$v / postgresql-$v-pgvectorscale0.41 MBAdvanced indexing for vector data with DiskANN
pg_cardano2pg_cardano_$v / postgresql-$v-pg-cardano0.41 MBA suite of Cardano-related tools
pg_idkit424pg_idkit_$v / postgresql-$v-pg-idkit0.37 MBmulti-tool for generating new/niche universally unique identifiers (ex. UUIDv6, ULID, KSUID)
pg_when44pg_when_$v / postgresql-$v-pg-when0.35 MBNatural language time parsing for PostgreSQL
pg_session_jwt65pg_session_jwt_$v / postgresql-$v-pg-session-jwt0.34 MBManage authentication sessions using JWTs
pg_kazsearch22pg_kazsearch_$v / postgresql-$v-pg-kazsearch0.34 MBKazakh full-text search extension for PostgreSQL
typeid22pg_typeid_$v / postgresql-$v-typeid0.31 MBAllows to use TypeIDs in Postgres natively
pgx_ulid499pgx_ulid_$v / postgresql-$v-pgx-ulid0.30 MBulid type and methods
pg_strict18pg_strict_$v / postgresql-$v-pg-strict0.25 MBPrevent dangerous UPDATE and DELETE without WHERE clause
pg_polyline4pg_polyline_$v / postgresql-$v-pg-polyline0.24 MBFast Google Encoded Polyline encoding & decoding for postgres
pg_rrf3pg_rrf_$v / postgresql-$v-pg-rrf0.23 MBReciprocal rank fusion functions for hybrid search
pg_command_fw1pg_command_fw_$v / postgresql-$v-pg-command-fw0.23 MBDDL and utility command firewall for PostgreSQL
pg_eviltransform8pg_eviltransform_$v / postgresql-$v-eviltransform0.23 MBCoordinate transforms for BD09/GCJ02 via PostGIS ST_Transform
block_copy_command3block_copy_command_$v / postgresql-$v-block-copy-command0.22 MBBlock COPY commands via a configurable ProcessUtility hook
pg_base582pg_base58_$v / postgresql-$v-pg-base580.22 MBBase58 Encoder/Decoder Extension for PostgreSQL
convert3pg_convert_$v / postgresql-$v-convert0.20 MBconversion functions for spatial, routing and other specialized uses
pgdd55pgdd_$v / postgresql-$v-pgdd0.20 MBIntrospect pg data dictionary via standard SQL
wrappers845wrappers_$v / postgresql-$v-wrappers0.18 MBForeign data wrappers developed by Supabase