unicorn Ruby/Rack server user+dev discussion/patches/pulls/bugs/help
 help / color / Atom feed
* [ANN] unicorn 5.0.0.pre1 - incompatible changes!
@ 2015-06-15 22:56 Eric Wong
  2015-06-23 19:57 ` Hleb Valoshka
  2015-07-06 21:41 ` [ANN] unicorn 5.0.0.pre2 - another prerelease! Eric Wong
  0 siblings, 2 replies; 8+ messages in thread
From: Eric Wong @ 2015-06-15 22:56 UTC (permalink / raw)
  To: unicorn-public

This release finally drops Ruby 1.8 support and requires Ruby 1.9.3
or later.  The horrible "Status:" header in our HTTP response is
finally gone, saving at least 16 precious bytes in every single HTTP
response.

Under Ruby 2.1 and later, the monotonic clock is used for timeout
handling for better accuracy.

Several experimental, unused and undocumented features are removed.

There's also tiny, minor performance and memory improvements from
dropping 1.8 compatibility, but probably nothing noticeable on a
typical real-life (bloated) app.

The biggest performance improvement we made was to our website by
switching to olddoc.  Depending on connection speed, latency, and
renderer performance, it typically loads two to four times faster.

Finally, for the billionth time: unicorn must never be exposed
to slow clients, as it will never ever use new-fangled things
like non-blocking socket I/O, threads, epoll or kqueue.  unicorn
must be used with a fully-buffering reverse proxy such as nginx
for slow clients.

I'll tag 5.0.0 final in a week or so if all goes well

= gem install --pre unicorn
= git clone git://bogomips.org/unicorn.git
= http://unicorn.bogomips.org/

* ISSUES: update with mailing list subscription
* GIT-VERSION-GEN: start 5.0.0 development
* http: remove xftrust options
* FAQ: add entry for Rails autoflush_log
* dev: remove isolate dependency
* unicorn.gemspec: depend on test-unit 3.0
* http_response: remove Status: header
* remove RubyForge and Freecode references
* remove mongrel.rubyforge.org references
* http: remove the keepalive requests limit
* http: reduce parser from 72 to 56 bytes on 64-bit
* examples: add run_once to before_fork hook example
* worker: remove old tmp accessor
* http_server: save 450+ bytes of memory on x86-64
* t/t0002-parser-error.sh: relax test for rack 1.6.0
* remove SSL support
* tmpio: drop the "size" method
* switch docs + website to olddoc
* README: clarify/reduce references to unicorn_rails
* gemspec: fixup olddoc migration
* use the monotonic clock under Ruby 2.1+
* http: -Wshorten-64-to-32 warnings on clang
* remove old inetd+git examples and exec_cgi
* http: standalone require + reduction in binary size
* GNUmakefile: fix clean gem build + reduce build cruft
* socket_helper: reduce constant lookups and caching
* remove 1.8, <= 1.9.1 fallback for missing IO#autoclose=
* favor IO#close_on_exec= over fcntl in 1.9+
* use require_relative to reduce syscalls at startup
* doc: update support status for Ruby versions
* fix uninstalled testing and reduce require paths
* test_socket_helper: do not depend on SO_REUSEPORT
* favor "a.b(&:c)" form over "a.b { |x| x.c }"
* ISSUES: add section for bugs in other projects
* http_server: favor ivars over constants
* explain 11 byte magic number for self-pipe
* const: drop constants used by Rainbows!
* reduce and localize constant string use
* Links: mark Rainbows! as historical, reference yahns
* save about 200 bytes of memory on x86-64
* http: remove deprecated reset method
* http: remove experimental dechunk! method
* socket_helper: update comments
* doc: document UNICORN_FD in manpage
* doc: document Etc.nprocessors for worker_processes
* favor more string literals for cold call sites
* tee_input: support for Rack::TempfileReaper middleware
* support TempfileReaper in deployment and development envs
* favor kgio_wait_readable for single FD over select
* Merge tag 'v4.9.0'
* http_request: support rack.hijack by default
* avoid extra allocation for hijack proc creation
* FAQ: add note about ECONNRESET errors from bodies
* process SIGWINCH unless stdin is a TTY
* ISSUES: discourage HTML mail strongly, welcome nyms
* http: use rb_hash_clear in Ruby 2.0+
* http_response: avoid special-casing for Rack < 1.5
* www: install NEWS.atom.xml properly
* http_server: remove a few more accessors and constants
* http_response: simplify regular expression
* move the socket into Rack env for hijacking
* http: move response_start_sent into the C ext
* FAQ: reorder bit on Rack 1.1.x and Rails 2.3.x
* ensure body is closed during hijack

