pgagroal 2.0.0 is available!

It took quite a lot of time to get from version 1.6.0 to the new major version 2.0.0, but the new pgagroal is finally here! The project went thru two Google Summer of Code (GSoC 2025 and 2024) before this new great release was completed, but the project decided to prefer the code stability over the rush in releasing, and I think you are going to be amazed by how much improvements have been collapsed in this new version. The official release note has been sent today.

The new features

There are a lot of new features and small gems in this 2.0.0 release, it is pretty much impossible to describe all of them here, but here it is a concise list of what you can expect from this new version.

The new event system

pgagroal has been event-driven from the very beginning, using the libev library for handling input/output in a more fast and scalable way. The project decided to move from libev from something more modern and better mantained, and the natural choice for Linux operating systems was io_uring (yes, the same used in PostgreSQL 18) and kqueue for BSD systems. io_uring is an async method for read and write operations that aims at peformances, while kqueue is an event driven approach for FreeBSD and OpenBSD systems. The key point here is event-driven and, obviously, asynchronous. The whole event management has been rewritten to wrap compatible structures and functions wherever possible. Performances have increased a lot from the 1.x releases.

The new management protocol

The management protocol is the way pgagroal-cli and pgagroal interact each other: it sends commands to the daemon and get back responses. The new release provides a new fully rewritten management protocol that now speaks entirely JSON. Moreover, the protocol is now more robust and error tolerant. Moreover, every command and response now include the application and daemon version, so that it is possible to get detail about the endpoints. The immediate effect of this change is that you are going to see a very different text output from each command.

Improved metrics

pgagroal provides Prometheus-ish metrics, and this release includes new metrics that can help monitoring better your pooler instance. Moreover, it is now possible to manage TLS for Prometheus.

Improved Grafana Dashboards

There is a new set of dashboards that are Grafana 12 compatible and that show a lot more gauges than before. This helps in monitoring the pgagroal instance.

The Vault

There is now a vault that can manage frontend users’ passwords, changing them (rotating) depending on the configuration. The vault exposes metrics too, that can be consumed by Prometheus.

UTF-8 passwords

There is now full support for UTF-8 passwords, reducing the gap between the split security of pgagroal to PostgreSQL.

Improved testing environment

A lot of work has been done on the testing and Continuous Integration (CI) side, so that now every contribution is strongly validated. The project also changed the source code formatting tool passing from uncrustify to the modern clang-format.

Documentation

There is now a complete manual, that is built from Markdown documents automatically. This substitutes the old tutorials and provide a mucch complete and mature documentation for the usage and configuration of pgagroal.

Bug Fixing

A lot of bug have been fixed and discovered while working on all the above features. Thanks to the new testing infrastructure and containerization, it has been simpler to discover problems and fix them. We hope to be even better in the future with regard to this context.

A new website

This release also brings a new new web site and the migration of the Github repository.

How much?

There have been 221 commits that lead to this new release. It may sound not too much, given the long list of new features and gems, but please consider that the project does one commit per feature almost:

% git log 1.6.0..2.0.0 --oneline | wc -l
221




One important thing to note

If you ask me what is, according to me, the most important change that pgagroal has done during its trip to version 2, I quickly answer the growth of the community:

% git checkout 1.6.0 && wc -l AUTHORS && git checkout 2.0.0 && wc -l AUTHORS
10 AUTHORS
29 AUTHORS


As you can see, we increased the number of authors of 200%! Not bad, uh? Clearly, not all the authors are active today, as were not in the past, but the increase in size means that pgagroal caught interest and value. Quite frankly, Jesper did and is doing a great job in making contributions pushes and pulls from the so called sister projects like pgmoneta and pgexporter and this also helps in getting attention to the project, as well as increases the capability of code reviews and quality.

Conclusions

We are really happy with this new release of pgagroal; the pooler is getting more and more attention every day and the code quality and stability has improved a lot. We all learned during this process and are contributing well to the codebase, that is become every day more and more enterprise-level. You will be amazed by the features the pooler now provides, and the peformances are getting better than ever! Please start by visiting the new pgagroal web site and reading the documentation and fire up your own pooler instance!

The article pgagroal 2.0.0 is available! has been posted by Luca Ferrari on February 2, 2026