Skip to content

0.31.0

Latest

Choose a tag to compare

@norberttech norberttech released this 19 Jan 17:27
· 39 commits to 1.x since this release

[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

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