1# [`network`](http://hackage.haskell.org/package/network) [![Build Status](https://travis-ci.org/haskell/network.svg?branch=master)](https://travis-ci.org/haskell/network) [![Build status](https://ci.appveyor.com/api/projects/status/5erq63o4m29bhl57/branch/master?svg=true)](https://ci.appveyor.com/project/eborden/network/branch/master)
2
3To build this package directly from git, you must run `autoreconf -i`.
4And then use `cabal configure; cabal build` or `stack build`.
5
6## Support Policy
7
8### GHC
9
10The `network` package support [3 major versions of GHC](https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/intro.html#ghc-version-numbering-policy) only.
11This means that the current stable version and two previous stable versions are supported.
12However, all GHC 8.x are supported currently.
13
14### Windows
15
16We use MSYS to build this package on Windows.
17To use the `network` package on Cygwin, use `stack`.
18
19## Coding
20
21### .hs files
22
23If you need C macros created by "configure" or `CALLCONV`/`SAFE_ON_WIN`, put
24
25```
26#include "HsNetDef.h"
27```
28
29"HsNet.h" does now work well since Mac's cpp sucks.
30
31### .hsc files
32
33If you need `#peek`, `#poke` and others, create a `.hsc` file with
34
35```
36#include "HsNet.h"
37```
38
39`HsNet.h` includes `HsNefDef.h` and necessary C structures.
40Unfortunately, `hsc2hs` does not convert C macros.
41So, if you use `CALLCONV`/`SAFE_ON_WIN`, the following is also necessary:
42
43```
44##include "HsNetDef.h"
45```
46
47## Milestones
48
49### 2.6
50
51- [x] Making `SockAddrCan` deprecated
52
53### 2.7
54
55See https://github.com/haskell/network/issues/296
56
57- [x] Making `Network` deprecated
58- [x] Making `Network.BSD` deprecated
59- [x] Making `MkSocket` deprecated
60- [x] Making many APIs deprecated
61
62### 2.8
63
64- [x] Stop exporting the `PortNum` Constructor in `PortNumber`
65
66### 3.0
67
68- [x] Removing `Network`
69- [x] Removing `Network.BSD`
70- [x] Removing `SockAddrCan`
71- [x] Changing the internal structure of `Socket`.
72- [x] Make address extensible.
73- [x] Remove EOF errors
74