Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on Jun 1, 2015
  1. www: install NEWS.atom.xml properly

    Eric Wong authored
    I just noticed the 4.9.0 release was not properly reflected in
    the Atom news feed at
Commits on Feb 6, 2015
  1. fix uninstalled testing and reduce require paths

    Eric Wong authored
    This fixes a bug introduced in
    commit fe83ead
    (GNUmakefile: fix clean gem build + reduce build cruft)
    which broke clean Ruby installations without an existing
    unicorn gem installed :x
Commits on Feb 4, 2015
  1. GNUmakefile: fix clean gem build + reduce build cruft

    Eric Wong authored
    Ensure we have a NEWS file for building the gem beforehand.
    We don't need to polute lib/ with object files, either.
  2. http: standalone require + reduction in binary size

    Eric Wong authored
    This allows requiring just the C extension part of "unicorn_http",
    without requiring the rest of unicorn, allowing other HTTP servers
    using the same parser to be slimmer.
    On my x86-64 Debian 7.0 system:
        text	   data	    bss	    dec	    hex	filename
       44026	   1976	    488	  46490	   b59a	lib/
       43930	   1976	    456	  46362	   b51a	lib/
Commits on Jan 10, 2015
  1. switch docs + website to olddoc

    Eric Wong authored
    wrongdoc was difficult to maintain because of the tidy-ffi
    dependency and the HTML5 changes in Darkfish could not be
    handled well by Tidy.
    olddoc is superior as it generates leaner HTML which loads faster,
    requires less scrolling and less processing power to render.
    Aesthetic comparisons are subjective of course but completely
    unimportant compared to speed and accessibility.
    The presence of images and CSS on the old (Darkfish-based) site
    probably set unreasonable expectations as to my ability and
    willingness to view such things.  No more, the new website is
    entirely simple HTML which renders well with even the wimpiest
Commits on Aug 17, 2014
  1. remove RubyForge and Freecode references

    Eric Wong authored
    Both sites are gone.
  2. dev: remove isolate dependency

    Eric Wong authored
    It seems unnecessary with current versions of RubyGems
    supporting development dependencies.
Commits on Jan 11, 2014
  1. GNUmakefile: add "check" target for running all tests

    Eric Wong authored
    "check" rolls off the fingers of users familiar with GNU Automake
    more easily.  The "test-all" target is preserved for compatibility.
Commits on Sep 30, 2013
  1. Rakefile: kill raa_update task

    Eric Wong authored
    RAA is dead.
Commits on Feb 8, 2013
  1. auto-generate Unicorn::Const::UNICORN_VERSION

    Eric Wong authored
    This DRYs out our code and prevents snafus like the 4.6.0
    release where UNICORN_VERSION stayed at 4.5.0
    Reported-by: Maurizio De Santis <>
Commits on Jul 28, 2012
  1. remove Rails-oriented integration tests

    Eric Wong authored
    It's too much overhead to keep Rails-specific tests working,
    especially when it's hauling in an ancient version of SQLite3.
    Since Rails 3 has settled down with Rack and unicorn_rails is
    unlikely to need changing in the future, we can drop these
Commits on Jun 7, 2011
  1. build: ensure gem and tgz targets build manpages

    Eric Wong authored
    Original patch by Hongli Lai <>:
    > >From bfefc2cf0efb0913a42862886363b3140dcdbb2a Mon Sep 17 00:00:00 2001
    > From: Hongli Lai (Phusion) <>
    > Date: Mon, 6 Jun 2011 13:39:00 +0200
    > Subject: [PATCH] Ensure that 'make gem' builds the documentation too.
    > If autogenerated documentation files, like man pages, don't exist then
    > 'make gem' will fail, complaining that some files are not found. By
    > depending the 'gem' target on the 'doc' target we ensure that 'make gem'
    > always works.
    > Signed-off-by: Hongli Lai (Phusion) <>
Commits on May 23, 2011
  1. GNUmakefile: locale-independent grep invocation

    Eric Wong authored
    Otherwise it could casefold and we don't want that.
