roadrunner

🀯 High-performance PHP application server, process manager written in Go and powered with plugins

MIT License

Downloads
5.5M
Stars
7.7K
Committers
58

Bot releases are visible (Hide)

roadrunner - v2024.1.3 Latest Release

Published by rustatian 5 months ago

πŸš€ v2024.1.3 πŸš€

RR core:

  • πŸ”₯: Deprecate 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:

  • πŸ”₯: Enable client certificate rotation: FR. With this change, you may replace a certificate on a Live system. (thanks @benkelukas)
  • πŸ”₯: Expose continue_as_new_suggested for the PHP Worker: PR.

Kafka

  • πŸ›: Reduce the number of maxPollRecords from 10k to 100, PR.

Endure container:

  • πŸ›: Fix incorrectly used error log message: PR.

General:

  • πŸ”₯: Update Go to v1.22.4.

RoadRunner PHP:

Worker:

  • πŸ”₯: Add RR_VERSION env to the Environment class: PR, (thanks @Kaspiman)
roadrunner - v2024.1.2

Published by rustatian 5 months ago

πŸš€ v2024.1.2 πŸš€

Upcoming new JOBS driver: google-pub-sub:

  • πŸ”₯: Currently in a polishing phase, the new plugin will be released as part of the v2024.2.0. Stay tuned! (thanks @cv65kr)

gRPC plugin:

  • πŸ›: Strip extra slashes when there is no package defined in the protofile: PR, (thanks @satdeveloping)

OTEL plugin:

  • πŸ›: Fix hardcoded AlwaysSample samples: BUG, (thanks @bazilmarkov)

RR core plugin:

  • πŸ›: RR workers/reset commands don't respect default config values: BUG, (thanks @r4m-alexd)
roadrunner - v2024.1.1

Published by rustatian 6 months ago

πŸš€ v2024.1.1 πŸš€

HTTP plugin:

  • πŸ› Bug: Fix for the NPE on types check: BUG, (thanks @cto-asocial)

gRPC plugin:

  • πŸ”₯ Remove experimental status from the OTEL in gRPC, PR

SDK:

  • πŸ”₯ Additional debug logging for the maxExecs with jitter: PR (thanks @Kaspiman)
roadrunner - v2024.1.0

Published by rustatian 6 months ago

πŸš€ v2024.1.0 πŸš€

Upgrade guide: link

HTTP plugin:

  • πŸ”₯ Use protobuf encoded payloads to prevent field reordering and JSON escaped symbols.

Kafka driver:

SDK:

  • πŸ”₯ Use a small random jitter to prevent the Thundering herd problem when user uses max_jobs option and all the workers restarted at the same time. This feature is enabled automatically. (thanks @Kaspiman)
roadrunner - v2023.3.12

Published by rustatian 8 months ago

πŸš€ v2023.3.12 πŸš€

Centrifuge plugin:

  • πŸ”₯ Add support for the NotifyChannelState centrifuge API.

Temporal plugin:

  • πŸ”₯ Add support for the Updates API.
  • πŸ”₯ Add support for the healthchecks: FR, (thanks @shanginn).

🧹 Chore:

  • πŸ§‘β€πŸ­: All since log entries are now always shown as milliseconds, FR, (thanks @dmitryuk).
roadrunner - v2023.3.11

Published by rustatian 8 months ago

πŸš€ v2023.3.11 πŸš€

Centrifuge plugin:

  • πŸ›οΈ Check the connection properly before attempting to send a request: PR

OTEL plugin:

  • πŸ›οΈ Do not force setting endpoint and headers: BUG. Update docs on OTEL env usage: Docs, (thanks @fasdalf and @arku31).

HTTP plugin:

  • πŸ›οΈ Response status 200 instead of 500 in debug mode if PHP code fails: BUG, (thanks @Volonda).

🧹 Chore:

  • πŸ§‘β€πŸ­ Dependencies: Build with Go 1.22.0.
roadrunner - v2023.3.10

Published by rustatian 9 months ago

πŸš€ v2023.3.10 πŸš€

Core SDK bugfixes:

  • πŸ›οΈ Request queue gets too large, BUG/FR, Docs (thanks, @L3tum)
  • πŸ›οΈ Huge memory allocation in the debug mode FIX.
  • πŸ›οΈ Stop handler (worker->stop()) was returned (breaking change fix) FIX, (thanks @Zylius)

🧹 Chore:

  • πŸ§‘β€πŸ­ Dependencies: update project/system dependencies.
roadrunner - v2023.3.9

Published by rustatian 9 months ago

πŸš€ v2023.3.9 πŸš€

HTTP plugin

  • πŸ›οΈ Streaming responses can experience a lock-up when the client disconnects early, BUG, (thanks @segrax)

SQS JOBS driver

  • πŸ›οΈ Use user specified credentials if they are set even if we're inside AWS, BUG, (thanks @matteokov)

