Pen 0.26.0 released

Available here:

And also here:

The 0.26.0 release features quite a few improvements over 0.25.1. Some of
the most important ones are probably:

– Connecting to backend servers is now done in parallel with other operations.
This gives better overall performance for servers with a bit of latency
(i.e. most application servers).

– The option to turn off nonblocking socket operations has been removed.

– The accept queue length is now configurable, whereas it previously required
a recompile. This makes tuning easier.

– The number of incoming connections that are accepted at a time is also

– The configure script now automatically tries to use features that everybody
should want: poll, kqueue, epoll, openssl and geoip will be built if possible,
unless they are explicitly excluded. Before, it was necessary to write
a long list of “–with-foo –with-bar –with-baz” options.

– Pen has always used select as the default event management system. Support
for poll and kqueue has been available for many years, and has now been
joined by epoll. The default event management system is now kqueue for BSD,
epoll for Linux, poll for anything else if it is available and select
where it is the only option (i.e. Windows).

– Improved compatibility with Microsoft Windows. Pen can now be installed as
a native Windows service without using Cygwin as a compatibility layer.

Full list of changes since 0.25.1:

150204 Released 0.26.0.

150203 More sensible autoconfiguration defaults: poll, kqueue, epoll, openssl and geoip
are built if found unless explicitly excluded.
New event management defaults: kqueue, epoll, poll, select in that order.
New penctl commands: kqueue, epoll, poll, select.
New command line option: -O cmd where cmd is any penctl command.
E.g. -O select to use select instead of the compiled-in default.

150127 New penctl option “listen [address:]port” to allow listening address
to be changed on the fly or via a configuration file.
New pen options -i and -u to install and uninstall Pen as a Windows service.
See pen manpage.
Reduced default timeout to 3 seconds.

150126 New autoconf option –enable-debugging to enable debugging code.
Lots of fixes for compatibility with Windows.
Released 0.26.0beta2.

150123 Fixed bug in mainloop which kept trying to write 0 bytes.
MinGW port. Use to compile.

150121 Event management code broken out into select.c, poll.c, kqueue.c and epoll.c.

150113 New command-line option -m to accept multiple incoming connections in a batch.
New command-line option -q to set incoming pending connection queue length.

150112 Close upfd when failing over.

150109 Released 0.26.0beta1.
Adjusted debug logging levels.

150108 Started on epoll support for Linux.

150107 Rewrote output_net and output_file to take a variable number of arguments.
Handle timed out connection attempts in mainloop_kqueue.

150105 Fixed mainloop_kqueue.

150103 A lot of code broken out from mainloop_select into separate functions.
Fixed mainloop_poll.

150102 Bugfixes related to the new backend connection logic.

141229 Cleaned up and simplified add_client() and associated circuitry.
Connections to back end servers are now nonblocking and parallel.

141217 Removed the -n option and all code explicitly using blocking sockets.
Removed the -D option and the “delayed forward” feature.

141213 Renamed server and client fields in the conn, client and server structures
to better reflect what they are.
Restructured the add_client, store_client, store_conn and try_server


Leave a Reply

Your email address will not be published. Required fields are marked *