Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
2f9cc14
feat: add Symfony Runtime for Rapira workers
Zylius Sep 18, 2026
0dcc0c0
fix: harden Rapira worker lifecycle and bootstrap
Zylius Sep 18, 2026
8f0d15a
feat: support Rapira Dispatcher mode
Zylius Sep 21, 2026
f7be4ac
fix: harden Rapira Dispatcher lifecycle
Zylius Sep 21, 2026
ef5fda6
chore: run workflows on the renamed 1.x branch
roxblnfk Oct 6, 2026
353dd8e
chore: assign the copyright to Rapira
roxblnfk Oct 6, 2026
cc869a3
fix: use standard Symfony bootstrap with Rapira 0.9
Zylius Oct 6, 2026
bcdaa06
fix: use stable Rapira contract dependency
Zylius Oct 6, 2026
a180f44
fix: correct Rapira 0.9 request metadata
Zylius Oct 6, 2026
be61745
fix: isolate unit test globals
Zylius Oct 6, 2026
032e010
chore: align the development dependencies with the sibling bridges
roxblnfk Oct 6, 2026
f0754f6
test: serve a fixture app through a live Rapira in every mode
roxblnfk Oct 6, 2026
0764710
chore: add code owners, git attributes and contribution templates
roxblnfk Oct 6, 2026
d5357df
ci: release with release-please
roxblnfk Oct 6, 2026
9d87d8f
ci: test on Linux and Windows against a live Rapira
roxblnfk Oct 6, 2026
f0e9db3
test: drive the bridge through the Runtime with the SDK doubles
roxblnfk Oct 6, 2026
6e30a49
test: pin the known dispatcher and worker bugs as skipped tests
roxblnfk Oct 6, 2026
96e9cc3
test: serve a flushing StreamedResponse through a live Rapira
roxblnfk Oct 6, 2026
af19882
test: terminate every worker request under the host-parity double
roxblnfk Oct 6, 2026
238c973
refactor: drop the test seams from the Runtime
roxblnfk Oct 6, 2026
e9a8858
fix: send Worker and Classic responses inside an own output buffer
roxblnfk Oct 6, 2026
6e1e7c4
fix: release each worker request before collecting cycles
roxblnfk Oct 6, 2026
aa5b4de
fix: refuse a non-HttpKernel application in Worker and Dispatcher modes
roxblnfk Oct 6, 2026
9f1ba1e
fix: build the dispatcher request the way PHP fills the superglobals
roxblnfk Oct 6, 2026
1c0eed4
fix: send dispatcher files through the host and stream in chunks
roxblnfk Oct 6, 2026
08d3747
fix: answer dispatcher failures before the head and keep serving
roxblnfk Oct 6, 2026
75e68ad
docs: describe the lifecycles, streaming and file sending as they now…
roxblnfk Oct 6, 2026
d54f4a6
fix: match the dispatcher request to the Rapira SAPI and PHP parsing
roxblnfk Oct 6, 2026
5c26a11
fix: send dispatcher handler output with the body and split long bodies
roxblnfk Oct 6, 2026
fdb148f
fix: leave the boot-time script location out of dispatcher requests
roxblnfk Oct 6, 2026
90d2f69
docs: explain why Symfony serves dispatcher exchanges one at a time
roxblnfk Oct 6, 2026
c0613a1
chore: mark the per-request cycle collection for a configurable cleanup
roxblnfk Oct 6, 2026
b3f48b3
fix: avoid the exchange state calls that crash Rapira 0.9.0 workers o…
roxblnfk Oct 6, 2026
0d933f6
fix: answer a failure that escapes the kernel and stop serving
roxblnfk Oct 7, 2026
f8cb38c
fix: skip cancelled dispatcher exchanges again
roxblnfk Oct 7, 2026
88ad4a4
docs: say that REMOTE_ADDR in trusted_proxies trusts no proxy now tha…
roxblnfk Oct 7, 2026
6d71df0
fix: put loopback in REMOTE_ADDR for a unix peer, as the SAPI does
roxblnfk Oct 8, 2026
d1328db
fix: run terminate inside the Worker request handler
Zylius Oct 9, 2026
ed7098b
fix: log the warning of input truncated past max_input_vars in Dispat…
roxblnfk Oct 9, 2026
b864b22
fix: remove the pull request template file
roxblnfk Oct 9, 2026
928ef54
fix: normalize trusted sendfile responses for Rapira
Zylius Oct 12, 2026
afa1521
style: satisfy updated Spiral code style rules
Zylius Oct 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
trim_trailing_whitespace = true

[*.yaml]
indent_size = 2

[*.yml]
indent_size = 2

[*.http]
end_of_line = crlf

[*.md]
trim_trailing_whitespace = false

[Makefile]
indent_style = tab
15 changes: 15 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
* text=auto eol=lf

# PHP-aware hunk headers in `git diff`.
*.php diff=php

# Keep the published package lean: nothing ships in `composer archive` unless
# re-included below.
* export-ignore

