Phusion Passenger turns Apache and Nginx into a full-featured application server for Ruby and Python web apps. It has a strong focus on ease of use, stability and performance. Phusion Passenger is built on top of tried-and-true, battle-hardened Unix technologies, yet at the same time introduces innovations not found in most traditional Unix servers. Since mid-2012, it aims to be the ultimate polyglot application server.
Today we are pleased to announce Release Candidate 6 of Phusion Passenger 4.0. The 4.x series is a huge improvement over the 3.x series: during the development of 4.0, we’ve introduced a myriad of changes which we’ve covered in past beta preview articles:
- Support for multiple Ruby versions, support for Python WSGI, multithreading, evented core similar to Nginx and Node.js, real-time response buffering, improved zero-copy architecture, better error diagnostics.
- JRuby and Rubinius support.
- Out-of-Band Work.
- Support for the Rack socket hijacking API
- Improved stability and test suite.
Release Candidate 5 was a private interim release for Phusion Passenger Enterprise customers only.
Changes in 4.0 RC 5 and RC 6
The most important changes in RC 5 and RC 6 are as follows:
- The default config snippet for Apache has changed! It must now contain a
PassengerDefaultRubyoption. The installer has been updated to output this option. The
PassengerRubyoption still exists, but it’s only used for configuring different Ruby interpreters in different contexts. Please refer to the manual for more information.
- We now provide GPG digital signatures for all file releases by Phusion. More information can be found in the manual.
- WebSocket support on Nginx. Requires Nginx >= 1.3.15.
passenger-statusnow displays process memory usage and time when it was last used. The latter fixes issue #853.
- Exceptions in Rack application objects are now caught to prevent application processes from exiting.
passenger-configtool now supports the
--ruby-commandargument, which helps the user with figuring out the correct Ruby command to use in case s/he wants to use multiple Ruby interpreters. The manual has also been updated to mention this tool.
- Fixed streaming responses on Apache.
- Worked around an OS X Unix domain socket bug. Fixes issue #854.
- Out-of-Band Garbage Collection now works properly when the application has disabled garbage collection. Fixes issue #859.
- Fixed support for /usr/bin/python on OS X. Fixes issue #855.
- Fixed looping-without-sleeping in the ApplicationPool garbage collector if PassengerPoolIdleTime is set to 0. Fixes issue #858.
- Fixed some process memory usage measurement bugs.
- Fixed process memory usage measurement on NetBSD. Fixes issue #736.
- Fixed a file descriptor leak in the Out-of-Band Work feature. Fixes issue #864.
- The PassengerPreStart helper script now uses the default Ruby
interpreter specified in the web server configuration, and no longer
rubycommand to be in
- Updated preferred PCRE version to 8.32.
- Worked around some RVM bugs and generally improved RVM support.
- The ngx_http_stub_status_module is now enabled by default.
- Performance optimizations.
Installing and testing 4.0.0 Release Candidate 6
Open source users can install the open source version of 4.0 RC 6 with the following commands:
gem install passenger --pre passenger-install-apache2-module passenger-install-nginx-module
You can also download the tarball at Google Code.
In-depth installation and upgrade instructions can be found in the Installation section of the documentation. The documentation has been updated to cover 4.0 changes, including Enterprise features. You can view them online here:
We are excited about the final release. You can help us by testing RC 6 and reporting any bugs. Please submit bug reports to our bug tracker.