unicorn.git  about / heads / tags
Rack HTTP server for Unix and fast clients
$ git log --pretty=format:'%h %s (%cs)%d' v0.1.0 --
ca4265e HttpRequest: update comment regarding short writes (2009-03-10)
	(tag: v0.1.0)
6d618ae HttpRequest: set binmode on tempfiles (2009-03-10)
fc6e9ad http11: mark private methods as static (2009-03-10)
cc53bdc http11: remove unnecessary CPP definitions (2009-03-10)
abd98f4 update TODO (2009-03-09)
debbcdc Remove sinatra example (2009-03-09)
ac6ace3 Add -s/--server switch for compatibility with rackup (2009-03-09)
32a5a5e Documentation updates (2009-03-09)
bfc3aae Configurator: document reasons for lowering backlog (2009-03-09)
4d0cf2b test_exec: increase backlog to 128 (2009-03-09)
...

$ git cat-file blob v0.1.0:README
= Unicorn: UNIX + LAN/localhost-only fork of Mongrel

Only run this behind a full-HTTP-request-buffering reverse proxy if
you're serving slow clients.  That said, nginx is the only reverse
proxy we know of that meets this requirement.

== Features

* process management: Unicorn will reap and restart workers that
  die because of broken apps and there is no need to manage
  multiple processes yourself.

* does not care if your application is thread-safe or not, workers
  all run within their own isolated address space and only serve one
  client at a time...

* able to listen on multiple interfaces, including UNIX sockets,
  each worker process can also bind to a private port via the
  after_fork hook for easy debugging.

* supports all Rack applications

* nginx-style binary re-execution without losing connections.
  You can upgrade unicorn, your entire application, libraries
  and even your Ruby interpreter as long as unicorn is
  installed in the same path.

* before_fork and after_fork hooks in case your application
  has special needs when dealing with forked processes.

* builtin log rotation via USR1 signal

* Ruby 1.9-compatible (at least the test cases all pass :>)

== License

Unicorn is copyright 2009 Eric Wong and contributors.
It is based on Mongrel:

Mongrel is copyright 2007 Zed A. Shaw and contributors. It is licensed
under the Ruby license and the GPL2. See the include LICENSE file for
details.

== Install

The library consists of a C extension so you'll need a C compiler or at
least a friend who can build it for you.

Finally, the source includes a setup.rb for those who hate RubyGems.

You can get the source via git via the following locations:

  git://git.bogomips.org/unicorn.git

  http://git.bogomips.org/unicorn.git

== Usage

Unicorn will look for the config.ru file used by rackup in APP_ROOT.
Optionally, it can use a config file specified by the --config-file/-c
command-line switch.

Unicorn should be capable of running all Rack applications.  Since this
is a preforking webserver, you do not have to worry about thread-safety
of your application or libraries. However, your Rack application may use
threads internally (and should even be able to continue running threads
after the request is complete).

== Contact

Newsgroup and mailing list coming, or it'll be a part of the Mongrel project...

Email Eric Wong at normalperson@yhbt.net for now.

# heads (aka `branches'):
$ git for-each-ref --sort=-creatordate refs/heads \
	--format='%(HEAD) %(refname:short) %(subject) (%(creatordate:short))'
* master       t/lib.perl: fix Perl integration tests w/o installation (2024-04-15)
  pico         ext: switch filter_body to picohttpparser (2021-10-25)
  v6-wip       Merge remote-tracking branch 'origin/master' into v6-wip (2021-03-15)
  gperf        http: gperf 3.0.3 compatibility (2019-07-05)
  no-kgio-wip  remove kgio from all read(2) and write(2) wrappers (2019-05-26)
  5.4-stable   unicorn 5.4.1 (2018-07-23)
  5.3-stable   unicorn 5.3.1 (2017-10-03)
  ccc-tcp-v3   test_ccc: use a pipe to synchronize test (2017-03-22)
  worker_exec  Don't pass a block for fork when forking workers (2017-03-13)
  doc-5.3.0    doc: add version annotations for new features (2017-03-08)
...

# tags:
$ git for-each-ref --sort=-creatordate refs/tags \
	--format='%(refname:short) %(subject) (%(creatordate:short))'
v6.1.0       unicorn 6.1.0 (2021-12-25) tar.gz
v6.0.0       unicorn 6.0.0 - no more recycling Rack env (2021-03-17) tar.gz
v5.8.0       unicorn 5.8.0 - rack.after_reply support (2020-12-24) tar.gz
v5.7.0       unicorn 5.7.0 (2020-09-08) tar.gz
v5.6.0       unicorn 5.6.0 - early_hints support (2020-07-26) tar.gz
v5.5.5       unicorn 5.5.5 (2020-04-27) tar.gz
v5.5.4       unicorn 5.5.4 (2020-03-24) tar.gz
v5.5.3       unicorn 5.5.3 (2020-01-31) tar.gz
v5.5.2       unicorn 5.5.2 (2019-12-20) tar.gz
v5.5.1       unicorn 5.5.1 (2019-05-06) tar.gz
...

# associated public inboxes:
# (number on the left is used for dev purposes)
            https://yhbt.net/unicorn-public

git clone https://yhbt.net/unicorn.git