Security
- Route exception logging in
HttpRequestHandlerthrough PSR-3 logger instead oferror_log()(#296) — #466 - StaticFilesMiddleware: add
follow_symlinksoption (default:false) (#292) — #473 - ServerWorker: validate SSL cert/key paths are regular files and not symlinks (#286) — #474
- Add
connection_timeout,keepalive_timeoutand per-serverbody_size_capfor slowloris protection (#279) — #477
Performance
- Cache PID file handles in
SchedulerWorkerto avoidfopen/fclosein event loop (#297) — #464 - Replace per-tick closure allocation in
SchedulerWorkerwith first-class callable (#293) — #479 - Cache
normalizeHeaderNameresults and fix irregular header acronyms (#287) — #468 - Add early return in
FileUploadValidator::validatewhen no uploaded files (#281) — #469
Code Quality
ConfigLoader::getConfig: split into named methods, replace silent empty-fallback with exception (#325) — #480ConfigLoader: movesetBuildConfiginto setters block (#329) — #481- Make
TaskErrorEventimmutable by removing unusedsetErrormutator (#338) — #467 - Remove redundant
function_existschecks inInotifyMonitorWatcher(#341) — #478 - Fix
InotifyMonitorWatcher::$pathByWdPHPDoc type (#347) — #484
Deprecated
Tests
- Add event ordering and
__invokefallback tests toTaskHandlerandProcessHandler(#276) — #472 - Add
onWorkerStartinvocation tests toServerWorkerTest(#284) — #471 - Add in-process pipeline coverage and gate live-server test in
MiddlewareTest(#288) — #470 - Add coverage for
processFilesnon-array drop branch inRequestConverterTest(#294) — #475 - Replace source-grep test in
SchedulerWorkerSigchldTestwith behavioral test (#302) — #476
Docs
- Add class-level and constructor PHPDoc to
AsTaskandAsProcessattributes (#309) — #486 - Add class-level PHPDoc to
HttpRequestHandlerexplaining the request lifecycle (#320) — #482 - Add class-level and method PHPDoc to
Requestclass (#321) — #487 - Add class-level PHPDoc to Start/Error events marking them as extension points (#335) — #483
- Fix orphaned footnote notation for php-event extension note in README (#311) — #489
- Add License section and MIT badge to README (#300) — #488
- Normalise
**list/emphasis markers to*/ blockquote format in README (#310) — #490
Full Changelog: v0.21.0...v0.22.0