Service plugin

  • πŸ›οΈ Services directly killed when restarting on terminating. BUG, (thanks @chazzbg)

Server plugin

  • πŸ”₯ Add user parameter to on_init command section. PR, docs, (thanks @Kaspiman)

Redis KV driver

  • πŸ›οΈ Correctly finish the OTEL span. PR, (thanks @Kaspiman)

🧹 Chore:

  • πŸ§‘β€πŸ­ Dependencies: update project/system dependencies.
  • πŸ§‘β€πŸ­ Docs: update docs, BUG.
roadrunner - v2023.3.8

Published by rustatian 10 months ago

πŸš€ v2023.3.8 πŸš€

HTTP plugin

  • πŸ”₯ Experimental HTTP3 server, FR, docs: link, (thanks @cv65kr & @cidious)

gRPC plugin

  • πŸ”₯ Experimental support for the OTLP protocol inside the gRPC plugin: FR, docs: link (thanks @rauanmayemir)

Beanstalk driver

  • πŸ›οΈ Fix NPE on empty options BUG, (thanks @SerhiiMova).

Velox

  • πŸ”₯ To ensure that Velox is able to build every RoadRunner version, we've added a new CI CRON job that builds RoadRunner with Velox daily. This job is not related to the RoadRunner release process, but it will help us to ensure that Velox is always compatible with the latest RoadRunner version.

🧹 Chore:

  • πŸ§‘β€πŸ­ Dependencies: update project/system dependencies.
roadrunner - v2023.3.7

Published by rustatian 11 months ago

πŸš€ v2023.3.7 πŸš€

gRPC plugin:

  • πŸ”₯ Re-enable HTTP health and readiness checks via regular endpoints /health and /ready.

AMQP driver:

  • πŸ›οΈ Fix mapping for the RabbitMQ type List (Golang []any), BUG, (thanks @iborysenko).
  • πŸ›οΈ Fix an edge case for the DLX queue type when user doesn't specify any queue, but use Push method with delays, BUG, (thanks @fereron).

🧹 Chore:

  • πŸ§‘β€πŸ­ Dependencies: update project/system dependencies.
roadrunner - v2023.3.6

Published by rustatian 11 months ago

πŸš€ v2023.3.6 πŸš€

CI releases:

  • πŸ”₯ Add support for the arm64 deb packages: FR, (thanks @stevenbrookes)

🧹 Chore:

  • πŸ§‘β€πŸ­ Dependencies: update project/system dependencies.
roadrunner - v2023.3.5

Published by rustatian 11 months ago

πŸš€ v2023.3.5 πŸš€

Config plugin:

  • πŸ”₯ Add the ability to include .env files in the configuration (experimental feature): Docs, (thanks @OO00O0O).

Temporal plugin:

  • πŸ›οΈ Fix bug with incorrect pool destroy order: BUG, (thanks @pfy-oleksii-storozhylov).

HTTP plugin:

  • πŸ”₯ Allow showing PHP exception traces in the response: BUG, (thanks @speller).

🧹 Chore:

  • πŸ§‘β€πŸ­ Dependencies: update project (system) dependencies.
roadrunner - v2023.3.4

Published by rustatian 12 months ago

πŸš€ v2023.3.4 πŸš€

πŸ”₯ Features:

RR Core:

  • βœ’οΈ Experimental features: Add support for the experimental features: Docs.

πŸ‘€ Plugins:

  • βœ’οΈ NATS driver: Replace the old JetStream client with the new one: FR, API.
  • βœ’οΈ Config driver: Add experimental support for merging two and more configuration files: FR, Docs, (thanks @hugochinchilla)
  • βœ’οΈ Headers middleware: Add support for the regular expressions for origin: FR, Docs, (thanks @orlandothoeny)

🩹 Fixes

  • πŸ› HTTP Plugin: Unable to POST relatively chunky POST: BUG, (thanks @FluffyDiscord)
roadrunner - v2023.3.3

Published by rustatian 12 months ago

πŸš€ v2023.3.3 [Bugfix] πŸš€

🩹 Fixes

  • πŸ› RR Core: Fix mistakenly removed RPC endpoint: ISSUE, (thanks @Kaspiman)
roadrunner - v2023.3.2

Published by rustatian about 1 year ago

πŸš€ v2023.3.2 [Maintenance] πŸš€

🩹 Fixes

  • πŸ› Temporal: Fix incorrect log entry: ISSUE, (thanks @roxblnfk)

🧹 Chore:

  • πŸ§‘β€πŸ­ Dependencies: update project dependencies (including CVE in transitive dependencies, especially gofiber).
roadrunner - v2023.3.1

Published by rustatian about 1 year ago

πŸš€ v2023.3.1 [Maintenance release] πŸš€

