pgxcrown

Build Postgres extensions in Nim.

Pure Nim score 15/100 · tests present · no docs generated

Summary

Latest Version Unknown
License MIT
CI Status Failing
Downloads 0
Last Indexed 2026-07-21 05:24

Installation

nimble install pgxcrown
choosenim install pgxcrown
git clone https://github.com/luisacosta828/pgxcrown

OS Compatibility

Platform Linux macOS Windows FreeBSD OpenBSD NetBSD Android iOS WASM Embedded
pgxcrown - - - - - - -

Source

Repository https://github.com/luisacosta828/pgxcrown
Homepage https://github.com/luisacosta828/pgxcrown
Registry Source nimble_official

README

Pgxcrown

Build Postgres Extensions in Nim.

Requisites

  • Postgres with CLI tools installed and running locally
  • Nim

Usage

Install

nimble install

Create a pgxcrown project

  • This command will create your project structure:
pgxtool create-project test

Write your code into main.nim

proc add_one*(a: int): int =
  a + 1

Build a dynamic library

pgxtool build-extension test

Linux:

cp *.so $(pg_config --pkglibdir)

Windows:

  • Windows may not add all Postgres CLI tools to PATH by default(?)
  • Locate pg_config.exe in the folders "C:\Program Files\PostgreSQL\".
  • Run it in a terminal like so pg_config.exe --pkglibdir to get the pkglibdir path.
  • See pgconfigFinder() function source code as hint.
  • Check if you have development header files ("postgres.h", "spi.h", "analyze.h", "elog.h").
  • See Windows CI builds for more.

Call your library function from Postgresql

-- Enter into psql and create a function to wrap your library function
-- omit library extension.

create function function_name(params) return data_type as
'{libname}', '{function}'
language c strict;

-- Example
create function nim_add_one(integer) return integer as
'libadd_one', 'pgx_add_one'
language c strict;

select nim_add_one(10); # -> 11

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

License

MIT