Skip to content

Update dependency azjezz/psl to v6#417

Open
renovate[bot] wants to merge 1 commit into1.22.xfrom
renovate/azjezz-psl-6.x
Open

Update dependency azjezz/psl to v6#417
renovate[bot] wants to merge 1 commit into1.22.xfrom
renovate/azjezz-psl-6.x

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate bot commented Mar 18, 2026

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
azjezz/psl ^4.2.0^6.1.1 age adoption passing confidence

Release Notes

php-standard-library/php-standard-library (azjezz/psl)

v6.1.1

Compare Source

fixes
  • fix(str): Str\chr() now throws OutOfBoundsException for invalid Unicode code points instead of silently returning an empty string
  • fix(str): Str\from_code_points() now validates code points and throws OutOfBoundsException for out-of-range values, surrogates, and negative inputs instead of producing invalid UTF-8; implementation now delegates to Str\chr() for consistent behavior
other
  • chore(str): clarify width(), truncate(), and width_slice() PHPDoc to explicitly reference mb_strwidth()/mb_strimwidth() semantics
  • chore: make all function calls explicit across the codebase, eliminating PHP namespace fallback resolution
  • chore(h2): skip timer-sensitive rate limiter test on Windows

v6.1.0

Compare Source

features
  • feat(io): introduce Psl\IO\BufferedWriteHandleInterface, extending WriteHandleInterface with flush() for handles that buffer data internally before writing to an underlying resource
  • feat: introduce Compression component with streaming compression/decompression abstractions for IO handles. Provides CompressorInterface, DecompressorInterface, four handle decorators (CompressingReadHandle, CompressingWriteHandle, DecompressingReadHandle, DecompressingWriteHandle), and convenience functions compress() and decompress()
  • feat: introduce HPACK component - RFC 7541 HPACK header compression for HTTP/2
  • feat: introduce H2 component - HTTP/2 binary framing protocol implementation
  • feat: introduce Cache component - async-safe in-memory LRU cache with per-key atomicity via KeyedSequence, proactive TTL expiration via event loop

v6.0.3: Hevlaska 6.0.3

Compare Source

PSL 6.0.3

No code changes. This release improves the release infrastructure.

What changed

  • Annotated tags: Split repository tags are now created as annotated tags via the GitHub API, removing the "unverified" warning shown on 6.0.0-6.0.2 tags.
  • Immutable tags: All 62 repositories now have tag immutability rulesets. Tags cannot be deleted, updated, or force-pushed.
  • Maintenance branch sync: The splitter now syncs the maintenance branch (e.g. 6.0.x) to the tag before splitting, ensuring split repos always receive the correct commits for patch releases.

Full changelog

See CHANGELOG.md for details.

v6.0.2: Hevlaska 6.0.2

Compare Source

PSL 6.0.2

Patch release fixing a bug in IO\Reader that affected non-blocking stream reads (TLS, TCP, etc.).

Bug fixes

IO: Reader no longer treats empty non-blocking reads as EOF

Reader::readUntil() and Reader::readUntilBounded() assumed that an empty read() meant end-of-stream. On non-blocking handles (TLS, TCP, Unix sockets), read() can return empty before data arrives. This caused readLine() to return the entire stream content as a single string instead of splitting into individual lines.

This bug affected any code using IO\Reader with network streams. If you were using readLine(), readUntil(), or readUntilBounded() on a non-blocking stream and getting unexpected results, this is the fix.

Docs: source links point to correct paths

Documentation source links (See src/Psl/Default/ for the full API) now link to packages/default/src/Psl/Default/ instead of the non-existent top-level src/Psl/Default/.

Full changelog

See CHANGELOG.md for details.

v6.0.1

Compare Source

  • fix(io): Reader::readUntil() and Reader::readUntilBounded() no longer treat empty reads from non-blocking streams as EOF, fixing readLine() returning the entire content instead of individual lines when used with non-blocking streams
  • fix(docs): source links now correctly point to packages/{name}/src/Psl/ instead of the non-existent top-level src/Psl/ path
  • internal: add splitter audit command to verify organization repository settings (wiki, issues, discussions, PRs, tag immutability).

