<div dir="ltr">I'm happy to announce the release of network 3.1.2.0.<br><a href="https://hackage.haskell.org/package/network-3.1.2.0">https://hackage.haskell.org/package/network-3.1.2.0</a><br><div><br></div><div>This version of network includes many improvements that allow more extensibility, portability, and greater test coverage. See the log below for more information.</div><div><br></div><div>As well version 3.1.1.0 and 3.1.1.1 have been deprecated as they contain a bug in graceful close, more details below.</div><div><br></div><div><ul style="box-sizing:border-box;padding-left:2em;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46)"><li style="box-sizing:border-box"><font face="arial, sans-serif" style="">Added <code style="box-sizing:border-box;padding:0.2em 0.4em;margin:0px;background-color:rgba(27,31,35,0.05);border-radius:6px">-f devel</code> for test cases that are known to fail. <a href="https://github.com/haskell/network/pull/471" style="box-sizing:border-box;background-color:initial;color:rgb(3,102,214);text-decoration-line:none">#471</a></font></li><li style="box-sizing:border-box;margin-top:0.25em"><font face="arial, sans-serif">Improved precedence-compliant Read/Show instances. Verified via QuickCheck. <a href="https://github.com/haskell/network/pull/465" style="box-sizing:border-box;background-color:initial;color:rgb(3,102,214);text-decoration-line:none">#465</a> <a href="https://github.com/haskell/network/pull/466" style="box-sizing:border-box;background-color:initial;color:rgb(3,102,214);text-decoration-line:none">#466</a></font></li><li style="box-sizing:border-box;margin-top:0.25em"><font face="arial, sans-serif">Removed the racing graceful close implementation to avoid issues with <code style="box-sizing:border-box;padding:0.2em 0.4em;margin:0px;background-color:rgba(27,31,35,0.05);border-radius:6px">CLOSE_WAIT</code>. <a href="https://github.com/haskell/network/pull/438" style="box-sizing:border-box;background-color:initial;color:rgb(3,102,214);text-decoration-line:none">#460</a></font></li><li style="box-sizing:border-box;margin-top:0.25em"><font face="arial, sans-serif">Gracefully handle binding of UNIX domain sockets. <a href="https://github.com/haskell/network/pull/460" style="box-sizing:border-box;background-color:initial;color:rgb(3,102,214);text-decoration-line:none">#460</a></font></li><li style="box-sizing:border-box;margin-top:0.25em"><font face="arial, sans-serif">Replace Socket type and family with extensible <code style="box-sizing:border-box;padding:0.2em 0.4em;margin:0px;background-color:rgba(27,31,35,0.05);border-radius:6px">CInt</code> pattern and synonyms. <a href="https://github.com/haskell/network/pull/459" style="box-sizing:border-box;background-color:initial;color:rgb(3,102,214);text-decoration-line:none">#459</a></font></li><li style="box-sizing:border-box;margin-top:0.25em"><font face="arial, sans-serif">Fixed race conditions in tests. <a href="https://github.com/haskell/network/pull/458" style="box-sizing:border-box;background-color:initial;color:rgb(3,102,214);text-decoration-line:none">#458</a></font></li><li style="box-sizing:border-box;margin-top:0.25em"><font face="arial, sans-serif">Removed many legacy uses of <code style="box-sizing:border-box;padding:0.2em 0.4em;margin:0px;background-color:rgba(27,31,35,0.05);border-radius:6px">undefined</code>. <a href="https://github.com/haskell/network/pull/456" style="box-sizing:border-box;background-color:initial;color:rgb(3,102,214);text-decoration-line:none">#456</a></font></li><li style="box-sizing:border-box;margin-top:0.25em"><font face="arial, sans-serif">Defined extensible <code style="box-sizing:border-box;padding:0.2em 0.4em;margin:0px;background-color:rgba(27,31,35,0.05);border-radius:6px">CustomSockOpt</code> via <code style="box-sizing:border-box;padding:0.2em 0.4em;margin:0px;background-color:rgba(27,31,35,0.05);border-radius:6px">ViewPatterns</code>. <a href="https://github.com/haskell/network/pull/455" style="box-sizing:border-box;background-color:initial;color:rgb(3,102,214);text-decoration-line:none">#455</a></font></li><li style="box-sizing:border-box;margin-top:0.25em"><font face="arial, sans-serif">Defined <code style="box-sizing:border-box;padding:0.2em 0.4em;margin:0px;background-color:rgba(27,31,35,0.05);border-radius:6px">openSocket</code> in terms of <code style="box-sizing:border-box;padding:0.2em 0.4em;margin:0px;background-color:rgba(27,31,35,0.05);border-radius:6px">AddrInfo</code>. <a href="https://github.com/haskell/network/commit/5b0987197fe2ed7beddd7b2096522d624e71151e" style="box-sizing:border-box;background-color:initial;color:rgb(3,102,214);text-decoration-line:none">5b0987197fe2ed7beddd7b2096522d624e71151e</a></font></li><li style="box-sizing:border-box;margin-top:0.25em"><font face="arial, sans-serif">Improved FreeBSD portability for Control Messages and tests <a href="https://github.com/haskell/network/pull/452" style="box-sizing:border-box;background-color:initial;color:rgb(3,102,214);text-decoration-line:none">#452</a></font></li><li style="box-sizing:border-box;margin-top:0.25em"><font face="arial, sans-serif">Support <code style="box-sizing:border-box;padding:0.2em 0.4em;margin:0px;background-color:rgba(27,31,35,0.05);border-radius:6px">sendMsg</code> and <code style="box-sizing:border-box;padding:0.2em 0.4em;margin:0px;background-color:rgba(27,31,35,0.05);border-radius:6px">recvMsg</code> <a href="https://github.com/haskell/network/pull/433" style="box-sizing:border-box;background-color:initial;color:rgb(3,102,214);text-decoration-line:none">#433</a> <a href="https://github.com/haskell/network/pull/445" style="box-sizing:border-box;background-color:initial;color:rgb(3,102,214);text-decoration-line:none">#445</a> <a href="https://github.com/haskell/network/pull/451" style="box-sizing:border-box;background-color:initial;color:rgb(3,102,214);text-decoration-line:none">#451</a></font><ul style="box-sizing:border-box;padding-left:2em;margin-top:0px;margin-bottom:0px"><li style="box-sizing:border-box"><font face="arial, sans-serif">Added <code style="box-sizing:border-box;padding:0.2em 0.4em;margin:0px;background-color:rgba(27,31,35,0.05);border-radius:6px">sendMsg</code> and <code style="box-sizing:border-box;padding:0.2em 0.4em;margin:0px;background-color:rgba(27,31,35,0.05);border-radius:6px">recvMsg</code> APIs</font></li><li style="box-sizing:border-box;margin-top:0.25em"><font face="arial, sans-serif">Redefined <code style="box-sizing:border-box;padding:0.2em 0.4em;margin:0px;background-color:rgba(27,31,35,0.05);border-radius:6px">SocketOption</code> as pattern synonym</font></li></ul></li><li style="box-sizing:border-box;margin-top:0.25em"><font face="arial, sans-serif">Implement total Show functions for SockAddr <a href="https://github.com/haskell/network/pull/441" style="box-sizing:border-box;background-color:initial;color:rgb(3,102,214);text-decoration-line:none">#441</a></font></li><li style="box-sizing:border-box;margin-top:0.25em"><font face="arial, sans-serif">Improve portability changing <code style="box-sizing:border-box;padding:0.2em 0.4em;margin:0px;background-color:rgba(27,31,35,0.05);border-radius:6px">u_int32_t</code> to <code style="box-sizing:border-box;padding:0.2em 0.4em;margin:0px;background-color:rgba(27,31,35,0.05);border-radius:6px">uint32_t</code>. <a href="https://github.com/haskell/network/pull/442" style="box-sizing:border-box;background-color:initial;color:rgb(3,102,214);text-decoration-line:none">#442</a></font></li><li style="box-sizing:border-box;margin-top:0.25em"><font face="arial, sans-serif">Removed obsolete CPP statements. <a href="https://github.com/haskell/network/commit/d1f4ee60ce6a4a85abb79532f64d4a4e71e2b1ce" style="box-sizing:border-box;background-color:initial;color:rgb(3,102,214);text-decoration-line:none">d1f4ee60ce6a4a85abb79532f64d4a4e71e2b1ce</a></font></li><li style="box-sizing:border-box;margin-top:0.25em"><font face="arial, sans-serif" style="">Loads of improved test coverage. <br><a href="https://github.com/haskell/network/commit/cbd67cc50a37770432eb978ac8b8eb6da3664817" style="box-sizing:border-box;background-color:initial;color:rgb(3,102,214);text-decoration-line:none">cbd67cc50a37770432eb978ac8b8eb6da3664817</a> <br><a href="https://github.com/haskell/network/commit/fcc2d86d53a6bec793f6a979a9e8fdf7fe3f4c22" style="box-sizing:border-box;background-color:initial;color:rgb(3,102,214);text-decoration-line:none">fcc2d86d53a6bec793f6a979a9e8fdf7fe3f4c22</a> <br><a href="https://github.com/haskell/network/commit/6db96969b3e8974abbfd50a7f073baa57376fd5e" style="box-sizing:border-box;background-color:initial;color:rgb(3,102,214);text-decoration-line:none">6db96969b3e8974abbfd50a7f073baa57376fd5e</a></font></li></ul><div><font color="#24292e">As always, thank you to network's contributors!</font></div></div></div>