Sloop is a single thread, asynchronous, linux (epoll) based HTTP 1.1 server with a perl interface. It was written from the ground up in perl and C, and uses a event driven API similar to node.js, by which it was inspired. It also resembles standalone Plack, with more high level feature integration in place of PSGI support.

#!/usr/bin/perl
use strict;
use warnings;

use Sloop::Server;

my $Sloop = Sloop::Server->new();

my $page = <<END;
<!DOCTYPE html>
<html>
<body>
    <h1>Hello World</h1>
</body>
</html>
END

$Sloop->{handlers} = {
    '/' => sub {
        my $client = shift;
        $client->reply(\$page);
    }
};

$Sloop->run();

Requests are handled by cascading through the handlers hash. Some other features:

There is no configuration to deal with beyond coding; sloop is composed of various object oriented modules. Part of the goal is to provide a useful foundation for web sites and applications, including:

Sloop maintains a slim, stable memory profile over time and is very efficient; on a fast core it will handle simple requests like the example above thousands of times per second.