tokuhirom's Blog

Released Router::Simple 0.01

http://github.com/tokuhirom/p5-router-simple

my $router = router {
  connect '/' => {controller => 'Router', action => 'index'};
  submapper('/entry/{id:[0-9]+}', controller => 'Entry')
    ->connect('/show', {action => 'show'})
     ->connect('/edit', {action => 'edit'});
};

my $psgi_app = sub {
     my $env = shift;
     if (my $p = $router->match($env)) {
         "MyApp::C::$p->{controller}"->can($p->{action})->($env, $p->{args});
    } else {
        return [404, [], ['not found']];
    }
}

I released Router::Simple 0.01 to CPAN.

This is PSGI friendly, fast, lightweight, documented, few deps, and powerful web application dispatcher for Perl5.

The rules are taken from routes.py.

fast?

HTTP::Router: 0.05
Router::Simple: 0.01
HTTPx::Dispatcher: 0.07

                    Rate HTTPx-Dispatcher      HTTP-Router    Router-Simple
HTTPx-Dispatcher   649/s               --             -83%             -99%
HTTP-Router       3794/s             485%               --             -93%
Router-Simple    56776/s            8653%            1397%               --

Yes, Fast!

see. http://github.com/tokuhirom/p5-router-simple/blob/master/tools/benchmark.pl

few dependencies?

Yes!Router::Simple only depend to List::Util and parent.pm.

List::Util was first released with perl 5.007003
parent was first released with perl 5.010001

less memory?

Yes!This module don't load much modules.

backward compatibility with HTTPx::Dispatcher?

rules are upper compatible.You can move to Router-Simple very easy!

conclusion

I hope this module is useful for you. Enjoy!