Home Website Changes Log in Log out


Status: Stablized API, but always looking for further feedback!
Latest Release: 1.5 (2011.09.17)


Continuity is a perl library for building stateful web applications in a style similar to that of command line or desktop applications. The core library is minimalist in nature, staying out of your way much like CGI.pm does. Applications execute as a continuous process on the server, providing advantages similar to mod_perl.

"I was able to take a single user cli app I created and make it into a multi user web app very quickly." -- David Steinbrunner



At its core the web uses the stateless HTTP protocol. In a CGI setting, this effectively means that your program is re-started during each instance of user input, and losing all current variable values and other program state information. Most applications combat this by keeping track of the current application state in GET, POST, and session variables, effectively implementing an ad-hoc state machines.

Continuity uses a programming concept called continuations to make HTTP seem like a stateful protocol instead of stateless protocol. This technique is increasingly called creating a Continuation Server. Continuity is a suite of libraries (not a framework) for building a highly structured web-based interface for your application, without using ad-hoc state management. Continuity is Free Software, distributed under the same terms as Perl itself.


How It Works

The most important part is the Continuation Server. When your program runs it creates a new instance of the server. Then, instead of the user requesting a response from the program, the program requests input from the user.

Think in terms of writing a command-line application. When you are ready for some input you read from STDIN, and then go on from there. More complex UI applications make use of libraries such as curses or in a graphical context GTK+, but these libraries depend on the application being the thing in control.