v6.0.0

Compare Source

breaking changes
  • BC - All null|Duration $timeout parameters across IO, Network, TCP, TLS, Unix, UDP, Socks, Process, and Shell components have been replaced with CancellationTokenInterface $cancellation = new NullCancellationToken(). This enables both timeout-based and signal-based cancellation of async operations.
  • BC - Removed Psl\IO\Exception\TimeoutException - use Psl\Async\Exception\CancelledException instead.
  • BC - Removed Psl\Network\Exception\TimeoutException - use Psl\Async\Exception\CancelledException instead.
  • BC - Removed Psl\Process\Exception\TimeoutException - use Psl\Async\Exception\CancelledException instead.
  • BC - Removed Psl\Shell\Exception\TimeoutException - use Psl\Async\Exception\CancelledException instead.
  • BC - Psl\IO\CloseHandleInterface now requires an isClosed(): bool method.
  • BC - Network\SocketInterface::getLocalAddress() and Network\StreamInterface::getPeerAddress() no longer throw exceptions. Addresses are resolved at construction time and cached, making these O(1) property lookups with no syscall.
  • BC - BufferedReadHandleInterface::readLine() now always splits on "\n" instead of PHP_EOL. Trailing "\r" is stripped, so both "\n" and "\r\n" line endings are handled consistently across all platforms. Use readUntil(PHP_EOL) for system-dependent behavior.
  • BC - Psl\TLS\ServerConfig renamed to Psl\TLS\ServerConfiguration.
  • BC - Psl\TLS\ClientConfig renamed to Psl\TLS\ClientConfiguration.
  • BC - All variables and parameters across the codebase now use $camelCase naming instead of $snake_case.
  • BC - TCP\listen(), TCP\connect(), TCP\Socket::listen(), TCP\Socket::connect() now accept configuration objects (TCP\ListenConfiguration, TCP\ConnectConfiguration) instead of individual parameters for socket options.
  • BC - Unix\listen() and Unix\Socket::listen() now accept Unix\ListenConfiguration instead of individual parameters.
  • BC - UDP\Socket::bind() now accepts UDP\BindConfiguration instead of individual parameters.
  • BC - TCP\Socket setter/getter methods (setReuseAddress, setReusePort, setNoDelay, etc.) have been removed. Use configuration objects instead.
  • BC - TCP\Connector constructor now accepts TCP\ConnectConfiguration instead of bool $noDelay.
  • BC - Socks\Connector constructor changed from (string $proxyHost, int $proxyPort, ?string $username, ?string $password, ConnectorInterface $connector) to (ConnectorInterface $connector, Socks\Configuration $configuration).
  • BC - Renamed ingoing to ongoing across Semaphore, Sequence, KeyedSemaphore, and KeyedSequence (hasIngoingOperations() -> hasOngoingOperations(), getIngoingOperations() -> getOngoingOperations(), etc.).
