Recent Releases of https://github.com/puma/puma
https://github.com/puma/puma - v7.2.0
7.2.0 On The Corner
-
Features
- Add workers
:auto([#3827]) - Make it possible to restrict control server commands to stats ([#3787])
- Add workers
-
Bugfixes
- Don't break if
WEB_CONCURRENCYis set to a blank string ([#3837]) - Don't share server between worker 0 and descendants on refork ([#3602])
- Fix phase check race condition in
Puma::Cluster#check_workers([#3690]) - Fix advertising of CLI config before config files are loaded ([#3823])
- Don't break if
-
Performance
- 17% faster HTTP parsing through pre-interning env keys ([#3825])
- Implement
dsizeanddcompactfunctions forPuma::HttpParser, which makes Puma's C-extension GC-compactible ([#3828])
-
Refactor
- Remove
NoMethodErrorrescue inReactor#select_loop([#3831]) - Various cleanups in the C extension ([#3814])
- Monomorphize
handle_requestreturn ([#3802])
- Remove
-
Docs
- Change link to
docs/deployment.mdinREADME.md([#3848]) - Fix formatting for each signal description in signals.md ([#3813])
- Update deployment and Kubernetes docs with Puma configuration tips ([#3807])
- Rename master to main ([#3809], [#3808], [#3800])
- Fix some minor typos in the docs ([#3804])
- Add
GOVERNANCE.md,MAINTAINERS([#3826]) - Remove Code Climate badge ([#3820])
- Add @joshuay03 to the maintainer list
- Change link to
-
CI
- Use Minitest 6 where applicable ([#3859])
- Many test suite improvements and flake fixes ([#3861], [#3863], [#3860], [#3852], [#3857], [#3856], [#3845], [#3843], [#3842], [#3841], [#3822], [#3817], [#3764])
New Contributors
- @moozzi made their first contribution in https://github.com/puma/puma/pull/3848
- @ybiquitous made their first contribution in https://github.com/puma/puma/pull/3813
- @jrafanie made their first contribution in https://github.com/puma/puma/pull/3804
Full Changelog: https://github.com/puma/puma/compare/v7.1.0...v7.2.0
- Ruby
Published by nateberkopec about 1 month ago
https://github.com/puma/puma - v7.1.0
7.1.0 / 2025-10-16 - Neon Witch
-
Features
- Introduce
after_worker_shutdownhook ([#3707]) - Reintroduce keepalive "fast inline" behavior. Provides faster (8x on JRuby & 1.4x on Ruby) pipeline processing ([#3794])
- Introduce
-
Bugfixes
- Skip reading zero bytes when request body is buffered ([#3795])
- Fix
PUMA_LOG_CONFIG=1logging twice with prune_bundler enabled ([#3778]) - Fix prune_bundler not showing in
PUMA_LOG_CONFIG=1output ([#3779]) - Guard ThreadPool method call, which may be nil during shutdown ([#3791], [#3790])
- Set
Thread.current.puma_serverin Thread init code, not every request ([#3774]) - Fix race condition while deleting pidfile ([#3657])
New Contributors
- @nerdrew made their first contribution in https://github.com/puma/puma/pull/3707
- @mopp made their first contribution in https://github.com/puma/puma/pull/3783
- @marksmith made their first contribution in https://github.com/puma/puma/pull/3657
- @Nymuxyzo made their first contribution in https://github.com/puma/puma/pull/3762
Full Changelog: https://github.com/puma/puma/compare/v7.0.4...v7.1.0
- Ruby
Published by schneems 5 months ago
https://github.com/puma/puma -
What's Changed
- Move sleep cluster logic to its own class by @schneems in https://github.com/puma/puma/pull/3746
- puma_http11.c: Use interned UTF-8 strings for hash keys by @byroot in https://github.com/puma/puma/pull/3754
- Strip whitespace from the beginnings of header values by @kenballus in https://github.com/puma/puma/pull/3742
- Fix SSL_shutdown error handling by @marshall-lee in https://github.com/puma/puma/pull/3703
New Contributors
- @kenballus made their first contribution in https://github.com/puma/puma/pull/3742
Full Changelog: https://github.com/puma/puma/compare/v7.0.3...v7.0.4
- Ruby
Published by schneems 5 months ago
https://github.com/puma/puma - v7.0.3
7.0.3 / 2025-09-13
-
Performance
- server.rb - process_client - add ka to todo if readable & complete ([#3748])
-
Bugfixes
- Convert PUMA_PERSISTENT_TIMEOUT to an Integer ([#3749])
- Ruby
Published by schneems 6 months ago
https://github.com/puma/puma - v7.0.2
What's Changed
- Fix Puma not booting if queue_requests disabled by @stanhu in https://github.com/puma/puma/pull/3731
- Replace
sleep 0.001 while out_of_band_runningwith condition variable by @bensheldon in https://github.com/puma/puma/pull/3729 - bug: control_cli.rb - Fixup
pumactlcode to load puma.rb fordeprecate_method_changeby @MSP-Greg in https://github.com/puma/puma/pull/3736
New Contributors
- @bensheldon made their first contribution in https://github.com/puma/puma/pull/3729
Full Changelog: https://github.com/puma/puma/compare/v7.0.1...v7.0.2
- Ruby
Published by schneems 6 months ago
https://github.com/puma/puma - v7.0.1
What's Changed
- Add backward compatibility aliases for Events class methods by @tannakartikey in https://github.com/puma/puma/pull/3725
Full Changelog: https://github.com/puma/puma/compare/v7.0.0...v7.0.1
- Ruby
Published by schneems 6 months ago
https://github.com/puma/puma - v7.0.0 - Romantic Warrior
7.0.0
- Breaking changes
- Set default
max_keep_aliveto 999 ([#3719]) - Increase
persistent_timeoutdefault to 65 seconds ([#3378]) - Raise an ArgumentError if no block given to hooks ([#3377])
- Don't set env['HTTP_VERSION'] for Rack > 3.1 ([#3711], [#3576])
- Runner.rb - remove
ruby_enginemethod, deprecated Nov-2024 ([#3701]) - Set conditional config defaults after CLI options are parsed and config files are loaded ([#3297])
- Response headers set to lowercase ([#3704])
- Update minimum Ruby version to 3.0 ([#3698])
- Rename callback hooks ([#3438])
- Set default
| Old hook name | New hook name |
|---|---|
| on_worker_boot | before_worker_boot |
| on_worker_shutdown | before_worker_shutdown |
| on_restart | before_restart |
| on_booted | after_booted |
| on_stopped | after_stopped |
| on_refork | before_refork |
| on_thread_start | before_thread_start |
| on_thread_exit | before_thread_exit |
| on_worker_fork | before_worker_fork |
-
Features
- Fix long tail response problem with keepalive connections ([#3678]) (Previously released in 7.0.0.pre1, this was a high effort change)
- Introduce support for fiber-per-request. ([#3101])
- Add support for
rack.response_finished([#3681]) - Feature/support custom logger with request logs ([#3140])
-
Bugfixes
- Fixes a bug where triggering hooks in the ThreadPool fails ([#3716])
- Fix error_logger inproperly logging
env[QUERY_STRING]([#3713], [#3625]) - Fix handling of invalid Transfer-Encoding header errors ([#3702])
- Fix socket leak on monitor wakeup
NoMethodErrorinReactor#select_loop([#3696], [#3695]) - CI: puma_socket.rb fixup socket/request writes ([#3684])
- Warn when RUBY_MN_THREADS env var is set ([#3721])
- Improve the DSL
preload_app!doc ([#3712]) - Fix the ability to focus individual tests ([#3705])
- Set env['rack.hijack'] to client.method(:full_hijack) ([#3073])
-
Performance
- server.rb - initialize ivars
@reactorand@env_set_http_version([#3714])
- server.rb - initialize ivars
-
Refactor
- Simplify
Puma::DSL#process_hooklogic ([#3710]) - Dry up deprecation warnings and fix deprecation warnings when running CI. ([#3709], [#3708])
- Ensure and enforce that configs are loaded before options are accessed ([#3616])
- Simplify
- Ruby
Published by schneems 6 months ago
https://github.com/puma/puma - v7.0.0.pre1
- Changed
- Fix long tail response problem with keepalive connections ([#3678])
Please try this release and report issues on the tracker if you have a problem.
- Ruby
Published by schneems 7 months ago
https://github.com/puma/puma - v6.6.1
6.6.1 / 2025-07-30
- Bugfixes
- Accept
to_pathto benilon request bodies ([#3635]) - Fix single runner stats before the server start ([#3572])
- Fix incomplete worker boot state on refork ([#3601])
- Improve HttpParserError messages for better debugging ([#3586])
- Fix refork logs to distinguish from phased restarts ([#3598])
- Fix
rack.after_replyso it doesn't interrupt chain on error ([#3680])
- Accept
- Ruby
Published by schneems 7 months ago
https://github.com/puma/puma - 6.6.0 - Return to Forever
Some stuff for JRuby users (SIGUSR2 trap), reforkers (see below), and a few debug/logging/observability related goodies.
-
Features
- Option to turn off SIGUSR2 trapping ([#3570], [#3567])
- Shorten
ThreadPooltrimmer and reaper thread names ([#3383]) - Add after_refork hook ([#3386])
- Add busy threads stat ([#3517])
- Add a debug log before running each type of hook ([#3375])
- Allow alternative schemes in Binder ([#3348], [#3302])
- Avoid spawning
Threadpool#trimthread if pool size is fixed ([#3384])
-
Bugfixes
- Change
HttpParserErrorto be subclass ofStandardError([#3590], [#3552]) - added test cases
- fix update phased restart symlink folder
- Change
-
Performance
- Only ping worker 0 during phased restart if using fork worker ([#3568])
-
Refactor
- Fix multi-delimiter split to get status app token ([#3505])
- Change ping to use const ([#3595])
- Fixup use of Puma::Const::PipeRequest constants ([#3565])
- Update DSL hook processing logic to be consistent ([#3376])
- Ruby
Published by nateberkopec about 1 year ago
https://github.com/puma/puma - 6.5.0 - Sky's Version
They say good things come to wait, and you've all had to wait a long time for 6.5.0 because @nateberkopec had another daughter: Sky!
-
Features
- Print RUBY_DESCRIPTION when Puma starts ([#3407])
- Set the worker process count automatically when using WEB_CONCURRENCY=auto ([#3439], [#3437])
- Mark as ractor-safe ([#3486], [#3422])
- Add option
enable_keep_alive.truemimics existing behavior, but now can usefalseto disable keepalive to reduce queue tail latency ([#3496]) - Add parameters to Puma methods to allow CI to change ENV in isolation ([#3485])
- Add
ssl_ciphersuitesoption for TLSv1.3 ciphers ([#3359], [#3343]) - You can now use
--threads 5orthreads 5to config max/min threads with a single number (used to need to say5:5) ([#3309]) - Option to turn off systemd plugin ([#3425], [#3424])
- Add
on_stoppedhook ([#3411], [#3380])
-
Bugfixes
- Handle blank environment variables when loading config ([#3539])
- lib/rack/handler/puma.rb - fix for rackup v1.0.1, adjust Gemfile ([#3532], [#3531])
- null_io.rb - add
external_encoding,set_encoding,binmode,binmode?([#3214]) - Implement NullIO#seek and #pos to mimic IO ([#3468])
- add support in rack handler & fix regression in binder for linux abstract namespace sockets ([#3508])
- Use actual thread local for
Puma::Server.current. ([#3360]) - client.rb - fix request chunked body handling ([#3338], [#3337])
- Properly handle two requests seen in the initial buffer ([#3332])
- Fix response repeated status line when request is invalid or errors are raised ([#3308], [#3307])
- Fix child processes not being reaped when
Process.detachused ([#3314], [#3313])
-
JRuby
- Make HTTP length constants configurable ([#3518])
- Fixup jruby_restart.rb & launcher.rb to work with ARM64 macOS JRuby ([#3467])
-
Performance
- Avoid checking if all workers reached timeout unless idle timeout is configured ([#3341])
- Request body - increase read size to 64 kB ([#3548])
- single mode skip wait_for_less_busy_worker ([#3325])
-
Refactor
- A ton of CI/test improvements by @MSP-Greg, as usual.
- Add ThreadPool#stats and adjust Server#stats to use it ([#3527])
- normalize whitespace in worker stats string ([#3513])
- rack/handler/puma.rb - ssl - use
start_with?, add test ([#3510]) - extconf.rb - add logging for OpenSSL versions ([#3370])
- Lazily require
Puma::Rack::Builder([#3340]) - Refactor: Constantize worker pipe request types ([#3318])
-
Docs
- stats.md improvements ([#3514])
- control_cli.rb: Harmonize help message with bin/puma ([#3434])
- dsl.rb: Clarify a callback's argument ([#3435])
- lib/rack/handler/puma.rb - relocate and fixup module comment ([#3495])
- Ruby
Published by nateberkopec over 1 year ago
https://github.com/puma/puma - 6.4.3
- Security
- Discards any headers using underscores if the non-underscore version also exists. Without this, an attacker could overwrite values set by intermediate proxies (e.g. X-Forwarded-For). (CVE-2024-45614/GHSA-9hf4-67fc-4vf4)
- Ruby
Published by nateberkopec over 1 year ago
https://github.com/puma/puma - 6.4.2
- Security
- Limit the size of chunk extensions. Without this limit, an attacker could cause unbounded resource (CPU, network bandwidth) consumption. (GHSA-c2f4-cvqm-65w2)
- Ruby
Published by nateberkopec over 1 year ago
https://github.com/puma/puma - 6.4.1
-
Bugfixes
- DSL#warn_if_in_single_mode - fixup when workers set via CLI ([#3256])
- Fix
idle-timeoutnot working in cluster mode ([#3235], [#3228], [#3282], [#3283]) - Fix worker 0 timing out during phased restart ([#3225], [#2786])
- context_builder.rb - require openssl if verify_mode != 'none' ([#3179])
- Make puma cluster process suitable as PID 1 ([#3255])
- Improve Puma::NullIO consistency with real IO ([#3276])
- extconf.rb - fixup to detect openssl info in Ruby build ([#3271], [#3266])
- MiniSSL.java - set serialVersionUID, fix RaiseException deprecation ([#3270])
- dsl.rb - fix warn_if_in_single_mode when WEB_CONCURRENCY is set ([#3265], [#3264])
-
Maintenance
- LOTS of test refactoring to make tests more stable and easier to write - thanks to @MSP-Greg!
- Fix bug in tests re: TestPuma::HOST4 ([#3254])
- Dockerfile for minimal repros: use Ruby 3.2, expect bundler installed ([#3245])
- fix define_method calls, use Symbol parameter instead of String ([#3293])
-
Docs
- README.md - add the puma-acme plugin ([#3301])
- Remove
--keep-file-descriptorsflag from systemd docs ([#3248]) - Note symlink mechanism in restart documentation for hot restart ([#3298])
- Ruby
Published by nateberkopec about 2 years ago
https://github.com/puma/puma - 6.4.0 - The Eagle of Durango
America is #1 in professional cycling, baby!
-
Features
- on_thread_exit hook ([#2920])
- on_thread_start_hook ([#3195])
- Shutdown on idle ([#3209], [#2580])
- New error message when control server port taken ([#3204])
-
Refactor
- Remove
Forwardabledependency ([#3191], #3190) - Update URLMap Regexp usage for Ruby v3.3 ([#3165])
- Remove
-
Bugfixes
- Bring the cert_pem: parameter into parity with the cert: parameter to ssl_bind. ([#3174])
- Fix using control server with IPv6 host ([#3181])
- control_cli.rb - add require_relative 'log_writer' ([#3187])
- Fix cases where fallback Rack response wasn't sent to the client ([#3094])
- Ruby
Published by nateberkopec over 2 years ago
https://github.com/puma/puma - 5.6.7
Security
Address HTTP request smuggling vulnerabilities with zero-length Content Length header and trailer fields (GHSA-68xg-gqqm-vgj8)
- Ruby
Published by nateberkopec over 2 years ago
https://github.com/puma/puma - 6.3.1
- Security
- Address HTTP request smuggling vulnerabilities with zero-length Content Length header and trailer fields (GHSA-68xg-gqqm-vgj8)
- Ruby
Published by nateberkopec over 2 years ago
https://github.com/puma/puma - 6.3.0 - Mugi No Toki Itaru
Japan has 72 traditional microseasons. May 31 is the first day of 麦秋至, which means the time of the wheat/barley harvest.
-
Features
- Add dsl method
supported_http_methods([#3106], [#3014]) - Puma error responses no longer have any fingerprints to indicate Puma ([#3161], [#3037])
- Support decryption of SSL key ([#3133], [#3132])
- Add dsl method
-
Bugfixes
- Don't send 103 early hints response when only invalid headers are used ([#3163])
- Handle malformed request path ([#3155], [#3148])
- Misc lib file fixes - trapping additional errors, CI helper ([#3129])
- Fixup req form data file upload with "r\n" line endings ([#3137])
- Restore rack 1.6 compatibility ([#3156])
-
Refactor
- const.rb - Update Puma::HTTP_STATUS_CODES ([#3162])
- Clarify Reactor#initialize ([#3151])
New Contributors
- @severin made their first contribution in https://github.com/puma/puma/pull/3156
Full Changelog: https://github.com/puma/puma/compare/v6.2.2...v6.3.0
- Ruby
Published by nateberkopec almost 3 years ago
https://github.com/puma/puma - 6.2.2
- Bugfixes
- Fix Rack-related NameError by adding :: operator ([#3118], [#3117])
- Ruby
Published by nateberkopec almost 3 years ago
https://github.com/puma/puma - 6.2.1
6.2.1 / 2023-03-31
- Bugfixes
- Fix java 8 compatibility ([#3109], [#3108])
- Always write io_buffer when in "enum bodies" branch. ([#3113], [#3112])
- Fix warn_if_in_single_mode incorrect message ([#3111])
- Ruby
Published by nateberkopec almost 3 years ago
https://github.com/puma/puma - 6.2 - Speaking of Now

Pat Metheny Group - Speaking of Now
-
Features
- Ability to supply a custom logger ([#2770], [#2511])
- Warn when clustered-only hooks are defined in single mode ([#3089])
- Adds the on_booted event ([#2709])
-
Bugfixes
- Loggers - internal_write - catch Errno::EINVAL ([#3091])
- commonlogger.rb - fix HIJACK time format, use constants, not strings ([#3074])
- Fixed some edge cases regarding request hijacking ([#3072])
- Ruby
Published by nateberkopec almost 3 years ago
https://github.com/puma/puma - 6.1.1
- Bugfixes
- We no longer try to use the systemd plugin for JRuby ([#3079])
- Allow ::Rack::Handler::Puma.run to work regardless of whether Rack/Rackup are loaded ([#3080])
- Ruby
Published by nateberkopec about 3 years ago
https://github.com/puma/puma - 6.1.0 The Way Up

-
Features
- WebSocket support via partial hijack ([#3058], [#3007])
- Add built-in systemd notify support ([#3011])
- Periodically send status to systemd ([#3006], [#2604])
- Introduce the ability to return 413: payload too large for requests ([#3040])
- Log loaded extensions when
PUMA_DEBUGis set ([#3036], [#3020])
-
Bugfixes
- Fix issue with rack 3 compatibility re: rackup ([#3061], [#3057])
- Allow setting TCP low_latency with SSL listener ([#3065])
-
Performance
- Reduce memory usage for large file uploads ([#3062])
- Ruby
Published by nateberkopec about 3 years ago
https://github.com/puma/puma - 6.0.2
6.0.2 / 2023-01-01
- Refactor
- Remove use of etc and time gems in Puma ([#3035], [#3033])
- Refactor const.rb - freeze ([#3016])
- Ruby
Published by nateberkopec about 3 years ago
https://github.com/puma/puma - 6.0.1
6.0.1 / 2022-12-20
- Bugfixes
- Handle waking up a closed selector in Reactor#add ([#3005])
- Fixup response processing, enumerable bodies ([#3004], [#3000])
- Correctly close app body for all code paths ([#3002], [#2999])
- Refactor
- Add IOBuffer to Client, remove from ThreadPool thread instances ([#3013])
Full Changelog: https://github.com/puma/puma/compare/v6.0.0...v6.0.1
- Ruby
Published by dentarg about 3 years ago
https://github.com/puma/puma - 6.0.0
6.0.0 Sunflower

-
Breaking Changes
- Dropping Ruby 2.2 and 2.3 support (now 2.4+) ([#2919])
- Remote_addr functionality has changed ([#2652], [#2653])
- No longer supporting Java 1.7 or below (JRuby 9.1 was the last release to support this) ([#2849])
- Remove nakayoshi GC ([#2933], [#2925])
- wait_for_less_busy_worker is now default on ([#2940])
- Prefix all environment variables with
PUMA_([#2924], [#2853]) - Removed some constants ([#2957], [#2958], [#2959], [#2960])
- The following classes are now part of Puma's private API:
Client,Cluster::Worker,Cluster::Worker,HandleRequest. ([#2988]) - Configuration constants like
DefaultRackupremoved ([#2928]) - Extracted
LogWriterfromEvents([#2798])
-
Features
- Increase throughput on large (100kb+) response bodies by 3-10x ([#2896], [#2892])
- Increase throughput on file responses ([#2923])
- Add support for streaming bodies in Rack. ([#2740])
- Allow OpenSSL session reuse via a 'reuse' ssl_bind method or bind string query parameter ([#2845])
- Allow
run_hooksto pass a hash to blocks for use later ([#2917], [#2915]) - Allow using
preload_app!withfork_worker([#2907]) - Support request_body_wait metric with higher precision ([#2953])
- Allow header values to be arrays (Rack 3) ([#2936], [#2931])
- Export Puma/Ruby versions in /stats ([#2875])
- Allow configuring request uri max length & request path max length ([#2840])
- Add a couple of public accessors ([#2774])
- Log entire backtrace when worker start fails ([#2891])
- [jruby] Enable TLSv1.3 support ([#2886])
- [jruby] support setting TLS protocols + rename ssl_cipher_list ([#2899])
- [jruby] Support a truststore option ([#2849], [#2904], [#2884])
-
Bugfixes
- Load the configuration before passing it to the binder ([#2897])
- Do not raise error raised on HTTP methods we don't recognize or support, like CONNECT ([#2932], [#1441])
- Fixed a memory leak when creating a new SSL listener ([#2956])
-
Refactor
- log_writer.rb - add internal_write method ([#2888])
- Extract prune_bundler code into it's own class. ([#2797])
- Refactor Launcher#run to increase readability (no logic change) ([#2795])
- Ruby 3.2 will have native IO#wait_* methods, don't require io/wait ([#2903])
- Various internal API refactorings ([#2942], [#2921], [#2922], [#2955])
- Ruby
Published by nateberkopec over 3 years ago
https://github.com/puma/puma - 5.6.5
5.6.5 / 2022-08-23
- Bugfixes
- NullIO#closed should return false ([#2883])
- Puma::ControlCLI - allow refork command to be sent as a request ([#2868], [#2866])
- [jruby] Fix TLS verification hang ([#2890], [#2729])
- extconf.rb - don't use pkg_config('openssl') if '--with-openssl-dir' is used ([#2885], [#2839])
- MiniSSL - detect SSL_CTX_set_dh_auto ([#2864], [#2863])
- Fix rack.after_reply exceptions breaking connections ([#2861], [#2856])
- Escape SSL cert and filenames ([#2855])
- Fail hard if SSL certs or keys are invalid ([#2848])
- Fail hard if SSL certs or keys cannot be read by user ([#2847])
- Fix build with Opaque DH in LibreSSL 3.5. ([#2838])
- Pre-existing socket file removed when TERM is issued after USR2 (if puma is running in cluster mode) ([#2817])
- Fix Puma::StateFile#load incompatibility ([#2810])
- Ruby
Published by nateberkopec over 3 years ago
https://github.com/puma/puma - 4.3.12
Security
- Close several HTTP Request Smuggling exploits (CVE-2022-24790)
- Ruby
Published by nateberkopec almost 4 years ago
https://github.com/puma/puma - 5.6.4
- Security
- Close several HTTP Request Smuggling exploits (CVE-2022-24790)
The 5.6.3 release was a mistake (released the wrong branch), 5.6.4 is correct.
- Ruby
Published by nateberkopec almost 4 years ago
https://github.com/puma/puma - 5.6.2
5.6.2 / 2022-02-11
- Bugfix/Security
- Response body will always be
closed. (GHSA-rmj8-8hhh-gv5h, related to [#2809])
- Response body will always be
- Ruby
Published by nateberkopec about 4 years ago
https://github.com/puma/puma - 4.3.11
- Bugfix/Security
- Response body will always be
closed. (GHSA-rmj8-8hhh-gv5h, related to [#2809])
- Response body will always be
- Ruby
Published by nateberkopec about 4 years ago
https://github.com/puma/puma - 5.6.1
Bugfixes
- Reverted a commit which appeared to be causing occasional blank header values (see issue #2808) (#2809)
Full Changelog: https://github.com/puma/puma/compare/v5.6.0...v5.6.1
- Ruby
Published by dentarg about 4 years ago
https://github.com/puma/puma - 5.6.0 - Birdie's Version
Maintainer @nateberkopec had a daughter, nicknamed Birdie:

5.6.0 / 2022-01-25
-
Features
- Support
localhostintegration inssl_bind([#2764], [#2708]) - Allow backlog parameter to be set with ssl_bind DSL ([#2780])
- Remove yaml (psych) requirement in StateFile ([#2784])
- Allow culling of oldest workers, previously was only youngest ([#2773], [#2794])
- Add worker_check_interval configuration option ([#2759])
- Always send lowlevel_error response to client ([#2731], [#2341])
- Support for cert_pem and key_pem with ssl_bind DSL ([#2728])
- Support
-
Bugfixes
- Keep thread names under 15 characters, prevents breakage on some OSes ([#2733])
- Fix two 'old-style-definition' compile warning ([#2807], [#2806])
- Log environment correctly using option value ([#2799])
- Fix warning from Ruby master (will be 3.2.0) ([#2785])
- extconf.rb - fix openssl with old Windows builds ([#2757])
- server.rb - rescue handling (
Errno::EBADF) for@notify.close([#2745])
-
Refactor
- server.rb - refactor code using @options[:remote_address] ([#2742])
- [jruby] a couple refactorings - avoid copy-ing bytes ([#2730])
- Ruby
Published by nateberkopec about 4 years ago
https://github.com/puma/puma - 5.5.2
Re-allows UTF-8 in HTTP header values
- Ruby
Published by nateberkopec over 4 years ago
https://github.com/puma/puma - 4.3.10
Re-allows UTF-8 in HTTP header values
- Ruby
Published by nateberkopec over 4 years ago
https://github.com/puma/puma - 4.3.9
https://github.com/puma/puma/security/advisories/GHSA-48w2-rm65-62xx
- Ruby
Published by nateberkopec over 4 years ago
https://github.com/puma/puma - 5.5.1
https://github.com/puma/puma/security/advisories/GHSA-48w2-rm65-62xx
- Ruby
Published by nateberkopec over 4 years ago
https://github.com/puma/puma - 5.5.0 - Zawgyi
5.5.0 / 2021-09-19

Zawgyi (Burmese: ဇော်ဂျီ) is a semi-immortal human alchemist and mystic with supernatural powers and often seen with a magic stick and a red hat. Zawgyi is one of the supernatural figures in Burmese mythology and folklore. Name chosen by new (Myanma!) contributor @ye-lin-aung.
The headline feature of this release is a new integration with the localhost gem. Localhost takes care of creating a self-signed SSL certificate for you in development. Require it in your config.ru:
# Sinatra
require './app'
require 'localhost/authority'
run Sinatra::Application
# Rails
require 'localhost/authority' if Rails.env.development?
run MyRailsApp::Application
... and in the development environment, Puma will use a self-signed SSL cert generated by Localhost if no other cert is provided.
Note: Make sure you set up Puma to run on an SSL socket: puma -b 'ssl://localhost:9292' config.ru
-
Features
- Automatic SSL certificate provisioning for localhost, via
localhostgem ([#2610], [#2257]) - add support for the PROXY protocol (v1 only) ([#2654], [#2651])
- Add a semantic CLI option for no config file ([#2689])
- Automatic SSL certificate provisioning for localhost, via
-
Bugfixes
- More elaborate exception handling - lets some dead pumas die. ([#2700], [#2699])
- allow multiple after_worker_fork hooks ([#2690])
- Preserve BUNDLE_APP_CONFIG on worker fork ([#2688], [#2687])
-
Performance
- Fix performance of server-side SSL connection close. ([#2675])
- Ruby
Published by nateberkopec over 4 years ago
https://github.com/puma/puma - 5.4.0 - Super Flight

-
Features
- Better/expanded names for threadpool threads ([#2657])
- Allow pkg_config for OpenSSL ([#2648], [#1412])
- Add
rack_url_schemeto Puma::DSL, allows setting ofrack.url_schemeheader ([#2586], [#2569])
-
Bugfixes
Binder#parse- allow for symlinked unix path, add create_activated_fds debug ENV ([#2643], [#2638])- Fix deprecation warning: minissl.c - Use Random.bytes if available ([#2642])
- Client certificates: set session id context while creating SSLContext ([#2633])
-
Refactor
- Replace
IO.selectwithIO#wait_*when checking a single IO ([#2666])
- Replace
- Ruby
Published by nateberkopec over 4 years ago
https://github.com/puma/puma - 5.3.2
- Bugfixes
- Gracefully handle Rack not accepting CLI options (#2630, #2626)
- Fix sigterm misbehavior (#2629)
- Improvements to keepalive-connection shedding (#2628)
This version was released 2021-05-21.
- Ruby
Published by dentarg over 4 years ago
https://github.com/puma/puma -
- Security
- Close keepalive connections after the maximum number of fast inlined requests (#2625)
- Ruby
Published by nateberkopec almost 5 years ago
https://github.com/puma/puma - 5.3.1
- Security
- Close keepalive connections after the maximum number of fast inlined requests (#2625)
- Ruby
Published by nateberkopec almost 5 years ago
https://github.com/puma/puma - 5.3.0 - Sweetnighter
5.3.0 / 2021-05-07

Contributor @MSP-Greg codenamed this release "Sweetnighter".
-
Features
- Add support for Linux's abstract sockets ([#2564], [#2526])
- Add debug to worker timeout and startup ([#2559], [#2528])
- Print warning when running one-worker cluster ([#2565], [#2534])
- Don't close systemd activated socket on pumactl restart ([#2563], [#2504])
-
Bugfixes
- systemd - fix event firing ([#2591], [#2572])
- Immediately unlink temporary files ([#2613])
- Improve parsing of HTTP_HOST header ([#2605], [#2584])
- Handle fatal error that has no backtrace ([#2607], [#2552])
- Fix timing out requests too early ([#2606], [#2574])
- Handle segfault in Ruby 2.6.6 on thread-locals ([#2567], [#2566])
- Server#closed_socket? - parameter may be a MiniSSL::Socket ([#2596])
- Define UNPACK_TCP_STATE_FROM_TCP_INFO in the right place ([#2588], [#2556])
- request.rb - fix chunked assembly for ascii incompatible encodings, add test ([#2585], [#2583])
-
Performance
- Reset peerip only if remote_addr_header is set ([#2609])
- Reduce puma_parser struct size ([#2590])
-
Refactor
- Refactor drain on shutdown ([#2600])
- Micro optimisations in
wait_for_less_busy_workerfeature ([#2579]) - Lots of test fixes
- Ruby
Published by nateberkopec almost 5 years ago
https://github.com/puma/puma - 5.2.2
- Bugfixes
- Add
#flushand#syncmethods toPuma::NullIO([#2553]) - Restore
sync=trueonSTDOUTandSTDERRstreams ([#2557])
- Add
- Ruby
Published by nateberkopec almost 5 years ago
https://github.com/puma/puma - 5.2.1
2021-02-05
- Bugfixes
- Fix TCP cork/uncork operations to work with ssl clients ([#2550])
- Require rack/common_logger explicitly if :verbose is true ([#2547])
- MiniSSL::Socket#write - use data.byteslice(wrote..-1) ([#2543])
- Set
@env[CONTENT_LENGTH]value as string. ([#2549])
- Ruby
Published by nateberkopec about 5 years ago
https://github.com/puma/puma - 5.2.0
-
Features
- 10x latency improvement for MRI on ssl connections by reducing overhead ([#2519])
- Add option to specify the desired IO selector backend for libev ([#2522])
- Add ability to set OpenSSL verification flags (MRI only) ([#2490])
- Uses
flushafter writing messages to avoid mutating $stdout and $stderr usingsync=true([#2486])
-
Bugfixes
- MiniSSL - Update dhparam to 2048 bit for use with SSL_CTX_set_tmp_dh ([#2535])
- Change 'Goodbye!' message to be output after listeners are closed ([#2529])
- Fix ssl bind logging with 0.0.0.0 and localhost ([#2533])
- Fix compiler warnings, but skipped warnings related to ragel state machine generated code ([#1953])
- Fix phased restart errors related to nio4r gem when using the Puma control server ([#2516])
- Add
#stringmethod toPuma::NullIO([#2520]) - Fix binding via Rack handler to IPv6 addresses ([#2521])
-
Refactor
- Refactor MiniSSL::Context on MRI, fix MiniSSL::Socket#write ([#2519])
- Remove
Server#read_body([#2531]) - Fail build if compiling extensions raises warnings on GH Actions, configurable via
MAKE_WARNINGS_INTO_ERRORS([#1953])
- Ruby
Published by nateberkopec about 5 years ago
https://github.com/puma/puma - 5.1.1
- Bugfixes
- Fix over eager matching against banned header names ([#2510])
- Ruby
Published by nateberkopec about 5 years ago
https://github.com/puma/puma - 5.1.0
5.1.0 / 2020-11-30
-
Features
- Phased restart availability is now always logged, even if it is not available.
- Prints the loaded configuration if the environment variable
PUMA_LOG_CONFIGis present ([#2472]) - Integrate with systemd's watchdog and notification features ([#2438])
- Adds max_fast_inline as a configuration option for the Server object ([#2406])
- You can now fork workers from worker 0 using SIGURG w/o fork_worker enabled [#2449]
- Add option to bind to systemd activated sockets ([#2362])
- Add compile option to change the
QUERY_STRINGmax length ([#2485])
-
Bugfixes
- Fix JRuby handling in Puma::DSL#ssl_bind ([#2489])
- control_cli.rb - all normal output should be to @stdout ([#2487])
- Catch 'Error in reactor loop escaped: mode not supported for this object: r' ([#2477])
- Ignore Rails' reaper thread (and any thread marked forksafe) for warning ([#2475])
- Ignore illegal (by Rack spec) response header ([#2439])
- Close idle connections immediately on shutdown ([#2460])
- Fix some instances of phased restart errors related to the
jsongem ([#2473]) - Remove use of
jsongem to fix phased restart errors ([#2479]) - Fix grouping regexp of ILLEGAL_HEADER_KEY_REGEX ([#2495])
- Ruby
Published by nateberkopec over 5 years ago
https://github.com/puma/puma - 5.0.4
- Bugfixes
- Pass preloaded application into new workers if available when using
preload_app(#2461
- Pass preloaded application into new workers if available when using
- Ruby
Published by nateberkopec over 5 years ago
https://github.com/puma/puma - 5.0.3
A release with a bunch of bugfixes and stability improvements.
-
Bugfixes
- Add Client#io_ok?, check before Reactor#register (#2432)
- Fix hang on shutdown in refork (#2442)
- Fix
Bundler::GemNotFounderrors fornio4rgem during phased restarts (#2427, #2018) - Server run thread safety fix (#2435)
- Fire
on_bootedafter server starts (#2431, #2212) - Cleanup daemonization in rc.d script (#2409)
-
Refactor
- Remove accept_nonblock.rb, add test_integration_ssl.rb (#2448)
- Refactor status.rb - dry it up a bit (#2450)
- Extract req/resp methods to new request.rb from server.rb (#2419)
- Refactor Reactor and Client request buffering (#2279)
- client.rb - remove JRuby specific 'finish' code (#2412)
- Consolidate fast_write calls in Server, extract early_hints assembly (#2405)
- Remove upstart from docs (#2408)
- Consolidate option handling in Server, Server small refactors, doc changes (#2389)
- Ruby
Published by nateberkopec over 5 years ago
https://github.com/puma/puma - 5.0.2
Bugfix: Reverted API changes to Server.
- Ruby
Published by nateberkopec over 5 years ago
https://github.com/puma/puma - 5.0.1
This release fixed a critical error for CentOS users, and quieted some unnecessary error logging for Heroku users.
-
Bugfixes
- Fix LoadError in CentOS 8 ([#2381])
- Better error handling during force shutdown ([#2271])
- Prevent connections from entering Reactor after shutdown begins ([#2377])
- Fix error backtrace debug logging && Do not log request dump if it is not parsed ([#2376])
- Split TCP_CORK and TCP_INFO ([#2372])
- Do not log EOFError when a client connection is closed without write ([#2384])
-
Refactor
- Change Events#ssl_error signature from (error, peeraddr, peercert) to (error, ssl_socket) ([#2375])
- Consolidate option handling in Server, Server small refactors, doc chang ([#2373])
- Ruby
Published by nateberkopec over 5 years ago
https://github.com/puma/puma - 5.0 - Spoony Bard
5.0.0

-
Features
- Allow compiling without OpenSSL and dynamically load files needed for SSL, add 'no ssl' CI (#2305)
- EXPERIMENTAL: Add
fork_workeroption andreforkcommand for reduced memory usage by forking from a worker process instead of the master process. (#2099) - EXPERIMENTAL: Added
wait_for_less_busy_workerconfig. This may reduce latency on MRI through inserting a small delay before re-listening on the socket if worker is busy (#2079). - EXPERIMENTAL: Added
nakayoshi_forkoption. Reduce memory usage in preloaded cluster-mode apps by GCing before fork and compacting, where available. (#2093, #2256) - Added pumactl
thread-backtracescommand to print thread backtraces (#2054) - Added incrementing
requests_counttoPuma.stats. (#2106) - Increased maximum URI path length from 2048 to 8192 bytes (#2167, #2344)
lowlevel_error_handleris now called during a forced threadpool shutdown, and if a callable with 3 arguments is set, we now also pass the status code (#2203)- Faster phased restart and worker timeout (#2220)
- Added
state_permissionto config DSL to set state file permissions (#2238) - Added
Puma.stats_hash, which returns a stats in Hash instead of a JSON string (#2086, #2253) rack.multithreadandrack.multiprocessnow dynamically resolved bymax_threadandworkersrespectively (#2288)
-
Deprecations, Removals and Breaking API Changes
--controlhas been removed. Use--control-url(#1487)worker_directoryhas been removed. Usedirectory.- min_threads now set by environment variables PUMA_MIN_THREADS and MIN_THREADS. (#2143)
- max_threads now set by environment variables PUMA_MAX_THREADS and MAX_THREADS. (#2143)
- max_threads default to 5 in MRI or 16 for all other interpreters. (#2143)
- preload by default if workers > 1 (#2143)
- Puma::Plugin.workers_supported? has been removed. Use Puma.forkable? instead. (#2143)
tcp_modehas been removed without replacement. (#2169)- Daemonization has been removed without replacement. (#2170)
- Changed #connected_port to #connected_ports (#2076)
- Configuration:
environmentis read fromRAILS_ENV, ifRACK_ENVcan't be found (#2022) - Log binding on http:// for TCP bindings to make it clickable
-
Bugfixes
- Fix JSON loading issues on phased-restarts (#2269)
- Improve shutdown reliability (#2312, #2338)
- Close client http connections made to an ssl server with TLSv1.3 (#2116)
- Do not set user_config to quiet by default to allow for file config (#2074)
- Always close SSL connection in Puma::ControlCLI (#2211)
- Windows update extconf.rb for use with ssp and varied Ruby/MSYS2 combinations (#2069)
- Ensure control server Unix socket is closed on shutdown (#2112)
- Preserve
BUNDLE_GEMFILEenv var when usingprune_bundler(#1893) - Send 408 request timeout even when queue requests is disabled (#2119)
- Rescue IO::WaitReadable instead of EAGAIN for blocking read (#2121)
- Ensure
BUNDLE_GEMFILEis unspecified in workers if unspecified in master when usingprune_bundler(#2154) - Rescue and log exceptions in hooks defined by users (on_worker_boot, after_worker_fork etc) (#1551)
- Read directly from the socket in #read_and_drop to avoid raising further SSL errors (#2198)
- Set
Connection: closedheader when queue requests is disabled (#2216) - Pass queued requests to thread pool on server shutdown (#2122)
- Fixed a few minor concurrency bugs in ThreadPool that may have affected non-GVL Rubies (#2220)
- Fix
out_of_bandhook never executed if the number of worker threads is > 1 (#2177) - Fix ThreadPool#shutdown timeout accuracy (#2221)
- Fix
UserFileDefaultOptions#fetchto properly usedefault(#2233) - Improvements to
out_of_bandhook (#2234) - Prefer the rackup file specified by the CLI (#2225)
- Fix for spawning subprocesses with fork_worker option (#2267)
- Set
CONTENT_LENGTHfor chunked requests (#2287) - JRuby - Add Puma::MiniSSL::Engine#init? and #teardown methods, run all SSL tests (#2317)
- Improve shutdown reliability (#2312)
- Resolve issue with threadpool waiting counter decrement when thread is killed
- Constrain rake-compiler version to 0.9.4 to fix
ClassNotFoundexception when using MiniSSL with Java8. - Fix recursive
prune_bundler(#2319). - Ensure that TCP_CORK is usable
- Fix corner case when request body is chunked (#2326)
- Fix filehandle leak in MiniSSL (#2299)
-
Refactor
- Remove unused loader argument from Plugin initializer (#2095)
- Simplify
Configuration.random_tokenand remove insecure fallback (#2102) - Simplify
Runner#start_controlURL parsing (#2111) - Removed the IOBuffer extension and replaced with Ruby (#1980)
- Update
Rack::Handler::Puma.runto use**options(#2189) - ThreadPool concurrency refactoring (#2220)
- JSON parse cluster worker stats instead of regex (#2124)
- Support parallel tests in verbose progress reporting (#2223)
- Refactor error handling in server accept loop (#2239)
- Ruby
Published by nateberkopec over 5 years ago
https://github.com/puma/puma - v5.0.0.beta2
This is the final beta release before 5.0.0.
Differences versus 5.0.0.beta1 are these additional bugfixes:
- Fixed a typo re: maximum URI path length #2344
rack.multithreadandrack.multiprocessnow dynamically resolved bymax_threadandworkersrespectively (#2288)- Log binding on http:// for TCP bindings to make it clickable
- Fix JSON loading issues on phased-restarts (#2269)
- Improve shutdown reliability (#2312, #2338)
- Close client http connections made to an ssl server with TLSv1.3 (#2116)
- Fix for spawning subprocesses with fork_worker option (#2267)
- Set
CONTENT_LENGTHfor chunked requests (#2287) - JRuby - Add Puma::MiniSSL::Engine#init? and #teardown methods, run all SSL tests (#2317)
- Improve shutdown reliability (#2312)
- Resolve issue with threadpool waiting counter decrement when thread is killed
- Constrain rake-compiler version to 0.9.4 to fix
ClassNotFoundexception when using MiniSSL with Java8. - Fix recursive
prune_bundler(#2319). - Ensure that TCP_CORK is usable
- Fix corner case when request body is chunked (#2326)
- Ruby
Published by nateberkopec over 5 years ago
https://github.com/puma/puma - v4.3.6
https://github.com/puma/puma/compare/v4.3.5...4.3.6
A quick fix for a build error on Mac OS and a JSON require fix for those using phased restart.
- Explicitly include ctype.h to fix compilation warning and build error on macOS with Xcode 12 (#2304)
- Don't require json at boot (#2269)
- Ruby
Published by nateberkopec over 5 years ago
https://github.com/puma/puma - v4.3.0 - Mysterious Traveller

-
Features
- Strip whitespace at end of HTTP headers (#2010)
- Optimize HTTP parser for JRuby (#2012)
- Add SSL support for the control app and cli (#2046, #2052)
-
Bugfixes
- Fix Errno::EINVAL when SSL is enabled and browser rejects cert (#1564)
- Fix pumactl defaulting puma to development if an environment was not specified (#2035)
- Fix closing file stream when reading pid from pidfile (#2048)
- Fix a typo in configuration option
--extra_runtime_dependencies(#2050)
- Ruby
Published by nateberkopec over 6 years ago
https://github.com/puma/puma - 4.2.1
- 3 bugfixes
- Fix socket activation of systemd (pre-existing) unix binder files (#1842, #1988)
- Deal with multiple calls to bind correctly (#1986, #1994, #2006)
- Accepts symbols for
verify_mode(#1222)
- Ruby
Published by nateberkopec over 6 years ago
https://github.com/puma/puma - 4.2.0 - Distant Airhorns
- 6 features
- Pumactl has a new -e environment option and reads config/puma/.rb config files (#1885)
- Semicolons are now allowed in URL paths (MRI only), useful for Angular or Redmine (#1934)
- Allow extra dependencies to be defined when using prune_bundler (#1105)
- Puma now reports the correct port when binding to port 0, also reports other listeners when binding to localhost (#1786)
- Sending SIGINFO to any Puma worker now prints currently active threads and their backtraces (#1320)
- Puma threads all now have their name set on Ruby 2.3+ (#1968)
- 4 bugfixes
- Fix some misbehavior with phased restart and externally SIGTERMed workers (#1908, #1952)
- Fix socket closing on error (#1941)
- Removed unnecessary SIGINT trap for JRuby that caused some race conditions (#1961)
- Fix socket files being left around after process stopped (#1970)
- Absolutely thousands of lines of test improvements and fixes thanks to @MSP-Greg

- Ruby
Published by nateberkopec over 6 years ago
https://github.com/puma/puma - 4.1.1
3 bugfixes
- Revert our attempt to not dup STDOUT/STDERR (#1946)
- Fix socket close on error (#1941)
- Fix workers not shutting down correctly (#1908)
- Ruby
Published by nateberkopec over 6 years ago
https://github.com/puma/puma - 4.1.0 - Fourth and One
-
4 features
- Add REQUEST_PATH on parse error message (#1831)
- You can now easily add custom log formatters with the
log_formatterconfig option (#1816) - Puma.stats now provides process start times (#1844)
- Add support for disabling TLSv1.1 (#1836)
-
7 bugfixes
- Fix issue where Puma was creating zombie process entries (#1887)
- Fix bugs with line-endings and chunked encoding (#1812)
- RACK_URL_SCHEME is now set correctly in all conditions (#1491)
- We no longer mutate global STDOUT/STDERR, particularly the sync setting (#1837)
- SSL read_nonblock no longer blocks (#1857)
- Swallow connection errors when sending early hints (#1822)
- Backtrace no longer dumped when invalid pumactl commands are run (#1863)
-
5 other
- Avoid casting worker_timeout twice (#1838)
- Removed a call to private that wasn't doing anything (#1882)
- README, Rakefile, docs and test cleanups (#1848, #1847, #1846, #1853, #1859, #1850, #1866, #1870, #1872, #1833, #1888)
- Puma.io has proper documentation now (https://puma.io/puma/)
- Added the Contributor Covenant CoC
-
1 known issue
- Some users are still experiencing issues surrounding socket activation and Unix sockets (#1842)
Codename: Fourth and One

- Ruby
Published by nateberkopec over 6 years ago
https://github.com/puma/puma - v4.0.1
- 2 bugfixes
- Fix socket removed after reload - should fix problems with systemd socket activation. (#1829)
- Add extconf tests for DTLS_method & TLS_server_method, use in minissl.rb. Should fix "undefined symbol: DTLS_method" when compiling against old OpenSSL versions. (#1832)
- 1 other
- Removed unnecessary RUBY_VERSION checks. (#1827)
- Ruby
Published by nateberkopec over 6 years ago
https://github.com/puma/puma - v4.0.0 - 4 Fast 4 Furious
9 feature
- Add support for disabling TLSv1.0 (#1562)
- Request body read time metric (#1569)
- Add out_of_band hook (#1648)
- Re-implement (native) IOBuffer for JRuby (#1691)
- Min worker timeout (#1716)
- Add option to suppress SignalException on SIGTERM (#1690)
- Allow mutual TLS CA to be set using
ssl_bindDSL (#1689) - Reactor now uses nio4r instead of
select(#1728)
9 bugfixes
- Do not accept new requests on shutdown (#1685, #1808)
- Fix 3 corner cases when request body is chunked (#1508)
- Change pid existence check's condition branches (#1650)
- Don't call .stop on a server that doesn't exist (#1655)
- Implemented NID_X9_62_prime256v1 (P-256) curve over P-521 (#1671)
- Fix @notify.close can't modify frozen IOError (RuntimeError) (#1583)
- Fix Java 8 support (#1773)
- Fix error
uninitialized constant Puma::Cluster(#1731) - Fix
not_tokenbeing able to be set to true (#1803)
- Ruby
Published by schneems over 6 years ago
https://github.com/puma/puma - 3.11.0 - Love Song

-
2 features:
- HTTP 103 Early Hints (#1403)
- 421/451 status codes now have correct status messages attached (#1435)
-
9 bugfixes:
- Environment config files (/config/puma/.rb) load correctly (#1340)
- Specify windows dependencies correctly (#1434, #1436)
- puma/events required in test helper (#1418)
- Correct control CLI's option help text (#1416)
- Remove a warning for unused variable in mini_ssl (#1409)
- Correct pumactl docs argument ordering (#1427)
- Fix an uninitialized variable warning in server.rb (#1430)
- Fix docs typo/error in Launcher init (#1429)
- Deal with leading spaces in RUBYOPT (#1455)
-
2 other:
- Add docs about internals (#1425, #1452)
- Tons of test fixes from @MSP-Greg (#1439, #1442, #1464)
- Ruby
Published by nateberkopec over 8 years ago
https://github.com/puma/puma - 3.10.0 - Russell's Teapot

-
3 features:
- The status server has a new /gc and /gc-status command. (#1384)
- The persistent and first data timeouts are now configurable (#1111)
- Implemented RFC 2324 (#1392)
-
12 bugfixes:
- Not really a Puma bug, but @NickolasVashchenko created a gem to workaround a Ruby bug that some users of Puma may be experiencing. See README for more. (#1347)
- Fix hangups with SSL and persistent connections. (#1334)
- Fix Rails double-binding to a port (#1383)
- Fix incorrect thread names (#1368)
- Fix issues with /etc/hosts and JRuby where localhost addresses were not correct. (#1318)
- Fix compatibility with RUBYOPT="--enable-frozen-string-literal" (#1376)
- Fixed some compiler warnings (#1388)
- We actually run the integration tests in CI now (#1390)
- No longer shipping unnecessary directories in the gemfile (#1391)
- If RUBYOPT is nil, we no longer blow up on restart. (#1385)
- Correct response to SIGINT (#1377)
- Proper exit code returned when we receive a TERM signal (#1337)
-
3 refactors:
- Various test improvements from @grosser
- Rubocop (#1325)
- Hoe has been removed (#1395)
-
1 known issue:
- Socket activation doesn't work in JRuby. Their fault, not ours. (#1367)
- Ruby
Published by nateberkopec over 8 years ago
https://github.com/puma/puma - 3.9.1
- 2 bugfixes:
- Fixed compatibility with older Bundler versions (#1314)
- Some internal test/development cleanup (#1311, #1313)
- Ruby
Published by nateberkopec over 8 years ago
https://github.com/puma/puma - 3.9.0 - "Private Caller"
-
2 features:
- The ENV is now reset to its original values when Puma restarts via USR1/USR2 (#1260) (MRI only, no JRuby support)
- Puma will no longer accept more clients than the maximum number of threads. (#1278)
-
9 bugfixes:
- Reduce information leakage by preventing HTTP parse errors from writing environment hashes to STDERR (#1306)
- Fix SSL/WebSocket compatibility (#1274)
- HTTP headers with empty values are no longer omitted from responses. (#1261)
- Fix a Rack env key which was set to nil. (#1259)
- peercert has been implemented for JRuby (#1248)
- Fix port settings when using rails s (#1277, #1290)
- Fix compat w/LibreSSL (#1285)
- Fix restarting Puma w/symlinks and a new Gemfile (#1282)
- Replace Dir.exists? with Dir.exist? (#1294)
-
1 known issue:
- A bug in MRI 2.2+ can result in IOError: stream closed. See #1206. This issue has existed since at least Puma 3.6, and probably further back.
- Ruby
Published by nateberkopec almost 9 years ago
https://github.com/puma/puma -
-
2 bugfixes:
- Port from rack handler does not take precedence over config file in Rails 5.1.0.beta2+ and 5.0.1.rc3+ (#1234)
- The
tmp/restart.txtplugin no longer restricts the user from running more than one server from the same folder at a time (#1226)
-
1 feature:
- Closed clients are aborted to save capacity (#1227)
-
1 refactor:
- Bundler is no longer a dependency from tests (#1213)
- Ruby
Published by nateberkopec almost 9 years ago
https://github.com/puma/puma - 3.8.1
- 1 bugfix:
- Remove method call to method that no longer exists (#1239)
- Ruby
Published by nateberkopec almost 9 years ago
https://github.com/puma/puma - 3.8.2
- 1 bugfix:
- Deal with getsockopt with TCP_INFO failing for sockets that say they're TCP but aren't really. (#1241)
- Ruby
Published by nateberkopec almost 9 years ago
https://github.com/puma/puma - 3.7.1
- 2 bugfixes:
- Fix typo which blew up MiniSSL (#1182)
- Stop overriding command-line options with the config file (#1203)
- Ruby
Published by nateberkopec about 9 years ago
https://github.com/puma/puma - 3.7.0
- 6 minor features:
- Allow rack handler to accept ssl host. (#1129)
- Refactor TTOU processing. TTOU now handles multiple signals at once. (#1165)
- Pickup any remaining chunk data as the next request.
- Prevent short term thread churn - increased auto trim default to 30 seconds.
- Raise error when
stdoutorstderris not writable. (#1175) - Add Rack 2.0 support to gemspec. (#1068)
- 5 refactors:
- Compare host and server name only once per call. (#1091)
- Minor refactor on Thread pool (#1088)
- Removed a ton of unused constants, variables and files.
- Use MRI macros when allocating heap memory
- Use hooks for on_booted event. (#1160)
- 14 bugfixes:
- Add eof? method to NullIO? (#1169)
- Fix Puma startup in provided init.d script (#1061)
- Fix default SSL mode back to none. (#1036)
- Fixed the issue of @listeners getting nil io (#1120)
- Make
get_dh1024compatible with OpenSSL v1.1.0 (#1178) - More gracefully deal with SSL sessions. Fixes #1002
- Move puma.rb to just autoloads. Fixes #1063
- MiniSSL: Provide write as <<. Fixes #1089
- Prune bundler should inherit fds (#1114)
- Replace use of Process.getpgid which does not behave as intended on all platforms (#1110)
- Transfer encoding header should be downcased before comparison (#1135)
- Use same write log logic for hijacked requests. (#1081)
- Fix
uninitialized constant Puma::StateFile(#1138) - Fix access priorities of each level in LeveledOptions (#1118)
- 3 others:
- Lots of tests added/fixed/improved. Switched to Minitest from Test::Unit. Big thanks to @frodsan.
- Lots of documentation added/improved.
- Add license indicators to the HTTP extension. (#1075)
- Ruby
Published by nateberkopec about 9 years ago