JezK
Edit File: page-NEWS.ri
U:RDoc::TopLevel[ i I" NEWS:ETcRDoc::Parser::Simpleo:RDoc::Markup::Document:@parts[PS:RDoc::Markup::Heading: leveli: textI")unicorn 5.3.0 / 2017-04-01 08:03 UTC;To:RDoc::Markup::BlankLine o:RDoc::Markup::Verbatim;[iI"@A couple of portability fixes from Dylan Thacker-Smith and ;TI"CJeremy Evans since 5.3.0.pre1 over a week ago, but this looks ;TI"(ready for a stable release, today. ;TI" ;TI"DWhen I started this over 8 years ago, I wondered if this would ;TI"Djust end up being an April Fools' joke. Guess not. I guess I ;TI"Fsomehow tricked people into using a terribly marketed web server ;TI"Athat cannot talk directly to untrusted clients :x Anyways, ;TI"Dunicorn won't be able to handle slow clients 8 years from now, ;TI"Deither, or 80 years from now. And I vow never to learn to use ;TI":new-fangled things like epoll, kqueue, or threads :P ;TI" ;TI"CAnyways, this is a largish release with several new features, ;TI")and no backwards incompatibilities. ;TI" ;TI"DSimon Eskildsen contributed heavily using TCP_INFO under Linux ;TI"Hto implement the (now 5 year old) check_client_connection feature: ;TI" ;TI"_ https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-check_client_connection ;TI"Y https://bogomips.org/unicorn-public/?q=s:check_client_connection&d:..20170401&x=t ;TI" ;TI"FThis also led to FreeBSD and OpenBSD portability improvements in ;TI")one of our dependencies, raindrops: ;TI" ;TI"N https://bogomips.org/raindrops-public/20170323024829.GA5190@dcvr/T/#u ;TI" ;TI">Jeremy Evans contributed several new features. First he ;TI"5implemented after_worker_exit to aid debugging: ;TI" ;TI"Y https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-after_worker_exit ;TI"U https://bogomips.org/unicorn-public/?q=s:after_worker_exit&d:..20170401&x=t#t ;TI" ;TI"EAnd then security-related features to isolate workers. Workers ;TI"Emay now chroot to drop access to the master filesystem, and the ;TI"Fnew after_worker_ready configuration hook now exists to aid with ;TI" chroot support in workers: ;TI" ;TI"Z https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-after_worker_ready ;TI"F https://bogomips.org/unicorn/Unicorn/Worker.html#method-i-user ;TI"V https://bogomips.org/unicorn-public/?q=s:after_worker_ready&d:..20170401&x=t#t ;TI"J https://bogomips.org/unicorn-public/?q=s:chroot&d:..20170401&x=t#t ;TI" ;TI"FAdditionally, workers may run in a completely different VM space ;TI"?(nullifying preload_app and any CoW savings) with the new ;TI"worker_exec option: ;TI" ;TI"S https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-worker_exec ;TI"O https://bogomips.org/unicorn-public/?q=s:worker_exec&d:..20170401&x=t#t ;TI" ;TI"@There are also several improvements to FreeBSD and OpenBSD ;TI"2support with the addition of these features. ;TI" ;TI"4shortlog of changes since v5.2.0 (2016-10-31): ;TI" ;TI"Dylan Thacker-Smith (1): ;TI"M Check for Socket::TCP_INFO constant before trying to get TCP_INFO ;TI" ;TI"Eric Wong (30): ;TI"9 drop rb_str_set_len compatibility replacement ;TI"7 TUNING: document THP caveat for Linux users ;TI"6 tee_input: simplify condition for IO#write ;TI"& remove response_start_sent ;TI"A http_request: freeze constant strings passed IO#write ;TI"/ Revert "remove response_start_sent" ;TI"K t/t0012-reload-empty-config.sh: access ivars directly if needed ;TI"C t0011-active-unix-socket.sh: fix race condition in test ;TI"0 new test for check_client_connection ;TI"@ revert signature change to HttpServer#process_client ;TI"@ support "struct tcp_info" on non-Linux and Ruby 2.2+ ;TI"9 unicorn_http: reduce rb_global_variable calls ;TI"C oob_gc: rely on opt_aref_with optimization on Ruby 2.2+ ;TI"F http_request: reduce insn size for check_client_connection ;TI"< freebsd: avoid EINVAL when setting accept filter ;TI"- test-lib: expr(1) portability fix ;TI". tests: keep disabled tests defined ;TI"? test_exec: SO_KEEPALIVE value only needs to be true ;TI"/ doc: fix links to raindrops project ;TI"M http_request: support proposed Raindrops::TCP states on non-Linux ;TI"I ISSUES: expand on mail archive info + subscription disclaimer ;TI"4 test_ccc: use a pipe to synchronize test ;TI"5 doc: remove private email support address ;TI"; input: update documentation and hide internals. ;TI"- http_server: initialize @pid ivar ;TI"8 gemspec: remove olddoc from build dependency ;TI"9 doc: add version annotations for new features ;TI" unicorn 5.3.0.pre1 ;TI"6 doc: note after_worker_exit is also 5.3.0+ ;TI"I test_exec: SO_KEEPALIVE value only needs to be true (take #2) ;TI" ;TI"Jeremy Evans (7): ;TI"6 Add after_worker_exit configuration option ;TI"? Fix code example in after_worker_exit documentation ;TI"1 Add support for chroot to Worker#user ;TI"7 Add after_worker_ready configuration option ;TI"0 Add worker_exec configuration option ;TI"< Don't pass a block for fork when forking workers ;TI"6 Check for SocketError on first ccc attempt ;TI" ;TI"Simon Eskildsen (1): ;TI"; check_client_connection: use tcp state on linux ;T:@format0S; ; i;I".unicorn 5.3.0.pre1 / 2017-03-24 00:25 UTC;T@ o; ;[UI"2A largish release with several new features. ;TI" ;TI"DSimon Eskildsen contributed heavily using TCP_INFO under Linux ;TI"Hto implement the (now 5 year old) check_client_connection feature: ;TI" ;TI"_ https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-check_client_connection ;TI"Y https://bogomips.org/unicorn-public/?q=s:check_client_connection&d:..20170324&x=t ;TI" ;TI"FThis also led to FreeBSD and OpenBSD portability improvements in ;TI")one of our dependencies, raindrops: ;TI" ;TI"N https://bogomips.org/raindrops-public/20170323024829.GA5190@dcvr/T/#u ;TI" ;TI">Jeremy Evans contributed several new features. First he ;TI"5implemented after_worker_exit to aid debugging: ;TI" ;TI"Y https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-after_worker_exit ;TI"U https://bogomips.org/unicorn-public/?q=s:after_worker_exit&d:..20170324&x=t#t ;TI" ;TI"EAnd then security-related features to isolate workers. Workers ;TI"Emay now chroot to drop access to the master filesystem, and the ;TI"Fnew after_worker_ready configuration hook now exists to aid with ;TI" chroot support in workers: ;TI" ;TI"Z https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-after_worker_ready ;TI"F https://bogomips.org/unicorn/Unicorn/Worker.html#method-i-user ;TI"V https://bogomips.org/unicorn-public/?q=s:after_worker_ready&d:..20170324&x=t#t ;TI"J https://bogomips.org/unicorn-public/?q=s:chroot&d:..20170324&x=t#t ;TI" ;TI"FAdditionally, workers may run in a completely different VM space ;TI"?(nullifying preload_app and any CoW savings) with the new ;TI"worker_exec option: ;TI" ;TI"S https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-worker_exec ;TI"O https://bogomips.org/unicorn-public/?q=s:worker_exec&d:..20170324&x=t#t ;TI" ;TI"@There are also several improvements to FreeBSD and OpenBSD ;TI"2support with the addition of these features. ;TI" ;TI"*34 changes since 5.2.0 (2016-10-31): ;TI" ;TI"Eric Wong (27): ;TI"9 drop rb_str_set_len compatibility replacement ;TI"7 TUNING: document THP caveat for Linux users ;TI"6 tee_input: simplify condition for IO#write ;TI"& remove response_start_sent ;TI"A http_request: freeze constant strings passed IO#write ;TI"/ Revert "remove response_start_sent" ;TI"K t/t0012-reload-empty-config.sh: access ivars directly if needed ;TI"C t0011-active-unix-socket.sh: fix race condition in test ;TI"0 new test for check_client_connection ;TI"@ revert signature change to HttpServer#process_client ;TI"@ support "struct tcp_info" on non-Linux and Ruby 2.2+ ;TI"9 unicorn_http: reduce rb_global_variable calls ;TI"C oob_gc: rely on opt_aref_with optimization on Ruby 2.2+ ;TI"F http_request: reduce insn size for check_client_connection ;TI"< freebsd: avoid EINVAL when setting accept filter ;TI"- test-lib: expr(1) portability fix ;TI". tests: keep disabled tests defined ;TI"? test_exec: SO_KEEPALIVE value only needs to be true ;TI"/ doc: fix links to raindrops project ;TI"M http_request: support proposed Raindrops::TCP states on non-Linux ;TI"I ISSUES: expand on mail archive info + subscription disclaimer ;TI"4 test_ccc: use a pipe to synchronize test ;TI"5 doc: remove private email support address ;TI"; input: update documentation and hide internals. ;TI"- http_server: initialize @pid ivar ;TI"8 gemspec: remove olddoc from build dependency ;TI"9 doc: add version annotations for new features ;TI" ;TI"Jeremy Evans (6): ;TI"6 Add after_worker_exit configuration option ;TI"? Fix code example in after_worker_exit documentation ;TI"1 Add support for chroot to Worker#user ;TI"7 Add after_worker_ready configuration option ;TI"0 Add worker_exec configuration option ;TI"< Don't pass a block for fork when forking workers ;TI" ;TI"Simon Eskildsen (1): ;TI"; check_client_connection: use tcp state on linux ;T;0S; ; i;I")unicorn 5.2.0 / 2016-10-31 20:00 UTC;T@ o; ;[ I"CMost notably, this release allows us to support requests with ;TI"Alines delimited by LF-only, as opposed to the standard CRLF ;TI",pair and allowed by RFC 2616 sec 19.3. ;TI" ;TI"DThanks to Mishael A Sibiryakov for the explanation and change: ;TI" ;TI"P https://bogomips.org/unicorn-public/1476954332.1736.156.camel@junki.org/ ;TI" ;TI">Thanks to Let's Encrypt, the website also moves to HTTPS ;TI"E<https://bogomips.org/unicorn/> to improve reader privacy. The ;TI"E"unicorn.bogomips.org" subdomain will be retired soon to reduce ;TI"=subjectAltName bloat and speed up certificate renewals. ;TI" ;TI"?There's also the usual round of documentation and example ;TI"updates, too. ;TI" ;TI"Eric Wong (7): ;TI"? examples/init.sh: update to reduce upgrade raciness ;TI"; doc: systemd should only kill master in example ;TI"? examples/logrotate.conf: update example for systemd ;TI"? doc: update gmane URLs to point to our own archives ;TI"= relocate website to https://bogomips.org/unicorn/ ;TI"& TODO: remove Rack 2.x item ;TI"6 build: "install-gem" target avoids network ;TI" ;TI"Mishael A Sibiryakov (1): ;TI"2 Add some tolerance (RFC2616 sec. 19.3) ;T;0S; ; i;I"Cunicorn 5.1.0 - rack is optional, again / 2016-04-01 00:35 UTC;T@ o; ;['I"ENote: no code changes since 5.1.0.pre1 from January.^WNo, wait, ;TI"Blast minute performance improvement added today. See below. ;TI" ;TI"EThe big change is rack is not required (but still recommended). ;TI"JApplications are expected to depend on rack on their own so they can ;TI"Especify the version of rack they prefer without unicorn pulling ;TI"3in a newer, potentially incompatible version. ;TI" ;TI"Hunicorn will always attempt to work with multiple versions of rack ;TI"as practical. ;TI" ;TI"DThe HTTP parser also switched to using the TypedData C-API for ;TI"Bextra type safety and memory usage accounting support in the ;TI"'objspace' extension. ;TI" ;TI"FThanks to Adam Duke to bringing the rack change to our attention ;TI"6and Aaron Patterson for helping with the matter. ;TI" ;TI"HLast minute change: we now support the new leftpad() syscall under ;TI";Linux for major performance and security improvement: ;TI" ;TI"O http://mid.gmane.org/1459463613-32473-1-git-send-email-richard@nod.at ;TI" ;TI"8^H9 changes since 5.0.1: ;TI" ;TI", http: TypedData C-API conversion ;TI") various documentation updates ;TI"9 doc: bump olddoc to ~> 1.2 for extra NNTP URL ;TI"9 rack is optional at runtime, required for dev ;TI": doc update for ClientShutdown exceptions class ;TI"8 unicorn 5.1.0.pre1 - rack is optional, again ;TI"D doc: reference --keep-file-descriptors for "bundle exec" ;TI"1 doc: further trimming to reduce noise ;TI"0 use leftpad Linux syscall for speed! ;T;0S; ; i;I"Hunicorn 5.1.0.pre1 - rack is optional, again / 2016-01-27 23:08 UTC;T@ o; ;[ I"EThe big change is rack is not required (but still recommended). ;TI"JApplications are expected to depend on rack on their own so they can ;TI"Especify the version of rack they prefer without unicorn pulling ;TI"3in a newer, potentially incompatible version. ;TI" ;TI"Hunicorn will always attempt to work with multiple versions of rack ;TI"as practical. ;TI" ;TI"DThe HTTP parser also switched to using the TypedData C-API for ;TI"Bextra type safety and memory usage accounting support in the ;TI"'objspace' extension. ;TI" ;TI"FThanks to Adam Duke to bringing the rack change to our attention ;TI"6and Aaron Patterson for helping with the matter. ;TI" ;TI"DThere might be more documentation-related changes before 5.1.0 ;TI"Ffinal. I am considering dropping pandoc from manpage generation ;TI"Gand relying on pod2man (from Perl) because it has a wider install ;TI"base. ;TI" ;TI"5 changes since v5.0.1: ;TI" ;TI", http: TypedData C-API conversion ;TI") various documentation updates ;TI"9 doc: bump olddoc to ~> 1.2 for extra NNTP URL ;TI"9 rack is optional at runtime, required for dev ;TI": doc update for ClientShutdown exceptions class ;T;0S; ; i;I"Kunicorn 5.0.1 - continuing to violate Rack SPEC / 2015-11-17 22:44 UTC;T@ o; ;[I"EOnce again, we allow nil values in response headers. We've had ;TI"@this bug since March 2009, and thus cannot expect existing ;TI"?applications and middlewares running unicorn to fix this. ;TI" ;TI"CUnfortunately, supporting this bug contributes to application ;TI"=server lock-in, but at least we'll document it as such. ;TI" ;TI"EThanks to Owen Ou <o@heroku.com> for reporting this regression: ;TI" ;TI"n http://bogomips.org/unicorn-public/CAO47=rJa=zRcLn_Xm4v2cHPr6c0UswaFC_omYFEH+baSxHOWKQ@mail.gmail.com/ ;TI" ;TI"GAdditionally, systemd examples are now in the examples/ directory ;TI"Ebased on a post by Christos Trochalakis <yatiohi@ideopolis.gr>: ;TI" ;TI"T http://bogomips.org/unicorn-public/20150708130821.GA1361@luke.ws.skroutz.gr/ ;T;0S; ; i;I"Lunicorn 5.0.0 - most boring major release. EVER. / 2015-11-01 08:48 UTC;T@ o; ;[JI"IAn evolutionary dead-end since its announcement[1] nearly six years ;TI"Hago, this old-fashioned preforker has had enough bugs and missteps ;TI")that it's managed to hit version 5! ;TI" ;TI"II wish I could say unicorn 5 is leaps and bounds better than 4, but ;TI"Hit is not. This major version change allows us to drop some cruft ;TI"Hand unused features which accumulated over the years, resulting in ;TI"+several kilobytes of memory saved[2]! ;TI" ;TI"Compatibility: ;TI" ;TI"C* The horrible, proprietary (:P) "Status:" response header is ;TI"E finally gone, saving at least 16 precious bytes in every HTTP ;TI"J response. This should make it easier to write custom HTTP clients ;TI"H which are compatible across all HTTP servers. It will hopefully ;TI"D make migrating between different Rack servers easier for new ;TI" projects. ;TI" ;TI"G* Ruby 1.8 support removed. Ruby 1.9.3 is currently the earliest ;TI"F supported version. However, expect minor, likely-unnoticeable ;TI"F performance regressions if you use Ruby 2.1 or earlier. Going ;TI"I forward, unicorn will favor the latest version (currently 2.2) of ;TI"A the mainline Ruby implementation, potentially sacrificing ;TI"$ performance on older Rubies. ;TI" ;TI"=* Some internal, undocumented features and APIs used by ;TI"I derivative servers are gone; removing bloat and slightly lowering ;TI"H memory use. We have never and will never endorse the use of any ;TI"@ applications or middleware with a dependency on unicorn, ;TI"8 applications should be written for Rack instead. ;TI"B Note: Rainbows! 5.0 will be released next week or so to be ;TI"# compatible with unicorn 5.x ;TI" ;TI"New features: ;TI" ;TI"C* sd_listen_fds(3) emulation added for systemd compatibility. ;TI"E You may now stop using PID files and other process monitoring ;TI"$ software when using systemd. ;TI" ;TI"J* Newly-set TCP socket options are now applied to inherited sockets. ;TI" ;TI"F* Dynamic changes in the application to Rack::Utils::HTTP_STATUS ;TI"H hash is now supported; allowing users to set custom status lines ;TI"H in Rack to be reflected in unicorn. This feature causes a minor ;TI"F performance regression, but is made up for Ruby 2.2 users with ;TI" other optimizations. ;TI" ;TI"?* The monotonic clock is used under Ruby 2.1+, making the ;TI"7 timeout feature immune to system clock changes. ;TI" ;TI"BAs unicorn may be used anonymously without registration, the ;TI"Cproject is committed to supporting anonymous and pseudonymous ;TI"Ghelp requests, contributions and feedback via plain-text mail to: ;TI" ;TI"% unicorn-public@bogomips.org ;TI" ;TI"FThe mail submission port (587) is open to those behind firewalls ;TI"8and allows access via Tor and anonymous remailers. ;TI"FArchives are accessible via: http://bogomips.org/unicorn-public/ ;TI"Eand mirrored to various other places, so you do not need to use ;TI"#a valid address when posting. ;TI" ;TI"IFinally, rest assured the core design of unicorn will never change. ;TI"IIt will never use new-fangled things like threads, kqueue or epoll; ;TI"Cbut will always remain a preforking server serving one client ;TI"per-process. ;TI" ;TI"C[1] http://mid.gmane.org/20090211230457.GB22926@dcvr.yhbt.net ;TI"=[2] this would've been like, totally gnarly in the 80s! ;T;0S; ; i;I"Dunicorn 5.0.0.pre2 - another prerelease! / 2015-07-06 21:37 UTC;T@ o; ;[I"FThere is a minor TCP socket options are now applied to inherited ;TI"Esockets, and we have native support for inheriting sockets from ;TI";systemd (by emulating the sd_listen_fds(3) function). ;TI" ;TI"DDynamic changes in the application to Rack::Utils::HTTP_STATUS ;TI"Ccodes is now supported, so you can use your own custom status ;TI"lines. ;TI" ;TI"8Ruby 2.2 and later is now favored for performance. ;TI"BOptimizations by using constants which made sense in earlier ;TI">versions of Ruby are gone: so users of old Ruby versions ;TI">will see performance regressions. Ruby 2.2 users should ;TI"?see the same or better performance, and we have less code ;TI"as a result. ;TI" ;TI"%* doc: update some invalid URLs ;TI"5* apply TCP socket options on inherited sockets ;TI"9* reflect changes in Rack::Utils::HTTP_STATUS_CODES ;TI"2* reduce constants and optimize for Ruby 2.2 ;TI"<* http_response: reduce size of multi-line header path ;TI"1* emulate sd_listen_fds for systemd support ;TI"F* test/unit/test_response.rb: compatibility with older test-unit ;TI" ;TI";This also includes all changes in unicorn 5.0.0.pre1: ;TI" ;TI"Thttp://bogomips.org/unicorn-public/m/20150615225652.GA16164@dcvr.yhbt.net.html ;T;0S; ; i;I"Funicorn 5.0.0.pre1 - incompatible changes! / 2015-06-15 22:49 UTC;T@ o; ;[]I"IThis release finally drops Ruby 1.8 support and requires Ruby 1.9.3 ;TI"For later. The horrible "Status:" header in our HTTP response is ;TI"Jfinally gone, saving at least 16 precious bytes in every single HTTP ;TI"response. ;TI" ;TI"GUnder Ruby 2.1 and later, the monotonic clock is used for timeout ;TI"#handling for better accuracy. ;TI" ;TI"ISeveral experimental, unused and undocumented features are removed. ;TI" ;TI"GThere's also tiny, minor performance and memory improvements from ;TI"Fdropping 1.8 compatibility, but probably nothing noticeable on a ;TI"&typical real-life (bloated) app. ;TI" ;TI"GThe biggest performance improvement we made was to our website by ;TI"Gswitching to olddoc. Depending on connection speed, latency, and ;TI"Hrenderer performance, it typically loads two to four times faster. ;TI" ;TI"DFinally, for the billionth time: unicorn must never be exposed ;TI"Cto slow clients, as it will never ever use new-fangled things ;TI"Flike non-blocking socket I/O, threads, epoll or kqueue. unicorn ;TI"Emust be used with a fully-buffering reverse proxy such as nginx ;TI"for slow clients. ;TI" ;TI"5* ISSUES: update with mailing list subscription ;TI"0* GIT-VERSION-GEN: start 5.0.0 development ;TI"$* http: remove xftrust options ;TI".* FAQ: add entry for Rails autoflush_log ;TI"&* dev: remove isolate dependency ;TI"0* unicorn.gemspec: depend on test-unit 3.0 ;TI",* http_response: remove Status: header ;TI"0* remove RubyForge and Freecode references ;TI"/* remove mongrel.rubyforge.org references ;TI"1* http: remove the keepalive requests limit ;TI"9* http: reduce parser from 72 to 56 bytes on 64-bit ;TI":* examples: add run_once to before_fork hook example ;TI"'* worker: remove old tmp accessor ;TI"8* http_server: save 450+ bytes of memory on x86-64 ;TI":* t/t0002-parser-error.sh: relax test for rack 1.6.0 ;TI"* remove SSL support ;TI"%* tmpio: drop the "size" method ;TI"'* switch docs + website to olddoc ;TI":* README: clarify/reduce references to unicorn_rails ;TI"'* gemspec: fixup olddoc migration ;TI"/* use the monotonic clock under Ruby 2.1+ ;TI"2* http: -Wshorten-64-to-32 warnings on clang ;TI"2* remove old inetd+git examples and exec_cgi ;TI";* http: standalone require + reduction in binary size ;TI"=* GNUmakefile: fix clean gem build + reduce build cruft ;TI":* socket_helper: reduce constant lookups and caching ;TI"?* remove 1.8, <= 1.9.1 fallback for missing IO#autoclose= ;TI"2* favor IO#close_on_exec= over fcntl in 1.9+ ;TI":* use require_relative to reduce syscalls at startup ;TI"4* doc: update support status for Ruby versions ;TI"8* fix uninstalled testing and reduce require paths ;TI"9* test_socket_helper: do not depend on SO_REUSEPORT ;TI"4* favor "a.b(&:c)" form over "a.b { |x| x.c }" ;TI"6* ISSUES: add section for bugs in other projects ;TI"/* http_server: favor ivars over constants ;TI"2* explain 11 byte magic number for self-pipe ;TI"/* const: drop constants used by Rainbows! ;TI"/* reduce and localize constant string use ;TI"<* Links: mark Rainbows! as historical, reference yahns ;TI"0* save about 200 bytes of memory on x86-64 ;TI",* http: remove deprecated reset method ;TI"1* http: remove experimental dechunk! method ;TI"&* socket_helper: update comments ;TI"+* doc: document UNICORN_FD in manpage ;TI":* doc: document Etc.nprocessors for worker_processes ;TI"6* favor more string literals for cold call sites ;TI">* tee_input: support for Rack::TempfileReaper middleware ;TI"A* support TempfileReaper in deployment and development envs ;TI":* favor kgio_wait_readable for single FD over select ;TI"* Merge tag 'v4.9.0' ;TI"4* http_request: support rack.hijack by default ;TI"7* avoid extra allocation for hijack proc creation ;TI"9* FAQ: add note about ECONNRESET errors from bodies ;TI".* process SIGWINCH unless stdin is a TTY ;TI";* ISSUES: discourage HTML mail strongly, welcome nyms ;TI",* http: use rb_hash_clear in Ruby 2.0+ ;TI":* http_response: avoid special-casing for Rack < 1.5 ;TI"+* www: install NEWS.atom.xml properly ;TI">* http_server: remove a few more accessors and constants ;TI"2* http_response: simplify regular expression ;TI"3* move the socket into Rack env for hijacking ;TI"5* http: move response_start_sent into the C ext ;TI"6* FAQ: reorder bit on Rack 1.1.x and Rails 2.3.x ;TI"+* ensure body is closed during hijack ;T;0S; ; i;I"Nunicorn 4.9.0 - TempfileReaper support in Rack 1.6 / 2015-04-24 03:09 UTC;T@ o; ;[)I"EThis release supports the Rack::TempfileReaper middleware found ;TI"Ein rack 1.6 for cleaning up disk space used by temporary files. ;TI"FWe also use Rack::TempfileReaper for cleaning up large temporary ;TI"Bfiles buffered with TeeInput. Users on rack 1.5 and earlier ;TI"will see no changes. ;TI" ;TI"FThere's also a bunch of documentation/build system improvements. ;TI" ;TI"@This is likely to be the last Ruby 1.8-compatible release, ;TI"Funicorn 5.x will require 1.9.3 or later as well as dropping lots ;TI"Bof cruft (the stupid "Status:" header in responses being the ;TI"most notable). ;TI" ;TI"(21 changes backported from master: ;TI" ;TI"9 ISSUES: update with mailing list subscription ;TI"2 FAQ: add entry for Rails autoflush_log ;TI"* dev: remove isolate dependency ;TI"4 unicorn.gemspec: depend on test-unit 3.0 ;TI"4 remove RubyForge and Freecode references ;TI"3 remove mongrel.rubyforge.org references ;TI"> examples: add run_once to before_fork hook example ;TI"> t/t0002-parser-error.sh: relax test for rack 1.6.0 ;TI"+ switch docs + website to olddoc ;TI"> README: clarify/reduce references to unicorn_rails ;TI"+ gemspec: fixup olddoc migration ;TI"A GNUmakefile: fix clean gem build + reduce build cruft ;TI"8 doc: update support status for Ruby versions ;TI"< fix uninstalled testing and reduce require paths ;TI"= test_socket_helper: do not depend on SO_REUSEPORT ;TI": ISSUES: add section for bugs in other projects ;TI"6 explain 11 byte magic number for self-pipe ;TI"@ Links: mark Rainbows! as historical, reference yahns ;TI"/ doc: document UNICORN_FD in manpage ;TI"B tee_input: support for Rack::TempfileReaper middleware ;TI"E support TempfileReaper in deployment and development envs ;T;0S; ; i;I"=unicorn 4.8.3 - the end of an era / 2014-05-07 07:50 UTC;T@ o; ;[ I"HThis release updates documentation to reflect the migration of the ;TI"Hmailing list to a new public-inbox[1] instance. This is necessary ;TI">due to the impending RubyForge shutdown on May 15, 2014. ;TI" ;TI">The public-inbox address is: unicorn-public@bogomips.org ;TI"5 (no subscription required, plain text only) ;TI">ssoma[2] git archives: git://bogomips.org/unicorn-public ;TI"Dbrowser-friendly archives: http://bogomips.org/unicorn-public/ ;TI" ;TI"EUsing, getting help for, and contributing to unicorn will never ;TI"#require any of the following: ;TI" ;TI"+1) non-Free software (including SaaS) ;TI",2) registration or sign-in of any kind ;TI"83) a real identity (we accept mail from Mixmaster) ;TI"#4) a graphical user interface ;TI" ;TI"FNowadays, plain-text email is the only ubiquitous platform which ;TI"3meets all our requirements for communication. ;TI" ;TI"JThere is also one small bugfix to handle premature grandparent death ;TI"7upon initial startup. Most users are unaffected. ;TI" ;TI"I[1] policy: http://public-inbox.org/ - git://80x24.org/public-inbox ;TI"7 an "archives first" approach to mailing lists ;TI"K[2] mechanism: http://ssoma.public-inbox.org/ - git://80x24.org/ssoma ;TI"0 some sort of mail archiver (using git) ;T;0S; ; i;I"Vunicorn 4.8.2 - avoid race condition during worker startup / 2014-02-05 18:24 UTC;T@ o; ;[I"GWe close SELF_PIPE in the worker immediately, but signal handlers ;TI"Ido not get setup immediately. So prevent workers from erroring out ;TI"due to invalid SELF_PIPE. ;T;0S; ; i;I")unicorn 4.8.1 / 2014-01-29 08:48 UTC;T@ o; ;[I"8fix races/error handling in worker SIGQUIT handler ;TI" ;TI")This protects us from two problems: ;TI" ;TI"F1) we (or our app) somehow called IO#close on one of the sockets ;TI"A we listen on without removing it from the readers array. ;TI"D We'll ignore IOErrors from IO#close and assume we wanted to ;TI" close it. ;TI" ;TI"J2) our SIGQUIT handler is interrupted by itself. This can happen as ;TI"I a fake signal from the master could be handled and a real signal ;TI"M from an outside user is sent to us (e.g. from unicorn-worker-killer) ;TI"2 or if a user uses the killall(1) command. ;T;0S; ; i;I"Punicorn 4.8.0 - big internal changes, but compatible / 2014-01-11 07:34 UTC;T@ o; ;[I"NThis release contains fairly major internal workings of master-to-worker ;TI"Knotifications. The master process no longer sends signals to workers ;TI"Lfor most tasks. This works around some compatibility issues with some ;TI"Lversions of the "pg" gem (and potentially any other code which may not ;TI"Ghandle EINTR properly). One extra benefit is it also helps stray ;TI"Jworkers notice a rare, unexpected master death more easily. Workers ;TI"Mcontinue to (and will always) accept existing signals for compatibility ;TI"2with tools/scripts which may signal workers. ;TI" ;TI"HPID file are always written early (even on upgrade) again to avoid ;TI"Nbreaking strange monitoring setups which use PID files. Keep in mind we ;TI"Ghave always discouraged monitoring based on PID files as they are ;TI"fragile. ;TI" ;TI"GWe now avoid bubbling IOError to the Rack app on premature client ;TI"Gdisconnects when streaming the input body. This is usually not a ;TI"Gproblem with nginx, but may be on some LAN setups without nginx). ;TI" ;TI"AThanks to Sam Saffron, Jimmy Soho, Rodrigo Rosenfeld Rosas, ;TI"JMichael Fischer, and Andrew Hobson for their help with this release. ;TI" ;TI"JNote: the unicorn mailing list will be moved/changed soon due to the ;TI"JRubyForge shutdown. unicorn will always rely only on Free Software. ;TI"JThere will never be any sign-up requirements nor terms-of-service to ;TI"*agree to when communicating with us. ;T;0S; ; i;I"-unicorn 4.8.0pre1 / 2013-12-09 09:51 UTC;T@ o; ;[I"Eric Wong (6): ;TI"E tests: fix SO_REUSEPORT tests for old Linux and non-Linux ;TI"= stream_input: avoid IO#close on client disconnect ;TI"3 t0300: kill off stray processes in test ;TI"9 always write PID file early for compatibility ;TI"; doc: clarify SIGNALS and reference init example ;TI"; rework master-to-worker signaling to use a pipe ;T;0S; ; i;I"Hunicorn 4.7.0 - minor updates, license tweak / 2013-11-04 06:59 UTC;T@ o; ;[/I":* support SO_REUSEPORT on new listeners (:reuseport) ;TI" ;TI"FThis allows users to start an independent instance of unicorn on ;TI"Ea the same port as a running unicorn (as long as both instances ;TI"use :reuseport). ;TI" ;TI"+ref: https://lwn.net/Articles/542629/ ;TI" ;TI";* unicorn is now GPLv2-or-later and Ruby 1.8-licensed ;TI"@(instead of GPLv2-only, GPLv3-only, and Ruby 1.8-licensed) ;TI" ;TI"JThis changes nothing at the moment. Once the FSF publishes the next ;TI"Lversion of the GPL, users may choose the newer GPL version without the ;TI"Lunicorn BDFL approving it. Two years ago when I got permission to add ;TI"GGPLv3 to the license options, I also got permission from all past ;TI"Econtributors to approve future versions of the GPL. So now I'm ;TI"Dapproving all future versions of the GPL for use with unicorn. ;TI" ;TI"Reasoning below: ;TI" ;TI"HIn case the GPLv4 arrives and I am not alive to approve/review it, ;TI"Ithe lesser of evils is have give blanket approval of all future GPL ;TI"Hversions (as published by the FSF). The worse evil is to be stuck ;TI"Iwith a license which cannot guarantee the Free-ness of this project ;TI"in the future. ;TI" ;TI"FThis unfortunately means the FSF can theoretically come out with ;TI"Elicense terms I do not agree with, but the GPLv2 and GPLv3 will ;TI"'always be an option to all users. ;TI" ;TI"%Note: we currently prefer GPLv3 ;TI" ;TI"6Two improvements thanks to Ernest W. Durbin III: ;TI" ;TI"@* USR2 redirects fixed for Ruby 1.8.6 (broken since 4.1.0) ;TI"L* unicorn(1) and unicorn_rails(1) enforces valid integer for -p/--port ;TI" ;TI"-A few more odd, minor tweaks and fixes: ;TI" ;TI":* attempt to rename PID file when possible (on USR2) ;TI"A* workaround reopen atomicity issues for stdio vs non-stdio ;TI"<* improve handling of client-triggerable socket errors ;T;0S; ; i;I"Nunicorn 4.6.3 - fix --no-default-middleware option / 2013-06-21 08:01 UTC;T@ o; ;[I"AThanks to Micah Chalmer for this fix. There are also minor ;TI"2documentation updates and internal cleanups. ;T;0S; ; i;I"Iunicorn 4.6.2 - HTTP parser fix for Rainbows! / 2013-02-26 02:59 UTC;T@ o; ;[I"AThis release fixes a bug in Unicorn::HttpParser#filter_body ;TI"?which affected some configurations of Rainbows! There is ;TI"-also a minor size reduction in the DSO. ;T;0S; ; i;I":unicorn 4.6.1 - minor cleanups / 2013-02-21 08:38 UTC;T@ o; ;[I"@Unicorn::Const::UNICORN_VERSION is now auto-generated from ;TI"=GIT-VERSION-GEN and always correct. Minor cleanups for ;TI"hijacking. ;T;0S; ; i;I"=unicorn 4.6.0 - hijacking support / 2013-02-06 11:23 UTC;T@ o; ;[ I"AThis pre-release adds hijacking support for Rack 1.5 users. ;TI"BSee Rack documentation for more information about hijacking. ;TI";There is also a new --no-default-middleware/-N option ;TI"Afor the `unicorn' command to ignore RACK_ENV within unicorn ;TI"thanks to Lin Jen-Shin. ;TI" ;TI"?There are only documentation and test-portability updates ;TI"'since 4.6.0pre1, no code changes. ;T;0S; ; i;I"Aunicorn 4.6.0pre1 - hijacking support / 2013-01-29 21:05 UTC;T@ o; ;[ I"AThis pre-release adds hijacking support for Rack 1.5 users. ;TI"BSee Rack documentation for more information about hijacking. ;TI";There is also a new --no-default-middleware/-N option ;TI"Bfor the `unicorn' command to ignore RACK_ENV within unicorn. ;T;0S; ; i;I"Junicorn 4.5.0 - check_client_connection option / 2012-12-07 22:59 UTC;T@ o; ;[I"EThe new check_client_connection option allows unicorn to detect ;TI"Bmost disconnected local clients before potentially expensive ;TI"$application processing begins. ;TI" ;TI"DThis feature is useful for applications experiencing spikes of ;TI"Atraffic leading to undesirable queue times, as clients will ;TI"Bdisconnect (and perhaps even retry, compounding the problem) ;TI";before unicorn can even start processing the request. ;TI" ;TI"ATo enable this feature, add the following line to a unicorn ;TI"config file: ;TI" ;TI"( check_client_connection true ;TI" ;TI"@This feature only works when nginx (or any other HTTP/1.0+ ;TI"0client) is on the same machine as unicorn. ;TI" ;TI"BA huge thanks to Tom Burns for implementing and testing this ;TI"Bchange in production with real traffic (including mitigating ;TI" an unexpected DoS attack). ;TI" ;TI"bref: http://mid.gmane.org/CAK4qKG3rkfVYLyeqEqQyuNEh_nZ8yw0X_cwTxJfJ+TOU+y8F+w@mail.gmail.com ;TI" ;TI"EThis release fixes broken Rainbows! compatibility in 4.5.0pre1. ;T;0S; ; i;I"Nunicorn 4.5.0pre1 - check_client_connection option / 2012-11-29 23:48 UTC;T@ o; ;[I"EThe new check_client_connection option allows unicorn to detect ;TI"<most disconnected clients before potentially expensive ;TI"$application processing begins. ;TI" ;TI"DThis feature is useful for applications experiencing spikes of ;TI"Atraffic leading to undesirable queue times, as clients will ;TI"Bdisconnect (and perhaps even retry, compounding the problem) ;TI";before unicorn can even start processing the request. ;TI" ;TI"ATo enable this feature, add the following line to a unicorn ;TI"config file: ;TI" ;TI"$ check_client_connection true ;TI" ;TI"BA huge thanks to Tom Burns for implementing and testing this ;TI"Bchange in production with real traffic (including mitigating ;TI" an unexpected DoS attack). ;T;0S; ; i;I"9unicorn 4.4.0 - minor updates / 2012-10-11 09:11 UTC;T@ o; ;[I"@Non-regular files are no longer reopened on SIGUSR1. This ;TI"8allows users to specify FIFOs as log destinations. ;TI" ;TI"ATCP_NOPUSH/TCP_CORK is no longer set/unset by default. Use ;TI"D:tcp_nopush explicitly with the "listen" directive if you wish ;TI"$to enable TCP_NOPUSH/TCP_CORK. ;TI" ;TI"FListen sockets are now bound _after_ loading the application for ;TI"Apreload_app(true) users. This prevents load balancers from ;TI"Dsending traffic to an application server while the application ;TI"is still loading. ;TI" ;TI"/There are also minor test suite cleanups. ;T;0S; ; i;I"<unicorn 4.3.1 - shutdown() fixes / 2012-04-29 07:04 UTC;T@ o; ;[I">* Call shutdown(2) if a client EOFs on us during upload. ;TI"C We can avoid holding a socket open if the Rack app forked a ;TI" process during uploads. ;TI" ;TI"C* ignore potential Errno::ENOTCONN errors (from shutdown(2)). ;TI"E Even on LANs, connections can occasionally be accept()-ed but ;TI" be unusable afterwards. ;TI" ;TI"5Thanks to Joel Nimety <jnimety@continuity.net>, ;TI"JMatt Smith <matt@nearapogee.com> and George <lists@southernohio.net> ;TI"Aon the mongrel-unicorn@rubyforge.org mailing list for their ;TI",feedback and testing for this release. ;T;0S; ; i;I"Cunicorn 4.3.0 - minor fixes and updates / 2012-04-17 21:51 UTC;T@ o; ;[I"C* PATH_INFO (aka REQUEST_PATH) increased to 4096 (from 1024). ;TI"D This allows requests with longer path components and matches ;TI"A the system PATH_MAX value common to GNU/Linux systems for ;TI"6 serving filesystem components with long names. ;TI" ;TI"F* Apps that fork() (but do not exec()) internally for background ;TI"? tasks now indicate the end-of-request immediately after ;TI"" writing the Rack response. ;TI" ;TI"DThanks to Hongli Lai, Lawrence Pit, Patrick Wenger and Nuo Yan ;TI"3for their valuable feedback for this release. ;T;0S; ; i;I"Eunicorn 4.2.1 - minor fix and doc updates / 2012-03-26 21:39 UTC;T@ o; ;[ I"F* Stale pid files are detected if a pid is recycled by processes ;TI"; belonging to another user, thanks to Graham Bleach. ;TI"@* nginx example config updates thanks to to Eike Herzbach. ;TI"E* KNOWN_ISSUES now documents issues with apps/libs that install ;TI"$ conflicting signal handlers. ;T;0S; ; i;I")unicorn 4.2.0 / 2012-01-28 09:18 UTC;T@ o; ;[I"LThe GPLv3 is now an option to the Unicorn license. The existing GPLv2 ;TI"Fand Ruby-only terms will always remain options, but the GPLv3 is ;TI"preferred. ;TI" ;TI"JDaemonization is correctly detected on all terminals for development ;TI"use (Brian P O'Rourke). ;TI" ;TI"CUnicorn::OobGC respects applications that disable GC entirely ;TI"2during application dispatch (Yuichi Tateno). ;TI" ;TI"CMany test fixes for OpenBSD, which may help other *BSDs, too. ;TI"(Jeremy Evans). ;TI" ;TI"@There is now _optional_ SSL support (via the "kgio-monkey" ;TI"?RubyGem). On fast, secure LANs, SSL is only intended for ;TI"Fdetecting data corruption that weak TCP checksums cannot detect. ;TI"?Our SSL support is remains unaudited by security experts. ;TI" ;TI":There are also some minor bugfixes and documentation ;TI"improvements. ;TI" ;TI"NRuby 2.0.0dev also has a copy-on-write friendly GC which can save memory ;TI"Lwhen combined with "preload_app true", so if you're in the mood, start ;TI"+testing Unicorn with the latest Ruby! ;T;0S; ; i;I"Lunicorn 4.1.1 - fix last-resort timeout accuracy / 2011-08-25 21:30 UTC;T@ o; ;[I"@The last-resort timeout mechanism was inaccurate and often ;TI"Edelayed in activation since the 2.0.0 release. It is now fixed ;TI"Eand remains power-efficient in idle situations, especially with ;TI")the wakeup reduction in MRI 1.9.3+. ;TI" ;TI":There is also a new document on application timeouts ;TI"=intended to discourage the reliance on this last-resort ;TI".mechanism. It is visible on the web at: ;TI" ;TI"= http://unicorn.bogomips.org/Application_Timeouts.html ;T;0S; ; i;I"Cunicorn 4.1.0 - small updates and fixes / 2011-08-20 00:33 UTC;T@ o; ;[I"D* Rack::Chunked and Rack::ContentLength middlewares are loaded ;TI"G by default for RACK_ENV=(development|deployment) users to match ;TI"H Rack::Server behavior. As before, use RACK_ENV=none if you want ;TI"B fine-grained control of your middleware. This should also ;TI", help users of Rainbows! and Zbatery. ;TI" ;TI"?* CTL characters are now rejected from HTTP header values ;TI" ;TI"D* Exception messages are now filtered for [:cntrl:] characters ;TI"@ since application/middleware authors may forget to do so ;TI" ;TI"G* Workers will now terminate properly if a SIGQUIT/SIGTERM/SIGINT ;TI"? is received while during worker process initialization. ;TI" ;TI"D* close-on-exec is explicitly disabled to future-proof against ;TI"* Ruby 2.0 changes [ruby-core:38140] ;T;0S; ; i;I"?unicorn 4.0.1 - regression bugfixes / 2011-06-29 18:59 UTC;T@ o; ;[I"@This release fixes things for users of per-worker "listen" ;TI"Ddirectives in the after_fork hook. Thanks to ghazel@gmail.com ;TI"for reporting the bug. ;TI" ;TI">The "timeout" configurator directive is now truncated to ;TI"90x7ffffffe seconds to prevent overflow when calling ;TI"IO.select. ;T;0S; ; i;I"Bunicorn 4.0.0 - for mythical hardware! / 2011-06-27 09:05 UTC;T@ o; ;["I"AA single Unicorn instance may manage more than 1024 workers ;TI"Awithout needing privileges to modify resource limits. As a ;TI"Fresult of this, the "raindrops"[1] gem/library is now a required ;TI"dependency. ;TI" ;TI"DTCP socket defaults now favor low latency to mimic UNIX domain ;TI"Csocket behavior (tcp_nodelay: true, tcp_nopush: false). This ;TI"Ahurts throughput, users who want to favor throughput should ;TI"Bspecify "tcp_nodelay: false, tcp_nopush: true" in the listen ;TI"directive. ;TI" ;TI">Error logging is more consistent and all lines should be ;TI"<formatted correctly in backtraces. This may break the ;TI"#behavior of some log parsers. ;TI" ;TI"EThe call stack is smaller and thus easier to examine backtraces ;TI"'when debugging Rack applications. ;TI" ;TI"EThere are some internal API changes and cleanups, but none that ;TI"Daffect applications designed for Rack. See "git log v3.7.0.." ;TI"for details. ;TI" ;TI"FFor users who cannot install kgio[2] or raindrops, Unicorn 1.1.x ;TI">remains supported indefinitely. Unicorn 3.x will remain ;TI"Esupported if there is demand. We expect raindrops to introduce ;TI"8fewer portability problems than kgio did, however. ;TI" ;TI"([1] http://raindrops.bogomips.org/ ;TI"#[2] http://bogomips.org/kgio/ ;T;0S; ; i;I"@unicorn 3.7.0 - minor feature update / 2011-06-09 20:51 UTC;T@ o; ;[I"0* miscellaneous documentation improvements ;TI"<* return 414 (instead of 400) for Request-URI Too Long ;TI"E* strip leading and trailing linear whitespace in header values ;TI" ;TI":User-visible improvements meant for Rainbows! users: ;TI" ;TI"5* add :ipv6only "listen" option (same as nginx) ;T;0S; ; i;I"Eunicorn 3.6.2 - fix Unicorn::OobGC module / 2011-04-30 06:40 UTC;T@ o; ;[I"@The optional Unicorn::OobGC module is reimplemented to fix ;TI"=breakage that appeared in v3.3.1. There are also minor ;TI"@documentation updates, but no code changes as of 3.6.1 for ;TI"non-OobGC users. ;TI" ;TI"CThere is also a v1.1.7 release to fix the same OobGC breakage ;TI":that appeared for 1.1.x users in the v1.1.6 release. ;T;0S; ; i;I"Kunicorn 1.1.7 - major fixes to minor components / 2011-04-30 06:33 UTC;T@ o; ;[ I"ENo changes to the core code, so this release only affects users ;TI"9of the Unicorn::OobGC and Unicorn::ExecCGI modules. ;TI"@Unicorn::OobGC was totally broken by the fix in the v1.1.6 ;TI"@release and is now reimplemented. Unicorn::ExecCGI (which ;TI"@hardly anybody uses) now returns proper HTTP status codes. ;T;0S; ; i;I"Gunicorn 3.6.1 - fix OpenSSL PRNG workaround / 2011-04-26 23:06 UTC;T@ o; ;[I"COur attempt in 3.6.0 to workaround a problem with the OpenSSL ;TI"FPRNG actually made the problem worse. This release corrects the ;TI"Cworkaround to properly reseed the OpenSSL PRNG after forking. ;T;0S; ; i;I"Iunicorn 3.6.0 - small fixes, PRNG workarounds / 2011-04-21 06:46 UTC;T@ o; ;["I"IMainly small fixes, improvements, and workarounds for fork() issues ;TI"Jwith pseudo-random number generators shipped with Ruby (Kernel#rand, ;TI"?OpenSSL::Random (used by SecureRandom and also by Rails). ;TI" ;TI"OThe PRNG issues are documented in depth here (and links to Ruby Redmine): ;TI" ;TI": http://bogomips.org/unicorn.git/commit?id=1107ede7 ;TI": http://bogomips.org/unicorn.git/commit?id=b3241621 ;TI" ;TI"LIf you're too lazy to upgrade, you can just do this in your after_fork ;TI"hooks: ;TI" ;TI"% after_fork do |server,worker| ;TI" tmp = srand ;TI"E OpenSSL::Random.seed(tmp.to_s) if defined?(OpenSSL::Random) ;TI" end ;TI" ;TI"@There are also small log reopening (SIGUSR1) improvements: ;TI" ;TI"H* relative paths may also be reopened, there's a small chance this ;TI"G will break with a handful of setups, but unlikely. This should ;TI"J make configuration easier especially since the "working_directory" ;TI"E configurator directive exists. Brought up by Matthew Kocher: ;TI"H http://thread.gmane.org/gmane.comp.lang.ruby.unicorn.general/900 ;TI" ;TI"F* workers will just die (and restart) if log reopening fails for ;TI"K any reason (including user error). This is to workaround the issue ;TI"# reported by Emmanuel Gomez: ;TI"H http://thread.gmane.org/gmane.comp.lang.ruby.unicorn.general/906 ;T;0S; ; i;I"Cunicorn 3.5.0 - very minor improvements / 2011-03-15 12:27 UTC;T@ o; ;[I"BA small set of small changes but it's been more than a month ;TI"?since our last release. There are minor memory usage and ;TI"Cefficiently improvements (for graceful shutdowns). MRI 1.8.7 ;TI"Fusers on *BSD should be sure they're using the latest patchlevel ;TI"A(or upgrade to 1.9.x) because we no longer workaround their ;TI"'broken stdio (that's MRI's job :) ;T;0S; ; i;I"Iunicorn 3.4.0 - for people with very big LANs / 2011-02-04 21:23 UTC;T@ o; ;[I"B* IPv6 support in the HTTP hostname parser and configuration ;TI"D language. Configurator syntax for "listen" addresses should ;TI"C be the same as nginx. Even though we support IPv6, we will ;TI"F never support non-LAN/localhost clients connecting to Unicorn. ;TI" ;TI"=* TCP_NOPUSH/TCP_CORK is enabled by default to optimize ;TI"C for bandwidth usage and avoid unnecessary wakeups in nginx. ;TI" ;TI"C* Updated KNOWN_ISSUES document for bugs in recent Ruby 1.8.7 ;TI"D (RNG needs reset after fork) and nginx+sendfile()+FreeBSD 8. ;TI" ;TI"H* examples/nginx.conf updated for modern stable versions of nginx. ;TI" ;TI">* "Status" in headers no longer ignored in the response, ;TI"> Rack::Lint already enforces this so we don't duplicate ;TI" the work. ;TI" ;TI"** All tests pass under Ruby 1.9.3dev ;TI" ;TI"B* various bugfixes in the (mostly unused) ExecCGI class that ;TI". powers http://bogomips.org/unicorn.git ;T;0S; ; i;I"Funicorn 3.3.1 - one minor, esoteric bugfix / 2011-01-06 23:48 UTC;T@ o; ;[I"EWe now close the client socket after closing the response body. ;TI"DThis does not affect most applications that run under Unicorn, ;TI"%in fact, it may not affect any. ;TI" ;TI"AThere is also a new v1.1.6 release for users who do not use ;TI"kgio. ;T;0S; ; i;I"Funicorn 1.1.6 - one minor, esoteric bugfix / 2011-01-06 23:46 UTC;T@ o; ;[I"EWe now close the client socket after closing the response body. ;TI"DThis does not affect most applications that run under Unicorn, ;TI"%in fact, it may not affect any. ;T;0S; ; i;I"?unicorn 3.3.0 - minor optimizations / 2011-01-05 23:43 UTC;T@ o; ;[ I"NCertain applications that already serve hundreds/thousands of requests a ;TI">second should experience performance improvements due to ;TI"CTime.now.httpdate usage being removed and reimplemented in C. ;TI" ;TI"FThere are also minor internal changes and cleanups for Rainbows! ;T;0S; ; i;I"Municorn 3.2.1 - parser improvements for Rainbows! / 2010-12-26 08:04 UTC;T@ o; ;[I"<There are numerous improvements in the HTTP parser for ;TI"9Rainbows!, none of which affect Unicorn-only users. ;TI" ;TI"BThe kgio dependency is incremented to 2.1: this should avoid ;TI">ENOSYS errors for folks building binaries on newer Linux ;TI"/kernels and then deploying to older ones. ;TI" ;TI"BThere are also minor documentation improvements, the website ;TI"is now JavaScript-free! ;TI" ;TI"F(Ignore the 3.2.0 release, I fat-fingered some packaging things) ;T;0S; ; i;I"Municorn 3.2.0 - parser improvements for Rainbows! / 2010-12-26 07:50 UTC;T@ o; ;[I"<There are numerous improvements in the HTTP parser for ;TI"9Rainbows!, none of which affect Unicorn-only users. ;TI" ;TI"BThe kgio dependency is incremented to 2.1: this should avoid ;TI">ENOSYS errors for folks building binaries on newer Linux ;TI"/kernels and then deploying to older ones. ;TI" ;TI"BThere are also minor documentation improvements, the website ;TI"is now JavaScript-free! ;T;0S; ; i;I"Junicorn 3.1.0 - client_buffer_body_size tuning / 2010-12-09 22:28 UTC;T@ o; ;[ I"FThis release enables tuning the client_buffer_body_size to raise ;TI"Bor lower the threshold for buffering request bodies to disk. ;TI"AThis only applies to users who have not disabled rewindable ;TI"@input. There is also a TeeInput bugfix for uncommon usage ;TI"Cpatterns and Configurator examples in the FAQ should be fixed ;T;0S; ; i;I"Dunicorn 3.0.1 - one bugfix for Rainbows! / 2010-12-03 00:34 UTC;T@ o; ;[I"C...and only Rainbows! This release fixes HTTP pipelining for ;TI"=requests with bodies for users of synchronous Rainbows! ;TI"concurrency models. ;TI" ;TI"ESince Unicorn itself does not support keepalive nor pipelining, ;TI"*Unicorn-only users need not upgrade. ;T;0S; ; i;I"Eunicorn 3.0.0 - disable rewindable input! / 2010-11-20 02:41 UTC;T@ o; ;[I"5Rewindable "rack.input" may be disabled via the ;TI"C"rewindable_input false" directive in the configuration file. ;TI"EThis will violate Rack::Lint for Rack 1.x applications, but can ;TI"?reduce I/O for applications that do not need a rewindable ;TI"input. ;TI" ;TI"FThis release updates us to the Kgio 2.x series which should play ;TI"Cmore nicely with other libraries and applications. There are ;TI"Dalso internal cleanups and improvements for future versions of ;TI"Rainbows! ;TI" ;TI"6The Unicorn 3.x series supercedes the 2.x series ;TI">while the 1.x series will remain supported indefinitely. ;T;0S; ; i;I"Ounicorn 3.0.0pre2 - less bad than 2.x or 3.0.0pre1! / 2010-11-19 00:07 UTC;T@ o; ;[I"FThis release updates us to the Kgio 2.x series which should play ;TI"Cmore nicely with other applications. There are also bugfixes ;TI"Ffrom the 2.0.1 release and a small bugfix to the new StreamInput ;TI"class. ;TI" ;TI":The Unicorn 3.x series will supercede the 2.x series ;TI">while the 1.x series will remain supported indefinitely. ;T;0S; ; i;I"Hunicorn 2.0.1 - fix errors in error handling / 2010-11-17 23:48 UTC;T@ o; ;[ I":This release fixes errors in our own error handling, ;TI";causing certain errors to not be logged nor responded ;TI"to correctly. ;TI" ;TI"Eric Wong (3): ;TI"/ t0012: fix race condition in reload ;TI"@ http_server: fix HttpParserError constant resolution ;TI"7 tests: add parser error test from Rainbows! ;T;0S; ; i;I"-unicorn 3.0.0pre1 / 2010-11-17 00:04 UTC;T@ o; ;[I"5Rewindable "rack.input" may be disabled via the ;TI"C"rewindable_input false" directive in the configuration file. ;TI"AThis will violate Rack::Lint for Rack 1.x applications, but ;TI":can reduce I/O for applications that do not need it. ;TI" ;TI"BThere are also internal cleanups and enhancements for future ;TI"versions of Rainbows! ;TI" ;TI"Eric Wong (11): ;TI"/ t0012: fix race condition in reload ;TI"9 enable HTTP keepalive support for all methods ;TI"4 http_parser: add HttpParser#next? method ;TI"A tee_input: switch to simpler API for parsing trailers ;TI"' switch versions to 3.0.0pre ;TI"< add stream_input class and build tee_input on it ;TI"= configurator: enable "rewindable_input" directive ;TI"@ http_parser: ensure keepalive is disabled when reset ;TI"< *_input: make life easier for subclasses/modules ;TI"8 tee_input: restore read position after #size ;TI"@ preread_input: no-op for non-rewindable "rack.input" ;T;0S; ; i;I"Dunicorn 2.0.0 - mostly internal cleanups / 2010-10-27 23:44 UTC;T@ o; ;[I">Despite the version number, this release mostly features ;TI"?internal cleanups for future versions of Rainbows!. User ;TI"Evisible changes include reductions in CPU wakeups on idle sites ;TI"using high timeouts. ;TI" ;TI"DBarring possible portability issues due to the introduction of ;TI"Dthe kgio library, this release should be ready for all to use. ;TI"=However, 1.1.x (and possibly 1.0.x) will continue to be ;TI"Bmaintained. Unicorn 1.1.5 and 1.0.2 have also been released ;TI"6with bugfixes found during development of 2.0.0. ;T;0S; ; i;I")unicorn 1.1.5 / 2010-10-27 23:30 UTC;T@ o; ;[ I">This maintenance release fixes several long-standing but ;TI"Erecently-noticed bugs. SIGHUP reloading now correctly restores ;TI"Fdefault values if they're erased or commented-out in the Unicorn ;TI"Dconfiguration file. Delays/slowdowns in signal handling since ;TI"0.990 are fixed, too. ;T;0S; ; i;I")unicorn 1.0.2 / 2010-10-27 23:12 UTC;T@ o; ;[I"AThis is the latest maintenance release of the 1.0.x series. ;TI"@All users are encouraged to upgrade to 1.1.x stable series ;TI"and report bugs there. ;TI" ;TI"&Shortlog of changes since 1.0.1: ;TI" ;TI"Eric Wong (8): ;TI"( SIGTTIN works after SIGWINCH ;TI") fix delays in signal handling ;TI"> Rakefile: don't post freshmeat on empty changelogs ;TI"- Rakefile: capture prerelease tags ;TI": configurator: use "__send__" instead of "send" ;TI"F configurator: reloading with unset values restores default ;TI"4 gemspec: depend on Isolate 3.0.0 for dev ;TI"7 doc: stop using deprecated rdoc CLI options ;T;0S; ; i;I"@unicorn 2.0.0pre3 - more small fixes / 2010-10-09 00:06 UTC;T@ o; ;[I"EThere is a new Unicorn::PrereadInput middleware to which allows ;TI"Dinput bodies to be drained off the socket and buffered to disk ;TI"5(or memory) before dispatching the application. ;TI" ;TI"<HTTP Pipelining behavior is fixed for Rainbows! There ;TI"9are some small Kgio fixes and updates for Rainbows! ;TI"users as well. ;T;0S; ; i;I"Bunicorn 2.0.0pre2 - releases are cheap / 2010-10-07 07:23 UTC;T@ o; ;[I"-Internal changes/cleanups for Rainbows! ;T;0S; ; i;I"Hunicorn 2.0.0pre1 - a boring "major" release / 2010-10-06 01:17 UTC;T@ o; ;[I"CMostly internal cleanups for future versions of Rainbows! and ;TI"=people trying out Rubinius. There are tiny performance ;TI"Dimprovements for Ruby 1.9.2 users which may only be noticeable ;TI"with Rainbows!. ;TI" ;TI"AThere is a new dependency on the "kgio" library for kinder, ;TI"Cgentler I/O :) Please report any bugs and portability issues ;TI"/with kgio to the Unicorn mailing list[1]. ;TI" ;TI"AUnicorn 1.1.x users are NOT required nor even encouraged to ;TI"<upgrade yet. Unicorn 1.1.x will be maintained for the ;TI"forseeable future. ;TI" ;TI")[1] - mongrel-unicorn@rubyforge.org ;T;0S; ; i;I"Iunicorn 1.1.4 - small bug fix and doc updates / 2010-10-04 20:32 UTC;T@ o; ;[I"DWe no longer unlinking actively listening sockets upon startup ;TI"A(but continue to unlink dead ones). This bug could trigger ;TI">downtime and nginx failures if a user makes an error and ;TI"<attempts to start Unicorn while it is already running. ;TI" ;TI"DThanks to Jordan Ritter for the detailed bug report leading to ;TI"this fix. ;TI" ;TI"Rref: http://mid.gmane.org/8D95A44B-A098-43BE-B532-7D74BD957F31@darkridge.com ;TI" ;TI"CThere are also minor documentation and test updates pulled in ;TI"Dfrom master. This is hopefully the last bugfix release of the ;TI"1.1.x series. ;T;0S; ; i;I";unicorn 1.1.3 - small bug fixes / 2010-08-28 19:27 UTC;T@ o; ;[I"DThis release fixes race conditions during SIGUSR1 log cycling. ;TI"CThis bug mainly affects Rainbows! users serving static files, ;TI"Cbut some Rack apps use threads internally even under Unicorn. ;TI" ;TI"Other small fixes: ;TI"2* SIGTTIN works as documented after SIGWINCH ;TI"K* --help output from `unicorn` and `unicorn_rails` is more consistent ;T;0S; ; i;I"Dunicorn 1.1.2 - fixing upgrade rollbacks / 2010-07-13 20:04 UTC;T@ o; ;[ I"FThis release is fixes a long-standing bug where the original PID ;TI"Afile is not restored when rolling back from a USR2 upgrade. ;TI"DPresumably most upgrades aren't rolled back, so it took over a ;TI"<year to notice this issue. Thanks to Lawrence Pit for ;TI"+discovering and reporting this issue. ;T;0S; ; i;I"9unicorn 1.0.1 - bugfixes only / 2010-07-13 20:01 UTC;T@ o; ;[I"=The first maintenance release of 1.0.x, this release is ;TI"Fprimarily to fix a long-standing bug where the original PID file ;TI"<is not restored when rolling back from a USR2 upgrade. ;TI"DPresumably most upgrades aren't rolled back, so it took over a ;TI"<year to notice this issue. Thanks to Lawrence Pit for ;TI"+discovering and reporting this issue. ;TI" ;TI"EThere is also a pedantic TeeInput bugfix which shouldn't affect ;TI"Breal apps from the 1.1.x series and a test case fix for OSX, ;TI" too. ;T;0S; ; i;I"Gunicorn 1.1.1 - fixing cleanups gone bad :x / 2010-07-11 02:13 UTC;T@ o; ;[I"DUnicorn::TeeInput constant resolution for Unicorn::ClientError ;TI"?got broken simplifying code for RDoc. This affects users ;TI"of Rainbows! and Zbatery. ;T;0S; ; i;I"Funicorn 1.1.0 - small changes and cleanups / 2010-07-08 07:57 UTC;T@ o; ;[I"EThis is a small, incremental feature release with some internal ;TI"Fchanges to better support upcoming versions of the Rainbows! and ;TI"AZbatery web servers. There is no need to upgrade if you're ;TI"<happy with 1.0.0, but also little danger in upgrading. ;TI" ;TI"@There is one pedantic bugfix which shouldn't affect anyone ;TI".and small documentation updates as well. ;T;0S; ; i;I"Gunicorn 1.0.0 - yes, this is a real project / 2010-06-17 09:18 UTC;T@ o; ;[I"1There are only minor changes since 0.991.0. ;TI" ;TI"BFor users clinging onto the past, MRI 1.8.6 support has been ;TI"@restored. Users are strongly encouraged to upgrade to the ;TI"!latest 1.8.7, REE or 1.9.1. ;TI" ;TI"CFor users looking towards the future, the core test suite and ;TI"Dthe Rails 3 (beta) integration tests pass entirely under 1.9.2 ;TI"Fpreview3. As of the latest rubinius.git[1], Rubinius support is ;TI"nearly complete as well. ;TI" ;TI"DUnder Rubinius, signals may corrupt responses as they're being ;TI"Ewritten to the socket, but that should be fixable transparently ;TI"Bto us[4]. Support for the hardly used, hardly documented[2] ;TI"Dembedded command-line switches in rackup config (.ru) files is ;TI"$is also broken under Rubinius. ;TI" ;TI"AThe recently-released Rack 1.2.1 introduced no compatiblity ;TI"Dissues[3] in core Unicorn. We remain compatible with all Rack ;TI"9releases starting with 0.9.1 (and possibly before). ;TI" ;TI".[1] tested with Rubinius upstream commit ;TI".cf4a5a759234faa3f7d8a92d68fa89d8c5048f72 ;TI"6[2] lets avoid the Dueling Banjos effect here :x ;TI"5[3] actually, Rack 1.2.1 is broken under 1.8.6. ;TI"7[4] http://github.com/evanphx/rubinius/issues/373 ;T;0S; ; i;I"Bunicorn 0.991.0 - startup improvements / 2010-06-11 02:18 UTC;T@ o; ;[I"DThe "working_directory" configuration parameter is now handled ;TI"Dbefore config.ru. That means "unicorn" and "unicorn_rails" no ;TI"Clonger barfs when initially started outside of the configured ;TI"@"working_directory" where a config.ru is required. A huge ;TI"Fthanks to Pierre Baillet for catching this ugly UI inconsistency ;TI" before the big 1.0 release ;TI" ;TI"AThanks to Hongli Lai, out-of-the-box Rails 3 (beta) support ;TI"<should be improved for deployments lacking a config.ru ;TI" ;TI"=There are more new integration tests, cleanups and some ;TI"!documentation improvements. ;T;0S; ; i;I"Aunicorn 0.990.0 - inching towards 1.0 / 2010-06-08 09:41 UTC;T@ o; ;[AI"CThanks to Augusto Becciu for finding a bug in the HTTP parser ;TI"Bthat caused a TypeError (and 500) when a rare client set the ;TI"D"Version:" header which conflicts with the HTTP_VERSION header ;TI"3we parse in the first line of the request[1]. ;TI" ;TI"EHorizontal tabs are now allowed as leading whitespace in header ;TI"7values as according to RFC 2616 as pointed out by ;TI"Iñaki Baz Castillo[2]. ;TI" ;TI"=Taking a hint from Rack 1.1, the "logger" configuration ;TI"Eparameter no longer requires a "close" method. This means some ;TI"+more Logger replacements may be used. ;TI" ;TI"AThere's a new, optional, Unicorn (and maybe Passenger)-only ;TI"Fmiddleware, Unicorn::OobGC[2] that runs GC outside of the normal ;TI"Drequest/response cycle to help out memory-hungry applications. ;TI"DThanks to Luke Melia for being brave enough to test and report ;TI"Eback on my big_app_gc.rb monkey patch[3] which lead up to this. ;TI" ;TI"Rails 3 (beta) support: ;TI" ;TI"B Using "unicorn" is still recommended as Rails 3 comes with ;TI"@ a config.ru, but "unicorn_rails" is cleaned up a bit and ;TI"D *should* work as well as "unicorn" out-of-the-box. Feedback ;TI" is much appreciated. ;TI" ;TI"Rubinius updates: ;TI" ;TI". USR2 binary upgrades are broken due to ;TI"8 {TCPServer,UNIXServer}.for_fd[5][6] being broken ;TI" (differently). ;TI" ;TI"= Repeatedly hitting the server with signals in a tight ;TI"/ loop is unusual and not recommended[7]. ;TI" ;TI"F There are some workarounds and general code cleanups for other ;TI"F issues[8], as well but things should generally work unless you ;TI"B need USR2 upgrades. Feedback and reports would be greatly ;TI" appreciated as usual. ;TI" ;TI"MRI support: ;TI" ;TI"G All tests (except old Rails) run and pass under 1.9.2-preview3. ;TI"B 1.8.7 and 1.9.1 work well as usual and will continue to be ;TI" supported indefinitely. ;TI" ;TI"CLets hope this is the last release before 1.0. Please report ;TI"Aany issues on the mailing list[9] or email us privately[a]. ;TI"Don't send HTML mail. ;TI" ;TI"][1] - http://mid.gmane.org/AANLkTimuGgcwNAMcVZdViFWdF-UcW_RGyZAue7phUXps@mail.gmail.com ;TI"^[2] - http://mid.gmane.org/i2xcc1f582e1005070651u294bd83oc73d1e0adf72373a@mail.gmail.com ;TI":[3] - http://unicorn.bogomips.org/Unicorn/OobGC.html ;TI">[4] - http://unicorn.bogomips.org/examples/big_app_gc.rb ;TI"9[5] - http://github.com/evanphx/rubinius/issues/354 ;TI"9[6] - http://github.com/evanphx/rubinius/issues/355 ;TI"9[7] - http://github.com/evanphx/rubinius/issues/356 ;TI"9[8] - http://github.com/evanphx/rubinius/issues/347 ;TI"0[9] - mailto:mongrel-unicorn@rubyforge.org ;TI"'[a] - mailto:unicorn@bogomips.org ;T;0S; ; i;I"<unicorn 0.99.0 - simplicity wins / 2010-05-06 19:32 UTC;T@ o; ;[I"DStarting with this release, we'll always load Rack up front at ;TI"startup. ;TI" ;TI"DPreviously we had complicated ways to avoid loading Rack until ;TI"Bafter the application was loaded to allow the application to ;TI"Eload an alternate version of Rack. However this has proven too ;TI"Eerror-prone to be worth supporting even though Unicorn does not ;TI"Chave strict requirements on currently released Rack versions. ;TI" ;TI"FIf an app requires a different version of Rack than what Unicorn ;TI"Ewould load by default, it is recommended they only install that ;TI"Eversion of Rack (and no others) since Unicorn does not have any ;TI">strict requirements on currently released Rack versions. ;TI" ;TI"ERails 2.3.x users should be aware of this as those versions are ;TI"%not compatible with Rack 1.1.0. ;TI" ;TI"CIf it is not possible to only have one Rack version installed ;TI"D"globally", then they should either use Isolate or Bundler and ;TI"Einstall a private version of Unicorn along with their preferred ;TI"Eversion of Rack. Users who install in this way are recommended ;TI"Dto execute the isolated/bundled version of Unicorn, instead of ;TI"&what would normally be in $PATH. ;TI" ;TI"@Feedback/tips to mailto:mongrel-unicorn@rubyforge.org from ;TI"=Isolate and Bundler users would be greatly appreciated. ;T;0S; ; i;I"*unicorn 0.98.0 / 2010-05-05 00:53 UTC;T@ o; ;[I"DDeployments that suspend or hibernate servers should no longer ;TI"<have workers killed off (and restarted) upon resuming. ;TI" ;TI"DFor Linux users of {raindrops}[http://raindrops.bogomips.org/] ;TI"<(v0.2.0+) configuration is easier as raindrops can now ;TI"=automatically detect the active listeners on the server ;TI":via the new Unicorn.listener_names singleton method. ;TI" ;TI"FFor the pedantic, chunked request bodies without trailers are no ;TI"Clonger allowed to omit the final CRLF. This shouldn't affect ;TI"Eany real and RFC-compliant clients out there. Chunked requests ;TI"Dwith trailers have always worked and continue to work the same ;TI" way. ;TI" ;TI"CThe rest are mostly small internal cleanups and documentation ;TI"3fixes. See the commit logs for full details. ;T;0S; ; i;I"Runicorn 0.97.1 - fix HTTP parser for Rainbows!/Zbatery / 2010-04-19 21:00 UTC;T@ o; ;[I"?This release fixes a denial-of-service vector for derived ;TI"4servers exposed directly to untrusted clients. ;TI" ;TI"EThis bug does not affect most Unicorn deployments as Unicorn is ;TI"Conly supported with trusted clients (such as nginx) on a LAN. ;TI"8nginx is known to reject clients that send invalid ;TI"AContent-Length headers, so any deployments on a trusted LAN ;TI"#and/or behind nginx are safe. ;TI" ;TI"CServers affected by this bug include (but are not limited to) ;TI"?Rainbows! and Zbatery. This bug does not affect Thin nor ;TI"BMongrel, as neither got the request body filtering treatment ;TI"6that the Unicorn HTTP parser got in August 2009. ;TI" ;TI"5The bug fixed in this release could result in a ;TI"Ddenial-of-service as it would trigger a process-wide assertion ;TI";instead of raising an exception. For servers such as ;TI">Rainbows!/Zbatery that serve multiple clients per worker ;TI"<process, this could abort all clients connected to the ;TI"7particular worker process that hit the assertion. ;T;0S; ; i;I"Funicorn 0.97.0 - polishing and cleaning up / 2010-03-01 18:26 UTC;T@ o; ;[I"EA bunch of small fixes related to startup/configuration and hot ;TI"reload issues with HUP: ;TI" ;TI"A* Variables in the user-generated config.ru files no longer ;TI": risk clobbering variables used in laucher scripts. ;TI" ;TI">* signal handlers are initialized before the pid file is ;TI"; dropped, so over-eager firing of init scripts won't ;TI"$ mysteriously nuke a process. ;TI" ;TI">* SIGHUP will return app to original state if an updated ;TI": config.ru fails to load due to {Syntax,Load}Error. ;TI" ;TI"A* unicorn_rails should be Rails 3 compatible out-of-the-box ;TI"C ('unicorn' works as always, and is recommended for Rails 3) ;TI" ;TI"?* unicorn_rails is finally "working_directory"-aware when ;TI"7 generating default temporary paths and pid file ;TI" ;TI"?* config.ru encoding is the application's default in 1.9, ;TI"8 not forced to binary like many parts of Unicorn. ;TI" ;TI"C* configurator learned to handle the "user" directive outside ;TI"@ of after_fork hook (which will always remain supported). ;TI" ;TI"EThere are also various internal cleanups and possible speedups. ;T;0S; ; i;I"Junicorn 0.96.1 - fix leak in Rainbows!/Zbatery / 2010-02-13 08:35 UTC;T@ o; ;[I"EThis maintenance release is intended for users of Rainbows! and ;TI"CZbatery servers (and anybody else using Unicorn::HttpParser). ;TI" ;TI"DThis memory leak DID NOT affect Unicorn itself: Unicorn always ;TI"Aallocates the HttpParser once and always reuses it in every ;TI"sequential request. ;TI" ;TI"CThis leak affects applications that repeatedly allocate a new ;TI">HTTP parser. Thus this bug affects _all_ deployments of ;TI"ERainbows! and Zbatery. These servers allocate a new parser for ;TI"<every client connection to serve clients concurrently. ;TI" ;TI"9I misread the Data_Make_Struct()/Data_Wrap_Struct() ;TI"Ddocumentation and ended up passing NULL as the "free" argument ;TI":instead of -1, causing the memory to never be freed. ;TI" ;TI"8From README.EXT in the MRI source which I misread: ;TI"=> The free argument is the function to free the pointer ;TI"C> allocation. If this is -1, the pointer will be just freed. ;TI"?> The functions mark and free will be called from garbage ;TI"> collector. ;T;0S; ; i;I":unicorn 0.96.0 - Rack 1.1 bump / 2010-01-08 05:18 UTC;T@ o; ;[I"DThis release includes small changes for things allowed by Rack ;TI"A1.1. It is also now easier to detect if daemonized process ;TI"Dfails to start. Manpages received some minor updates as well. ;TI" ;TI"DRack 1.1 allowed us to make the following environment changes: ;TI" ;TI"=* "rack.logger" is now set to the "logger" specified in ;TI"; the Unicorn config file. This defaults to a Logger ;TI"% instance pointing to $stderr. ;TI" ;TI"8* "rack.version" is now at [1,1]. Unicorn remains ;TI": compatible with previous Rack versions if your app ;TI" depends on it. ;TI" ;TI"EWhile only specified since Rack 1.1, Unicorn has always exposed ;TI"A"rack.input" in binary mode (and has ridiculous integration ;TI"2tests that go outside of Ruby to prove it!). ;T;0S; ; i;I"*unicorn 0.95.3 / 2009-12-21 21:51 UTC;T@ o; ;[I"BThe HTTP parser now allows (but does not parse) the userinfo ;TI"Acomponent in the very rare requests that send absoluteURIs. ;TI"EThanks to Scott Chacon for reporting and submitting a test case ;TI"for this fix. ;TI" ;TI"CThere are also minor documentation updates and tiny cleanups. ;T;0S; ; i;I"*unicorn 0.95.2 / 2009-12-07 09:52 UTC;T@ o; ;[ I"FSmall fixes to our HTTP parser to allows semicolons in PATH_INFO ;TI"Bas allowed by RFC 2396, section 3.3. This is low impact for ;TI"Dexisting apps as semicolons are rarely seen in URIs. Our HTTP ;TI"Dparser runs properly under Rubinius 0.13.0 and 1.0.0-rc1 again ;TI"E(though not yet the rest of the server since we rely heavily on ;TI"signals). ;TI" ;TI"EAnother round of small documentation tweaks and minor cleanups. ;T;0S; ; i;I"*unicorn 0.95.1 / 2009-11-21 21:13 UTC;T@ o; ;[I"@Configuration files paths given on the command-line are no ;TI">longer expanded. This should make configuration reloads ;TI"Fpossible when a non-absolute path is specified for --config-file ;TI"@and Unicorn was deployed to a symlink directories (as with ;TI"?Capistrano). Since deployments have always been strongly ;TI"?encouraged to use absolute paths in the config file, this ;TI""change does not affect them. ;TI" ;TI"4This is our first gem release using gemcutter. ;TI" ;TI"Eric Wong (3): ;TI"= SIGNALS: HUP + preload_app cannot reload app code ;TI"2 Do not expand paths given on the shell ;TI"; GNUmakefile: prep release process for gemcutter ;T;0S; ; i;I"*unicorn 0.95.0 / 2009-11-15 22:21 UTC;T@ o; ;[0I"EMostly internal cleanups and documentation updates. Irrelevant ;TI">stacktraces from client disconnects/errors while reading ;TI"B"rack.input" are now cleared to avoid unnecessary noise. If ;TI"Auser switching in workers is used, ownership of logs is now ;TI"Epreserved when reopening worker logs (send USR1 only to the the ;TI"Fmaster in this case). The timeout config no longer affects long ;TI"/after_fork hooks or application startups. ;TI" ;TI"DNew features include the addition of the :umask option for the ;TI"D"listen" config directive and error reporting for non-portable ;TI"socket options. ;TI" ;TI"9No ponies have ever been harmed in our development. ;TI" ;TI"Eric Wong (28): ;TI": unicorn.1: document RACK_ENV changes in 0.94.0 ;TI"4 HACKING: update with "gmake" in examples ;TI"A don't nuke children for long after_fork and app loads ;TI"> local.mk.sample: steal some updates from Rainbows! ;TI"4 Load Unicorn constants when building app ;TI"; tee_input: fix RDoc argument definition for tee ;TI" Add FAQ ;TI"/ FAQ: fix links to Configurator docs ;TI"; tee_input: better premature disconnect handling ;TI"2 tee_input: don't shadow struct members ;TI"F raise Unicorn::ClientShutdown if client aborts in TeeInput ;TI"> tee_input: fix comment from an intermediate commit ;TI"B FAQ: additional notes on getting HTTPS redirects right ;TI"> configurator: update RDoc and comments in examples ;TI"% bump version to 0.95.0pre ;TI"B configurator: listen :umask parameter for UNIX sockets ;TI"= preserve user/group ownership when reopening logs ;TI"4 old_rails/static: avoid freezing strings ;TI"& old_rails: autoload Static ;TI"0 const: no need to freeze HTTP_EXPECT ;TI"C test_server: ensure stderr is written to before reading ;TI"3 tee_input: expand client error handling ;TI"; replace "rescue => e" with "rescue Object => e" ;TI"I socket_helper: do not hide errors when setting socket options ;TI"- socket_helper: RDoc for constants ;TI" ClientShutdown: RDoc ;TI") Rakefile: add raa_update task ;TI"1 tee_input: client_error always raises ;T;0S; ; i;I"*unicorn 0.94.0 / 2009-11-05 09:52 UTC;T@ o; ;[II"FThe HTTP parser is fix for oddly-aligned reads of trailers (this ;TI"Etechnically affects headers, too, but is highly unlikely due to ;TI"Dour non-support of slow clients). This allows our HTTP parser ;TI"Dto better support very slow clients when used by other servers ;TI"E(like Rainbows!). Fortunately this bug does not appear to lead ;TI"Bto any invalid memory accesses (and potential arbitrary code ;TI"execution). ;TI" ;TI"DFreeBSD (and possibly other *BSDs) support is improved and and ;TI"Dall the test cases pass under FreeBSD 7.2. Various flavors of ;TI"@GNU/Linux remains our primary platform for development and ;TI"production. ;TI" ;TI"ENew features added include the "working_directory" directive in ;TI"3the configurator . Even without specifying a ;TI"F"working_directory", symlink-aware detection of the current path ;TI"Fno longer depends on /bin/sh so it should work out-of-the-box on ;TI"EFreeBSD and Solaris and not just systems where /bin/sh is dash, ;TI"ksh93 or bash. ;TI" ;TI"CUser-switching support is finally supported but only intended ;TI"Efor use in the after_fork hook of worker processes. Putting it ;TI"Cin the after_fork hook allows allows users to set things like ;TI";CPU affinity[1] on a per-worker basis before dropping ;TI"?privileges. The master process retains all privileges it ;TI"started with. ;TI" ;TI"DThe ENV["RACK_ENV"] (process-wide) environment variable is now ;TI"Bboth read and set for `unicorn' in the same way RAILS_ENV is ;TI"Eused by `unicorn_rails'. This allows the Merb launcher to read ;TI"BENV["RACK_ENV"] in config.ru. Other web servers already set ;TI"Bthis and there may be applications or libraries that already ;TI"%rely on this de facto standard. ;TI" ;TI"Eric Wong (26): ;TI"; cleanup: avoid redundant error checks for fstat ;TI"8 test_helper: connect(2) may fail with EINVAL ;TI"6 GNUmakefile: fix non-portable tar(1) usage ;TI"; tests: provide a pure Ruby setsid(8) equivalent ;TI"? more portable symlink awareness for START_CTX[:cwd] ;TI"A test_signals: avoid portability issues with fchmod(2) ;TI"9 cleanup error handling and make it less noisy ;TI"5 Do not override Dir.chdir in config files ;TI"; configurator: add "working_directory" directive ;TI"7 configurator: working_directory is expanded ;TI"D configurator: set ENV["PWD"] with working_directory, too ;TI"K configurator: working_directory affects pid, std{err,out}_paths ;TI"D configurator: update documentation for working_directory ;TI"4 TODO: remove working_directory bit, done ;TI"3 Util.reopen_logs: remove needless Range ;TI"= worker: user/group switching for after_fork hooks ;TI"6 Fix autoload of Etc in Worker for Ruby 1.9 ;TI"@ bin/unicorn: allow RACK_ENV to be passed from parent ;TI"+ tests for RACK_ENV preservation ;TI"@ http: allow headers/trailers to be written byte-wise ;TI"8 http: extra test for bytewise chunked bodies ;TI"G tee_input: do not clobber trailer buffer on partial uploads ;TI"9 test_exec: ensure master is killed after test ;TI"> Util::tmpio returns a TmpIO that responds to #size ;TI"1 TODO: remove user-switching bit, done ;TI" unicorn 0.94.0 ;TI" ;TI"Wayne Larsen (1): ;TI"7 bin/unicorn: set ENV["RACK_ENV"] on startup ;TI" ;TI"E[1] - Unicorn does not support CPU affinity directly, but it is ;TI"I possible to load code that allows it inside after_fork hooks, ;TI", or even just call sched_tool(8). ;T;0S; ; i;I"*unicorn 0.93.5 / 2009-10-29 21:41 UTC;T@ o; ;[I"@This release fixes a regression introduced in 0.93.3 where ;TI"Etimed-out worker processes run a chance of not being killed off ;TI"Dat all if they're hung. While it's not ever advisable to have ;TI"<requests take a long time, we realize it's easy to fix ;TI"everything :) ;TI" ;TI"Eric Wong (3): ;TI" TODO: remove --kill ;TI", fix reliability of timeout kills ;TI"< TODO: update for next version (possibly 1.0-pre) ;T;0S; ; i;I"*unicorn 0.93.4 / 2009-10-27 07:57 UTC;T@ o; ;[!I"EThis release mainly works around BSD stdio compatibility issues ;TI"Cthat affect at least FreeBSD and OS X. While this issues was ;TI"Adocumented and fixed in [ruby-core:26300][1], no production ;TI"Erelease of MRI 1.8 has it, and users typically upgrade MRI more ;TI"Fslowly than gems. This issue does NOT affect 1.9 users. Thanks ;TI"Eto Vadim Spivak for reporting and testing this issue and Andrey ;TI"Stikheev for the fix. ;TI" ;TI"@Additionally there are small documentation bits, one error ;TI"Dhandling improvement, and one minor change that should improve ;TI"%reliability of signal delivery. ;TI" ;TI"Andrey Stikheev (1): ;TI"; workaround FreeBSD/OSX IO bug for large uploads ;TI" ;TI"Eric Wong (7): ;TI"H DESIGN: address concerns about on-demand and thundering herd ;TI"@ README: alter reply conventions for the mailing list ;TI"? configurator: stop testing for non-portable listens ;TI"? KNOWN_ISSUES: document Rack gem issue w/Rails 2.3.2 ;TI"= stop continually resends signals during shutdowns ;TI"1 add news bodies to site NEWS.atom.xml ;TI"4 configurator: fix broken example in RDoc ;TI" ;TI"Suraj N. Kurapati (1): ;TI"F show configuration file path in errors instead of '(eval)' ;TI" ;TI"7[1] http://redmine.ruby-lang.org/issues/show/2267 ;T;0S; ; i;I"*unicorn 0.93.3 / 2009-10-09 22:50 UTC;T@ o; ;[I"AThis release fixes compatibility with OpenBSD (and possibly ;TI"Eother Unices with stricter fchmod(2) implementations) thanks to ;TI"?Jeremy Evans. Additionally there are small documentation ;TI"changes all around. ;TI" ;TI"Eric Wong (12): ;TI"4 doc: expand on the SELF_PIPE description ;TI"@ fchmod heartbeat flips between 0/1 for compatibility ;TI"- examples/init.sh: remove "set -u" ;TI"B configurator: update with nginx fail_timeout=0 example ;TI"< PHILOSOPHY: clarify experience other deployments ;TI"; PHILOSOPHY: plug the Rainbows! spin-off project ;TI": README: remove unnecessary and extraneous dash ;TI"D DESIGN: clarification and possibly improve HTML validity ;TI"2 README: remove the "non-existent" part ;TI": README: emphasize the "fast clients"-only part ;TI"4 drop the whitespace cleaner for Ragel->C ;TI" unicorn 0.93.3 ;T;0S; ; i;I"*unicorn 0.93.2 / 2009-10-07 08:45 UTC;T@ o; ;[I"FAvoid truncated POST bodies from with URL-encoded forms in Rails ;TI"Eby switching TeeInput to use read-in-full semantics (only) when ;TI">a Content-Length: header exists. Chunked request bodies ;TI":continue to exhibit readpartial semantics to support ;TI"*simultaneous bidirectional chunking. ;TI" ;TI"EThe lack of return value checking in Rails to protect against a ;TI"?short ios.read(length) is entirely reasonable even if not ;TI"Bpedantically correct. Most ios.read(length) implementations ;TI"?return the full amount requested except right before EOF. ;TI" ;TI";Also there are some minor documentation improvements. ;TI" ;TI"Eric Wong (8): ;TI"@ Fix NEWS generation on single-paragraph tag messages ;TI"! Include GPLv2 in docs ;TI"= doc: make it clear contributors retain copyrights ;TI"@ TODO: removed Rainbows! (see rainbows.rubyforge.org) ;TI"0 Document the START_CTX hash contents ;TI"G more-compatible TeeInput#read for POSTs with Content-Length ;TI"; tests for read-in-full vs readpartial semantics ;TI" unicorn 0.93.2 ;T;0S; ; i;I"*unicorn 0.93.1 / 2009-10-03 01:17 UTC;T@ o; ;[I"BFix permissions for release tarballs/gems, no other changes. ;TI"-Thanks to Jay Reitz for reporting this. ;T;0S; ; i;I"*unicorn 0.93.0 / 2009-10-02 21:04 UTC;T@ o; ;[WI"EThe one minor bugfix is only for Rails 2.3.x+ users who set the ;TI"DRAILS_RELATIVE_URL_ROOT environment variable in a config file. ;TI"CUsers of the "--path" switch or those who set the environment ;TI"Fvariable in the shell were unaffected by this bug. Note that we ;TI"Estill don't have relative URL root support for Rails < 2.3, and ;TI"Care unlikely to bother with it unless there is visible demand ;TI" for it. ;TI" ;TI">New features includes support for :tries and :delay when ;TI"Especifying a "listen" in an after_fork hook. This was inspired ;TI"?by Chris Wanstrath's example of binding per-worker listen ;TI"?sockets in a loop while migrating (or upgrading) Unicorn. ;TI"FSetting a negative value for :tries means we'll retry the listen ;TI"6indefinitely until the socket becomes available. ;TI" ;TI">So you can do something like this in an after_fork hook: ;TI" ;TI"( after_fork do |server, worker| ;TI"2 addr = "127.0.0.1:#{9293 + worker.nr}" ;TI": server.listen(addr, :tries => -1, :delay => 5) ;TI" end ;TI" ;TI"DThere's also the usual round of added documentation, packaging ;TI"=fixes, code cleanups, small fixes and minor performance ;TI"=improvements that are viewable in the "git log" output. ;TI" ;TI"Eric Wong (55): ;TI"1 build: hardcode the canonical git URL ;TI", build: manifest dropped manpages ;TI"$ build: smaller ChangeLog ;TI"/ doc/LATEST: remove trailing newline ;TI"7 http: don't force -fPIC if it can't be used ;TI"8 .gitignore on *.rbc files Rubinius generates ;TI"; README/gemspec: a better description, hopefully ;TI"C GNUmakefile: add missing .manifest dep on test installs ;TI" Add HACKING document ;TI"9 configurator: fix user switch example in RDoc ;TI"7 local.mk.sample: time and perms enforcement ;TI"; unicorn_rails: show "RAILS_ENV" in help message ;TI"6 gemspec: compatibility with older Rubygems ;TI"+ Split out KNOWN_ISSUES document ;TI"; KNOWN_ISSUES: add notes about the "isolate" gem ;TI"0 gemspec: fix test_files regexp match ;TI"; gemspec: remove tests that fork from test_files ;TI"> test_signals: ensure we can parse pids in response ;TI"9 GNUmakefile: cleanup test/manifest generation ;TI". util: remove APPEND_FLAGS constant ;TI"@ http_request: simplify and remove handle_body method ;TI"A http_response: simplify and remove const dependencies ;TI"* local.mk.sample: fix .js times ;TI"< TUNING: notes about benchmarking a high :backlog ;TI"B HttpServer#listen accepts :tries and :delay parameters ;TI"A "make install" avoids installing multiple .so objects ;TI"= Use Configurator#expand_addr in HttpServer#listen ;TI"B configurator: move initialization stuff to #initialize ;TI"2 Remove "Z" constant for binary strings ;TI"9 cgi_wrapper: don't warn about stdoutput usage ;TI"= cgi_wrapper: simplify status handling in response ;TI"7 cgi_wrapper: use Array#concat instead of += ;TI"= server: correctly unset reexec_pid on child death ;TI"7 configurator: update and modernize examples ;TI"A configurator: add colons in front of listen() options ;TI"8 configurator: remove DEFAULT_LOGGER constant ;TI"; gemspec: clarify commented-out licenses section ;TI"9 Add makefile targets for non-release installs ;TI"@ cleanup: use question mark op for 1-byte comparisons ;TI"0 RDoc for Unicorn::HttpServer::Worker ;TI"> small cleanup to pid file handling + documentation ;TI"G rails: RAILS_RELATIVE_URL_ROOT may be set in Unicorn config ;TI"4 unicorn_rails: undeprecate --path switch ;TI"4 manpages: document environment variables ;TI": README: remove reference to different versions ;TI"= Avoid a small window when a pid file can be empty ;TI"8 configurator: update some migration examples ;TI"7 configurator: listen :delay must be Numeric ;TI": test: don't rely on .manifest for test install ;TI"= SIGNALS: state that we stole semantics from nginx ;TI"> const: DEFAULT_PORT as a string doesn't make sense ;TI"A test_helper: unused_port rejects 8080 unconditionally ;TI"4 GNUmakefile: SINCE variable may be unset ;TI"? tests: GIT-VERSION-GEN is a test install dependency ;TI" unicorn 0.93.0 ;T;0S; ; i;I"*unicorn 0.92.0 / 2009-09-18 21:40 UTC;T@ o; ;[VI"BSmall fixes and documentation are the focus of this release. ;TI" ;TI"FJames Golick reported and helped me track down a bug that caused ;TI"DSIGHUP to drop the default listener (0.0.0.0:8080) if and only ;TI":if listeners were completely unspecified in both the ;TI"Dcommand-line and Unicorn config file. The Unicorn config file ;TI"Cremains the recommended option for specifying listeners as it ;TI";allows fine-tuning of the :backlog, :rcvbuf, :sndbuf, ;TI",:tcp_nopush, and :tcp_nodelay options. ;TI" ;TI":There are some documentation (and resulting website) ;TI"Aimprovements. setup.rb users will notice the new section 1 ;TI"@manpages for `unicorn` and `unicorn_rails`, Rubygems users ;TI"@will have to install manpages manually or use the website. ;TI" ;TI"CThe HTTP parser got a 3rd-party code review which resulted in ;TI"=some cleanups and one insignificant bugfix as a result. ;TI" ;TI"BAdditionally, the HTTP parser compiles, runs and passes unit ;TI"Ftests under Rubinius. The pure-Ruby parts still do not work yet ;TI"Aand we currently lack the resources/interest to pursue this ;TI"/further but help will be gladly accepted. ;TI" ;TI"EThe website now has an Atom feed for new release announcements. ;TI"HThose unfamiliar with Atom or HTTP may finger unicorn@bogomips.org ;TI"#for the latest announcements. ;TI" ;TI"Eric Wong (53): ;TI"/ README: update with current version ;TI"@ http: cleanup and avoid potential signedness warning ;TI"F http: clarify the setting of the actual header in the hash ;TI"7 http: switch to macros for bitflag handling ;TI": http: refactor keepalive tracking to functions ;TI"4 http: use explicit elses for readability ;TI"& http: remove needless goto ;TI"; http: extra assertion when advancing p manually ;TI"$ http: verbose assertions ;TI"3 http: NIL_P(var) instead of var == Qnil ;TI"7 http: rb_gc_mark already ignores immediates ;TI"D http: ignore Host: continuation lines with absolute URIs ;TI"H doc/SIGNALS: fix the no-longer-true bit about socket options ;TI"= "encoding: binary" comments for all sources (1.9) ;TI"< http_response: don't "rescue nil" for body.close ;TI"4 CONTRIBUTORS: fix capitalization for why ;TI"= http: support Rubies without the OBJ_FROZEN macro ;TI"< http: define OFFT2NUM macro on Rubies without it ;TI"= http: no-op rb_str_modify() for Rubies without it ;TI"$ http: compile with -fPIC ;TI"8 http: use rb_str_{update,flush} if available ;TI"< http: create a new string buffer on empty values ;TI"< Update documentation for Rubinius support status ;TI"? http: cleanup assertion for memoized header strings ;TI"= http: add #endif comment labels where appropriate ;TI"@ Add .mailmap file for "git shortlog" and other tools ;TI"( Update Manifest with mailmap ;TI"2 Fix comment about speculative accept() ;TI"C SIGNALS: use "Unicorn" when referring to the web server ;TI"6 Add new Documentation section for manpages ;TI"> test_exec: add extra tests for HUP and preload_app ;TI"L socket_helper: (FreeBSD) don't freeze the accept filter constant ;TI"= Avoid freezing objects that don't benefit from it ;TI"9 SIGHUP no longer drops lone, default listener ;TI": doc: generate ChangeLog and NEWS file for RDoc ;TI"> Remove Echoe and roll our own packaging/release... ;TI"< unicorn_rails: close parentheses in help message ;TI"; launchers: deprecate ambiguous -P/--p* switches ;TI"4 man1/unicorn: avoid unnecessary emphasis ;TI"( Add unicorn_rails(1) manpage ;TI"D Documentation: don't force --rsyncable flag with gzip(1) ;TI"; Simplify and standardize manpages build/install ;TI"B GNUmakefile: package .tgz includes all generated files ;TI"= doc: begin integration of HTML manpages into RDoc ;TI" Update TODO ;TI" html: add Atom feeds ;TI"8 doc: latest news is available through finger ;TI": NEWS.atom: file timestamp matches latest entry ;TI"; pandoc needs the standalone switch for manpages ;TI"< man1/unicorn: split out RACK ENVIRONMENT section ;TI"8 man1/unicorn_rails: fix unescaped underscore ;TI"9 NEWS.atom.xml only lists the first 10 entries ;TI" unicorn 0.92.0 ;T;0S; ; i;I"+unicorn 0.10.3r / 2009-09-09 00:09 UTC;T@ o; ;[I"BRemoves the Rev monkey patch, rev 0.3.0 is out now so we can ;TI"Fjust depend on that instead of monkey patching it. Experimental ;TI"<HTTP keepalive/pipelining support has arrived as well. ;TI" ;TI"EThree features from mainline Unicorn are now working again with ;TI"this branch: ;TI" ;TI"B* Deadlocked workers can be detected by the master and nuked ;TI",* multiple (TCP) listeners per process ;TI"* graceful shutdown ;TI" ;TI"?This (pre-)release does NOT feature HTTP/0.9 support that ;TI"CUnicorn 0.91.0 had, expect that when this branch is ready for ;TI"merging with mainline. ;T;0S; ; i;I"*unicorn 0.91.0 / 2009-09-04 19:04 UTC;T@ o; ;[I"=HTTP/0.9 support, multiline header support, small fixes ;TI" ;TI">18 years too late, Unicorn finally gets HTTP/0.9 support ;TI"&as HTTP was implemented in 1991. ;TI" ;TI"Eric Wong (16): ;TI"! Documentation updates ;TI"> examples/echo: "Expect:" value is case-insensitive ;TI"> http: make strings independent before modification ;TI"5 http: support for multi-line HTTP headers ;TI" tee_input: fix rdoc ;TI"- unicorn_http: "fix" const warning ;TI"4 http: extension-methods allow any tokens ;TI": http: support for simple HTTP/0.9 GET requests ;TI"? test_http_parser_ng: fix failing HTTP/0.9 test case ;TI"E launcher: defer daemonized redirects until config is read ;TI"B test to ensure stderr goes *somewhere* when daemonized ;TI"6 http: SERVER_PROTOCOL matches HTTP_VERSION ;TI"0 http: add HttpParser#headers? method ;TI"7 Support HTTP/0.9 entity-body-only responses ;TI") Redirect files in binary mode ;TI" unicorn 0.91.0 ;T;0S; ; i;I"7unicorn v0.10.2r --rainbows / 2009-08-18 22:28 UTC;T@ o; ;[I"DTwo botched releases in one day, hopefully this is the last... ;TI" ;TI"Eric Wong (3): ;TI"; rainbows: monkey-patch Rev::TCPListener for now ;TI"@ rainbows: make the embedded SHA1 app Rack::Lint-safe ;TI" unicorn 0.10.2r ;T;0S; ; i;I"6unicorn 0.10.1r --rainbows / 2009-08-18 22:01 UTC;T@ o; ;[ I"Ruby 1.9 only, again ;TI" ;TI"Eric Wong (2): ;TI"> Actually hook up Rainbows to the rest of the beast ;TI" unicorn 0.10.1r ;T;0S; ; i;I"8unicorn 0.10.0r -- rainbows! / 2009-08-18 21:41 UTC;T@ o; ;[I")This "release" is for Ruby 1.9 only ;T;0S; ; i;I"*unicorn 0.90.0 / 2009-08-17 00:24 UTC;T@ o; ;[BI"=switch chunking+trailer handling to Ragel, v0.8.4 fixes ;TI" ;TI"AMoved chunked decoding and trailer parsing over to C/Ragel. ;TI"?Minor bug fixes, internal code cleanups, and API changes. ;TI" ;TI"Eric Wong (55): ;TI"6 README: update version numbers for website ;TI"6 Update Rails tests to run on Rails 2.3.3.1 ;TI"2 README: latest stable version is 0.8.4 ;TI"; unicorn_http: small cleanups and size reduction ;TI"< Remove Ragel-generated file from version control ;TI"9 unicorn_http: remove typedef from http_parser ;TI"* unicorn_http: update copyright ;TI"9 unicorn_http: change "global_" prefix to "g_" ;TI", unicorn_http: add helpful macros ;TI": extconf: SIZEOF_OFF_T should be a ruby.h macro ;TI"1 Refactoring unicorn_http C/Ragel code ;TI"> http: find_common_field_value => find_common_field ;TI"? http: split uncommon_field into a separate function ;TI"1 http: remove some redundant functions ;TI"B http: "hp" denotes http_parser structs for consistency ;TI"4 http: small cleanup in "https" detection ;TI"6 http: minor cleanup of http_field handling ;TI"2 http: split out server params handling ;TI"1 http: move global initialization code ;TI"> http: cleanup setting for common values => globals ;TI"( http: remove noise functions ;TI"8 http: move non-Ruby-specific macros c_util.h ;TI"@ http: prepare http_parser struct for body processing ;TI"@ http: generic C string vs VALUEs comparison function ;TI"> http: process Content-Length and Transfer-Encoding ;TI", http: preliminary chunk decoding ;TI"- test_upload: extra CRLF is needed ;TI"8 Switch to Ragel/C-based chunk/trailer parser ;TI"9 http: unit tests for overflow and bad lengths ;TI". http: add test for invalid trailer ;TI"4 http: join repeated headers with a comma ;TI"? test_util: explicitly close tempfiles for GC-safety ;TI"0 test_exec: wait for worker readiness ;TI"! Documentation updates ;TI"= test_signals: unlink log files of KILL-ed process ;TI"1 http: rename read_body to filter_body ;TI"( http: add CONST_MEM_EQ macro ;TI"4 http: add "HttpParser#keepalive?" method ;TI": http: freeze fields when creating them, always ;TI"- README: everybody loves Ruby DSLs ;TI"? http_request: reinstate empty StringIO optimization ;TI"D tee_input: make interface more usable outside of Unicorn ;TI"% Drop the micro benchmarks ;TI"E http: fix warning when sizeof(off_t) == sizeof(long long) ;TI"- GNUmakefile: Fix "install" target ;TI"2 Fix documentation for Util.reopen_logs ;TI"< http_response: pass through unknown status codes ;TI"* const: remove unused constants ;TI" update TODO ;TI"6 http: support for "Connection: keep-alive" ;TI". TODO: remove keep-alive/pipelining ;TI"( Make launchers __END__-aware ;TI"4 Remove explicit requires for Rack things ;TI"I app/inetd: explicitly close pipe descriptors on CatBody#close ;TI" unicorn 0.90.0 ;T;0S; ; i;I")unicorn 0.8.4 / 2009-08-06 22:48 UTC;T@ o; ;[I",pass through unknown HTTP status codes ;TI" ;TI"HThis release allows graceful degradation in case a user is using a ;TI"Mstatus code not defined by Rack::Utils::HTTP_STATUS_CODES. A patch has ;TI"Nbeen submitted[1] upstream to Rack but this issue may still affect users ;TI"-of yet-to-be-standardized status codes. ;TI" ;TI"Eric Wong (2): ;TI"< http_response: pass through unknown status codes ;TI" unicorn 0.8.4 ;TI" ;TI"H[1] - http://rack.lighthouseapp.com/projects/22435-rack/tickets/70 ;T;0S; ; i;I")unicorn 0.9.2 / 2009-07-20 01:29 UTC;T@ o; ;[I"'Ruby 1.9.2 preview1 compatibility ;TI" ;TI"LThis release mainly fixes compatibility issues the Ruby 1.9.2 preview1 ;TI"Krelease (and one existing 1.9.x issue). Note that Rails 2.3.2.1 does ;TI"JNOT appear to work with Ruby 1.9.2 preview1, but that is outside the ;TI"scope of this project. ;TI" ;TI"GThe 0.9.x series (including this release) is only recommended for ;TI"Gdevelopment/experimental use. This series is NOT recommended for ;TI"(production use, use 0.8.x instead. ;TI" ;TI"Eric Wong (10): ;TI", README: add Gmane newsgroup info ;TI"< README: update about development/stable versions ;TI"1 Rename unicorn/http11 => unicorn_http ;TI"C move all #gets logic to tee_input out of chunked_reader ;TI"I http_request: don't support apps that close env["rack.input"] ;TI"9 HttpRequest: no need for a temporary variable ;TI"C Remove core Tempfile dependency (1.9.2-preview1 compat) ;TI": fix tests to run correctly under 1.9.2preview1 ;TI"/ app/exec_cgi: fix 1.9 compatibility ;TI" unicorn 0.9.2 ;T;0S; ; i;I")unicorn 0.8.3 / 2009-07-20 01:26 UTC;T@ o; ;[I"'Ruby 1.9.2 preview1 compatibility ;TI" ;TI"EThis release fixes compatibility issues the Ruby 1.9.2 preview1 ;TI"Frelease (and one existing 1.9.x issue). Note that Rails 2.3.2.1 ;TI"@does NOT appear to work with Ruby 1.9.2 preview1, but that ;TI"+is outside the scope of this project. ;TI" ;TI"Eric Wong (4): ;TI"C Remove core Tempfile dependency (1.9.2-preview1 compat) ;TI": fix tests to run correctly under 1.9.2preview1 ;TI"/ app/exec_cgi: fix 1.9 compatibility ;TI" unicorn 0.8.3 ;T;0S; ; i;I")unicorn 0.8.2 / 2009-07-09 08:59 UTC;T@ o; ;[I"3socket handling bugfixes and usability tweaks ;TI" ;TI"?Socket handling bugfixes and socket-related usability and ;TI">performance tweaks. We no longer trust FD_CLOEXEC to be ;TI"Finherited across accept(); thanks to Paul Sponagl for diagnosing ;TI"Ethis issue on OSX. There are also minor tweaks backported from ;TI"D0.9.0 to make non-graceful restarts/upgrades go more smoothly. ;TI" ;TI"Eric Wong (6): ;TI"7 Unbind listeners as before stopping workers ;TI"< Retry listen() on EADDRINUSE 5 times every 500ms ;TI": Re-add support for non-portable socket options ;TI"" Minor cleanups to core ;TI": always set FD_CLOEXEC on sockets post-accept() ;TI" unicorn 0.8.2 ;T;0S; ; i;I")unicorn 0.9.1 / 2009-07-09 08:49 UTC;T@ o; ;[I".FD_CLOEXEC portability fix (v0.8.2 port) ;TI" ;TI"?Minor cleanups, set FD_CLOEXEC on accepted listen sockets ;TI"Cinstead of relying on the flag to be inherited across accept. ;TI" ;TI"FThe 0.9.x series (including this release) is NOT recommended for ;TI"(production use, try 0.8.x instead. ;TI" ;TI"Eric Wong (10): ;TI"* Avoid temporary array creation ;TI"6 Favor Struct members to instance variables ;TI"" Minor cleanups to core ;TI"7 Unbind listeners as before stopping workers ;TI"; Retry listen() on EADDRINUSE 5 times ever 500ms ;TI": Re-add support for non-portable socket options ;TI"g Minor cleanups to core (cherry picked from commit ec70433f84664af0dff1336845ddd51f50a714a3) ;TI": always set FD_CLOEXEC on sockets post-accept() ;TI" unicorn 0.8.2 ;TI"' unicorn 0.9.1 (merge 0.8.2) ;T;0S; ; i;I")unicorn 0.9.0 / 2009-07-01 22:24 UTC;T@ o; ;[EI"@bodies: "Transfer-Encoding: chunked", rewindable streaming ;TI" ;TI"DWe now have support for "Transfer-Encoding: chunked" bodies in ;TI"Frequests. Not only that, Rack applications reading input bodies ;TI"Eget that data streamed off to the client socket on an as-needed ;TI"Bbasis. This allows the application to do things like upload ;TI"Bprogress notification and even tunneling of arbitrary stream ;TI"3protocols via bidirectional chunked encoding. ;TI" ;TI"@See Unicorn::App::Inetd and examples/git.ru (including the ;TI"Dcomments) for an example of tunneling the git:// protocol over ;TI"HTTP. ;TI" ;TI"AThis release also gives applications the ability to respond ;TI"Epositively to "Expect: 100-continue" headers before being rerun ;TI"Ewithout closing the socket connection. See Unicorn::App::Inetd ;TI")for an example of how this is used. ;TI" ;TI"9This release is NOT recommended for production use. ;TI" ;TI"Eric Wong (43): ;TI"6 http_request: no need to reset the request ;TI"C http_request: StringIO is binary for empty bodies (1.9) ;TI"* http_request: fix typo for 1.9 ;TI"> Transfer-Encoding: chunked streaming input support ;TI"< Unicorn::App::Inetd: reinventing Unix, poorly :) ;TI"1 README: update with mailing list info ;TI"@ local.mk.sample: publish_doc gzips all html, js, css ;TI"> Put copyright text in new files, include GPL2 text ;TI"D examples/cat-chunk-proxy: link to proposed curl(1) patch ;TI" Update TODO ;TI". Avoid duplicating the "Z" constant ;TI"8 Optimize body-less GET/HEAD requests (again) ;TI"D tee_input: Don't expose the @rd object as a return value ;TI"$ exec_cgi: small cleanups ;TI"4 README: another note about older Sinatra ;TI"7 tee_input: avoid defining a @rd.size method ;TI"' Make TeeInput easier to use ;TI"7 test_upload: add tests for chunked encoding ;TI"? GNUmakefile: more stringent error checking in tests ;TI"0 test_upload: fix ECONNRESET with 1.9 ;TI"@ GNUmakefile: allow TRACER= to be specified for tests ;TI"8 test_rails: workaround long-standing 1.9 bug ;TI"1 tee_input: avoid rereading fresh data ;TI": "Fix" tests that break with stream_input=false ;TI"1 inetd: fix broken constant references ;TI"B configurator: provide stream_input (true|false) option ;TI"- chunked_reader: simpler interface ;TI"= http_request: force BUFFER to be Encoding::BINARY ;TI"8 ACK clients on "Expect: 100-continue" header ;TI"? Only send "100 Continue" when no body has been sent ;TI"D http_request: tighter Transfer-Encoding: "chunked" check ;TI"3 Add trailer_parser for parsing trailers ;TI"< chunked_reader: Add test for chunk parse failure ;TI"2 TeeInput: use only one IO for tempfile ;TI"8 trailer_parser: set keys with "HTTP_" prefix ;TI"8 TrailerParser integration into ChunkedReader ;TI"7 Unbind listeners as before stopping workers ;TI"; Retry listen() on EADDRINUSE 5 times ever 500ms ;TI": Re-add support for non-portable socket options ;TI"; Move "Expect: 100-continue" handling to the app ;TI"7 tee_input: avoid ignoring initial body blob ;TI"6 Force streaming input onto apps by default ;TI" unicorn 0.9.0 ;T;0S; ; i;I")unicorn 0.8.1 / 2009-05-28 21:45 UTC;T@ o; ;[I"=safer timeout handling, more consistent reload behavior ;TI" ;TI"JThis release features safer, more descriptive timeout handling, more ;TI"Econsistent reload behavior, and is a miniscule amount faster on ;TI""Hello World" benchmarks ;TI" ;TI"Eric Wong (7): ;TI", doc: cleanup summary/description ;TI"< Fix potential race condition in timeout handling ;TI": SIGHUP reloads app even if preload_app is true ;TI"9 Make our HttpRequest object a global constant ;TI"? Avoid instance variables lookups in a critical path ;TI"= Consistent logger assignment for multiple objects ;TI" unicorn 0.8.1 ;T;0S; ; i;I")unicorn 0.8.0 / 2009-05-26 22:59 UTC;T@ o; ;[NI"Genforce Rack dependency, minor performance improvements and fixes ;TI" ;TI"GThe RubyGem now has a hard dependency on Rack. Minor performance ;TI"Limprovements and code cleanups. If RubyGems are in use, the Gem index ;TI")is refreshed when SIGHUP is issued. ;TI" ;TI"Eric Wong (66): ;TI"D test_request: enable with Ruby 1.9 now Rack 1.0.0 is out ;TI" Small cleanup ;TI"D test_upload: still uncomfortable with 1.9 IO encoding... ;TI"# Add example init script ;TI"' app/exec_cgi: GC prevention ;TI" Add TUNING document ;TI"@ Make speculative accept() faster for the common case ;TI"9 app/old_rails: correctly log errors in output ;TI"B http_request: avoid StringIO.new for GET/HEAD requests ;TI"@ http_response: luserspace buffering is barely faster ;TI"> benchmark/*: updates for newer versions of Unicorn ;TI"< http_request: switch to readpartial over sysread ;TI"5 No point in unsetting the O_NONBLOCK flag ;TI"+ Merge commit 'origin/benchmark' ;TI"0 Safer timeout handling and test case ;TI": Ignore unhandled master signals in the workers ;TI"@ TUNING: add a note about somaxconn with UNIX sockets ;TI"4 Remove redundant socket closing/checking ;TI"A Instant shutdown signals really mean instant shutdown ;TI"9 test_signals: ready workers before connecting ;TI"+ Speed up the worker accept loop ;TI"8 Fix a warning about @pid being uninitialized ;TI": Inline and remove the HttpRequest#reset method ;TI"4 Preserve 1.9 IO encodings in reopen_logs ;TI"- configurator: fix rdoc formatting ;TI"C http_request: use Rack::InputWrapper-compatible methods ;TI"? app/exec_cgi: use explicit buffers for read/sysread ;TI"0 Enforce minimum timeout at 3 seconds ;TI"* Avoid killing sleeping workers ;TI" Remove trickletest ;TI"< HttpRequest::DEF_PARAMS => HttpRequest::DEFAULTS ;TI"E exec_cgi: don't assume the body#each consumer is a socket ;TI"- Reopen master logs on SIGHUP, too ;TI". Require Rack for HTTP Status codes ;TI"4 http_response: allow string status codes ;TI"+ test_response: correct OFS test ;TI"= privatize constants only used by old_rails/static ;TI"8 Disable formatting for command-line switches ;TI"0 GNUmakefile: glob all files in bin/* ;TI"D test_request: enable with Ruby 1.9 now Rack 1.0.0 is out ;TI"D test_upload: still uncomfortable with 1.9 IO encoding... ;TI"# Add example init script ;TI"' app/exec_cgi: GC prevention ;TI" Add TUNING document ;TI"9 app/old_rails: correctly log errors in output ;TI"0 Safer timeout handling and test case ;TI": Ignore unhandled master signals in the workers ;TI"@ TUNING: add a note about somaxconn with UNIX sockets ;TI"8 Fix a warning about @pid being uninitialized ;TI"4 Preserve 1.9 IO encodings in reopen_logs ;TI"- configurator: fix rdoc formatting ;TI"0 Enforce minimum timeout at 3 seconds ;TI"4 http_response: allow string status codes ;TI"+ test_response: correct OFS test ;TI"8 Disable formatting for command-line switches ;TI"0 GNUmakefile: glob all files in bin/* ;TI"' Merge branch '0.7.x-stable' ;TI"/ Define HttpRequest#reset if missing ;TI"$ Merge branch 'benchmark' ;TI" unicorn 0.7.1 ;TI"! Merge commit 'v0.7.1' ;TI"2 Refresh Gem list when building the app ;TI"; Only refresh the gem list when building the app ;TI"0 Switch to autoload to defer requires ;TI", remove trickletest from Manifest ;TI" unicorn 0.8.0 ;T;0S; ; i;I")unicorn 0.7.1 / 2009-05-22 09:06 UTC;T@ o; ;[I":minor fixes, cleanups and documentation improvements ;TI" ;TI"Eric Wong (18): ;TI"D test_request: enable with Ruby 1.9 now Rack 1.0.0 is out ;TI"D test_upload: still uncomfortable with 1.9 IO encoding... ;TI"# Add example init script ;TI"' app/exec_cgi: GC prevention ;TI" Add TUNING document ;TI"9 app/old_rails: correctly log errors in output ;TI"0 Safer timeout handling and test case ;TI": Ignore unhandled master signals in the workers ;TI"@ TUNING: add a note about somaxconn with UNIX sockets ;TI"8 Fix a warning about @pid being uninitialized ;TI"4 Preserve 1.9 IO encodings in reopen_logs ;TI"- configurator: fix rdoc formatting ;TI"0 Enforce minimum timeout at 3 seconds ;TI"4 http_response: allow string status codes ;TI"+ test_response: correct OFS test ;TI"8 Disable formatting for command-line switches ;TI"0 GNUmakefile: glob all files in bin/* ;TI" unicorn 0.7.1 ;T;0S; ; i;I")unicorn 0.7.0 / 2009-04-25 18:59 UTC;T@ o; ;[I"rack.version is 1.0 ;TI" ;TI";Rack 1.0.0 compatibility, applications are now passed ;TI"#env["rack.version"] == [1, 0] ;TI" ;TI"Eric Wong (5): ;TI"3 doc: formatting changes for SIGNALS doc ;TI"< configurator: "listen" directive more nginx-like ;TI"? Fix log rotation being delayed in workers when idle ;TI"$ Rack 1.0.0 compatibility ;TI" unicorn 0.7.0 ;T;0S; ; i;I")unicorn 0.6.0 / 2009-04-24 21:47 UTC;T@ o; ;[<I"Ccleanups + optimizations, signals to {in,de}crement processes ;TI" ;TI".* Mostly OCD-induced yak-shaving changes ;TI" ;TI"D* SIGTTIN and SIGTTOU are now used to control incrementing and ;TI"B decrementing of worker processes without needing to change ;TI"# the config file and SIGHUP. ;TI" ;TI"Eric Wong (46): ;TI"; test_upload: ensure StringIO objects are binary ;TI"4 http11: cleanup #includes and whitespace ;TI"/ GNUmakefile: Fix ragel dependencies ;TI"= GNUmakefile: kill trailing whitespace after ragel ;TI"6 Move absolute URI parsing into HTTP parser ;TI"4 http11: remove unused variables/elements ;TI"4 http_request: freeze modifiable elements ;TI"< HttpParser: set QUERY_STRING for Rack-compliance ;TI"9 GNUmakefile: mark test_signals as a slow test ;TI"6 const: remove unused QUERY_STRING constant ;TI"' http11: formatting cleanups ;TI"3 http11: remove callbacks from structure ;TI"2 replace DATA_GET macro with a function ;TI"2 http11: minor cleanups in return types ;TI"> http11: make parser obey HTTP_HOST with empty port ;TI"+ http11: cleanup some CPP macros ;TI"5 http11: rfc2616 handling of absolute URIs ;TI"< http_response: small speedup by eliminating loop ;TI"' Stop extending core classes ;TI"0 rename socket.rb => socket_helper.rb ;TI"/ Remove @start_ctx instance variable ;TI"8 http11: support underscores in URI hostnames ;TI"3 test: empty port test for absolute URIs ;TI"- Cleanup some unnecessary requires ;TI"4 Cleanup GNUmakefile and fix dependencies ;TI"? Fix data corruption with small uploads via browsers ;TI"0 Get rid of UNICORN_TMP_BASE constant ;TI"8 GNUmakefile: mark test_upload as a slow test ;TI"0 unicorn_rails: avoid nesting lambdas ;TI"3 test_exec: cleanup stale socket on exit ;TI"! Merge commit 'v0.5.4' ;TI"- http_request: micro optimizations ;TI"4 IO_PURGATORY should be a global constant ;TI"< Make LISTENERS and WORKERS global constants, too ;TI"8 test_socket_helper: disable GC for this test ;TI"- http_response: just barely faster ;TI"2 http_response: minor performance gains ;TI"/ make SELF_PIPE is a global constant ;TI"1 Describe the global constants we use. ;TI". Fixup reference to a dead variable ;TI"4 Avoid getppid() if serving heavy traffic ;TI"3 minor cleanups and save a few variables ;TI"9 Allow std{err,out}_path to be changed via HUP ;TI"9 SIGTT{IN,OU} {in,de}crements worker_processes ;TI"A cleanup: avoid duped self-pipe init/replacement logic ;TI" unicorn 0.6.0 ;T;0S; ; i;I")unicorn 0.5.4 / 2009-04-24 01:41 UTC;T@ o; ;[ I"<fix data corruption with some small uploads (not curl) ;TI" ;TI"Eric Wong (2): ;TI"? Fix data corruption with small uploads via browsers ;TI" unicorn 0.5.4 ;T;0S; ; i;I")unicorn 0.5.3 / 2009-04-17 05:32 UTC;T@ o; ;[I"2fix 100% CPU usage when idle, small cleanups ;TI" ;TI""fix 100% CPU usage when idle ;TI" ;TI"Eric Wong (7): ;TI"1 update Manifest (add test_signals.rb) ;TI"% Fix forgotten Rails tests ;TI": Fix my local.mk file to always run Rails tests ;TI"( fix 100% CPU usage when idle ;TI" remove DATE constant ;TI"3 Small garbage reduction in HttpResponse ;TI" unicorn 0.5.3 ;T;0S; ; i;I")unicorn 0.5.2 / 2009-04-16 23:32 UTC;T@ o; ;[I"5force Status: header for compat, small cleanups ;TI" ;TI"@* Ensure responses always have the "Status:" header. This ;TI"= is needed for compatibility with some broken clients. ;TI" ;TI"&* Other small and minor cleanups ;TI" ;TI"Eric Wong (10): ;TI"0 Explicitly trap SIGINT/SIGTERM again ;TI"2 s/rotating/reopening/g in log messages ;TI"@ before_commit and before_exec can never be nil/false ;TI"; worker_loop cleanups, var golf, and yak-shaving ;TI"8 http11: default server port is 443 for https ;TI"= ensure responses always have the "Status:" header ;TI"< test: fix dependency issue with "make test-unit" ;TI"2 GNUmakefile: small dependency cleanups ;TI"3 unicorn/const: kill trailing whitespace ;TI" unicorn 0.5.2 ;T;0S; ; i;I")unicorn 0.5.1 / 2009-04-13 21:24 UTC;T@ o; ;[ I"Dexit correctly on INT/TERM, QUIT is still recommended, however ;TI" ;TI">We now exit correctly on INT/TERM signals, QUIT is still ;TI"0recommended as it does graceful shutdowns. ;TI" ;TI"Eric Wong (2): ;TI"9 Fix SIGINT/SIGTERM handling (broken in 0.5.0) ;TI" unicorn 0.5.1 ;T;0S; ; i;I")unicorn 0.5.0 / 2009-04-13 19:08 UTC;T@ o; ;[4I"8{after,before}_fork API change, small tweaks/fixes ;TI" ;TI"?* There is an API change in the {after,before}_fork hooks ;TI"? so now the entire Worker struct is exposed to the user. ;TI"> This allows Unicorn to unofficially support user/group ;TI" privilege changing. ;TI" ;TI"=* The "X-Forwarded-Proto:" header can be set by proxies ;TI"< to ensure rack.url_scheme is "https" for SSL-enabled ;TI" sites. ;TI" ;TI"B* Small cleanups and tweaks throughout, see shortlog (below) ;TI"! or changelog for details. ;TI" ;TI"Eric Wong (32): ;TI"9 test_helper: redirect_io uses append and sync ;TI"C configurator: allow hooks to be passed callable objects ;TI"* Add a test for signal recovery ;TI"! Documentation updates ;TI"7 Enforce umask 0000 with UNIX domain sockets ;TI"6 local.mk: touch files after set-file-times ;TI"3 Add test for :preload_app config option ;TI"? GNUmakefile: remove unnecessary asterisks in output ;TI"; GNUmakefile: allow "make V=1 ..." for verbosity ;TI"> test_configurator: rename test name that never ran ;TI"% cleanup some log messages ;TI": test_request: tests esoteric/rare REQUEST_URIs ;TI"3 http11: Remove qsort/bsearch code paths ;TI"5 http11: handle "X-Forwarded-Proto: https" ;TI"= close listeners when removing them from our array ;TI"A config: handle listener unbind/replace in config file ;TI" README: doc updates ;TI"3 Restore unlinked UNIX sockets on SIGHUP ;TI"@ listen backlog, sndbuf, rcvbuf are always changeable ;TI"1 Remove _all_ non-POSIX socket options ;TI": http11: cleanup+safer rack.url_scheme handling ;TI": test_exec: fix potential races in fd leak test ;TI"7 test_http_parser: fix broken URL in comment ;TI"5 Save one fcntl() syscall on every request ;TI". Remove unnecessary sync assignment ;TI"= Don't bother restoring ENV or umask across reexec ;TI"; old_rails: try harder to ensure valid responses ;TI"= small cleanups in signal handling and worker init ;TI"@ Remove unnecessary local variables in process_client ;TI"6 Expose worker to {before,after}_fork hooks ;TI"> Configurator: add example for user/group switching ;TI" unicorn 0.5.0 ;T;0S; ; i;I")unicorn 0.4.2 / 2009-04-02 19:14 UTC;T@ o; ;[I"Cfix Rails ARStore, FD leak prevention, descriptive proctitles ;TI" ;TI"Eric Wong (16): ;TI" Manifest: updates ;TI" Merge unicorn ;TI"= test_exec: add test case for per-worker listeners ;TI"= Remove set_cloexec wrapper and require FD_CLOEXEC ;TI": All IOs created in workers have FD_CLOEXEC set ;TI"= FD_CLOEXEC all non-listen descriptors before exec ;TI"2 Close std{err,out} redirection targets ;TI"< test_upload: fix a race condition in unlink test ;TI"+ More descriptive process titles ;TI"1 unicorn_rails: cleanup redundant bits ;TI"= test/rails: v2.1.2 + ActiveRecordStore all around ;TI"1 Use File.basename instead of a regexp ;TI"( Add log directories to tests ;TI"9 unicorn: remove unnecessary lambda generation ;TI": GNUmakefile: "install" preserves unicorn_rails ;TI" unicorn 0.4.2 ;T;0S; ; i;I"*unicorn v0.4.1 / 2009-04-01 10:52 UTC;T@ o; ;[:I":Rails support, per-listener backlog and {snd,rcv}buf ;TI" ;TI"Eric Wong (50): ;TI"0 All new benchmarks, old ones removed ;TI"4 benchmark: header values must be strings ;TI"8 Merge commit 'origin/benchmark' into release ;TI"9 HttpResponse: speed up non-multivalue headers ;TI"2 Streamline rack environment generation ;TI"/ Don't bother unlinking UNIX sockets ;TI"= unicorn_rails: support non-Rack versions of Rails ;TI"; HttpRequest: small improvement for GET requests ;TI"- simplify the HttpParser interface ;TI"8 Socket: add {snd,rcv}buf opts to bind_listen ;TI"! Merge commit 'v0.2.3' ;TI"; Don't allow failed log rotation to to break app ;TI", Deferred log rotation in workers ;TI"> style: symbols instead of strings for signal names ;TI"D No need to disable luserspace buffering on client socket ;TI"& test_server: quieter tests ;TI"& Remove needless line break ;TI"9 Always try to send a valid HTTP response back ;TI"; test_response: ensure closed socket after write ;TI"9 test_response: ensure response body is closed ;TI") TODO: update roadmap to 1.0.0 ;TI"C configurator: per-listener backlog, {rcv,snd}buf config ;TI"C configurator: favor "listen" directive over "listeners" ;TI"9 http11: use :http_body instead of "HTTP_BODY" ;TI"? Avoid having two pid files pointing to the same pid ;TI"* test_exec: fix race conditions ;TI"* test_exec: fix response bodies ;TI"& Fix default listener setup ;TI"1 test_exec: fix another race condition ;TI"9 bin/*: parse CLI switches in config.ru sooner ;TI"9 app/old_rails/static: define missing constant ;TI"7 unicorn_rails: give more info when aborting ;TI"< GNUmakefile: add test-exec and test-unit targets ;TI"; cgi_wrapper: ensure "Status:" header is not set ;TI"= Better canonicalization of listener paths + tests ;TI"A configurator: remove unnecessary SocketHelper include ;TI": unicorn_rails: minor cleanup for dead variable ;TI"1 Use {read,write}_nonblock on the pipe ;TI"5 unicorn_rails: cleanup path mapping usage ;TI"/ Rails stack tests for unicorn_rails ;TI"J test: factor out exec helpers into common code for Rails tests ;TI"6 cgi_wrapper: fix cookies and other headers ;TI"= GNUmakefile: prefix errors with $(extra) variable ;TI"2 cgi_wrapper: HTTP status code cleanups ;TI"$ Add more tests for Rails ;TI"" test_rails: 4x speedup ;TI" Manifest update ;TI"9 Documentation updates, prep for 0.4.1 release ;TI"/ Add local.mk.sample file that I use ;TI" unicorn 0.4.1 ;T;0S; ; i;I"*unicorn v0.2.3 / 2009-03-25 23:31 UTC;T@ o; ;[I"FUnlink Tempfiles after use (they were closed, just not unlinked) ;TI" ;TI"Eric Wong (3): ;TI"/ Don't bother unlinking UNIX sockets ;TI"= Ensure Tempfiles are unlinked after every request ;TI" unicorn 0.2.3 ;T;0S; ; i;I"*unicorn v0.2.2 / 2009-03-22 23:45 UTC;T@ o; ;[I"Asmall bug fixes, fix Rack multi-value headers (Set-Cookie:) ;TI" ;TI"Eric Wong (19): ;TI"/ Fix link to Rubyforge releases page ;TI"0 start libifying common launcher code ;TI"6 unicorn_rails: fix standard pid path setup ;TI"B Move listen path and address expansion to Configurator ;TI": Trap WINCH to QUIT children without respawning ;TI"/ Remove Mongrel stuff from CHANGELOG ;TI"4 HttpResponse: close body if it can close ;TI"% Add Unicorn::App::ExecCgi ;TI"' Process management cleanups ;TI", documentation/disclaimer updates ;TI"@ unicorn_rails: remove unnecessary Rack-loading logic ;TI"4 unicorn/http11: remove GATEWAY_INTERFACE ;TI"7 http11: don't set headers Rack doesn't like ;TI"< HttpRequest test so our requests pass Rack::Lint ;TI"3 HttpRequest: correctly reference logger ;TI". Rotate master logs before workers. ;TI"; Simplify code for sleeping/waking up the master ;TI"4 Handle Rack multivalue headers correctly ;TI" unicorn 0.2.2 ;T;0S; ; i;I"*unicorn v0.2.1 / 2009-03-19 03:20 UTC;T@ o; ;[ I"DFix broken Manifest that cause unicorn_rails to not be bundled ;TI" ;TI"Eric Wong (1): ;TI", unicorn v0.2.1, fix the Manifest ;T;0S; ; i;I"*unicorn v0.2.0 / 2009-03-19 03:16 UTC;T@ o; ;[I"$unicorn_rails launcher script. ;TI" ;TI"Eric Wong (8): ;TI"2 Start _Known Issues_ section in README ;TI"9 Allow binding to UNIX sockets relative to "~" ;TI"B tests: do not trust (our correct use of) 1.9 encodings ;TI"< gracefully die if working dir is invalid at fork ;TI"4 Add signal queueing for test reliability ;TI"4 Add unicorn_rails script for Rails 2.3.2 ;TI"4 Documentation updates, prepare for 0.2.0 ;TI" unicorn 0.2.0 ;T;0S; ; i;I"*unicorn v0.1.0 / 2009-03-11 01:50 UTC;T@ o; ;[I":Unicorn - UNIX-only fork of Mongrel free of threading;T;0: @file@:0@omit_headings_from_table_of_contents_below0