In the following tests, we have measured the performance of several web application platforms, full-stack frameworks, and micro-frameworks.
PAWK aims to bring the full power of Python to AWK-like line-processing.
(Source: onethingwell)
It is a direct port of the Python-powered jinja2 templating engine and aims to be feature-complete with jinja2. It supports server and client-side rendering.
Features
- Beautiful templates with filters, looping, and all that you’d expect
- It’s very fast, as fast as jinja2
- Template inheritance allows you to easily share templates across your site, without having to touch code
- jinja2-style parsing of code {{ foo(‘bar’, 1) }}
- Lots of builtin tags, filters, and operators
- Complete browser-side support with precompiled templates and a small 8K runtime
- Extensive and thorough tests
- Line and column number tracking
Cyclone is a low-level network toolkit, which provides support for HTTP 1.1 in an API very similar to the one implemented by the Tornado web server - which was developed by FriendFeed and later released as open source / free software by Facebook.
SockJS is a browser JavaScript library that provides a WebSocket-like object. SockJS gives you a coherent, cross-browser, Javascript API which creates a low latency, full duplex, cross-domain communication channel between the browser and the web server.
Under the hood SockJS tries to use native WebSockets first. If that fails it can use a variety of browser-specific transport protocols and presents them through WebSocket-like abstractions.
SockJS is intended to work for all modern browsers and in environments which don’t support WebSocket protcol, for example behind restrictive corporate proxies.
SockJS family:
- SockJS-client JavaScript client library
- SockJS-node Node.js server
- SockJS-erlang Erlang server
- SockJS-lua Lua/Luvit server
- SockJS-tornado Python/Tornado server
- vert.x Java/vert.x server
Work in progress:
Moe is a new, not-very-little Javascript-targeted language written in JavaScript. Its features are inspired by Python, Haskell and Coffee. It is aimed to deal with common troubles in JavaScript development. Moe has neatly crafted grammar so that most JavaScript development will be simplified.
When adding an API to your web service, you have to choose how to encode the data you send across the line. XML is one common choice for this, but it can grow arcane and cumbersome pretty quickly. Lots of webservice authors want to avoid thinking about XML, and instead choose formats that provide a few simple data types that correspond to common data structures in modern programming languages. In other words, JSON and YAML.
Unfortunately, while these formats make it easy to pass around complex data structures, they lack a system for validation. XML has XML Schemas and RELAX NG, but these are complicated and sometimes confusing standards. They’re not very portable to the kind of data structure provided by JSON, and if you wanted to avoid XML as a data encoding, writing more XML to validate the first XML is probably even less appealing.
Rx is meant to provide a system for data validation that matches up with JSON-style data structures and is as easy to work with as JSON itself.
mitmproxy is an SSL-capable man-in-the-middle HTTP proxy. It provides a console interface that allows traffic flows to be inspected and edited on the fly.
mitmdump is the command-line version of mitmproxy, with the same functionality but without the frills. Think tcpdump for HTTP.
Intercept and modify HTTP traffic on the fly
Save HTTP conversations for later replay and analysis
Replay both HTTP clients and servers
Make scripted changes to HTTP traffic using Python
SSL interception certs generated on the fly
Django REST framework is a lightweight REST framework for Django, that aims to make it easy to build well-connected, self-describing RESTful Web APIs.
Some Ruby for your Python
Mongrel2 is an application, language, and network architecture agnostic web server that focuses on web applications using modern browser technologies.
Emscripten is an LLVM-to-JavaScript compiler. It takes LLVM bitcode (which can be generated from C/C++, using llvm-gcc or clang, or any other language that can be converted into LLVM) and compiles that into JavaScript, which can be run on the web (or anywhere else JavaScript can run).