1## Version 3.1.2.1
2
3* Increasing base lower bound to 4.9.
4  [#473](https://github.com/haskell/network/pull/473)
5* Suppressing errors from removeFile in UNIX bind.
6  [#478](https://github.com/haskell/network/pull/478)
7* Restoring UNIX stub functions on Windows.
8  [#489](https://github.com/haskell/network/pull/489)
9
10## Version 3.1.2.0
11
12* Added `-f devel` for test cases that are known to fail.
13  [#471](https://github.com/haskell/network/pull/471)
14* Improved precedence-compliant Read/Show instances. Verified via QuickCheck.
15  [#465](https://github.com/haskell/network/pull/465)
16  [#466](https://github.com/haskell/network/pull/466)
17* Removed the racing graceful close implementation to avoid issues with `CLOSE_WAIT`.
18  [#460](https://github.com/haskell/network/pull/438)
19* Gracefully handle binding of UNIX domain sockets.
20  [#460](https://github.com/haskell/network/pull/460)
21* Replace Socket type and family with extensible `CInt` pattern and synonyms.
22  [#459](https://github.com/haskell/network/pull/459)
23* Fixed race conditions in tests.
24  [#458](https://github.com/haskell/network/pull/458)
25* Removed many legacy uses of `undefined`.
26  [#456](https://github.com/haskell/network/pull/456)
27* Defined extensible `CustomSockOpt` via `ViewPatterns`.
28  [#455](https://github.com/haskell/network/pull/455)
29* Defined `openSocket` in terms of `AddrInfo`.
30  [5b0987197fe2ed7beddd7b2096522d624e71151e](https://github.com/haskell/network/commit/5b0987197fe2ed7beddd7b2096522d624e71151e)
31* Improved FreeBSD portability for Control Messages and tests
32  [#452](https://github.com/haskell/network/pull/452)
33* Support `sendMsg` and `recvMsg`
34  [#433](https://github.com/haskell/network/pull/433)
35  [#445](https://github.com/haskell/network/pull/445)
36  [#451](https://github.com/haskell/network/pull/451)
37    * Added `sendMsg` and `recvMsg` APIs
38    * Redefined `SocketOption` as pattern synonym
39* Implement total Show functions for SockAddr
40  [#441](https://github.com/haskell/network/pull/441)
41* Improve portability changing `u_int32_t` to `uint32_t`.
42  [#442](https://github.com/haskell/network/pull/442)
43* Removed obsolete CPP statements.
44  [d1f4ee60ce6a4a85abb79532f64d4a4e71e2b1ce](https://github.com/haskell/network/commit/d1f4ee60ce6a4a85abb79532f64d4a4e71e2b1ce)
45* Loads of improved test coverage.
46  [cbd67cc50a37770432eb978ac8b8eb6da3664817](https://github.com/haskell/network/commit/cbd67cc50a37770432eb978ac8b8eb6da3664817)
47  [fcc2d86d53a6bec793f6a979a9e8fdf7fe3f4c22](https://github.com/haskell/network/commit/fcc2d86d53a6bec793f6a979a9e8fdf7fe3f4c22)
48  [6db96969b3e8974abbfd50a7f073baa57376fd5e](https://github.com/haskell/network/commit/6db96969b3e8974abbfd50a7f073baa57376fd5e)
49
50## Version 3.1.1.1
51
52* Fix for GHCJS.
53  [#431](https://github.com/haskell/network/pull/431)
54
55## Version 3.1.1.0
56
57* A new API: `gracefulClose`.
58  [#417](https://github.com/haskell/network/pull/417)
59* `touchSocket`, `unsafeFdSocket`: Allow direct access to a socket's file
60  descriptor while providing tools to prevent it from being garbage collected.
61  This also deprecated `fdSocket` in favor of `unsafeFdSocket` and
62  `withFdSocket`.
63  [#423](https://github.com/haskell/network/pull/423)
64* `socketToFd`: Duplicates a socket as a file desriptor and closes the source
65  socket.
66  [#424](https://github.com/haskell/network/pull/424)
67
68## Version 3.1.0.1
69
70* getAddrInfo: raise exception if no AddrInfo returned.
71  [#410](https://github.com/haskell/network/pull/410)
72* Avoid catching SomeException.
73  [#411](https://github.com/haskell/network/pull/411)
74
75## Version 3.1.0.0
76
77* Making GC of socket safer.
78  [#399](https://github.com/haskell/network/pull/399)
79* Deprecating fdSocket. Use withFdSocket instead to ensure
80  that sockets are GCed in proper time.
81  [#399](https://github.com/haskell/network/pull/399)
82
83## Version 3.0.1.1
84
85* Fix blocking `if_nametoindex` errors on Windows
86  [#391](https://github.com/haskell/network/pull/391)
87
88## Version 3.0.1.0
89
90* Added `getSocketType :: Socket -> IO SocketType`.
91  [#372](https://github.com/haskell/network/pull/372)
92* Correcting manual and brushing up test cases
93  [#375](https://github.com/haskell/network/pull/375)
94* Fixed longstanded bug in `getContents` on mac
95  [#375](https://github.com/haskell/network/pull/375)
96* Fixing regression: set correct sockaddr length for abstract addresses
97  for Linux.
98  [#374](https://github.com/haskell/network/pull/374)
99
100## Version 3.0.0.1
101
102* Fixed a bug in `connect` where exceptions were not thrown
103  [#368](https://github.com/haskell/network/pull/368)
104
105## Version 3.0.0.0
106
107* Breaking change: the Network and Network.BSD are removed.
108  Network.BSD is provided a new package: network-bsd.
109* Breaking change: the signatures are changed:
110```
111old fdSocket :: Socket -> CInt
112new fdSocket :: Socket -> IO CInt
113
114old mkSocket :: CInt -> Family -> SocketType -> ProtocolNumber -> SocketStatus -> IO Socket
115new mkSocket :: CInt -> IO Socket
116```
117* Breaking change: the deprecated APIs are removed: send, sendTo, recv, recvFrom, recvLen, htonl, ntohl, inet_addr, int_ntoa, bindSocket, sClose, SocketStatus, isConnected, isBound, isListening, isReadable, isWritable, sIsConnected, sIsBound, sIsListening, sIsReadable, sIsWritable, aNY_PORT, iNADDR_ANY, iN6ADDR_ANY, sOMAXCONN, sOL_SOCKET, sCM_RIGHTS, packSocketType, getPeerCred.
118* Breaking change: SockAddrCan is removed from SockAddr.
119* Socket addresses are extendable with Network.Socket.Address.
120* "socket" is now asynchronous-exception-safe.
121  [#336](https://github.com/haskell/network/pull/336)
122* "recvFrom" returns (0, addr) instead of throwing an error on EOF.
123  [#360](https://github.com/haskell/network/pull/360)
124* All APIs are available on any platforms.
125* Build system is simplified.
126* Bug fixes.
127
128## Version 2.8.0.1
129
130* Eensuring that accept returns a correct sockaddr for unix domain.
131  [#400](https://github.com/haskell/network/pull/400)
132* Avoid out of bounds writes in pokeSockAddr.
133  [#400](https://github.com/haskell/network/pull/400)
134
135## Version 2.8.0.0
136
137* Breaking change: PortNumber originally contained Word16 in network
138  byte order and used "deriving Ord". This results in strange behavior
139  on the Ord instance. Now PortNumber holds Word16 in host byte order.
140  [#347](https://github.com/haskell/network/pull/347)
141* Breaking change: stopping the export of the PortNum constructor in
142  PortNumber.
143* Use bytestring == 0.10.* only.
144* Use base >= 4.7 && < 5.
145
146## Version 2.7.0.2
147
148* Removing withMVar to avoid the deadlock between "accept" and "close"
149   [#330](https://github.com/haskell/network/pull/330)
150* "close" does not throw exceptions. A new API: "close'" throws
151   exceptions when necessary.
152   [#337](https://github.com/haskell/network/pull/337)
153* Fixing the hang of lazy sendAll.
154   [#340](https://github.com/haskell/network/pull/340)
155* Installing NetDef.h (#334)
156   [#334](https://github.com/haskell/network/pull/334)
157
158## Version 2.7.0.1
159
160 * A new API: socketPortSafe.
161   [#319](https://github.com/haskell/network/pull/319)
162 * Fixing a drain bug of sendAll.
163   [#320](https://github.com/haskell/network/pull/320)
164 * Porting the new CALLCONV convention from master.
165   [#313](https://github.com/haskell/network/pull/313)
166 * Withdrawing the deprecations of packFamily and unpackFamily.
167   [#324](https://github.com/haskell/network/pull/324)
168
169## Version 2.7.0.0
170
171 * Obsoleting the Network module.
172 * Obsoleting the Network.BSD module.
173 * Obsoleting APIs: MkSocket, htonl, ntohl,
174              getPeerCred, getPeerEid,
175              send, sendTo, recv, recvFrom, recvLen,
176              inet_addr, inet_ntoa,
177              isConnected, isBound, isListening, isReadable, isWritable,
178              aNY_PORT, iNADDR_ANY, iN6ADDR_ANY, sOMAXCONN,
179              sOL_SOCKET, sCM_RIGHTS,
180              packFamily, unpackFamily, packSocketType
181 * Breaking change: do not closeFd within sendFd.
182   [#271](https://github.com/haskell/network/pull/271)
183 * Exporting ifNameToIndex and ifIndexToName from Network.Socket.
184 * New APIs: setCloseOnExecIfNeeded, getCloseOnExec and getNonBlock
185 * New APIs: isUnixDomainSocketAvailable and getPeerCredential
186 * socketPair, sendFd and recvFd are exported even on Windows.
187
188## Version 2.6.3.5
189
190 * Reverting "Do not closeFd within sendFd"
191   [#271](https://github.com/haskell/network/pull/271)
192
193## Version 2.6.3.4
194
195 * Don't touch IPv6Only when running on OpenBSD
196   [#227](https://github.com/haskell/network/pull/227)
197 * Do not closeFd within sendFd
198   [#271](https://github.com/haskell/network/pull/271)
199 * Updating examples and docs.
200
201## Version 2.6.3.3
202
203 * Adds a function to show the defaultHints without reading their undefined fields
204   [#291](https://github.com/haskell/network/pull/292)
205 * Improve exception error messages for getAddrInfo and getNameInfo
206   [#289](https://github.com/haskell/network/pull/289)
207
208## Version 2.6.3.2
209
210 * Zero memory of `sockaddr_un` if abstract socket
211   [#220](https://github.com/haskell/network/pull/220)
212
213 * Improving error messages
214   [#232](https://github.com/haskell/network/pull/232)
215
216 * Allow non-blocking file descriptors via `setNonBlockIfNeeded`
217   [#242](https://github.com/haskell/network/pull/242)
218
219 * Update config.{guess,sub} to latest version
220   [#244](https://github.com/haskell/network/pull/244)
221
222 * Rename `my_inet_ntoa` to avoid symbol conflicts
223   [#228](https://github.com/haskell/network/pull/228)
224
225 * Test infrastructure improvements
226   [#219](https://github.com/haskell/network/pull/219)
227   [#217](https://github.com/haskell/network/pull/217)
228   [#218](https://github.com/haskell/network/pull/218)
229
230 * House keeping and cleanup
231   [#238](https://github.com/haskell/network/pull/238)
232   [#237](https://github.com/haskell/network/pull/237)
233
234## Version 2.6.3.1
235
236 * Reverse breaking exception change in `Network.Socket.ByteString.recv`
237   [#215](https://github.com/haskell/network/issues/215)
238
239## Version 2.6.3.0
240
241 * New maintainers: Evan Borden (@eborden) and Kazu Yamamoto (@kazu-yamamoto).
242   The maintainer for a long period, Johan Tibell (@tibbe) stepped down.
243   Thank you, Johan, for your hard work for a long time.
244
245 * New APIs: ntohl, htonl,hostAddressToTuple{,6} and tupleToHostAddress{,6}.
246   [#210](https://github.com/haskell/network/pull/210)
247
248 * Added a Read instance for PortNumber. [#145](https://github.com/haskell/network/pull/145)
249
250 * We only set the IPV6_V6ONLY flag to 0 for stream and datagram socket types,
251   as opposed to all of them. This makes it possible to use ICMPv6.
252   [#180](https://github.com/haskell/network/pull/180)
253   [#181](https://github.com/haskell/network/pull/181)
254
255 * Work around GHC bug #12020. Socket errors no longer cause segfaults or
256   hangs on Windows. [#192](https://github.com/haskell/network/pull/192)
257
258 * Various documentation improvements and the deprecated pragmas.
259   [#186](https://github.com/haskell/network/pull/186)
260   [#201](https://github.com/haskell/network/issues/201)
261   [#205](https://github.com/haskell/network/pull/205)
262   [#206](https://github.com/haskell/network/pull/206)
263   [#211](https://github.com/haskell/network/issues/211)
264
265 * Various internal improvements.
266   [#193](https://github.com/haskell/network/pull/193)
267   [#200](https://github.com/haskell/network/pull/200)
268
269## Version 2.6.2.1
270
271 * Regenerate configure and `HsNetworkConfig.h.in`.
272
273 * Better detection of CAN sockets.
274
275## Version 2.6.2.0
276
277 * Add support for `TCP_USER_TIMEOUT`.
278
279 * Don't conditionally export the `SockAddr` constructors.
280
281 * Add `isSupportSockAddr` to allow checking for supported address types
282   at runtime.
283