Commits on Apr 13, 2011
  1. GNUmakefile: s/Config/RbConfig/

    Eric Wong authored
    "Config" is deprecated and warns under 1.9.3dev
Commits on Apr 1, 2011
  1. drop Rails 2.3.x tests

    Eric Wong authored
    They were transitionary releases and the logic to deal with them
    and Rack versioning was too much overhead.
Commits on Jan 5, 2011
  1. http_response: implement httpdate in C

    Eric Wong authored
    This can return a static string and be significantly
    faster as it reduces object allocations and Ruby method
    calls for the fastest websites that serve thousands of
    requests a second.
    It assumes the Ruby runtime is single-threaded, but that
    is the case of Ruby 1.8 and 1.9 and also what Unicorn
    is all about.  This change is safe for Rainbows! under 1.8
    and 1.9.
Commits on Dec 26, 2010
  1. gemspec: fix gemspec build

    Eric Wong authored
Commits on Dec 25, 2010
  1. doc: use wrongdoc for documentation

    Eric Wong authored
    wrongdoc factors out a bunch of common code from this
    project into its own and removes JavaScript from RDoc
    to boot.
Commits on Dec 21, 2010
  1. rdoc: include tag subject in NEWS file

    Eric Wong authored
    It's more useful this way
  2. rdoc: enable webcvs feature for cgit links

    Eric Wong authored
    Hopefully this gets more people reading our source.
Commits on Oct 27, 2010
  1. unicorn 2.0.0 - mostly internal cleanups

    Eric Wong authored
    Despite the version number, this release mostly features
    internal cleanups for future versions of Rainbows!.  User
    visible changes include reductions in CPU wakeups on idle sites
    using high timeouts.
    Barring possible portability issues due to the introduction of
    the kgio library, this release should be ready for all to use.
    However, 1.1.x (and possibly 1.0.x) will continue to be
    maintained.  Unicorn 1.1.5 and 1.0.2 have also been released
    with bugfixes found during development of 2.0.0.
  2. doc: stop using deprecated rdoc CLI options

    Eric Wong authored
    -N and -a switches no longer exist in rdoc 2.5
Commits on Oct 8, 2010
  1. build: automatically call isolate on updates

    Eric Wong authored
    Automation is nice, the makefile needs some cleanup
Commits on Oct 6, 2010
  1. unicorn 2.0.0pre1 - a boring "major" release

    Eric Wong authored
    Mostly internal cleanups for future versions of Rainbows! and
    people trying out Rubinius.  There are tiny performance
    improvements for Ruby 1.9.2 users which may only be noticeable
    with Rainbows!
    Unicorn 1.1.x users are NOT required to upgrade.
Commits on Oct 5, 2010
  1. GNUmakefile: fix isolate invocation

    Eric Wong authored
    again :x
  2. tests: do not invoke isolate in test install dest

    Eric Wong authored
    We don't want to waste time and bandwidth.
Commits on Oct 4, 2010
  1. split out isolate usage/logic

    Eric Wong authored
    We'll be using more of Isolate in development.
Commits on Jun 17, 2010
  1. unicorn 1.0.0 - yes, this is a real project

    Eric Wong authored
    There are only minor changes since 0.991.0.
    For users clinging onto the past, MRI 1.8.6 support has been
    restored.  Users are strongly encouraged to upgrade to the
    latest 1.8.7, REE or 1.9.1.
    For users looking towards the future, the core test suite and
    the Rails 3 (beta) integration tests pass entirely under 1.9.2
    preview3.  As of the latest rubinius.git[1], Rubinius support is
    nearly complete as well.
    Under Rubinius, signals may corrupt responses as they're being
    written to the socket, but that should be fixable transparently
    to us[4].  Support for the hardly used, hardly documented[2]
    embedded command-line switches in rackup config (.ru) files is
    is also broken under Rubinius.
    The recently-released Rack 1.2.1 introduced no compatiblity
    issues[3] in core Unicorn.  We remain compatible with all Rack
    releases starting with 0.9.1 (and possibly before).
    [1] tested with Rubinius upstream commit
    [2] lets avoid the Dueling Banjos effect here :x
    [3] actually, Rack 1.2.1 is broken under 1.8.6.
  2. GNUmakefile: allow RSYNC variable to be overridden

    Eric Wong authored
    This lets me use RSYNC=echo when testing/editing documentation
    without actually publishing it.
