Skip to content

v0.9.0

Choose a tag to compare

@luzrain luzrain released this 27 Aug 18:19
· 2 commits to main since this release

What's Changed

  • [Core] Breaking: Renamed the process API to use consistent worker terminology: Process is now WorkerInterface, WorkerProcess is now SupervisedWorker, and ExternalProcess is now ExecutableWorker.
  • [Core] Breaking: Removed getPid() and getLogger() from WorkerInterface and added getId().
  • [Core] Breaking: Reorganized code structure to clarify public and internal namespaces.
  • [Core] Breaking: Refactored the console command API.
  • [Core] Breaking: Replaced the plugin handleWorker() method with registerWorker() and unregisterWorker() and changed Plugin::onStop() to return void.
  • [Core] Breaking: Removed the aggregate SupervisorStatus and ConnectionsStatus APIs in favor of GetWorkersCommand, GetProcessesCommand, and GetNetworkInfoCommand.
  • [Core] Added dynamic worker registration and removal through WorkerFactory, StartWorkerCommand, and StopWorkerCommand.
  • [Core] Secured the Unix-socket message bus with peer credentials, caller context, source authorization, restricted deserialization, payload limits, connection limits, and protocol handshakes.
  • [Core] Reworked message-bus transport with persistent sequential connections, asynchronous handling, and a larger backlog.
  • [Core] Improved supervisor scalability with batched worker spawning.
  • [Core] Added parent-death signaling on Linux and FreeBSD so workers terminate when the master process unexpectedly exits.
  • [Core] Improved process identity switching with numeric UID/GID support, effective-ID checks, clearer errors, and prevention of worker startup after failed identity changes.
  • [Core] Improved plugin startup, shutdown, and failure handling, including correct startup ordering.
  • [Core] Daemon startup now waits for master initialization acknowledgement and correctly reports startup failures.
  • [Core] Redirected standard input, output, and error streams to /dev/null after daemonization.
  • [Core] Added the about command.
  • [Core] Replaced the workers and processes commands with a unified supervisor command.
  • [Core] Redesigned console and log output.
  • [Core] Added worker names, process uptime, connection age, and correct IPv6 formatting to status command output.
  • [Core] Optimized network traffic tracking by batching deltas.
  • [Core] Improved supervisor reporting for failed forks, non-zero exits, and signal-based worker termination.
  • [Core] Breaking: FFI is now required.
  • [FileMonitor] Breaking: Replaced WatchDir with absolute glob-based WatchRule configuration, including globstar patterns.
  • [FileMonitor] Added native FFI-based inotify watchers on Linux and FSEvents watchers on macOS, with polling fallback.
  • [FileMonitor] Improved recursive monitoring for newly created, moved, replaced, removed, and symlinked directory trees.
  • [HttpServer] Breaking: Renamed HttpServerProcess to HttpServerWorker, serverDir to documentRoot, and http2Enable to http2Enabled.
  • [HttpServer] Fixed max-request dispersion so each worker receives its own randomized reload threshold.
  • [HttpServer] Added immediate validation when gzip compression is enabled without the zlib extension.
  • [HttpServer] Fixed static file serving when documentRoot is relative, symlinked, or contains a trailing slash.
  • [Logger] Exposed LogEntry and ContextFlattenNormalizer as public APIs for custom handlers and formatters.
  • [Logger] Improved context normalization with depth limits and safe handling of objects.
  • [Logger] Preserved microsecond precision in worker log timestamps.
  • [Logger] Fixed worker log loss during channel cloning, lifecycle shutdown, and event-loop driver replacement.
  • [Metrics] Fixed summary registration so configured quantiles are passed correctly to the Prometheus client.
  • [Metrics] Breaking: Standardized built-in metric names, labels, and help descriptions.
  • [Metrics] Updated supervisor and scheduler gauges from live worker-pool state, including dynamically registered and removed workers.
  • [Metrics] Breaking: Renamed LabelsNotMatchException to LabelMismatchException.
  • [Scheduler] Breaking: Renamed PeriodicProcess to ScheduledWorker and PeriodicalTrigger to PeriodicTrigger.
  • [Scheduler] Breaking: Removed SchedulerStatus, PeriodicWorkerInfo, GetSchedulerStatusCommand, and ProcessScheduledEvent in favor of GetWorkersCommand and WorkerInfo.
  • [Scheduler] Added dynamic scheduled-worker registration and removal through the WorkerFactory API.
  • [Scheduler] Improved the scheduler command with live task state and timezone-aware next-run timestamps.
  • [Scheduler] Invalid schedule expressions now fail during configuration instead of being logged and silently skipped during startup.
  • [Scheduler] Improved cron-expression detection, including named weekdays, named months, and predefined expressions such as @daily.
  • [Scheduler] Improved scheduling precision with fractional-second delays and automatic removal of completed one-shot workers.
  • [Scheduler] Scheduler shutdown now respects the server stop timeout and forcefully terminates tasks that do not finish in time.
  • [Scheduler] Improved scheduler reporting for failed forks, non-zero exits, and signal-based task termination.
  • [Symfony] Breaking: Renamed SymfonyHttpServerProcess to SymfonyHttpServerWorker, SymfonyWorkerProcess to SymfonySupervisedCommandWorker, and SymfonyPeriodicProcess to SymfonyScheduledCommandWorker.
  • [Symfony] Breaking: Replaced ProcessStartEvent, ProcessStopEvent, and ProcessReloadEvent with WorkerStartEvent, WorkerStopEvent, and WorkerReloadEvent in the SymfonyEvent namespace.
  • [Symfony] Breaking: Renamed the runtime http2_enable option to http2_enabled.
  • [Symfony] Breaking: Renamed Symfony command-worker properties: command to commandInput and commandWithoutArguments to commandName.
  • [Symfony] Fixed retention of multipart upload streams and temporary files after completed requests.
  • [Symfony] Moved HTTP conversion, multipart, upload, and Monolog implementation classes into internal namespaces.
  • [Other] Updated comments, corrected grammar, and standardized variable and class names across the codebase.

Full Changelog: v0.8.2...v0.9.0