BSD-3-Clause licensed by Kazu Yamamoto
Maintained by [email protected]
This version can be pinned in stack with:network-run-0.6.0@sha256:9cc43cd6ad5b2878b974bd7d3ebb6234aebee601f336e97712a9d4fa352f65e7,2935

Module documentation for 0.6.0

Used by 3 packages in nightly-2026-09-21(full list with versions):

Simple functions to run network clients and servers.

Changes

Revision history for network-run

0.6.0

  • Fixing a bug that the [(SocketOption, Int)] variants (openClientSocketWithOptions, openServerSocketWithOptions and openTCPServerSocketWithOptions) passed an Int, that is eight bytes, to setsockopt. BSD rejects this with EINVAL, so the documented (IPv6Only, 0) for a dual stack socket did not work there. The value is converted to CInt now.
  • A test suite.
  • Breaking change: Network.Run.TCP.Timeout no longer exports openServerSocket, openServerSocketWithOptions and openServerSocketWithOpts. They do not call listen, so runTCPServerWithSocket cannot accept on the resulting socket. Use openTCPServerSocket and friends instead.
  • New API: ServerSettings, defaultServerSettings and the runTCPServerWithSettings, runTCPServerWithSocketAndSettings and runUDPServerForkWithSettings variants. settingsOnException receives exceptions which the library catches instead of propagating, settingsGracefulCloseTimeout controls gracefulClose and settingsAcceptRetryDelay controls the accept retry interval.
  • New API: Network.Run.TCP.Timeout now exports resolve, openTCPServerSocket, openTCPServerSocketWithOptions and openTCPServerSocketWithOpts.
  • accept no longer terminates the server on transient errors. ECONNABORTED and EINTR are retried immediately, and EMFILE/ENFILE are retried after a short delay and passed to settingsOnException.
  • runUDPServerFork is now exception safe. A failure of getAddrInfo, openServerSocket or connect no longer leaks a socket nor kills the server; such a datagram is dropped and passed to settingsOnException instead. An unknown address family is dropped rather than calling error.
  • Fixing a bug that runUDPServerFork labels every forked thread with the first host name.
  • Documenting IPV6_V6ONLY and the single address family of runTCPServer.
  • Network.Run.UDP exports openServerSocket, openServerSocketWithOptions and openServerSocketWithOpts.

0.5.0

  • Fixing a bug that TimeoutServer is not killed.
  • Breaking change: the signatures of Timeout.runTCPServer and Timeout.runTCPServerWithSocket are changed.

0.4.3

  • Using time-manager >= 0.2.

0.4.2

  • Using withHandle of time-manager.

0.4.1

  • Make sure to cancel Handles. #13
  • New API: openClientSocketWithOpts, openServerSocketWithOpts and openTCPServerSocketWithOpts. #12

0.4.0

  • New API: openTCPServerSocket, runTCPClientWithSettings, etc.
  • Breaking change: runTCPServerSocket takes a socket itself

0.3.2

  • Add openServerSocketWithOptions, openClientSocketWithOptions, runTCPServerWithSocketOptions, runTCPClientWithSocketOptions. #6

0.3.1

  • Using close instead of gracefulClose for client #5

0.3.0

  • Specifying IPv6Only #4

0.2.8

  • runTCPClient specifies AI_ADDRCONFIG.

0.2.7

  • Introduce runTCPServerWithSocket #3

0.2.6

  • Adding the Network.Run.TCP.Timeout module.

0.2.5

  • Making accept breakable on windows #2