Skip to content

thongtech/go-legacy-win7

The Go Programming Language

go-legacy-win7 is a fork of the Go programming language that maintains support for Windows 7 and Windows Server 2008 R2, and allows for deprecated go get behaviour. This project aims to provide a stable Go environment for users who need to support legacy Windows systems or prefer the traditional Go workflow.

Gopher image Gopher image by Renee French, licensed under Creative Commons 4.0 Attribution licence.

Differences from Upstream Go

  1. Windows 7 and Windows Server 2008 R2 Support
    While the official Go project dropped support for Windows 7 and Windows Server 2008 R2 in Go 1.21, this fork maintains compatibility with these legacy Windows systems.

    Tested on Windows 7 RTM (build 7600) — no updates required — through Windows 11 25H2

  2. Classic go get Behaviour
    This fork allows for the deprecated go get behaviour when GO111MODULE is set to "off" or "auto". This means:

    • In GOPATH/src, go get and go install can operate in GOPATH mode.
    • Outside of GOPATH/src, these commands can use module-aware mode when appropriate.
  3. Compatibility Notes
    Please be aware that some newer Go features may not be fully compatible with Windows 7 or Windows Server 2008 R2. We try to maintain as much functionality as possible, but some limitations may exist.

Changes in Each Release

Current release includes the following modifications:

  • Switched back to RtlGenRandom from ProcessPrng, which breaks Win7/2008R2 (reverted 693def1)
  • Added back LoadLibraryA fallback to load system libraries (reverted a17d959)
  • Added back sysSocket fallback for socket syscalls (reverted 7c1157f)
  • Added back Windows 7 console handle workaround (reverted 48042aa)
  • Added back 5ms sleep on Windows 7/8 in (*Process).Wait (reverted f0894a0)
  • Restored deprecated go get behaviour for use outside modules (reverted de4d503)
  • Reverted to the previous removeall_noat variant for Windows (fixed issue #2)
  • Rolled back race_windows.syso to the previous compatible version (fixed issue #3)
  • Added FindFirstFile/FindNextFile fallback for old SMB shares (fixed issue #9)
  • Includes all improvements and bug fixes from the corresponding upstream Go release

We now provide two build options for Windows amd64:

  • Standard build
    Maximum Windows 7/2008R2 compatibility with the reverted race detector. Use this if you need Windows 7 and Windows Server 2008 R2 support.

  • Race detector build (version suffix -race)
    Uses Go's latest stable race detector without modifications. Recommended for Windows 10+ when running race tests to avoid potential edge cases with the legacy race detector. See issue #6

Download and Install

Binary Distributions

OS Architecture Filename SHA‑256 Hash
macOS Intel (amd64) go-legacy-win7-1.26.2-1.darwin_amd64.tar.gz 6a1754bbbb7f38a964cae1eb2936ee3d63c1cf89c5dbb625fa9a2ec6aef51b5b
macOS Apple (ARM64) go-legacy-win7-1.26.2-1.darwin_arm64.tar.gz 23ce60e5c36df2821ce59c24178934d0d538d21289662b3d619b2c92b4084f52
Linux x86 (386) go-legacy-win7-1.26.2-1.linux_386.tar.gz a2e3ab19a6f76469d442f7729b472c0a856cfebd0d591f2fbeeb745c88f2ca27
Linux x64 (amd64) go-legacy-win7-1.26.2-1.linux_amd64.tar.gz fe7bdbf18b884e43b9f3508745e2817f9711d8cbfa9726b8f3c7140b6ca25630
Linux ARM (32‑bit) go-legacy-win7-1.26.2-1.linux_arm.tar.gz 09c6ac05fec8a1c7653de63437da37678d86852c0d6347c9340f52b4fa9482b1
Linux ARM64 go-legacy-win7-1.26.2-1.linux_arm64.tar.gz e0c63581f623564c12b643723a0eb6ac7dd8a96685d3b8e223303203cf514d72
Windows x86 (386) go-legacy-win7-1.26.2-1.windows_386.zip f34d8fb13076c085f2880d99350b420184a1a6ad99e28b61e2821e53970e7e5a
Windows x64 (amd64) go-legacy-win7-1.26.2-1.windows_amd64.zip 1246a4e8705015c316eba3667dd7097a0a5c157e9d8ca4ef5a4dcd9f9cc5811b
Windows x64 (amd64) - Race go-legacy-win7-1.26.2-1-race.windows_amd64.zip 6abb8ffef7c5167802350c90488efbc6c984aaa68cf7a983349cba2576a15188
Windows ARM64 go-legacy-win7-1.26.2-1.windows_arm64.zip 1335e5bd33afab9d9bcf8803d6d7897b786abf203fd1abc21c9214444fdeb9cb

Before you begin

To avoid PATH/GOROOT conflicts and mixed toolchains, uninstall any existing Go installation first.

Windows Installation

  1. Download the go-legacy-win7-<version>.windows_<arch>.zip file.
  2. Extract the ZIP to C:\ (or any preferred location). This will create a go-legacy-win7 folder.
  3. Add the following to your system environment variables:
    • Add C:\go-legacy-win7\bin (or your chosen path) to the system PATH.
    • Set GOROOT to C:\go-legacy-win7 (or your chosen path).
  4. Add the following to your user environment variables:
    • Add %USERPROFILE%\go\bin to the user PATH.
    • Set GOPATH to %USERPROFILE%\go.

macOS and Linux Installation

  1. Download the appropriate go-legacy-win7-<version>.<os>_<arch>.tar.gz file.

    • For macOS: go-legacy-win7-<version>.darwin_<arch>.tar.gz
    • For Linux: go-legacy-win7-<version>.linux_<arch>.tar.gz
  2. Extract the archive to /usr/local:

    sudo tar -C /usr/local -xzf go-legacy-win7-<version>.<os>_<arch>.tar.gz
    
  3. Add the following to your shell configuration file:

    • For bash, add to ~/.bash_profile or ~/.bashrc
    • For zsh, add to ~/.zshrc
    export GOROOT=/usr/local/go-legacy-win7
    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
  4. Apply the changes:

    • For bash: source ~/.bash_profile or source ~/.bashrc
    • For zsh: source ~/.zshrc

    Note:

    • On macOS Catalina and later, zsh is the default shell.
    • On most Linux distributions, bash is the default shell.

After installation, verify the installation by opening a new terminal and running:

go version

Install From Source

To install from source, please follow the steps on the official website.

Contributing

Feedback and issue reports are welcome, and we encourage you to open pull requests to contribute to the project. We appreciate your help!

Note that the Go project uses the issue tracker for bug reports and proposals only. See https://go.dev/wiki/Questions for a list of places to ask questions about the Go language.

About

Go programming language with Windows 7/Windows Server 2008 R2 support* plus classic `go get` behaviour

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks