Download Latest Version v8.0.2 source code.zip (579.0 kB)
Email in envelope

Get an email when there's a new version of Puma

Home / v8.0.0
Name Modified Size InfoDownloads / Week
Parent folder
puma-8.0.0-java.gem 2026-04-09 294.9 kB
puma-8.0.0.gem 2026-04-09 264.7 kB
README.md 2026-04-08 2.0 kB
v8.0.0 - Into the Arena source code.tar.gz 2026-04-08 448.6 kB
v8.0.0 - Into the Arena source code.zip 2026-04-08 577.7 kB
Totals: 5 Items   1.6 MB 0

image

Read our Version 8 Upgrade Guide.

  • Features
  • Add env["puma.mark_as_io_bound"] API and max_io_threads config to allow IO-bound requests to exceed the thread pool max, enabling better handling of mixed workloads ([#3816], [#3894])
  • Add single and cluster DSL hooks for mode-specific configuration ([#3621])
  • Add on_force option to shutdown_debug to only dump thread backtraces on forced (non-graceful) shutdown ([#3671])
  • Add API to dynamically update min and max thread counts at runtime via update_thread_pool_min_max and ServerPluginControl ([#3658])
  • Use SIGPWR for thread backtrace dumps on Linux/JRuby where SIGINFO is unavailable ([#3829])

  • Bugfixes

  • Fix phased restart for fork_worker to avoid forking from stale worker 0 when it has been replaced ([#3853])

  • Performance

  • JRuby HTTP parser improvements: pre-allocated header keys, perfect hash lookup, reduced memory copies ([#3838])
  • Cache downcased header key in str_headers to avoid redundant String#downcase calls, reducing allocations by ~50% per response ([#3874])

  • Refactor

  • Collect env processing into dedicated client_env.rb module ([#3582])
  • Move event to default configuration ([#3872])

  • Docs

  • Add gRPC guide for configuring gRPC lifecycle hooks in clustered mode ([#3885])
  • Add 7.0 upgrade guide, move 5.0/6.0 upgrade guides to docs directory ([#3900])
  • Correct default values for persistent_timeout and worker_boot_timeout in DSL docs ([#3912])
  • Add file descriptor limit warning in test helper for contributors ([#3893])

  • Breaking changes

  • Default production bind address changed from 0.0.0.0 to :: (IPv6) when a non-loopback IPv6 interface is available; falls back to 0.0.0.0 if IPv6 is unavailable ([#3847])
Source: README.md, updated 2026-04-08