-- 
EW

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [ANN] unicorn 5.0.0.pre1 - incompatible changes!
  2015-06-15 22:56 [ANN] unicorn 5.0.0.pre1 - incompatible changes! Eric Wong
@ 2015-06-23 19:57 ` Hleb Valoshka
  2015-06-23 20:04   ` Eric Wong
  2015-07-06 21:41 ` [ANN] unicorn 5.0.0.pre2 - another prerelease! Eric Wong
  1 sibling, 1 reply; 8+ messages in thread
From: Hleb Valoshka @ 2015-06-23 19:57 UTC (permalink / raw)
  To: unicorn-public

On 6/16/15, Eric Wong <e@80x24.org> wrote:
> ...
> * const: drop constants used by Rainbows!

So, does it mean that Rainbows! can use Unicorn 4.x only?

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [ANN] unicorn 5.0.0.pre1 - incompatible changes!
  2015-06-23 19:57 ` Hleb Valoshka
@ 2015-06-23 20:04   ` Eric Wong
  2015-06-23 20:42     ` Damian Janowski
  2015-06-24  9:19     ` Lunar
  0 siblings, 2 replies; 8+ messages in thread
From: Eric Wong @ 2015-06-23 20:04 UTC (permalink / raw)
  To: Hleb Valoshka; +Cc: unicorn-public, rainbows-public

Hleb Valoshka <375gnu@gmail.com> wrote:
> On 6/16/15, Eric Wong <e@80x24.org> wrote:
> > ...
> > * const: drop constants used by Rainbows!
> 
> So, does it mean that Rainbows! can use Unicorn 4.x only?

For now, yes.  However, I am likely to make a maintenance release of
Rainbows! 5.x to work with unicorn 5.x so it can stay in Debian
if anybody uses it.

But as far as I know, nobody has ever used Rainbows! for production in
its 6 years of existence...

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [ANN] unicorn 5.0.0.pre1 - incompatible changes!
  2015-06-23 20:04   ` Eric Wong
@ 2015-06-23 20:42     ` Damian Janowski
  2015-06-24  9:19     ` Lunar
  1 sibling, 0 replies; 8+ messages in thread
From: Damian Janowski @ 2015-06-23 20:42 UTC (permalink / raw)
  To: Eric Wong; +Cc: Hleb Valoshka, unicorn-public, rainbows-public

On Tue, Jun 23, 2015 at 5:04 PM, Eric Wong <e@80x24.org> wrote:
> But as far as I know, nobody has ever used Rainbows! for production in
> its 6 years of existence...

o/

I have, for a couple of years at least. Then changed back to Unicorn.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [ANN] unicorn 5.0.0.pre1 - incompatible changes!
  2015-06-23 20:04   ` Eric Wong
  2015-06-23 20:42     ` Damian Janowski
@ 2015-06-24  9:19     ` Lunar
  2015-06-30 23:19       ` TAN: Coquelicot Eric Wong
  1 sibling, 1 reply; 8+ messages in thread
From: Lunar @ 2015-06-24  9:19 UTC (permalink / raw)
  To: Eric Wong; +Cc: Hleb Valoshka, unicorn-public, rainbows-public