Commits on Jun 11, 2010
  1. unicorn 0.991.0 - startup improvements

    Eric Wong authored
    The "working_directory" configuration parameter is now handled
    before  That means "unicorn" and "unicorn_rails" no
    longer barfs when initially started outside of the configured
    "working_directory" where a is required.  A huge
    thanks to Pierre Baillet for catching this ugly UI inconsistency
    before the big 1.0 release
    Thanks to Hongli Lai, out-of-the-box Rails 3 (beta) support
    should be improved for deployments lacking a
    There are more new integration tests, cleanups and some
    documentation improvements.
Commits on Jun 8, 2010
  1. unicorn 0.990.0 - inching towards 1.0

    Eric Wong authored
    Thanks to Augusto Becciu for finding a bug in the HTTP parser
    that caused a TypeError (and 500) when a rare client set the
    "Version:" header which conflicts with the HTTP_VERSION header
    we parse in the first line of the request[1].
    Horizontal tabs are now allowed as leading whitespace in header
    values as according to RFC 2616 as pointed out by
    Iñaki Baz Castillo[2].
    Taking a hint from Rack 1.1, the "logger" configuration
    parameter no longer requires a "close" method.  This means some
    more Logger replacements may be used.
    There's a new, optional, Unicorn (and maybe Passenger)-only
    middleware, Unicorn::OobGC[2] that runs GC outside of the normal
    request/response cycle to help out memory-hungry applications.
    Thanks to Luke Melia for being brave enough to test and report
    back on my big_app_gc.rb monkey patch[3] which lead up to this.
    Rails 3 (beta) support:
      Using "unicorn" is still recommended as Rails 3 comes with
      a, but "unicorn_rails" is cleaned up a bit and
      *should* work as well as "unicorn" out-of-the-box.  Feedback
      is much appreciated.
    Rubinius updates:
      USR2 binary upgrades are broken due to
      {TCPServer,UNIXServer}.for_fd[5][6] being broken
      Repeatedly hitting the server with signals in a tight
      loop is unusual and not recommended[7].
      There are some workarounds and general code cleanups for other
      issues[8], as well but things should generally work unless you
      need USR2 upgrades.  Feedback and reports would be greatly
      appreciated as usual.
    MRI support:
      All tests (except old Rails) run and pass under 1.9.2-preview3.
      1.8.7 and 1.9.1 work well as usual and will continue to be
      supported indefinitely.
    Lets hope this is the last release before 1.0.  Please report
    any issues on the mailing list[9] or email us privately[a].
    Don't send HTML mail.
    [1] -
    [2] -
    [3] -
    [4] -
    [5] -
    [6] -
    [7] -
    [8] -
    [9] -
    [a] -
  2. cleanup makefiles, restore aggregation screwup

    Eric Wong authored
    The publish_doc target belongs in main, since other people
    may update the website. enables a subset of tests for Rubinius
    and allows them to run in parallel with the MRI tests.
    And it was NOT a UUoC after all, there are multiple files to
    aggregate :x
  3. GNUmakefile: add test-all and test-integration targets

    Eric Wong authored
    Long overdue
  4. update test infrastructure to run Rubinius tests

    Eric Wong authored
    In parallel with other of Rubies, of course.  We need to rely on
    RUBY_ENGINE since RUBY_VERSION is 1.8.7 and that conflicts with
    the most popular MRI version.
    Since Rubinius doesn't support some command-line options, we
    still need to rely on MRI for a few things.  Also fixing an
    embarrassing UUoC in the process.
Commits on Jun 3, 2010
  1. move Rails 2.3.x test to Rails 2.3.8

    Eric Wong authored
    This allows us to gets rid of the Rack 1.0.1 dependency when
    running Rails tests since previous versions of Rails 2.3.x
    needed Rack 1.0.1, where as Rails 2.2.x and below could be used
    with any version of Rack (under Unicorn only).
Something went wrong with that request. Please try again.