spiral/roadrunner
RoadRunner is a high-performance PHP application server and process manager written in Go. It offers HTTP/2/3, gRPC, fCGI, queues, KV storage, and OpenTelemetry via plugins, serving as a powerful alternative to Nginx+FPM.
1.27.3 to address CVE-2026-111943 in crypto/x509. The update rejects known untrusted intermediate certificates during certificate verification. See BUG.RoadRunner v3 uses v6 Go plugins. See Upgrade from v2025 to v3 for the required configuration and API changes.
github.com/roadrunner-server/roadrunner/v3. See Embedding a server.api, api-go/v6, and api-plugins/v6. Custom plugins use log/slog, pool/v2, and goridge/v4. See Writing a Plugin, PR.envfile without experimental mode. A configured file is required when the server starts. See Environment.dynamic_allocator.max_workers counts workers added above the base pool size. See Auto workers scaling, FR.server.on_init.env override inherited values. See Server, PR.http pluginhttp.middleware from left to right. Reverse a v5 list to keep its previous order. See Middleware order, PR.Upgrade: h2c is no longer supported. See HTTP/2.proxy_ip_parser middlewarehttp.trusted_headers. See Proxy IP parser, FR.static middlewarerr reset static. Weak ETags now use file size and modification time. See Static files, PR.rate_limiter middleware429 with Retry-After. See Rate limiter, FR.zstd middlewarezstd. See Zstd, FR.grpc plugingoogle.rpc.Status details in failed unary-call logs. See gRPC, FR.amqp driverconfig.connection and nested exchange and queue settings; AMQP config.version is removed. See RabbitMQ, FR.jobs pluginpool header selects the destination pool. See Jobs, PR.rr_jobs_jobs_requeue. Outcome and push totals use counters. See Metrics, FR.nsq drivernats driverack_wait for JetStream redelivery timing. See NATS, PR.kafka driverconsume_partitions to select topic partitions and starting offsets. See Kafka, PR.jobs plugin restarts the pipeline. The old consumer closes, and a pipeline in jobs.consume continues with a new consumer. If the restart of a configured pipeline fails, RoadRunner stops with an error. See Kafka, BUG.sqs driverbeanstalk driverlogger pluginlog/slog with JSON, text, and raw formats. Configure file destinations through output; built-in rotation and file_logger_options are removed. See Logger, FR.format placeholders and time_format to control log records and timestamps. See Logger, FR.lock pluginredis driversentinel_username and sentinel_password independently from Redis master credentials. Password-only Sentinel authentication remains supported. See Redis, FR.service pluginservice.Update. Existing processes keep their current settings; new processes use the updated values. PHP applications need client and DTO support for this method. See Service, FR.status plugin/livez as an alias for /health and /readyz as an alias for /ready. See HealthChecks, PR.otel plugincentrifuge pluginNotifyCacheEmpty event support and remove centrifuge.RateLimit. The new event needs matching PHP DTO and handler support. See Centrifuge.temporal pluginvelox builder[plugins.<name>], with module_name and tag. Support module replacements, exclusions, and repeatable build timestamps. The remote build server and Windows targets are removed. See Building a Server, PR.๐ v2025.1.14 ๐
๐ฏ Core
๐งฐ Plugins
๐งช Temporal
1.26.2 to resolve CVE-2026-32280 and CVE-2026-39883 (go/stdlib), CHORE (thanks @rebecca-canyon)google.golang.org/grpc to v1.79.3 to resolve CVE-2026-33186 โ a server-side authorization bypass where malformed :path headers could circumvent path-based restricted deny rules in gRPC interceptors, CHORE (thanks @rebecca-canyon)otel pluginv1.39.0 vs v1.40.0); updated semconv to v1.40, BUG (thanks @dmitryuk)1.25.5.SIGUSR2 signal on Unix-like systems to enable graceful process restarts. When the configuration file is a symlink, RoadRunner will properly re-read the configuration from the symlink target after restart FR (thanks @koren88)1.25.4.v2025.1.5 with an updated template that pinned third-party dep tablewriter that caused problems when building RR.GoFiber.automaxprocs library from Uber has been removed, as Go 1.25 now includes this functionality natively.v2025.1.4 with an updated template that removed the automaxprocs dependency.Temporal pluginNO_PROXY environment variable to disable proxy usage FR (thanks @jur3)Kafka driverGoFiber, has had too many CVEs in recent months.Temporal pluginv2025.1.1 instead of this release if you're using KV plugin.v2024Kafka driver:Jobs plugin:AMQP driver:gRPC plugin:[email protected] and new List healthcheck method, grpc#2162 (thanks @matthewhartstonge)Redis driver:Kafka driver:gRPC plugin:exec_timeout), PR, (thanks @AleksandrKosovS)RoadRunner-Temporal plugin:http plugin:RoadRunner-Temporal plugin:gRPC (PHP) plugin:Meet the new RoadRunner release! This time we have a lot of new features, improvements, and bug fixes. Let's dive in! In this realse we have added a new feature called Auto Workers Scaling. This feature allows users to scale their RoadRunner workers automatically, up to 100 additional workers. SQS plugin was significantly reworked without major breaking changes, please, read the updated documentation carefully. RoadRunner-Temporalplugin now supports API-Keys (which would be added via our SDK-PHP and documentated in it as well).
OTEL plugin:In-Memory KV driver:Status plugin:Symfony integration:Redis driver:SQS driver:NOTE: The default values for SQS now use short polling. Make sure you inspect your value for wait_time_seconds if you want to use long polling.Nats driver:Config plugin:Server plugin:server.on_init.exit_on_error to stop RoadRunner when on_init error occured: FR, (thanks @wizardist)RabbitMQ (AMQP) driver:Locks plugin:Metrics plugin:Velox:SQS driver and reworking the whole JSON schema across all plugins (which is actually HUGE).Metrics and RoadRunner-Temporal plugins.Redis plugin.OTEL plugin:Endpoint and Headers for gRPC if they're empty: PR, Support standard OTEL exporter protocol environment variables: PR. (thanks @devnev)RoadRunner-Temporal plugin:AMQP driver:redial_timeout was not respected when dynamically creating pipeline. BUG, (thanks @algirdasci)Velox Dockerfile).We are introducing a new term in the RoadRunner community โ Community plugins. If you have a brilliant idea for the http middleware or JOBS driver or even a new plugin - feel free to check our Customization tutorials, create and notify us about your plugin.
RoadRunner now supports the Google Pub/Sub queues. Currently, this driver is released in BETA and has a few limitations which you may find in the docs
AMQP and Kafka JOBS driversThanks to our PHP team, KV now has AsyncStorageInterface support which makes your experience with the KV plugin even faster.
Feel free to read the technical details here: link
Jobs driver example for the Jobs plugin.
More info here: link.[roadrunner]
# ref -> reference, tag, commit or branch
ref = "v2024.2.0"
# the debug option is used to build RR with debug symbols to profile it with pprof
[debug]
enabled = false
## Rest is the same ....
Now, there is no need to include linker flags, and buildtime + build version would be inherited automatically.
If you need to debug your binary, please, use the debug option set to true.
Status plugin:JOBS plugin:ACK, NACK, and REQUEUE operations for the JOBS drivers. PHP SDK will be updated soon. FR, (thanks @shieldz80)v2024.2.0) and currently don't have restrictions on where to put the included config. Keep in mind that the path for the included configurations is calculated from the working directory of the RoadRunner process. FRRR core:RR_* env variables prefix. This was an undocumented feature which caused confusion, because any configuration value might be automatically replaced (without using env in the configuration) with a matching RR_* environment variable, PR.Temporal plugin:continue_as_new_suggested for the PHP Worker: PR.KafkamaxPollRecords from 10k to 100, PR.Endure container:v1.22.4.Worker:google-pub-sub:v2024.2.0. Stay tuned! (thanks @cv65kr)gRPC plugin:OTEL plugin:RR core plugin:workers/reset commands don't respect default config values: BUG, (thanks @r4m-alexd)HTTP plugin:gRPC plugin:gRPC, PRSDK:HTTP plugin:protobuf encoded payloads to prevent field reordering and JSON escaped symbols.Kafka driver:SDK:max_jobs option and all the workers restarted at the same time. This feature is enabled automatically. (thanks @Kaspiman)Centrifuge plugin:NotifyChannelState centrifuge API.Temporal plugin:Centrifuge plugin:OTEL plugin:endpoint and headers: BUG. Update docs on OTEL env usage: Docs, (thanks @fasdalf and @arku31).HTTP plugin:SDK bugfixes:worker->stop()) was returned (breaking change fix) FIX, (thanks @Zylius)HTTP pluginSQS JOBS driverService pluginServer pluginRedis KV driverHTTP plugingRPC plugingRPC plugin: FR, docs: link (thanks @rauanmayemir)Beanstalk driverVeloxHow can I help you explore Laravel packages today?