🧹 Chore:

  • πŸ§‘β€πŸ­ Dependencies: update project dependencies (including CVE in Go libraries).
  • πŸ§‘β€πŸ­ Go: Update Golang to version 1.21.3.
  • πŸ§‘β€πŸ­ Docs: Missed documentation about Dynamic Workers Scaling: link
roadrunner - v2023.3.0

Published by rustatian about 1 year ago

Description of Changes

πŸš€ v2023.3.0 πŸš€

πŸ”₯ Features:

RR Core:

  • βœ’οΈ sdnotify support: FR, (thanks @Kaspiman), Docs: link

πŸ‘€ JOBS plugin:

  • βœ’οΈ AMQP Driver: Support for a custom routing_key in the JOBS payload: FR, (thanks @rauanmayemir)
  • βœ’οΈ JOBS plugin: Parallel pipelines start/stop/destroy initialization. If you have much number of the pipelines,
    this feature should significantly reduce RR startup/shutdown time: FR, (thanks @Kaspiman)

πŸ‘€ KV drivers (all):

  • βœ’οΈ Support for OTEL across all KV drivers: FR

πŸ‘€ App-Logger plugin:

  • βœ’οΈ Added new methods for your logger to log with context (message + key-values array): FR, (thanks @Baiquette)

πŸ‘€ Temporal plugin:

  • βœ’οΈ Replay API support [SINCE PHP-SDK 2.6.0]: FR
  • βœ’οΈ Add support for the Worker Versioning: FR

πŸ‘€ Service plugin:

  • βœ’οΈ Support for the user/group per-service: FR, (thanks @Kaspiman)

Configuration example:

service:
    schedule:run:
        command: "bin/console schedule:run"
        process_num: 1
        exec_timeout: 0s
        remain_after_exit: true
        service_name_in_log: false
        restart_sec: 60
        user: www-data  # <---------- [NEW]
        group: www-data # <---------- [NEW]

πŸ‘€ HTTP plugin:

  • βœ’οΈ Response streaming support FR, (thanks @roxblnfk)

Worker example:


<?php

require __DIR__ . '/vendor/autoload.php';

use Spiral\RoadRunner;

ini_set('display_errors', 'stderr');
require __DIR__ . "/vendor/autoload.php";

$worker = RoadRunner\Worker::create();
$http = new RoadRunner\Http\HttpWorker($worker);
$read = static function (): Generator {
    foreach (\file(__DIR__ . '/test.txt') as $line) {
        try {
            yield $line;
        } catch (Spiral\RoadRunner\Http\Exception\StreamStoppedException) {
            // Just stop sending data
            return;
        }
    }
};

try {
    while ($req = $http->waitRequest()) {
        $http->respond(200, $read());
    }
} catch (\Throwable $e) {
    $worker->error($e->getMessage());
}
  • βœ’οΈ Support for the 103 Early Hints via streamed response: FR, (thanks @azjezz)

Worker example:

<?php

use Spiral\RoadRunner;

ini_set('display_errors', 'stderr');
require __DIR__ . "/vendor/autoload.php";

$worker = RoadRunner\Worker::create();
$http = new RoadRunner\Http\HttpWorker($worker);
$read = static function (): Generator {
    $limit = 10;
    foreach (\file(__DIR__ . '/test.txt') as $line) {
        foreach (explode('"', $line) as $chunk) {
            try {
                usleep(50_000);
                yield $chunk;
            } catch (Spiral\RoadRunner\Http\Exception\StreamStoppedException $e) {
                // Just stop sending data
                return;
            }
            if (--$limit === 0) {
                return;
            }
        }
    }
};


try {
    while ($req = $http->waitRequest()) {
        $http->respond(103, '', headers: ['Link' => ['</style111.css>; rel=preload; as=style'], 'X-103' => ['103']], endOfStream: false);
        $http->respond(200, $read(), headers: ['X-200' => ['200']], endOfStream: true); // your regular response
    }
} catch (\Throwable $e) {
    $worker->error($e->getMessage());
}

πŸ‘€ Server plugin:

  • βœ’οΈ RAW command support: Support for raw commands, which are not validated by RR and may contain spaces. Note that this feature is only supported via .rr.yaml configuration: FR, (thanks @nunomaduro)
    First argument should be a command (executable) and the rest of the arguments are passed to the command as arguments.
version: "3"

server:
  command: ["php", "../../php_test_files/client.php echo pipes"]
  relay: "pipes"
  relay_timeout: "20s"
version: "3"

server:
    command:
      - "php"
      - "../../php_test_files/client.php echo pipes"
    relay: "pipes"
    relay_timeout: "20s"

