Skip to content

Hell 0.1.2

Choose a tag to compare

@gsmlg gsmlg released this 19 Oct 04:26
· 1 commit to main since this release
  • Preserve the listening socket when the acceptor pool restarts, so supervision
    can recover without taking down the server.
  • Clean up handlers whose acceptor exits before completing socket handoff,
    preserving connection capacity across suspension and acceptor failures.
  • Apply handshake_timeout to TCP-to-TLS upgrades. Add an optional transport
    upgrade/3 callback while retaining support for existing upgrade/2 transports.
  • Honor one-shot and persistent read timeout overrides after transport upgrades,
    independently of GenServer mailbox timeouts.
  • Accept raw socket options without merging distinct native options.
  • Enforce the documented binary mode for bare :list and :binary aliases as
    well as mode tuples on TCP and TLS listeners.

Existing handler callbacks, startup/readiness messages and required transport
callbacks remain compatible. Stalled TLS upgrades now close after the configured
handshake deadline; handshake_timeout: :infinity restores unbounded waiting.
Callers relying on the unintended :list override now receive binary data.

Validation:

  • Local full suite: 155 tests, 0 failures; compilation, formatting, strict Credo, Dialyzer and docs passed.
  • Linux and macOS test matrix.
  • Static checks.
  • Package smoke exercises TCP, certificate-verified TLS and graceful shutdown.

CI evidence: the final matrix passed on attempt 2. Attempt 1 failed the unchanged 100ms heartbeat timing test in one macOS/OTP 26 job; that job passed on the bounded diagnostic rerun without code or test changes. Its spontaneous failure cause remains unresolved. The original failure and baseline comparison are retained.

Published artifact verification: Hex SHA256 and workflow archive match; all 24 packaged source files match the tag. Fresh Hex-only consumer passed 27 regression tests and 3 TCP/TLS/graceful-shutdown smoke tests. HexDocs is publicly available.