/composer.json -export-ignore
/README.md -export-ignore
/CHANGELOG.md -export-ignore
/LICENSE.md -export-ignore
/src -export-ignore
/src/** -export-ignore
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* @rapira-rs/symfony
15 changes: 15 additions & 0 deletions .github/ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
### What steps will reproduce the problem?

### What is the expected result?

### What do you get instead?

### Additional info

| Q | A
| ---------------- | ---
| Package version | 0.1.?
| Rapira version |
| Symfony version |
| PHP version |
| Operating system |
22 changes: 22 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
cooldown:
default-days: 7
groups:
github-actions:
patterns: [ "*" ]

- package-ecosystem: "composer"
directory: "/"
schedule:
interval: "daily"
cooldown:
default-days: 7
groups:
composer-dev-dependencies:
dependency-type: "development"
versioning-strategy: "widen"
84 changes: 84 additions & 0 deletions .github/release-please/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
{
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
"release-type": "php",
"pull-request-title-pattern": "chore: release ${version}",
"packages": {
".": {
"package-name": "rapira/symfony",
"changelog-path": "CHANGELOG.md"
}
},
"bump-patch-for-minor-pre-major": true,
"bump-minor-pre-major": true,
"initial-version": "0.1.0",
"include-component-in-tag": false,
"include-v-in-tag": false,
"changelog-type": "default",
"changelog-sections": [
{
"type": "feat",
"section": "Features",
"hidden": false
},
{
"type": "fix",
"section": "Bug Fixes",
"hidden": false
},
{
"type": "perf",
"section": "Performance Improvements",
"hidden": false
},
{
"type": "docs",
"section": "Documentation",
"hidden": false
},
{
"type": "deps",
"section": "Dependencies",
"hidden": false
},
{
"type": "refactor",
"section": "Code Refactoring",
"hidden": false
},
{
"type": "test",
"section": "Tests",
"hidden": true
},
{
"type": "tests",
"section": "Tests",
"hidden": true
},
{
"type": "build",
"section": "Build System",
"hidden": true
},
{
"type": "ci",
"section": "Continuous Integration",
"hidden": true
},
{
"type": "chore",
"section": "Miscellaneous",
"hidden": true
},
{
"type": "style",
"section": "Styles",
"hidden": true
},
{
"type": "revert",
"section": "Reverts",
"hidden": true
}
]
}
1 change: 1 addition & 0 deletions .github/release-please/version.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
40 changes: 40 additions & 0 deletions .github/workflows/create-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---

# https://github.com/googleapis/release-please/blob/main/docs/customizing.md
# https://github.com/googleapis/release-please-action

on: # yamllint disable-line rule:truthy
push:
branches:
- 1.x
# Manual re-trigger, mirroring release-please's own post-merge run.
workflow_dispatch:

name: 📦 Create release

# Serialize release runs so a release-creation run is never interrupted or raced
# by another (e.g. a feature PR merged right before the release PR).
concurrency:
group: release-please-${{ github.ref }}
cancel-in-progress: false

permissions:
contents: write
pull-requests: write

jobs:
release:
runs-on: ubuntu-latest
steps:
- name: 🎉 Create release
uses: googleapis/release-please-action@v5
with:
# Events produced with GITHUB_TOKEN do not trigger other workflows, so
# CI won't run on the release PR itself. Swap for a PAT / GitHub App
# token if the release PR needs the full CI cycle.
token: ${{ secrets.GITHUB_TOKEN }}
config-file: .github/release-please/config.json
manifest-file: .github/release-please/version.json
target-branch: 1.x

...
80 changes: 80 additions & 0 deletions .github/workflows/quality.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
---

name: 🧹 Quality

on: # yamllint disable-line rule:truthy
pull_request:
branches:
- 1.x
push:
branches:
- 1.x

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
quality:
name: Code style and static analysis
timeout-minutes: 5
runs-on: ubuntu-latest
env:
COMPOSER_ROOT_VERSION: '0.1.x-dev'
steps:
- name: 📦 Check out the codebase
uses: actions/checkout@v6
with:
persist-credentials: false

- name: 🛠️ Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.4'
ini-values: error_reporting=E_ALL
coverage: none

- name: 🤖 Validate composer.json
run: composer validate --ansi --strict

- name: 📥 Install dependencies with composer
uses: ramsey/composer-install@v3

- name: 🎨 Check code style
run: composer cs:diff

- name: 🔍 Run static analysis
run: composer psalm:ci

dependency-analysis:
name: Dependency analysis on PHP ${{ matrix.php-version }}
timeout-minutes: 5
runs-on: ubuntu-latest
env:
COMPOSER_ROOT_VERSION: '0.1.x-dev'
strategy:
fail-fast: false
matrix:
php-version:
- '8.4'
- '8.5'
steps:
- name: 📦 Check out the codebase
uses: actions/checkout@v6
with:
persist-credentials: false

- name: 🛠️ Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
coverage: none

- name: 📥 Install dependencies with composer
uses: ramsey/composer-install@v3

- name: 🧩 Check dependencies
run: composer dependency-analyser
52 changes: 52 additions & 0 deletions .github/workflows/security.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---

name: 🔐 Security analysis

on: # yamllint disable-line rule:truthy
pull_request:
push:

permissions:
contents: read

jobs:
security-analysis:
timeout-minutes: 4
runs-on: ${{ matrix.os }}
env:
COMPOSER_ROOT_VERSION: '0.1.x-dev'
concurrency:
cancel-in-progress: true
group: security-analysis-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
strategy:
fail-fast: true
matrix:
os:
- ubuntu-latest
php-version:
- '8.4'
dependencies:
- highest
steps:
- name: 📦 Check out the codebase
uses: actions/checkout@v6
with:
persist-credentials: false

- name: 🛠️ Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
ini-values: error_reporting=E_ALL
coverage: none

- name: 🤖 Validate composer.json
run: composer validate --ansi --strict

- name: 📥 Install dependencies with composer
uses: ramsey/composer-install@v3
with:
dependency-versions: ${{ matrix.dependencies }}

- name: 🐛 Check installed packages for security vulnerability advisories
run: composer audit --ansi
Loading
Loading