# Go under Microsoft Windows

The Windows port is stable and officially supported.

  * See the [open Windows issues](https://github.com/golang/go/issues?q=is%3Aopen+is%3Aissue+label%3Aos-windows) on the issue tracker.

| **Distributions**                         | **Architectures** | **Initial support version** | **Final support version** |
|:------------------------------------------|:------------------|:----------------------------|:----------|
| Windows 7, Windows Server 2008R2 or above | amd64, 386        | Go 1 _*_                    |           |
| Windows Vista, Windows Server 2008        | amd64, 386        | Go 1 _*_                    | Go 1.10.8 |
| Windows XP, Windows Server 2003           | amd64, 386        | Go 1 _*_                    | Go 1.10.8 |

_*_ Go 1.5 or above is recommended.