Releases: roadrunner-server/roadrunner
Releases · roadrunner-server/roadrunner
v2023.3.5
🚀 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:
🧹 Chore:
- 🧑🏭 Dependencies: update project (system) dependencies.
v2023.3.4
🚀 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)
v2023.3.3
v2023.3.2
v2023.3.1
v2023.3.0
Description of Changes
🚀 v2023.3.0 🚀
🔥 Features:
RR Core:
👀 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:
👀 Service plugin:
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:
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());
}
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.
v2023.3.0-rc.1
🚀 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)
v2023.3.0-beta.2
🚀 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.
v2023.3.0-beta.1
🚀 v2023.3.0-beta.1 🚀
👀 New
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 ❤️
v2023.2.2
🚀 v2023.2.2 🚀
🩹 Fixes
- 🐛 JOBS plugin: Fix typo in the
RPC
span name: PR, (thanks @Kaspiman). - 🐛 SDK: Fix incorrect workers state when worker reached
idleTTL
state: BUG, (thanks @Aleksa1996).
🧹 Chore:
- 🧑🏭 HTTP plugin: faster PostForm/MultipartForm processing PR.
- 🧑🏭 Golang: Update Golang version to v1.21.
- 🧑🏭 Dependencies: update project dependencies.