- Notifications
You must be signed in to change notification settings - Fork35
microsoft/go
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Go is an open source programming language that makes it easy to build simple,reliable, and efficient software.
This repository,microsoft/go, contains theinfrastructure Microsoft uses to build Go. The submodule namedgo contains theGo source code. By default, the submodule's remote URL is the official GitHubmirror of Go,golang/go. The canonical Gitrepository for Go source code is located athttps://go.googlesource.com/go.
This project is not involved in producing theofficial binary distributionsof Go.
Unless otherwise noted, the Go source files are distributed under theBSD-style license found in the LICENSE file.
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.
- Seeeng/doc/fips for more information about this feature and the history of FIPS 140 compliance in Go.
We submit changes to the upstream Go project rather than patching it, whenpossible. Our goals are to avoid breaking compatibility and to minimize thenumber of changes we maintain in this fork.
We call this repository a fork even though it isn't a traditional Git fork. Itsbranches do not share Git ancestry with the Go repository. However, therepository serves the same purpose as a Git fork: maintaining a modified versionof the Go source code over time.
This project follows the upstream GoRelease Policy.This means we support each major release (1.X) until there are two newer majorreleases. A new Go major version isreleased 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 acorresponding 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.
Each microsoft/go release is announced at theMicrosoft for Go Developers blog.Check out the upstreamgolang-announce mailing listfor a summary of the changes in each Go version.
SeeSUPPORT.md for more information about reporting bugs, requesting features, and asking questions.
There are a few additional support resources internal to Microsoft:
- Languages at Microsoft: Go.
- A Microsoft-internal email distribution list 📧 (instant join link)for release announcements.
We build the forked Go toolset with this list of OS/Arch combinations. To use aprebuilt copy of Go while targeting a platform that is not on this list,cross-compilation may be necessary.
linux_amd64linux_armv6llinux_arm64windows_amd64darwin_amd64darwin_arm64
Visit theMigration Guide for guidance about how werecommend migrating existing Go projects to use the Microsoft build of Go. Thisguide also helps resolve commonly encountered issues.
The following sections list the ways to get the Microsoft build of Go.
Note
Don't see an option that works for you? Let us know!
File a GitHub issue, or comment on an existing issue in this tag:
microsoft/go-images maintains anddocuments container images that are available on Microsoft Artifact Registry.
TheAzure Linux distributionincludes thegolang package, a build of this fork of Go.
For more information about how to manage thesystemcrypto migration from 1.24to 1.25 in Azure Linux 3, seethesystemcrypto section of the Migration Guide.
To install the Microsoft build of Go using an Ubuntu package, first set up theLinux package repository for Microsoft Products.Packages are available in the Ubuntu 22.04 and 24.04 repositories.
After the repository is added, install the Microsoft build of Go by running the following commands:
sudo apt-get update&& sudo apt-get install msft-golangSigned builds of Gofor several platforms are available aszip andtar.gz files.
Thecross-platformgo-install.ps1 script installs the Microsoft build of Go.It can install specific versions or the latest releases.
If you use Azure Pipelines, try running the script in ascript step and pass the-AzurePipelinePath argument to automatically set upgo in the environment for future steps.
The microsoft/go GitHub releasesinclude a source tarball file ending in.src.tar.gz. After downloading andextracting the tar.gz file, build it using theupstream instructions.
The first step is to clone this repository using Git and check out the desiredtag or commit. Thezip file that GitHub offers for download is incomplete: itdoesn't include thego submodule.
If you want to contribute to the Microsoft for Go developers project, read theDeveloperGuide. It lists the steps we recommend to set up aMicrosoft build of Go development environment, execute your first build, runthe standard library test suite, and contribute a PR.
If you just want to build on your own machine, you may find it moreconvenient to use the tools provided by theeng/run.ps1 script. We use thisscript for CI builds. Seeeng/README.md for more details abouteng/run.ps1 and other repository infrastructure.
Once built, the Microsoft build of Go binary is found atgo/bin/go.
This project welcomes contributions and suggestions. Most contributions require you to agree to aContributor License Agreement (CLA) declaring that you have the right to, and actually do, grant usthe rights to use your contribution. For details, visithttps://cla.opensource.microsoft.com.
When you submit a pull request, a CLA bot will automatically determine whether you need to providea CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructionsprovided by the bot. You will only need to do this once across all repos using our CLA.
This project has adopted theMicrosoft Open Source Code of Conduct.For more information see theCode of Conduct FAQ orcontactopencode@microsoft.com with any additional questions or comments.
Please read theDeveloper Guide for more information about contributing to this project.
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsofttrademarks or logos is subject to and must followMicrosoft's Trademark & Brand Guidelines.Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.Any use of third-party trademarks or logos are subject to those third-party's policies.
The software may collect information about you and your use of the software andsend it to Microsoft. Microsoft may use this information to provide servicesand improve our products and services. You may turn off the telemetry bysetting theMS_GOTOOLCHAIN_TELEMETRY_ENABLED environment variable to0.There are also some features in the software that may enable you and Microsoftto collect data from users of your applications. If you use these features,you must comply with applicable law, including providing appropriate notices tousers of your applications together with a copy of Microsoft’s privacystatement. Our privacy statement is located athttps://go.microsoft.com/fwlink/?LinkID=824704.You can learn more about data collection and use in the help documentation andour privacy statement. Your use of the software operates as your consent tothese practices.
About
The Microsoft build of Go
Resources
License
Code of conduct
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Uh oh!
There was an error while loading.Please reload this page.