features
  • feat(async): introduce Psl\Async\CancellationTokenInterface for cancelling async operations
  • feat(async): introduce Psl\Async\NullCancellationToken - no-op token used as default parameter value
  • feat(async): introduce Psl\Async\SignalCancellationToken - manually triggered cancellation via cancel(?Throwable $cause)
  • feat(async): introduce Psl\Async\TimeoutCancellationToken - auto-cancels after a Duration, replacing the old Duration $timeout pattern
  • feat(async): introduce Psl\Async\LinkedCancellationToken - cancelled when either of two inner tokens is cancelled, useful for combining a request-scoped token with an operation-specific timeout
  • feat(async): introduce Psl\Async\Exception\CancelledException - thrown when a cancellation token is triggered; the cause (e.g., TimeoutException) is attached as $previous. Use $e->getToken() to identify which token triggered the cancellation.
  • feat(async): Async\sleep() now accepts an optional CancellationTokenInterface parameter, allowing early wake-up on cancellation
  • feat(async): Awaitable::await() now accepts an optional CancellationTokenInterface parameter
  • feat(async): Sequence::waitFor() and Sequence::waitForPending() now accept an optional CancellationTokenInterface parameter
  • feat(async): Semaphore::waitFor() and Semaphore::waitForPending() now accept an optional CancellationTokenInterface parameter
  • feat(async): KeyedSequence::waitFor() and KeyedSequence::waitForPending() now accept an optional CancellationTokenInterface parameter
  • feat(async): KeyedSemaphore::waitFor() and KeyedSemaphore::waitForPending() now accept an optional CancellationTokenInterface parameter
  • feat(channel): SenderInterface::send() and ReceiverInterface::receive() now accept an optional CancellationTokenInterface parameter
  • feat(network): ListenerInterface::accept() now accepts an optional CancellationTokenInterface parameter
  • feat(tcp): TCP\ListenerInterface::accept() now accepts an optional CancellationTokenInterface parameter
  • feat(unix): Unix\ListenerInterface::accept() now accepts an optional CancellationTokenInterface parameter
  • feat(tls): TLS\Acceptor::accept(), TLS\LazyAcceptor::accept(), TLS\ClientHello::complete(), and TLS\Connector::connect() now accept an optional CancellationTokenInterface parameter - cancellation propagates through the TLS handshake
  • feat(tls): TLS\TCPConnector::connect() and TLS\connect() now pass the cancellation token through to the TLS handshake
  • feat(async): introduce Psl\Async\TaskGroup for running closures concurrently and awaiting them all with defer() + awaitAll()
  • feat(async): introduce Psl\Async\WaitGroup, a counter-based synchronization primitive with add(), done(), and wait()
  • feat(encoding): introduce Psl\Encoding\QuotedPrintable\encode(), decode(), and encode_line() for RFC 2045 quoted-printable encoding with configurable line length and line ending
  • feat(encoding): introduce Psl\Encoding\EncodedWord\encode() and decode() for RFC 2047 encoded-word encoding/decoding in MIME headers (B-encoding and Q-encoding with automatic selection)
  • feat(tls): introduce TLS\ListenerInterface and TLS\Listener, wrapping any Network\ListenerInterface to perform TLS handshakes on accepted connections
  • feat(encoding): add Base64\Variant::Mime for RFC 2045 MIME Base64 with 76-char line wrapping and CRLF, using constant-time encoding/decoding
  • feat(encoding): introduce streaming IO handles for Base64 (EncodingReadHandle, DecodingReadHandle, EncodingWriteHandle, DecodingWriteHandle), QuotedPrintable (same 4), and Hex (same 4), bridging Psl\IO and Psl\Encoding for transparent encode/decode on read/write
  • feat(io): introduce Psl\IO\BufferedReadHandleInterface, extending ReadHandleInterface with readByte(), readLine(), readUntil(), and readUntilBounded()
  • feat(io): Psl\IO\Reader now implements BufferedReadHandleInterface
  • feat(tcp): introduce TCP\ListenConfiguration and TCP\ConnectConfiguration with immutable with* builder methods
  • feat(unix): introduce Unix\ListenConfiguration with immutable with* builder methods
  • feat(udp): introduce UDP\BindConfiguration with immutable with* builder methods
  • feat(socks): introduce Socks\Configuration with immutable with* builder methods for proxy host, port, and credentials
  • feat(tcp): introduce TCP\RestrictedListener, wrapping a listener to restrict connections to a set of allowed IP\Address and CIDR\Block entries
  • feat(network): introduce Network\CompositeListener, accepting connections from multiple listeners concurrently through a single accept() call
  • feat: introduce URI component - RFC 3986 URI parsing, normalization, reference resolution, and RFC 6570 URI Template expansion (Levels 1–4), with RFC 5952 IPv6 canonical form and RFC 6874 zone identifiers
  • feat: introduce IRI component - RFC 3987 Internationalized Resource Identifier parsing with Unicode support, RFC 3492 Punycode encoding/decoding, and RFC 5891/5892 IDNA 2008 domain name processing
  • feat: introduce URL component - strict URL type with scheme and authority validation, default port stripping for known schemes, and URI/IRI conversion
  • feat: introduce Punycode component - RFC 3492 Punycode encoding and decoding for internationalized domain names
  • fix(tcp): RetryConnector backoff sleep now respects cancellation tokens, allowing retry loops to be cancelled during the delay
  • fix(io, str): IO\write(), IO\write_line(), IO\write_error(), IO\write_error_line(), and Str\format() no longer pass the message through sprintf/vsprintf when no arguments are given, preventing format string errors when the message contains % characters
