diff --git a/README.md b/README.md index 71c9d1dc..d9e4b742 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,102 @@ # The Go Programming Language -Go is an open source programming language that makes it easy to build simple, -reliable, and efficient software. +**go-legacy-win7** is a fork of the Go programming language that maintains Windows 7 support 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](https://golang.org/doc/gopher/fiveyears.jpg) -*Gopher image by [Renee French][rf], licensed under [Creative Commons 4.0 Attribution license][cc4-by].* +_Gopher image by [Renee French][rf], licensed under [Creative Commons 4.0 Attribution licence][cc4-by]._ -Our canonical Git repository is located at https://go.googlesource.com/go. -There is a mirror of the repository at https://github.com/golang/go. +## Differences from Upstream Go -Unless otherwise noted, the Go source files are distributed under the -BSD-style license found in the LICENSE file. +1. **Windows 7 Support** + Whilst the official Go project has dropped support for Windows 7, this fork maintains compatibility with Windows 7 systems. -### Download and Install +2. **Classic `go get` Behaviour** + This fork allows for the deprecated `go get` behaviour when `GO111MODULE` is set to "off" or "auto". This means: -#### Binary Distributions + - 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. -Official binary distributions are available at https://go.dev/dl/. +3. **Compatibility Notes** + Please be aware that some newer Go features may not be fully compatible with Windows 7. We try to maintain as much functionality as possible, but some limitations may exist. -After downloading a binary release, visit https://go.dev/doc/install -for installation instructions. +## Changes in Each Release -#### Install From Source +Every release includes the following modifications: -If a binary distribution is not available for your combination of -operating system and architecture, visit -https://go.dev/doc/install/source -for source installation instructions. +- Restored Windows 7 support by reverting [693def1](https://github.com/golang/go/commit/693def151adff1af707d82d28f55dba81ceb08e1) + - The Windows binary provided here also supports Windows 7 +- Restored deprecated `go get` behaviour for use outside modules (reverted [de4d503](https://github.com/golang/go/commit/de4d50316fb5c6d1529aa5377dc93b26021ee843)) +- Includes all improvements and bug fixes from the corresponding upstream Go release -### Contributing +## Download and Install -Go is the work of thousands of contributors. We appreciate your help! +### Binary Distributions -To contribute, please read the contribution guidelines at https://go.dev/doc/contribute. +Binary distributions are **available at the [release page](https://github.com/thongtech/go-legacy-win7/releases)**. + +#### Windows Installation + +1. Download the `go-legacy-win7-.windows-.zip` file. +2. Extract the ZIP to `C:\Go` (or any preferred location). +3. Add `C:\Go\bin` (or your chosen path) to the system `PATH`. +4. Add `%USERPROFILE%\go\bin` to the user `PATH`. +5. Add `%USERPROFILE%\go` as `GOPATH` to user variables. + +#### macOS Installation + +1. Download the appropriate `go-legacy-win7-.darwin-.tar.gz` file. +2. Extract the archive to `/usr/local`: + ``` + sudo tar -C /usr/local -xzf go-legacy-win7-.darwin-.tar.gz + ``` +3. Add `/usr/local/go-legacy-win7/bin` to your PATH and set GOPATH: + - For bash (if you're using bash): + ``` + echo 'export PATH=$PATH:/usr/local/go-legacy-win7/bin:$HOME/go-legacy-win7/bin' >> ~/.bash_profile + echo 'export GOPATH=$HOME/go' >> ~/.bash_profile + source ~/.bash_profile + ``` + - For zsh (default on macOS Catalina and later): + ``` + echo 'export PATH=$PATH:/usr/local/go-legacy-win7/bin:$HOME/go-legacy-win7/bin' >> ~/.zshrc + echo 'export GOPATH=$HOME/go' >> ~/.zshrc + source ~/.zshrc + ``` + +#### Linux Installation + +1. Download the appropriate `go-legacy-win7-.linux-.tar.gz` file. +2. Extract the archive to `/usr/local`: + ``` + sudo tar -C /usr/local -xzf go-legacy-win7-.linux-.tar.gz + ``` +3. Add `/usr/local/go-legacy-win7/bin` to your PATH and set GOPATH: + - For bash (default on most Linux distributions): + ``` + echo 'export PATH=$PATH:/usr/local/go-legacy-win7/bin:$HOME/go-legacy-win7/bin' >> ~/.bashrc + echo 'export GOPATH=$HOME/go' >> ~/.bashrc + source ~/.bashrc + ``` + - For zsh (if you're using zsh): + ``` + echo 'export PATH=$PATH:/usr/local/go-legacy-win7/bin:$HOME/go-legacy-win7/bin' >> ~/.zshrc + echo 'export GOPATH=$HOME/go' >> ~/.zshrc + source ~/.zshrc + ``` + +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](https://go.dev/doc/install/source). + +## 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