🩹 Fixes:

  • πŸ› RR Core: Actualize, according to the docs ./rr jobs list/stop/resume commands: PR, (thanks @gam6itko).
  • πŸ› JOBS plugin: Correctly handle OTEL span on listener error: PR, (thanks @Kaspiman).
  • πŸ› RR tests: Fix tests failures on Darwin: PR, (thanks @shyim).
  • πŸ› Streaming: Add stream timeout (will be configurable in the next release). Fix loss of the first chunk of the streamed response.

🧹 Chore:

  • πŸ§‘β€πŸ­ Golang: Update Golang version to v1.21.
  • πŸ§‘β€πŸ­ Dependencies: update project dependencies.
roadrunner - v2023.3.0-rc.1

Published by rustatian about 1 year ago

πŸš€ v2023.3.0-rc.1 πŸš€

πŸ”₯ Features:

πŸ‘€ AMQP driver:

  • βœ’οΈ Support for a custom routing_key in the JOBS payload: FR, (thanks @rauanmayemir, @butschster)

πŸ‘€ KV drivers (all):

  • βœ’οΈ Support for OTEL across all KV drivers: FR

πŸ‘€ App-Logger plugin:

  • βœ’οΈ Added new methods for your logger to log with context (message + key-values array): FR, (thanks @Baiquette)
roadrunner - v2023.3.0-beta.2

Published by rustatian about 1 year ago

πŸš€ v2023.3.0-beta.2 πŸš€

πŸ”₯Features:

πŸ‘€ Temporal plugin:

  • βœ’οΈ Add support for the Worker Versioning: FR

🩹 Fixes:

  • πŸ› Streaming: Add stream timeout (will be configurable in the next release). Fix loss of the first chunk of the streamed response.
roadrunner - v2023.3.0-beta.1

Published by rustatian about 1 year ago

πŸš€ v2023.3.0-beta.1 πŸš€

πŸ‘€ New

  • βœ’οΈ Service plugin: Support for the user/group per-service: FR, (thanks @Kaspiman)

Configuration example:

service:
    schedule:run:
        command: "bin/console schedule:run"
        process_num: 1
        exec_timeout: 0s
        remain_after_exit: true
        service_name_in_log: false
        restart_sec: 60
        user: www-data  # <---------- [NEW]
        group: www-data # <---------- [NEW]
  • βœ’οΈ Temporal plugin: Replay API support [SINCE PHP-SDK 2.6.0]: FR
  • βœ’οΈ RR core: sdnotify support: FR, (thanks @Kaspiman)
  • βœ’οΈ HTTP response streaming support: : FR, (thanks @roxblnfk)

Worker.php example:

<?php

require __DIR__ . '/vendor/autoload.php';

use Spiral\RoadRunner;

ini_set('display_errors', 'stderr');
require __DIR__ . "/vendor/autoload.php";

$worker = RoadRunner\Worker::create();
$http = new RoadRunner\Http\HttpWorker($worker);
$read = static function (): Generator {
    foreach (\file(__DIR__ . '/test.txt') as $line) {
        try {
            yield $line;
        } catch (Spiral\RoadRunner\Http\Exception\StreamStoppedException) {
            // Just stop sending data
            return;
        }
    }
};

try {
    while ($req = $http->waitRequest()) {
        $http->respond(200, $read());
    }
} catch (\Throwable $e) {
    $worker->error($e->getMessage());
}
  • βœ’οΈ HTTP plugin: Support for the 103 Early Hints via streamed response: FR, (thanks @roxblnfk)
  • βœ’οΈ RAW command support: Support for raw commands, which are not validated by RR and may contain spaces. Note that this feature is only supported via .rr.yaml configuration: FR, (thanks @nunomaduro)

Configuration:

version: "3"

server:
  command: ["php", "../../php_test_files/client.php echo pipes"]
  relay: "pipes"
  relay_timeout: "20s"
version: "3"

server:
    command:
      - "php"
      - "../../php_test_files/client.php echo pipes"
    relay: "pipes"
    relay_timeout: "20s"

First argument should be a command (executable) and the rest of the arguments are passed to the command as arguments.

  • βœ’οΈ JOBS plugin: Parallel pipelines start/stop/destroy initialization. If you have a much number of the pipelines, this feature should significantly reduce RR startup/shutdown time: FR, (thanks @Kaspiman)

🩹 Fixes

  • πŸ› RR Core: Actualize according to the docs ./rr jobs list/stop/resume commands: PR, (thanks @gam6itko).
  • πŸ› JOBS plugin: Correctly handle OTEL span on listener error: PR, (thanks @Kaspiman).
  • πŸ› RR tests: Fix tests failures on Darwin: PR, (thanks @shyim).

🧹 Chore:

  • πŸ§‘β€πŸ­ Golang: Update Golang version to v1.21.
  • πŸ§‘β€πŸ­ Dependencies: update project dependencies.

Special thanks for this beta-release to our awesome PHP team: @butschster, @roxblnfk, @wolfy-j and @msmakouz ❀️