migration guide

Replace Duration timeout parameters with TimeoutCancellationToken:

// Before (5.x)
$data = $reader->read(timeout: Duration::seconds(5));

// After (6.0)
$data = $reader->read(cancellation: new Async\TimeoutCancellationToken(Duration::seconds(5)));

For manual cancellation (e.g., cancel all request IO when a client disconnects):

$token = new Async\SignalCancellationToken();

// Pass to all request-scoped IO
$body = $reader->readAll(cancellation: $token);

// Cancel from elsewhere
$token->cancel();

v5.5.0

Compare Source

features
  • feat(io): added Reader::readUntilBounded(string $suffix, int $max_bytes, ?Duration $timeout) method, which reads until a suffix is found, but throws IO\Exception\OverflowException if the content exceeds $max_bytes before the suffix is encountered - #​620 - by @​azjezz
  • feat(io): added IO\Exception\OverflowException exception class - #​620 - by @​azjezz
  • feat(type): add Type\json_decoded() type for transparent JSON string coercion - #​619 by @​veewee
  • feat(type): add Type\nullish() type for optional-and-nullable shape fields - #​618 by @​veewee

v5.4.0

Compare Source

features
  • feat(tcp): add backlog parameter to TCP\listen() for configuring the pending connection queue size - #​617 - by @​azjezz
  • feat(tcp): listener now drains the accept backlog in a loop for higher throughput - #​617 - by @​azjezz
other
  • chore: update dev dependencies, and re-format the codebase using latest mago version - #​616 by @​azjezz

v5.3.0

Compare Source

features
  • feat(io): introduce IO\spool() for memory-backed handles that spill to disk

v5.2.0

Compare Source

features
  • feat: introduce IP component with immutable, binary-backed Address value object and Family enum
  • feat(cidr): CIDR\Block::contains() now accepts string|IP\Address

v5.1.0

Compare Source

features
  • feat(tls): introduce TLS\TCPConnector for poolable TLS connections
  • feat(tls): TLS\StreamInterface now extends TCP\StreamInterface, enabling TLS streams to be used with TCP\SocketPoolInterface

v5.0.0

Compare Source

breaking changes
features
fixes, and improvements
other

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

Read more about the use of Renovate Bot within ocramius/* projects.

@renovate renovate bot added the renovate label Mar 18, 2026
@renovate
Copy link
Copy Markdown
Contributor Author

renovate bot commented Mar 18, 2026

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: composer.lock
Command failed: composer update azjezz/psl:6.1.1 --with-dependencies --ignore-platform-req=ext-* --ignore-platform-req=lib-* --no-ansi --no-interaction --no-scripts --no-autoloader --no-plugins --minimal-changes
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Root composer.json requires azjezz/psl ^6.1.1 -> satisfiable by azjezz/psl[6.1.1].
    - azjezz/psl 6.1.1 requires php ~8.4.0 || ~8.5.0 -> your php version (8.3.30) does not satisfy that requirement.

Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.

@renovate renovate bot force-pushed the renovate/azjezz-psl-6.x branch 10 times, most recently from 363f35b to 522ff76 Compare March 25, 2026 05:46
@renovate renovate bot force-pushed the renovate/azjezz-psl-6.x branch 5 times, most recently from c4680ab to 302735f Compare April 1, 2026 04:33
| datasource | package    | from  | to    |
| ---------- | ---------- | ----- | ----- |
| packagist  | azjezz/psl | 4.3.0 | 6.1.1 |
@renovate renovate bot force-pushed the renovate/azjezz-psl-6.x branch from 302735f to d1324a0 Compare April 2, 2026 04:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants