Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
3373989
fix(iouring): correct SEND_ZC opcode + CQE_F_NOTIF flag (zero-copy se…
FumingPower3925 Jun 17, 2026
008b132
feat(core): adaptive inline-first dispatch under AsyncHandlers (#356)
FumingPower3925 Jun 17, 2026
dad8173
Merge pull request #357 from goceleris/feat/v1.5.3/iouring-sendzc-opc…
FumingPower3925 Jun 17, 2026
53027a6
Merge pull request #358 from goceleris/feat/v1.5.3/iouring-adaptive-i…
FumingPower3925 Jun 17, 2026
b6c51af
test(router): lock in #356 no-regression guard for explicit .Async() …
FumingPower3925 Jun 17, 2026
96581bc
perf(h1): drop redundant upfront findHeaderEnd block scan (#359)
FumingPower3925 Jun 17, 2026
62803d4
Merge pull request #362 from goceleris/feat/v1.5.3/h1-no-double-heade…
FumingPower3925 Jun 17, 2026
a53643e
perf(core): reuse heap respHeaders backing across requests (#360)
FumingPower3925 Jun 17, 2026
29ebaec
perf(core): settle non-blocking adaptive routes to stop per-req timin…
FumingPower3925 Jun 17, 2026
c7bc678
Merge pull request #363 from goceleris/feat/v1.5.3/adaptive-settle-fast
FumingPower3925 Jun 17, 2026
d1baff8
fix(core): raise adaptive promote threshold 50µs->300µs (#364 hardening)
FumingPower3925 Jun 17, 2026
198960e
Merge pull request #365 from goceleris/fix/v1.5.3/adaptive-promote-th…
FumingPower3925 Jun 17, 2026
4947d11
Merge pull request #366 from goceleris/feat/v1.5.3/respheader-scratch…
FumingPower3925 Jun 17, 2026
0a54232
perf(h1): drop dead-store writes in ResetH1Stream (#346)
FumingPower3925 Jun 17, 2026
f0a92ac
Merge pull request #368 from goceleris/perf/v1.5.3/h1-reset-deadstore
FumingPower3925 Jun 17, 2026
4cb0927
fix(adaptive): gate io_uring bias off by default (#341)
FumingPower3925 Jun 17, 2026
822859c
Merge pull request #369 from goceleris/fix/v1.5.3/adaptive-bias-defau…
FumingPower3925 Jun 17, 2026
a557bce
perf(epoll): inherit TCP_NODELAY from the listen socket (#337)
FumingPower3925 Jun 17, 2026
027054b
Merge pull request #370 from goceleris/perf/v1.5.3/epoll-nodelay-inherit
FumingPower3925 Jun 17, 2026
ce1073c
perf(iouring): gate SEND_ZC by payload size (#332)
FumingPower3925 Jun 17, 2026
3137b78
Merge pull request #371 from goceleris/perf/v1.5.3/iouring-sendzc-siz…
FumingPower3925 Jun 17, 2026
b2bcf5f
feat(adaptive): reversible io_uring bias, default on (#338)
FumingPower3925 Jun 17, 2026
3d06697
Merge pull request #372 from goceleris/feat/v1.5.3/adaptive-reversibl…
FumingPower3925 Jun 17, 2026
09113c8
perf(core): reuse blobHdrScratch for >16-header responses (#374)
FumingPower3925 Jun 17, 2026
1deeda2
Merge pull request #373 from goceleris/perf/v1.5.3/blob-manyheader-sc…
FumingPower3925 Jun 17, 2026
e905e39
fix(secure): default Cross-Origin-Embedder-Policy + X-Download-Option…
FumingPower3925 Jun 17, 2026
ad7a466
Merge pull request #375 from goceleris/fix/v1.5.3/secure-coep-optin
FumingPower3925 Jun 17, 2026
fd1d613
fix(iouring): stop sticky async-promotion of inline conns on split-re…
FumingPower3925 Jun 17, 2026
e1a0119
fix(iouring): never auto-select SQPOLL (#377)
FumingPower3925 Jun 17, 2026
7c5e637
Merge pull request #378 from goceleris/fix/v1.5.3/post-body-sticky-pr…
FumingPower3925 Jun 17, 2026
63f4110
Merge pull request #379 from goceleris/fix/v1.5.3/disable-sqpoll-377
FumingPower3925 Jun 17, 2026
eacddc7
fix(router): make adaptive route promotion reversible (#364)
FumingPower3925 Jun 17, 2026
28b28d4
fix(iouring): revert a promoted connection to inline on route de-prom…
FumingPower3925 Jun 17, 2026
2fcc9a4
Merge pull request #380 from goceleris/fix/v1.5.3/reversible-adaptive…
FumingPower3925 Jun 17, 2026
112f515
refactor(engine): remove dynamic worker scaler
FumingPower3925 Jun 18, 2026
84e6263
feat(adaptive): kernel/feature-aware start engine + lazy standby
FumingPower3925 Jun 18, 2026
72d947c
feat(adaptive): kernel/memlock/protocol-gated start engine + new-conn…
FumingPower3925 Jun 19, 2026
90839ab
perf(async): effective AsyncHandlers for drivers + immediate-promote …
FumingPower3925 Jun 19, 2026
a2c48bd
release(v1.5.3): bump Version 1.5.0->1.5.3 + middleware celeris pins
FumingPower3925 Jun 21, 2026
1397991
docs(security): update SECURITY.md for the 1.5.x supported line
FumingPower3925 Jun 21, 2026
f630b3f
test(probe): move CAP_SYS_NICE side-effect test to the linux-tagged file
FumingPower3925 Jun 21, 2026
ae02d09
deps: refresh dependencies before the v1.5.3 tag
FumingPower3925 Jun 21, 2026
63870b0
lint(adaptive): fix gofmt + ineffassign + revive (linux-only, pre-exi…
FumingPower3925 Jun 21, 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
12 changes: 6 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
- uses: actions/setup-go@v6
with:
go-version: "1.26.4"
Expand Down Expand Up @@ -64,7 +64,7 @@ jobs:
name: Unit (root + middleware sub-modules)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
- uses: actions/setup-go@v6
with:
go-version: "1.26.4"
Expand Down Expand Up @@ -107,7 +107,7 @@ jobs:
name: Conformance
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
- uses: actions/setup-go@v6
with:
go-version: "1.26.4"
Expand Down Expand Up @@ -144,7 +144,7 @@ jobs:
CELERIS_PG_DSN: postgres://celeris:celeris@127.0.0.1:5432/celeristest?sslmode=disable
CELERIS_REDIS_ADDR: 127.0.0.1:6379
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
- uses: actions/setup-go@v6
with:
go-version: "1.26.4"
Expand All @@ -164,7 +164,7 @@ jobs:
matrix:
os: [ubuntu-latest, macos-latest]
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
- uses: actions/setup-go@v6
with:
go-version: "1.26.4"
Expand All @@ -187,7 +187,7 @@ jobs:
name: Vulnerability Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
- uses: actions/setup-go@v6
with:
go-version: "1.26.4"
Expand Down
14 changes: 7 additions & 7 deletions .github/workflows/drivers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ jobs:
env:
CELERIS_PG_DSN: postgres://celeris:celeris@127.0.0.1:5432/celeristest?sslmode=disable
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
- uses: actions/setup-go@v6
with:
go-version: "1.26.4"
Expand Down Expand Up @@ -132,7 +132,7 @@ jobs:
env:
CELERIS_REDIS_ADDR: 127.0.0.1:6379
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
- uses: actions/setup-go@v6
with:
go-version: "1.26.4"
Expand Down Expand Up @@ -173,7 +173,7 @@ jobs:
env:
CELERIS_REDIS_ADDR: 127.0.0.1:6379
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
- uses: actions/setup-go@v6
with:
go-version: "1.26.4"
Expand Down Expand Up @@ -210,7 +210,7 @@ jobs:
env:
CELERIS_MEMCACHED_ADDR: 127.0.0.1:11211
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
- uses: actions/setup-go@v6
with:
go-version: "1.26.4"
Expand Down Expand Up @@ -263,7 +263,7 @@ jobs:
--health-timeout 5s
--health-retries 10
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
- uses: actions/setup-go@v6
with:
go-version: "1.26.4"
Expand Down Expand Up @@ -296,7 +296,7 @@ jobs:
REDIS_IMAGE: redis:${{ matrix.redis }}
CELERIS_REDIS_CLUSTER_ADDRS: "127.0.0.1:7000,127.0.0.1:7001,127.0.0.1:7002"
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
- uses: actions/setup-go@v6
with:
go-version: "1.26.4"
Expand Down Expand Up @@ -382,7 +382,7 @@ jobs:
CELERIS_REDIS_SENTINEL_ADDRS: "127.0.0.1:26379,127.0.0.1:26380,127.0.0.1:26381"
CELERIS_REDIS_SENTINEL_MASTER: mymaster
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
- uses: actions/setup-go@v6
with:
go-version: "1.26.4"
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
needs: [validate-tag, ci]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Create sub-module tags
Expand Down Expand Up @@ -70,7 +70,7 @@ jobs:
needs: [validate-tag, ci, tag-submodules]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7
- uses: actions/setup-go@v6
with:
go-version: "1.26.4"
Expand Down
62 changes: 53 additions & 9 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,58 @@

## Supported Versions

| Version | Supported |
|---------------|-----------|
| >= 1.4.0 | Yes |
| < 1.4.0 | No |

Security updates are issued only for the 1.4.x line. Earlier versions
(1.3.x and below) no longer receive fixes, including critical ones —
upgrade to the latest 1.4.x to remain covered.
| Version | Supported |
|----------|-----------|
| >= 1.5.0 | Yes |
| 1.4.x | No |
| < 1.4.0 | No |

Security updates are issued only for the 1.5.x line. The 1.4.x line and
earlier (1.3.x and below) no longer receive fixes, including critical
ones — upgrade to the latest 1.5.x to remain covered.

### v1.5.x Security Improvements

The 1.5.x line is the core-engine performance milestone (io_uring / epoll /
adaptive). Several of its changes are memory-safety or DoS-posture
relevant:

- **io_uring use-after-free hardening under churn**: the io_uring engine
serializes close behind in-flight completions (cancel-then-release) and
tags each completion's `user_data` with a 16-bit per-connection
generation counter. A stale CQE arriving after a socket's slot has been
recycled is now detected by the generation mismatch and dropped instead
of being misrouted to the new connection occupying that slot — closing a
gen-collision window that could cross-wire two connections' buffers or
corrupt the heap under sustained POST / connection-churn load.

- **H1 parser request-smuggling hardening**: the H1 request parser was
hardened against request-smuggling vectors and RFC 9110/9112 framing
violations (conflicting / duplicate `Content-Length`, `Transfer-Encoding`
vs `Content-Length` ambiguity, malformed chunk framing), so a
front-end / back-end desync cannot be induced through celeris.

- **Latent data-race / memory-safety fixes**: two races that are
memory-safety bugs under the Go memory model were closed — a
`Start` / `Shutdown` race on the server CPU monitor, and the epoll
async-detach path's `h1State.Detached` flag, now an `atomic.Bool`
published with a release barrier so a detaching connection cannot be
observed half-initialized by the engine loop.

- **`middleware/secure` default hardening (behavior change)**:
`Cross-Origin-Embedder-Policy` (`require-corp`) and `X-Download-Options`
(`noopen`) are now **off by default** and opt-in, matching Helmet's
posture. The previous COEP default silently broke cross-origin resources
without a corresponding security win for most apps; set
`CrossOriginEmbedderPolicy: "require-corp"` (or `"credentialless"`)
explicitly where cross-origin isolation is required. The default
secure-header count drops from 11 to 9 — **audit your deployment if you
relied on the implicit COEP header**.

- **Go toolchain bump (1.26.3 → 1.26.4)**: every `go.mod` in the repo
(and the loadgen sub-module) moves to `go 1.26.4` for the stdlib
security fixes in that patch release; CI pins the explicit patch version
so a stale runner cache cannot regress.

### v1.4.2 Security Improvements

Expand Down Expand Up @@ -164,7 +208,7 @@ posture is conservative:

## Historical (unsupported)

Per-version security notes for the 1.3.x line and earlier are preserved in the git history of this file (`git log SECURITY.md`). Those releases no longer receive fixes — upgrade to the latest 1.4.x to remain covered.
Per-version security notes for the 1.3.x line and earlier are preserved in the git history of this file (`git log SECURITY.md`). Those releases no longer receive fixes — upgrade to the latest 1.5.x to remain covered.

## Reporting a Vulnerability

Expand Down
Loading