meh/cauldron
I wonder what kind of Elixir is boiling in there.
{ "createdAt": "2013-05-30T20:27:18Z", "defaultBranch": "master", "description": "I wonder what kind of Elixir is boiling in there.", "fullName": "meh/cauldron", "homepage": null, "language": "Elixir", "name": "cauldron", "pushedAt": "2017-05-13T15:43:50Z", "stargazersCount": 72, "topics": [], "updatedAt": "2025-01-08T14:16:48Z", "url": "https://github.com/meh/cauldron"}Cauldron - an HTTP/SPDY server as a library
Section titled “Cauldron - an HTTP/SPDY server as a library”Cauldron is a web server implemented as a library, it’s easy to embed into other applications and fairly easy to implement DSLs on it, an example of a DSL using cauldron is urna.
Examples
Section titled “Examples”defmodule Foo do use Cauldron
# respond to a GET / request with "Hello, World!" def handle("GET", %URI{path: "/"}, req) do req |> Request.reply(200, "Hello, World!") endend
# open the cauldron on port 8080Cauldron.start Foo, port: 8080Because I don’t like how cowboy handles things and there are no other pure Elixir webservers around that I know of.
Right now cauldron is faster than node.js and slower than cowboy, there’ still space for speed improvements but it’s not a high priority right now.
The slowness comes from protocol dispatching in Elixir, protocol consolidation will fix that.
Also we don’t use an hand-crafted decoder like cowboy does but use
:erlang.decode_packet.