C++ Servlet Server / News: Recent posts

CPPSERV 0.2.14 has been released

CPPSERV is an application server with Servlet-like API written in C++. In addition it supports CSP - template language very similar to JSP.

There have been quite a few changes since 0.2.13. Some of the functionality (like thread pool implementation) was moved out to SPTK library and generalized, lots of small fixes to make sure CPPSERV works with latest toolchain, as well as bunch of bug fixes.

Among new major features is a support for flow control in with CSP tags. Now you can use
<csp:if>, <csp:when>, and <csp:switch> instead of ugly <% if(...) { %> constructs.

Posted by Ilya A. Volynets-Evenbakh 2011-05-23

CPPSERV 0.2.6 has been released

CPPSERV is an application server written
in C++ and provides API very similar to
that Java Servlets.
CPPSERV also has CSP (C++ Server Pages)
compiler, which allows to mix C++ and markup
code in a manner similar to JSP. The CSP
compiler supports compile-time taglibs
(extensions to CSP syntax, which convert
custom tags to application-defined code).

CPPSERV CSP comes with its standard tag library,
which includes tags for iterating over STL collections,
and tags for defining macros. Flow control tags
are not yet implemented, but they might be in
future.... read more

Posted by Ilya A. Volynets-Evenbakh 2009-03-03

CPPSERV 0.2.4 have been released

I am pleased to announce the release of CPPSERV 0.2.4.
The main focus of 0.2.x series is CSP (C++ Server Pages) and CSP taglib support.

So far the following improvements have been made:
- CSP compiler now supports include paths
- CSP compiler knows how to generate make-style dependency information
- CSP compiler supports generating "compact" output (e.g. all extra spaces are collapsed into single white space)
- Standard taglib library has been started
- Error messages in CSP compiler were improved
- Problems with gcc-4.3 compilation of taglibs were fixed.... read more

Posted by Ilya A. Volynets-Evenbakh 2009-02-09

CPPSERV and CSP (C++ Server Pages) 0.2.0 released

CPPSERV is an application server, which provides Servlet-like API to C++ programmers. CPPSERV also provides CSP (C++ Server Pages) parser, which uses syntax very similar to JSP.

Recently I announced release 118 of CPPSERV, which I planned to be release candidate for 0.5 series. 0.5 series APIs will be set in stone, and only internal implementation and test suit will be improved, until I'm happy enough with it to make it 1.0. However, there is one important aspect of APIs, which hasn't been tackled up until now: taglibs.... read more

Posted by Ilya A. Volynets-Evenbakh 2008-12-29

CPPSERV and CSP (C++ Server Pages) 0.1.118 released

Hello folks!

It's been a while since CPPSERV release announcement.
In fact last one was ten releases ago.
Yes, it's time for 0.1.118. This is a big release.
In fact, I feel that it would be appropriate to
bump version to 0.5, once it's been out for a while,
provided no new bugs will be discovered.
CPPSERV, along with CSP (C++ Server Pages) is
currently being used by myself in two large projects
(one propriatary, one open source), so it's getting
a lot of good real-life test coverage.... read more

Posted by Ilya A. Volynets-Evenbakh 2008-12-14

CPPSERV 0.1.108 released

CPPSERV 0.1.108 (grr... when will I be ready to call it 0.2? 1.0?) rolls back main 0.1.106 change partially. Turns out that eating all white space after directives wasn't such a good idea.
Now parser only eats single newline.
This way on one hand it'll be possible to write legible code, and on the other hand there will
be no problem adding white spaces, when needed.
One thing that's still missing is ability to do
the right thing with \r\n.... read more

Posted by Ilya A. Volynets-Evenbakh 2008-03-29

Version 0.1.106 released

Finally CSP (C++ Server Pages) parser works the way I want it to work.
It was a bit of fun - digging into flex work, figuring out how buffering is handled, etc.
But now, in the end, we have a parser that does sane things:
1. It eats all white space after code and directives. This means that following code:
<%@page session="true"%>

Cookie cook("hello", "world");
will actually work as expected.
Previously it would simply throw an exception,
because EOL's after first line would be
treated like a response body output to be sent to browser,
and thus would prevent any headers (like cookies) to be sent after it.... read more

Posted by Ilya A. Volynets-Evenbakh 2008-03-20

CPPSERV v0.1.104 released

Release 0.1.104 of CPPSERV is out. There were numerous bug fixes and improvements since release 0.1.100.
Lighttpd module got a good overhaul. Now it supports all the features that apache module does (and actually works too :)
Session handling, file uploads, error handling, test framework, build system, configuration parser - all got a good bit of cleanup.

This release is a big step towards 1.0
Only remaining serious issue is context path handling (most affected function is HttpServletRequest::getServletPath()).

Posted by Ilya A. Volynets-Evenbakh 2008-03-03

CPPSERV v0.1.100 released

CPPSERV is an application server that provides very
Java servlet like API to C++ programmers. Another
part of the package is CSP (C++ Server Pages) parser,
which allows for functionality conceptually similar
to precompiled JSP.

Release 0.1.100 moves automated test suit from the
samples package. It also fixes few minor CPPSERV bugs,
and one major issue - version of Adon/Banai build system
used for 0.1.99 had a bug, which caused all libraries
to be built in a way which made them completely
As a result release 0.1.99 wouldn't work at all.
Hopefully the fact that running a test suit is required
part of the release process will eliminate such problems
in future.... read more

Posted by Ilya A. Volynets-Evenbakh 2007-04-05

CPPSERV samples v0.1.99.0 released

CPPSERV samples package contains various examples
of CPPSERV Servlets, CSPs, other related things,
and even simple store-front application.

It also contains a test suit for many of public
APIs provided by CPPSERV.
This release finally makes test suit fully automated.
While previously one would have to compile samples,
then start CPPSERV process, apache, and then run
"make check", now "make check" does everything for
you, including generating CPPSERV and Apache config
files.... read more

Posted by Ilya A. Volynets-Evenbakh 2007-04-05

CPPSERV v0.1.99 released

CPPSERV is an application server that provides Servlet-like API to C++ programmers. It also includes CSP (C++ Server Pages) parser, which allows to create active templates, just like JSP does.

Release 0.1.99 focuses on fixing minor bugs, updating to latest version of external APIs, and generally making CPPSERV ready for releasing version 1.0.

Posted by Ilya A. Volynets-Evenbakh 2007-03-18

CPPSERV v0.1.98 released

This release of CPPSERV adds some more app
deployment/administration helper features,
as well as small measure of generic cleanups
and feature enhancements.
Specifically, configuration file now has explicit
CSP (C++ Servlet Pages) support, and CSP parser
changed to generate correct servlet names (now
that internal servlet name actually matters).
Additionally, few more standard API functions were
implemented, and some old debugging code removed.... read more

Posted by Ilya A. Volynets-Evenbakh 2006-11-22

CPPSERV v0.1.97 released

CPPSERV is an application servlet written in C++,
and providing Java Servlet-like API to C++ programmers, along with CSP (C++ Servlet Pages)

The release 0.1.97 of CPPSERV core along with
release of CPPSERV samples package to accompany
it were shipped on November 16, 2006.

Two main features of this release are ability to
map servlets in logical tree structure (in other
words to create sub-directories), and an ability
to put multiple servlets into single library.... read more

Posted by Ilya A. Volynets-Evenbakh 2006-11-17

CPPSERV v0.1.96 released

This release (along with 0.1.95) fixes two very important bugs:

1. CPPSERV container had a race condition in its
thread pool code, that caused deadlock under high

2. Apache module had a resource leak, that would
cause apache to become completely unusable after
serving large number of requests to CPPSERV.

Few minor performance improvements were added along the way:
1. Some hash_maps were replaced with std::map, to
save memory (with number of items we have in those
maps, speed difference is next to none)
2. Pending request queue depth is now configurable... read more

Posted by Ilya A. Volynets-Evenbakh 2006-11-07

CPPSERV v0.1.94 released

CPPSERV v0.1.94 has been released. CPPSERV itself
contains few API function fixes. Samples package,
in addition to few more API function samples/tests,
now contains semi-automated test suit.
Unfortunately we still do not have code to start
web server and cppserv automatically as part of
"make check" execution, but even as it is, it's
lot better.
Current tests are written in perl.

Thanks to Sergey Jukov for all the hard work in
getting this automated suit going.

Posted by Ilya A. Volynets-Evenbakh 2006-10-03

CPPSERV v0.1.93 released

CPPSERV v0.1.93 has been released. This is minor bug fix release.
It fixes compile problems with gcc-4.x compilers, and some bugs in startup sequence. Specifically, it
properly loads initialization parameters, and correctly
handles stdin/stdout/stderr when daemonizing.
Another minor fix is correct destruction of TCP socket Connection objects.

Posted by Ilya A. Volynets-Evenbakh 2006-08-27

CPPSERV v0.1.92 released

This is another step towards 0.2. It includes implementation of ServletContext::getResourcePaths(), some files missing from previous distributions, and some
extra diagnostics output in case of failure during startup.

Posted by Ilya A. Volynets-Evenbakh 2006-08-10

v0.1.91 is out

CPPSERV-0.1.91 is released. This release primary focus is code cleanup and documentation updates.
This is yet another step towards 0.2.

Posted by Ilya A. Volynets-Evenbakh 2006-08-07

CSP (C++ Server Pages) Implemented

CSP (C++ Server Pages) have finally been ported over from CXXSP project. In case of CPPSERV, CSPs
are strictly precompiled - i.e. .csp files are converted into C++ code, and then compiled as regular servlets during application build process.

Sample web store application from CXXSP was also included in CPPSERV-samples package. APIs are close enough, that only build system needed to be changed.

All the code is currently in GIT.
To retrieve:
git clone http://gateway.total-knowledge.com/scm/cppserv.git
git clone http://gateway.total-knowledge.com/scm/cppserv-samples.git... read more

Posted by Ilya A. Volynets-Evenbakh 2006-07-30


As a preparation for 0.2 series, I have update API,
to be more compatible with official Java Servlet API. It is also lot closer to CXXSP api - another project aiming at providing servlet-like API to C++ writer, although taking slighlty different approach to the problem.

I am working on getting CXXSP's C++ Server Pages support ported over to work with CPPSERV. Now that APIs are so close, it should be easy to do

Posted by Ilya A. Volynets-Evenbakh 2006-07-11

Adon/banai build system

I switched CPPSERV over to adon/banai build system from autotools.

Adon/banai is pure-make solution. Requirements are very low, it is far more efficient (no configure/reconfigure), and tries to avoid many of autotools pitfalls when it comes to cross-compilation.

Posted by Ilya A. Volynets-Evenbakh 2006-03-13

Multiple listeners support

CPPSERV is now capable of listening on multiple sockets in parallel. This is not that important in itself - there are very few reasons to listen on different TCP sockets for now in most settings, except maybe in case of multi-IP machines, where you don't want to listen on all interfaces (is this sentense too long, or what?). However, another important feature was added as well - that is ability to listen on Unix-domain sockets, which is lot more efficient then TCP for local communication. Preliminary tests have shown 10-15% speed difference.
Unix-domain socket support still needs to be added to ligttpd module though.

Posted by Ilya A. Volynets-Evenbakh 2006-02-20

CPPSERV v0.1.6 released

CPPSERV is C++ Web Application Server that implements Java Servlet-like API in C++.

Primary focus of release v0.1.6 is support for ligttpd connector for CPPSERV. Currently ligttpd does not support building plugins outside of ligttpd source tree, so enabling liggtpd support for CPPSERV is bit of a complex procedure, which is currently described in documentation. However, we are working on fixing ligttpd build/install system to allow out-of-tree plugin build support. Once that is done and released CPPSERV build process will be changed to allow things like ./configure --enable-ligttpd to work.

Posted by Ilya A. Volynets-Evenbakh 2006-02-18

CPPSERV &amp; C++ Server Pages

I am in talks with author of C++ Servlet Pages (http://fastserverpages.sourceforge.net - project with similar goal, but different approach) about making our APIs compatible. Besides adding more choices for servlet writers and making it at least somewhat easier to migrate between the projects, should application needs require it, it'll add JSP-style pre-processor to CPPSERV (a thing that we were lacking, and I didn't have time to implement).

Posted by Ilya A. Volynets-Evenbakh 2006-02-17

inital ligttpd module for CPPSERV implemented

I finally got a semi-working ligttpd module. It took
a bit longer then I expected, but finally it does the basic work. I still need to add POST request handling, fix redirect support, and lots of other things, but at least there is something to look at.
Module is in master GIT tree in src/mod_cserv/lighttpd_cserv.c

Posted by Ilya A. Volynets-Evenbakh 2006-02-13