microsoft/go
Go
Captured source
source ↗microsoft/go
Description: The Microsoft build of Go is a modified version of Go that can build FIPS compliant applications that satisfy internal Microsoft policies.
Language: Go
License: BSD-3-Clause
Stars: 422
Forks: 46
Open issues: 137
Created: 2021-02-26T22:37:27Z
Pushed: 2026-06-10T23:36:48Z
Default branch: microsoft/main
Fork: no
Archived: no
README:
The Microsoft build of Go
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software. The Microsoft build of Go, maintained in the microsoft/go repository, contains the infrastructure Microsoft uses to build a modified version of the Go toolset.
Unless otherwise noted, the Go source files are distributed under the BSD-style license found in the LICENSE file.
This project is not involved in producing the official binary distributions of Go.
Why does this fork exist?
This repository produces a modified version of Go that:
- Builds programs that are compliant with internal Microsoft policies by default.
- Can be used to build FIPS 140 compliant applications.
- See [eng/doc/fips](eng/doc/fips) for more information about this feature and the history of FIPS 140 compliance in Go.
For a complete summary of the changes we make, see [the "What's different?" section of the Migration Guide](eng/doc/MigrationGuide.md#whats-different).
We submit changes to the upstream Go project rather than patching it, when possible. Our goals are to avoid breaking compatibility and to minimize the number of changes we maintain in this fork.
We call this project a fork even though it isn't a traditional Git fork: the Git branches don't share ancestry with the upstream Git repository. However, the repository serves the same purpose as a Git fork: to maintain a modified version of the Go source code over time. The submodule named go contains the Go source code, and the patches directory contains our changes. The submodule is updated regularly to the latest commit available in both the upstream repository, , and the GitHub mirror, .
Support
See [SUPPORT.md](SUPPORT.md) for more information about reporting bugs, requesting features, and asking questions.
There are a few additional support resources internal to Microsoft:
- (Microsoft-internal) Languages at Microsoft: Introduction to Go.
- (Microsoft-internal) Languages at Microsoft: Get Help with Go.
- Includes internal Microsoft support channels such as an email contact for our team and a community Teams group.
Release cycle and policy
This project follows the upstream Go Release Policy. This means we support each major release (1.X) until there are two newer major releases. A new Go major version is released every six months, so each Go major version is supported for about one year.
When upstream Go releases a new minor version (1.X.Y), we release a corresponding microsoft/go version that may also include fork-specific changes. This normally happens once a month.
At any time, we may release a new revision (1.X.Y-Z) to fix an issue without waiting for the next upstream minor release. Revision releases are uncommon.
We announce each Microsoft build of Go release through the following channels:
The Go team announces upstream releases on the golang-announce mailing list. These announcement emails include a carefully written summary of the changes that may not be found elsewhere.
Download and install
We build the Microsoft build of Go toolset with the following OS/Arch combinations:
| OS | amd64 | arm64 | armv6l | | --- | :---: | :---: | :---: | | linux | ✓ | ✓ | ✓ | | windows | ✓ | ✓ | | | darwin (macOS) | ✓ | ✓ | |
Visit the [Migration Guide](eng/doc/MigrationGuide.md) for guidance about how we recommend migrating existing Go projects to use the Microsoft build of Go. This guide also helps resolve commonly encountered issues.
The [Installation](eng/doc/Installation.md) documentation contains sections describing each of the following installation methods:
- [Docker Container Images](eng/doc/Installation.md#docker-container-images)
- [Azure Linux](eng/doc/Installation.md#azure-linux)
- [Ubuntu](eng/doc/Installation.md#ubuntu)
- [Azure Pipelines
GoTool@0task](eng/doc/Installation.md#azure-pipelines-gotool0-task) - [GitHub Actions
setup-goaction](eng/doc/Installation.md#github-actions-setup-go-action) - [The
go-install.ps1script](eng/doc/Installation.md#the-go-installps1-script) - [Binary archive](eng/doc/Installation.md#binary-archive) (
tar.gzandzip) - [Build from source](eng/doc/Installation.md#build-from-source)
Contributing
This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
Please read the [Developer Guide](eng/doc/DeveloperGuide.md) for more information about contributing to this project.
Trademarks
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow [Microsoft's Trademark & Brand…
Excerpt shown — open the source for the full document.