[0.31.0] - 2026-01-19
Added
- #2158 - New flow-php/monolog-telemetry-bridge package - connects Monolog with Flow Telemetry for unified logging export - @norberttech
- #2158 - TelemetryHandler - Monolog handler that forwards logs to Flow Telemetry with automatic trace context propagation (trace_id/span_id) - @norberttech
- #2158 - LogRecordConverter - converts Monolog LogRecord to Telemetry LogRecord with attribute prefixing (context., extra.) - @norberttech
- #2158 - SeverityMapper - maps Monolog levels to Telemetry severities with customizable mapping - @norberttech
- #2158 - ValueNormalizer - normalizes PHP values to Telemetry-compatible attribute types - @norberttech
- #2158 - DSL functions: telemetry_handler(), log_record_converter(), severity_mapper(), value_normalizer() - @norberttech
- #2158 - Automatic exception handling - Throwables in Monolog context are passed to Telemetry's setException() - @norberttech
- #2158 - Documentation for Monolog Telemetry Bridge - @norberttech
- #2150 - flow-php/telemetry library - @norberttech
- #2150 - flow-php/telemetry-otlp-bridge bridge - @norberttech
- #2140 - Benchmark documentation explaining infrastructure, workflow, and how to run benchmarks - @norberttech
- #2136 - Added normalize() and fromArray() methods to PostgreSQL Explain Plan classes (Cost, Timing, Buffers, PlanNode, Plan, ExplainConfig) for serialization/deserialization support - @norberttech
- #2136 - Added PHPStan type aliases (PlanNodeShape, TimingShape, BuffersShape) for improved type documentation - @norberttech
- #2134 - InvalidExplainConfigException - exception for invalid EXPLAIN config flag combinations - @norberttech
- #2134 - ExplainConfig fluent builder methods: withAnalyze(), withoutAnalyze(), withBuffers(), withoutBuffers(), withTiming(), withoutTiming(), withVerbose(), withoutVerbose(), withCosts(), withoutCosts(), withMemory(), withoutMemory(), withSettings(), withoutSettings(), withSummary(), withoutSummary(), withWal(), withoutWal(), withFormat() - @norberttech
- #2134 - ExplainConfig validation - throws InvalidExplainConfigException when BUFFERS, TIMING, or WAL are enabled without ANALYZE - @norberttech
- #2134 - PlanSummary::fromArray() static factory method - creates instance from normalized array (inverse of normalize) - @norberttech
- #2134 - ExplainConfigTest - unit tests for validation and fluent builder methods - @norberttech
- #2134 - PgSqlExplainTest - integration tests with data providers for ExplainConfig combinations - @norberttech
- #2133 - sql_to_limited_query(string $sql, int $limit) DSL function - adds LIMIT clause to queries without adding OFFSET - @norberttech
- #2133 - PlanSummary::normalize() method - returns all plan summary fields as snake_case keyed array - @norberttech
- #2133 - PlanSummary memory statistics: memoryUsed, memoryPeak - @norberttech
- #2133 - PlanSummary join statistics: hashJoinCount, nestedLoopCount, mergeJoinCount - @norberttech
- #2133 - PlanSummary buffer statistics: totalSharedHit, totalSharedRead, hasTempSpill - @norberttech
- #2133 - PlanSummary row statistics: estimatedRows, actualRows - @norberttech
- #2133 - LimitedQueryTest - 7 test cases for sql_to_limited_query function - @norberttech
- #2133 - PlanSummaryTest - 3 test cases for PlanSummary::normalize() method - @norberttech
Changed
- 620363 - chore: update dependencies - @norberttech
- 4c5efc - refactor: improve stabilit of benchmarks - @norberttech
- 91a5d0 - refactor: optimize benchmarks on ci/cd - @norberttech
- #2158 - updated minimum version of monolog to V3 across monorepo - @norberttech
- #2157 - Remove part of unnecessary recursion calls from
array_dot_get()method - @stloyd - #2154 - refactor: stabilize benchmarks - @norberttech
- 08dae8 - refactor: change runner for benchmark-baseline job - @norberttech
- af53ce - refactor: change runner for benchmark tests to flow-php-benchmark-runner - @norberttech
- #2152 - SpanEvent timestamp changed from nanoseconds (int) to DateTimeImmutable for better type safety and consistency - @norberttech
- #2152 - span_event() DSL function now requires explicit timestamp parameter - @norberttech
- #2152 - Span::recordException() now requires explicit timestamp parameter - @norberttech
- #2143 - Adjust
Parameter::asNumber()behaviour to match closer the PHP one - @stloyd - #2140 - GitHub Actions benchmarks now run on dedicated self-hosted runner (flow-php-runner) for consistent results - @norberttech
- #2131 - Update Homebrew TAP formula: flow-php to version: 0.30.0 - @norberttech
- #2136 - Optimized PostgreSqlCursorExtractor to break cursor loop early when fetched rows are less than fetch size, avoiding unnecessary database round-trips - @norberttech
- #2134 - ExplainConfig::withoutAnalyze() auto-disables buffers, timing, and wal options - @norberttech
- #2133 - PlanAnalyzer::summary() now computes and passes join counts, buffer statistics, and row data to PlanSummary - @norberttech
Fixed
- 493cce - benchmarks runner label on github actions workflows - @norberttech
- #2152 - Mermaid diagrams responsiveness on documentation pages - diagrams now scale properly and don't overlap - @norberttech
- b733f4 - documentation tests on website - @norberttech
- 99bb3b - telemetry library - @norberttech
- a71e6a - pr-comment and monorepo-split workflows - @norberttech
- #2151 - TransformerLoader - @norberttech
- d14d49 - trigger for pr-comment worfklow - @norberttech
- #2134 - ExplainModifier now explicitly sets BUFFERS, TIMING, SUMMARY to OFF when disabled (PostgreSQL defaults could override user config) - @norberttech
- #2134 - ExplainParser::parseBuffers() now detects Local Hit/Read Blocks for temporary tables - @norberttech
Removed
- #2152 - GenericEvent::now() method - use GenericEvent::create() with explicit timestamp instead - @norberttech
- #2152 - Carrier::keys() method from propagation interface - unused in the codebase - @norberttech
Contributors
Generated by Automation