[-- Attachment #1: Type: text/plain, Size: 696 bytes --]

Eric Wong:
> Hleb Valoshka <375gnu@gmail.com> wrote:
> > On 6/16/15, Eric Wong <e@80x24.org> wrote:
> > > ...
> > > * const: drop constants used by Rainbows!
> > 
> > So, does it mean that Rainbows! can use Unicorn 4.x only?
> 
> For now, yes.  However, I am likely to make a maintenance release of
> Rainbows! 5.x to work with unicorn 5.x so it can stay in Debian
> if anybody uses it.
> 
> But as far as I know, nobody has ever used Rainbows! for production in
> its 6 years of existence...

Rainbows! is used by Coquelicot:
https://coquelicot.potager.org/

The project needs some love, but I know about several installations that
are used on a daily basis.

-- 
Lunar


^ permalink raw reply	[flat|nested] 8+ messages in thread

* TAN: Coquelicot
  2015-06-24  9:19     ` Lunar
@ 2015-06-30 23:19       ` Eric Wong
  2015-07-01 11:54         ` Lunar
  0 siblings, 1 reply; 8+ messages in thread
From: Eric Wong @ 2015-06-30 23:19 UTC (permalink / raw)
  To: Lunar; +Cc: Hleb Valoshka, unicorn-public, rainbows-public

Lunar <lunar@anargeek.net> wrote:
> Rainbows! is used by Coquelicot:
> https://coquelicot.potager.org/
> 
> The project needs some love, but I know about several installations that
> are used on a daily basis.

Interesting!  I'm honestly a bit disappointed it's not a generic Rack
app and depends on certain server features, but the project seems mostly
inline with my interests.

But if I were to run it, I'd remove all CSS+images+JS and might
contribute a patch to disable that all, too :)

Anyways, subscribed to the mailing list :>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: TAN: Coquelicot
  2015-06-30 23:19       ` TAN: Coquelicot Eric Wong
@ 2015-07-01 11:54         ` Lunar
  0 siblings, 0 replies; 8+ messages in thread
From: Lunar @ 2015-07-01 11:54 UTC (permalink / raw)
  To: Eric Wong; +Cc: Hleb Valoshka, unicorn-public, rainbows-public

[-- Attachment #1: Type: text/plain, Size: 1098 bytes --]

Eric Wong:
> Lunar <lunar@anargeek.net> wrote:
> > Rainbows! is used by Coquelicot:
> > https://coquelicot.potager.org/
> > 
> > The project needs some love, but I know about several installations that
> > are used on a daily basis.
> 
> Interesting!  I'm honestly a bit disappointed it's not a generic Rack
> app and depends on certain server features, but the project seems mostly
> inline with my interests.

In the very first versions, it was a generic Rack app. And then I
discovered that the file that was transmitted was saved in clear before
being given to the handler (where it would get encrypted)…
Finding that Rainbows! could be made to process the incoming bytes
directly really helped in fixing this issue.

The choice of tying it to a single HTTP server is also a conscious
decision to make it easy to install. On Debian, it only requires
`apt-get install coquelicot` and then 3 lines in Apache configuration.

> But if I were to run it, I'd remove all CSS+images+JS and might
> contribute a patch to disable that all, too :)

Why not. :)

-- 
Lunar


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [ANN] unicorn 5.0.0.pre2 - another prerelease!
  2015-06-15 22:56 [ANN] unicorn 5.0.0.pre1 - incompatible changes! Eric Wong
  2015-06-23 19:57 ` Hleb Valoshka
@ 2015-07-06 21:41 ` Eric Wong
  1 sibling, 0 replies; 8+ messages in thread
From: Eric Wong @ 2015-07-06 21:41 UTC (permalink / raw)
  To: unicorn-public

There is a minor TCP socket options are now applied to inherited
sockets, and we have native support for inheriting sockets from
systemd (by emulating the sd_listen_fds(3) function).

Dynamic changes in the application to Rack::Utils::HTTP_STATUS
codes is now supported, so you can use your own custom status
lines.

Ruby 2.2 and later is now favored for performance.
Optimizations by using constants which made sense in earlier
versions of Ruby are gone: so users of old Ruby versions
will see performance regressions.  Ruby 2.2 users should
see the same or better performance, and we have less code
as a result.

* doc: update some invalid URLs
* apply TCP socket options on inherited sockets
* reflect changes in Rack::Utils::HTTP_STATUS_CODES
* reduce constants and optimize for Ruby 2.2
* http_response: reduce size of multi-line header path
* emulate sd_listen_fds for systemd support
* test/unit/test_response.rb: compatibility with older test-unit

This also includes all changes in unicorn 5.0.0.pre1:

http://bogomips.org/unicorn-public/m/20150615225652.GA16164@dcvr.yhbt.net.html

-- 
EW

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, back to index

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-15 22:56 [ANN] unicorn 5.0.0.pre1 - incompatible changes! Eric Wong
2015-06-23 19:57 ` Hleb Valoshka
2015-06-23 20:04   ` Eric Wong
2015-06-23 20:42     ` Damian Janowski
2015-06-24  9:19     ` Lunar
2015-06-30 23:19       ` TAN: Coquelicot Eric Wong
2015-07-01 11:54         ` Lunar
2015-07-06 21:41 ` [ANN] unicorn 5.0.0.pre2 - another prerelease! Eric Wong

unicorn Ruby/Rack server user+dev discussion/patches/pulls/bugs/help

Archives are clonable:
	git clone --mirror https://bogomips.org/unicorn-public
	git clone --mirror http://ou63pmih66umazou.onion/unicorn-public

Newsgroups are available over NNTP:
	nntp://news.public-inbox.org/inbox.comp.lang.ruby.unicorn
	nntp://ou63pmih66umazou.onion/inbox.comp.lang.ruby.unicorn

 note: .onion URLs require Tor: https://www.torproject.org/

AGPL code for this site: git clone https://public-inbox.org/ public-inbox