## Requirements |
|
We should divide the requirements into three categories: |
|
- **Mandatory** -- you _must_ follow them |
- **Recommended** -- you generally _should_ have them unless you have good reasons. |
- **Suggested** -- you _may_ have them, however, without you may miss some useful functionality in different configurations. |
|
|
### Mandatory |
|
- POSIX<sup><a href="#m1">1</a></sup> Compatible Platform. Linux and Cygwin are tested. |
|
In future more Free UNIX platforms are planned to be tested OpenSolaris, FreeBSD. |
|
- Reasonable, standard complaint, C and C++ compilers that works smoothly with autotools. GCC 3.4 and 4.1 are tested. |
- [CgiCC](http://www.gnu.org/software/cgicc/) library. Version 3.2.6 and above recommended. |
- [Boost](http://www.boost.org/) libraries 1.33.1 or higher. 1.35 and above recommended. |
- Python 2.x |
|
### Recommended |
|
- [FastCGI](http://www.fastcgi.com/) Library including C++ bindings. |
|
FastCGI is the most popular communication protocol that |
is supported by vast majority of web servers. |
|
### Suggested |
|
- [OSSP mm](http://www.ossp.org/pkg/lib/mm/) shared memory allocation library. Provides process shared cache backend for mod prefork. |
- [Asio](http://tenermerx.com/Asio/) 1.0.0 and above or [Boost](http://www.boost.org/) 1.35.0 and above that includes Asio. Provides distributed cache and sessions backends. |
- [libgcrypt](http://directory.fsf.org/project/libgcrypt/) cryptography library. Provides encrypted cookies session backend. |
- [Sqlite3](http://www.sqlite.org/). It provides fast and somple DB for storage of sessions data. |
|
|
--------- |
|
1. <span id="m1"></span> Some of POSIX/UNIX Features that are used: |
|
- Berkeley and UNIX Sockets stack including poll(2) |
- mmap, fork, signal |
- Process shared pthread mutex/rwlock (optional, recommended) |
- System V process shared sem\_post/sem\_wait |
- `/dev/urandom` |
- fcntl for file locking |
|
|