1
0
Fork 0

Adding upstream version 1.34.4.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-05-24 07:26:29 +02:00
parent e393c3af3f
commit 4978089aab
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
4963 changed files with 677545 additions and 0 deletions

View file

@ -0,0 +1,12 @@
# Update Go Version
The version doesn't require a leading "v" and minor versions don't need
a trailing ".0". The tool will still will work correctly if they are provided.
`go run tools/update_goversion/main.go 1.19.2`
`go run tools/update_goversion/main.go 1.19`
This tool is meant to be used to create a pull request that will update the
Telegraf project to use the latest version of Go.
The Dockerfile `quay.io/influxdb/telegraf-ci` used by the CI will have to be
pushed to the quay repository by a maintainer with `make ci`.

View file

@ -0,0 +1,216 @@
package main
import (
"errors"
"fmt"
"io"
"log"
"net/http"
"os"
"regexp"
"strings"
"github.com/coreos/go-semver/semver"
"golang.org/x/net/html"
)
type FileInfo struct {
FileName string
Regex string
Replace string
}
func (f FileInfo) Update() error {
b, err := os.ReadFile(f.FileName)
if err != nil {
return err
}
re := regexp.MustCompile(f.Regex)
newContents := re.ReplaceAll(b, []byte(f.Replace))
err = os.WriteFile(f.FileName, newContents, 0640)
if err != nil {
return err
}
return nil
}
// removePatch cleans version from "1.20.1" to "1.20" (think go.mod entry)
func removePatch(version string) string {
verInfo := semver.New(version)
return fmt.Sprintf("%d.%d", verInfo.Major, verInfo.Minor)
}
// findHash will search the downloads table for the hashes matching the artifacts list
func findHashes(body io.Reader, version string) (map[string]string, error) {
htmlTokens := html.NewTokenizer(body)
artifacts := []string{
fmt.Sprintf("go%s.linux-amd64.tar.gz", version),
fmt.Sprintf("go%s.darwin-arm64.tar.gz", version),
fmt.Sprintf("go%s.darwin-amd64.tar.gz", version),
}
var insideDownloadTable bool
var currentRow string
hashes := make(map[string]string)
for {
tokenType := htmlTokens.Next()
// if it's an error token, we either reached
// the end of the file, or the HTML was malformed
if tokenType == html.ErrorToken {
err := htmlTokens.Err()
if errors.Is(err, io.EOF) {
// end of the file, break out of the loop
break
}
return nil, htmlTokens.Err()
}
if tokenType == html.StartTagToken {
// get the token
token := htmlTokens.Token()
if token.Data == "table" && len(token.Attr) == 1 && token.Attr[0].Val == "downloadtable" {
insideDownloadTable = true
}
if insideDownloadTable && token.Data == "a" && len(token.Attr) == 2 {
for _, f := range artifacts {
// Check if the current row matches a desired file
if strings.Contains(token.Attr[1].Val, f) {
currentRow = f
break
}
}
}
if currentRow != "" && token.Data == "tt" {
// the next token should be the page title
tokenType = htmlTokens.Next()
// just make sure it's actually a text token
if tokenType == html.TextToken {
hashes[currentRow] = htmlTokens.Token().Data
currentRow = ""
}
}
}
// Found a hash for each filename
if len(hashes) == len(artifacts) {
break
}
// Reached end of table
if tokenType == html.EndTagToken && htmlTokens.Token().Data == "table" {
if len(hashes) == 0 {
return nil, fmt.Errorf("could not find version %q on downloads page", version)
}
return nil, fmt.Errorf("only found %d hashes expected %d: %v", len(hashes), len(artifacts), hashes)
}
}
return hashes, nil
}
func getHashes(version string) (map[string]string, error) {
resp, err := http.Get(`https://go.dev/dl/`)
if err != nil {
return nil, err
}
defer resp.Body.Close()
return findHashes(resp.Body, version)
}
func main() {
version := os.Args[1]
// Handle situation user accidentally provides version as "v1.19.2"
if strings.HasPrefix(version, "v") {
version = strings.TrimLeft(version, "v")
}
hashes, err := getHashes(version)
if err != nil {
log.Fatal(err)
}
for file, hash := range hashes {
fmt.Printf("%s %s\n", hash, file)
}
noPatchVersion := removePatch(version)
files := []FileInfo{
{
FileName: ".circleci/config.yml",
Regex: `(quay\.io\/influxdb\/telegraf-ci):(\d.\d*.\d)`,
Replace: "$1:" + version,
},
{
FileName: "go.mod",
Regex: `(go)\s(\d.\d*)`,
Replace: "$1 " + noPatchVersion,
},
{
FileName: "Makefile",
Regex: `(quay\.io\/influxdb\/telegraf-ci):(\d.\d*.\d)`,
Replace: "$1:" + version,
},
{
FileName: "README.md",
Regex: `(Telegraf requires Go version) (\d.\d*)`,
Replace: "$1 " + noPatchVersion,
},
{
FileName: "scripts/ci.docker",
Regex: `(FROM golang):(\d.\d*.\d)`,
Replace: "$1:" + version,
},
{
FileName: "scripts/installgo_linux.sh",
Regex: `(GO_VERSION)=("\d.\d*.\d")`,
Replace: fmt.Sprintf("$1=%q", version),
},
{
FileName: "scripts/installgo_mac.sh",
Regex: `(GO_VERSION)=("\d.\d*.\d")`,
Replace: fmt.Sprintf("$1=%q", version),
},
{
FileName: "scripts/installgo_windows.sh",
Regex: `(GO_VERSION)=("\d.\d*.\d")`,
Replace: fmt.Sprintf("$1=%q", version),
},
{
FileName: "scripts/installgo_linux.sh",
Regex: `(GO_VERSION_SHA)=".*"`,
Replace: fmt.Sprintf("$1=%q", hashes[fmt.Sprintf("go%s.linux-amd64.tar.gz", version)]),
},
{
FileName: "scripts/installgo_mac.sh",
Regex: `(GO_VERSION_SHA_arm64)=".*"`,
Replace: fmt.Sprintf("$1=%q", hashes[fmt.Sprintf("go%s.darwin-arm64.tar.gz", version)]),
},
{
FileName: "scripts/installgo_mac.sh",
Regex: `(GO_VERSION_SHA_amd64)=".*"`,
Replace: fmt.Sprintf("$1=%q", hashes[fmt.Sprintf("go%s.darwin-amd64.tar.gz", version)]),
},
{
FileName: ".github/workflows/readme-linter.yml",
Regex: `(go-version): '\d.\d*.\d'`,
Replace: fmt.Sprintf("$1: '%s'", version),
},
}
for _, f := range files {
fmt.Printf("Updating %s \n", f.FileName)
err := f.Update()
if err != nil {
log.Panic(err)
}
}
}

View file

@ -0,0 +1,46 @@
package main
import (
"bytes"
"os"
"testing"
"github.com/stretchr/testify/require"
)
func TestFindHash(t *testing.T) {
tests := []struct {
testFile string
version string
expectedHashes map[string]string
}{
{
"testdata/godev_patch.html",
"1.19.2",
map[string]string{
"go1.19.2.linux-amd64.tar.gz": "5e8c5a74fe6470dd7e055a461acda8bb4050ead8c2df70f227e3ff7d8eb7eeb6",
"go1.19.2.darwin-arm64.tar.gz": "35d819df25197c0be45f36ce849b994bba3b0559b76d4538b910d28f6395c00d",
"go1.19.2.darwin-amd64.tar.gz": "16f8047d7b627699b3773680098fbaf7cc962b7db02b3e02726f78c4db26dfde",
},
},
{
"testdata/godev_minor.html",
"1.19.0",
map[string]string{
"go1.19.0.linux-amd64.tar.gz": "464b6b66591f6cf055bc5df90a9750bf5fbc9d038722bb84a9d56a2bea974be6",
"go1.19.0.darwin-arm64.tar.gz": "859e0a54b7fcea89d9dd1ec52aab415ac8f169999e5fdfb0f0c15b577c4ead5e",
"go1.19.0.darwin-amd64.tar.gz": "df6509885f65f0d7a4eaf3dfbe7dda327569787e8a0a31cbf99ae3a6e23e9ea8",
},
},
}
for _, test := range tests {
b, err := os.ReadFile(test.testFile)
require.NoError(t, err)
hashes, err := findHashes(bytes.NewReader(b), test.version)
require.NoError(t, err)
require.Equal(t, test.expectedHashes, hashes)
}
}

View file

@ -0,0 +1,192 @@
<table class="downloadtable">
<thead>
<tr class="first">
<th>File name</th>
<th>Kind</th>
<th>OS</th>
<th>Arch</th>
<th>Size</th>
<th>SHA256 Checksum</th>
</tr>
</thead>
<tr class="highlight">
<td class="filename"><a class="download" href="/web/20220802171248/https://go.dev/dl/go1.19.0.src.tar.gz">go1.19.0.src.tar.gz</a></td>
<td>Source</td>
<td></td>
<td></td>
<td>25MB</td>
<td><tt>9419cc70dc5a2523f29a77053cafff658ed21ef3561d9b6b020280ebceab28b9</tt></td>
</tr>
<tr>
<td class="filename"><a class="download" href="/web/20220802171248/https://go.dev/dl/go1.19.0.darwin-amd64.tar.gz">go1.19.0.darwin-amd64.tar.gz</a></td>
<td>Archive</td>
<td>macOS</td>
<td>x86-64</td>
<td>144MB</td>
<td><tt>df6509885f65f0d7a4eaf3dfbe7dda327569787e8a0a31cbf99ae3a6e23e9ea8</tt></td>
</tr>
<tr class="highlight">
<td class="filename"><a class="download" href="/web/20220802171248/https://go.dev/dl/go1.19.0.darwin-amd64.pkg">go1.19.0.darwin-amd64.pkg</a></td>
<td>Installer</td>
<td>macOS</td>
<td>x86-64</td>
<td>145MB</td>
<td><tt>61cb2268c4b3e6662a19c2dda58d43bfcf89d3649c205bcdb32c148e9048b1ba</tt></td>
</tr>
<tr>
<td class="filename"><a class="download" href="/web/20220802171248/https://go.dev/dl/go1.19.0.darwin-arm64.tar.gz">go1.19.0.darwin-arm64.tar.gz</a></td>
<td>Archive</td>
<td>macOS</td>
<td>ARM64</td>
<td>138MB</td>
<td><tt>859e0a54b7fcea89d9dd1ec52aab415ac8f169999e5fdfb0f0c15b577c4ead5e</tt></td>
</tr>
<tr class="highlight">
<td class="filename"><a class="download" href="/web/20220802171248/https://go.dev/dl/go1.19.0.darwin-arm64.pkg">go1.19.0.darwin-arm64.pkg</a></td>
<td>Installer</td>
<td>macOS</td>
<td>ARM64</td>
<td>139MB</td>
<td><tt>167cd1107886c36fda76404e82d1447ebd3efc472fd9a9fe3b2e872d41adf981</tt></td>
</tr>
<tr>
<td class="filename"><a class="download" href="/web/20220802171248/https://go.dev/dl/go1.19.0.linux-386.tar.gz">go1.19.0.linux-386.tar.gz</a></td>
<td>Archive</td>
<td>Linux</td>
<td>x86</td>
<td>114MB</td>
<td><tt>6f721fa3e8f823827b875b73579d8ceadd9053ad1db8eaa2393c084865fb4873</tt></td>
</tr>
<tr class="highlight">
<td class="filename"><a class="download" href="/web/20220802171248/https://go.dev/dl/go1.19.0.linux-amd64.tar.gz">go1.19.0.linux-amd64.tar.gz</a></td>
<td>Archive</td>
<td>Linux</td>
<td>x86-64</td>
<td>142MB</td>
<td><tt>464b6b66591f6cf055bc5df90a9750bf5fbc9d038722bb84a9d56a2bea974be6</tt></td>
</tr>
<tr>
<td class="filename"><a class="download" href="/web/20220802171248/https://go.dev/dl/go1.19.0.linux-arm64.tar.gz">go1.19.0.linux-arm64.tar.gz</a></td>
<td>Archive</td>
<td>Linux</td>
<td>ARM64</td>
<td>110MB</td>
<td><tt>efa97fac9574fc6ef6c9ff3e3758fb85f1439b046573bf434cccb5e012bd00c8</tt></td>
</tr>
<tr>
<td class="filename"><a class="download" href="/web/20220802171248/https://go.dev/dl/go1.19.0.linux-armv6l.tar.gz">go1.19.0.linux-armv6l.tar.gz</a></td>
<td>Archive</td>
<td>Linux</td>
<td>ARMv6</td>
<td>111MB</td>
<td><tt>25197c7d70c6bf2b34d7d7c29a2ff92ba1c393f0fb395218f1147aac2948fb93</tt></td>
</tr>
<tr>
<td class="filename"><a class="download" href="/web/20220802171248/https://go.dev/dl/go1.19.0.windows-386.zip">go1.19.0.windows-386.zip</a></td>
<td>Archive</td>
<td>Windows</td>
<td>x86</td>
<td>128MB</td>
<td><tt>45b80c0aca6a5a1f87f111d375db5afee3ce0a9fd5834041c39116e643ba1df2</tt></td>
</tr>
<tr>
<td class="filename"><a class="download" href="/web/20220802171248/https://go.dev/dl/go1.19.0.windows-386.msi">go1.19.0.windows-386.msi</a></td>
<td>Installer</td>
<td>Windows</td>
<td>x86</td>
<td>112MB</td>
<td><tt>39ed9b03c42b0ee99477377c27b1a809a73b96c627d86c4aedd133e92df5bd43</tt></td>
</tr>
<tr>
<td class="filename"><a class="download" href="/web/20220802171248/https://go.dev/dl/go1.19.0.windows-amd64.zip">go1.19.0.windows-amd64.zip</a></td>
<td>Archive</td>
<td>Windows</td>
<td>x86-64</td>
<td>156MB</td>
<td><tt>bcaaf966f91980d35ae93c37a8fe890e4ddfca19448c0d9f66c027d287e2823a</tt></td>
</tr>
<tr class="highlight">
<td class="filename"><a class="download" href="/web/20220802171248/https://go.dev/dl/go1.19.0.windows-amd64.msi">go1.19.0.windows-amd64.msi</a></td>
<td>Installer</td>
<td>Windows</td>
<td>x86-64</td>
<td>136MB</td>
<td><tt>0743b5fe0c6e5c67c7d131a8e24d4e7bdd5ef272dd13205dd7ae30cc2f464123</tt></td>
</tr>
<tr class="first"><th colspan="6" class="first">Other Ports</th></tr>
<tr>
<td class="filename"><a class="download" href="/web/20220802171248/https://go.dev/dl/go1.19.0.freebsd-386.tar.gz">go1.19.0.freebsd-386.tar.gz</a></td>
<td>Archive</td>
<td>FreeBSD</td>
<td>x86</td>
<td>114MB</td>
<td><tt>3989e2336dbb3dcf9197b8c0ef9227cdd1a134789d83095d20ebdc1d88edb9f0</tt></td>
</tr>
<tr>
<td class="filename"><a class="download" href="/web/20220802171248/https://go.dev/dl/go1.19.0.freebsd-amd64.tar.gz">go1.19.0.freebsd-amd64.tar.gz</a></td>
<td>Archive</td>
<td>FreeBSD</td>
<td>x86-64</td>
<td>142MB</td>
<td><tt>eca1a8f7b6ff6146efc285eed581096b12b59c1f0488bfe98ed053ab205267ca</tt></td>
</tr>
<tr>
<td class="filename"><a class="download" href="/web/20220802171248/https://go.dev/dl/go1.19.0.linux-ppc64le.tar.gz">go1.19.0.linux-ppc64le.tar.gz</a></td>
<td>Archive</td>
<td>Linux</td>
<td>ppc64le</td>
<td>110MB</td>
<td><tt>92bf5aa598a01b279d03847c32788a3a7e0a247a029dedb7c759811c2a4241fc</tt></td>
</tr>
<tr>
<td class="filename"><a class="download" href="/web/20220802171248/https://go.dev/dl/go1.19.0.linux-s390x.tar.gz">go1.19.0.linux-s390x.tar.gz</a></td>
<td>Archive</td>
<td>Linux</td>
<td>s390x</td>
<td>113MB</td>
<td><tt>58723eb8e3c7b9e8f5e97b2d38ace8fd62d9e5423eaa6cdb7ffe5f881cb11875</tt></td>
</tr>
<tr>
<td class="filename"><a class="download" href="/web/20220802171248/https://go.dev/dl/go1.19.0.windows-arm64.zip">go1.19.0.windows-arm64.zip</a></td>
<td>Archive</td>
<td>Windows</td>
<td>ARM64</td>
<td>122MB</td>
<td><tt>032f1f75a85bc595bf5eb8b48ec8e490121047915803ad62277586b2e13608f2</tt></td>
</tr>
<tr class="highlight">
<td class="filename"><a class="download" href="/web/20220802171248/https://go.dev/dl/go1.19.0.windows-arm64.msi">go1.19.0.windows-arm64.msi</a></td>
<td>Installer</td>
<td>Windows</td>
<td>ARM64</td>
<td>107MB</td>
<td><tt>6319ab5b50f0462efcb092eec3ac8c23a548652cdaa2755282aed4513b6188ee</tt></td>
</tr>
</table>

View file

@ -0,0 +1,192 @@
<table class="downloadtable">
<thead>
<tr class="first">
<th>File name</th>
<th>Kind</th>
<th>OS</th>
<th>Arch</th>
<th>Size</th>
<th>SHA256 Checksum</th>
</tr>
</thead>
<tr class="highlight">
<td class="filename"><a class="download" href="/dl/go1.19.2.src.tar.gz">go1.19.2.src.tar.gz</a></td>
<td>Source</td>
<td></td>
<td></td>
<td>25MB</td>
<td><tt>2ce930d70a931de660fdaf271d70192793b1b240272645bf0275779f6704df6b</tt></td>
</tr>
<tr>
<td class="filename"><a class="download" href="/dl/go1.19.2.darwin-amd64.tar.gz">go1.19.2.darwin-amd64.tar.gz</a></td>
<td>Archive</td>
<td>macOS</td>
<td>x86-64</td>
<td>144MB</td>
<td><tt>16f8047d7b627699b3773680098fbaf7cc962b7db02b3e02726f78c4db26dfde</tt></td>
</tr>
<tr class="highlight">
<td class="filename"><a class="download" href="/dl/go1.19.2.darwin-amd64.pkg">go1.19.2.darwin-amd64.pkg</a></td>
<td>Installer</td>
<td>macOS</td>
<td>x86-64</td>
<td>145MB</td>
<td><tt>2633f62c0b259a8fa4fb1fc967d28817816acca50b1fc354364cb381e1ccd2e5</tt></td>
</tr>
<tr>
<td class="filename"><a class="download" href="/dl/go1.19.2.darwin-arm64.tar.gz">go1.19.2.darwin-arm64.tar.gz</a></td>
<td>Archive</td>
<td>macOS</td>
<td>ARM64</td>
<td>138MB</td>
<td><tt>35d819df25197c0be45f36ce849b994bba3b0559b76d4538b910d28f6395c00d</tt></td>
</tr>
<tr class="highlight">
<td class="filename"><a class="download" href="/dl/go1.19.2.darwin-arm64.pkg">go1.19.2.darwin-arm64.pkg</a></td>
<td>Installer</td>
<td>macOS</td>
<td>ARM64</td>
<td>139MB</td>
<td><tt>6f985e50497ff3cba8f216e49c6c767f6ad52c8e505f375983714c14749cb954</tt></td>
</tr>
<tr>
<td class="filename"><a class="download" href="/dl/go1.19.2.linux-386.tar.gz">go1.19.2.linux-386.tar.gz</a></td>
<td>Archive</td>
<td>Linux</td>
<td>x86</td>
<td>114MB</td>
<td><tt>ba8c97965e0856c69c9ca2c86f96bec5bb21de43e6533e25494bb211d85cda1b</tt></td>
</tr>
<tr class="highlight">
<td class="filename"><a class="download" href="/dl/go1.19.2.linux-amd64.tar.gz">go1.19.2.linux-amd64.tar.gz</a></td>
<td>Archive</td>
<td>Linux</td>
<td>x86-64</td>
<td>142MB</td>
<td><tt>5e8c5a74fe6470dd7e055a461acda8bb4050ead8c2df70f227e3ff7d8eb7eeb6</tt></td>
</tr>
<tr>
<td class="filename"><a class="download" href="/dl/go1.19.2.linux-arm64.tar.gz">go1.19.2.linux-arm64.tar.gz</a></td>
<td>Archive</td>
<td>Linux</td>
<td>ARM64</td>
<td>110MB</td>
<td><tt>b62a8d9654436c67c14a0c91e931d50440541f09eb991a987536cb982903126d</tt></td>
</tr>
<tr>
<td class="filename"><a class="download" href="/dl/go1.19.2.linux-armv6l.tar.gz">go1.19.2.linux-armv6l.tar.gz</a></td>
<td>Archive</td>
<td>Linux</td>
<td>ARMv6</td>
<td>111MB</td>
<td><tt>f3ccec7816ecd704ebafd130b08b8ad97c55402a8193a107b63e9de12ab90118</tt></td>
</tr>
<tr>
<td class="filename"><a class="download" href="/dl/go1.19.2.windows-386.zip">go1.19.2.windows-386.zip</a></td>
<td>Archive</td>
<td>Windows</td>
<td>x86</td>
<td>128MB</td>
<td><tt>9355b09b23e9db33945a7ba45bb75981ab0bb6006713099732167722cf081b53</tt></td>
</tr>
<tr>
<td class="filename"><a class="download" href="/dl/go1.19.2.windows-386.msi">go1.19.2.windows-386.msi</a></td>
<td>Installer</td>
<td>Windows</td>
<td>x86</td>
<td>111MB</td>
<td><tt>98b0f92a6c74469353917afff914457d6809de164251ddb45831c3f0efc269b6</tt></td>
</tr>
<tr>
<td class="filename"><a class="download" href="/dl/go1.19.2.windows-amd64.zip">go1.19.2.windows-amd64.zip</a></td>
<td>Archive</td>
<td>Windows</td>
<td>x86-64</td>
<td>156MB</td>
<td><tt>e132d4f0518b0d417eb6cc5f182c3385f6d24bb2eebee2566cd1a7ab6097e3f2</tt></td>
</tr>
<tr class="highlight">
<td class="filename"><a class="download" href="/dl/go1.19.2.windows-amd64.msi">go1.19.2.windows-amd64.msi</a></td>
<td>Installer</td>
<td>Windows</td>
<td>x86-64</td>
<td>135MB</td>
<td><tt>249aba207df30133deadb3419b2476479189a2c0d324e72faee4e1f1a6209eca</tt></td>
</tr>
<tr class="first"><th colspan="6" class="first">Other Ports</th></tr>
<tr>
<td class="filename"><a class="download" href="/dl/go1.19.2.freebsd-386.tar.gz">go1.19.2.freebsd-386.tar.gz</a></td>
<td>Archive</td>
<td>FreeBSD</td>
<td>x86</td>
<td>114MB</td>
<td><tt>7831a406447a14d964212d07f68e77cf7fe7fb7286bade6eeb9fbea39b192984</tt></td>
</tr>
<tr>
<td class="filename"><a class="download" href="/dl/go1.19.2.freebsd-amd64.tar.gz">go1.19.2.freebsd-amd64.tar.gz</a></td>
<td>Archive</td>
<td>FreeBSD</td>
<td>x86-64</td>
<td>142MB</td>
<td><tt>d74c88430484d14826ec21161e3b9336bd021f502b6594c4dd00e9ec730ee51d</tt></td>
</tr>
<tr>
<td class="filename"><a class="download" href="/dl/go1.19.2.linux-ppc64le.tar.gz">go1.19.2.linux-ppc64le.tar.gz</a></td>
<td>Archive</td>
<td>Linux</td>
<td>ppc64le</td>
<td>110MB</td>
<td><tt>37e1d4342f7103aeb9babeabe8c71ef3dba23db28db525071119e94b2aa21d7d</tt></td>
</tr>
<tr>
<td class="filename"><a class="download" href="/dl/go1.19.2.linux-s390x.tar.gz">go1.19.2.linux-s390x.tar.gz</a></td>
<td>Archive</td>
<td>Linux</td>
<td>s390x</td>
<td>114MB</td>
<td><tt>51b45dec41295215df17f78e67d1a373b9dda97a5e539bed440974da5ffc97de</tt></td>
</tr>
<tr>
<td class="filename"><a class="download" href="/dl/go1.19.2.windows-arm64.zip">go1.19.2.windows-arm64.zip</a></td>
<td>Archive</td>
<td>Windows</td>
<td>ARM64</td>
<td>122MB</td>
<td><tt>4049435f77fb2a0642fd8740c588aadbcc446056e637e835a8e223fdb897cb3e</tt></td>
</tr>
<tr class="highlight">
<td class="filename"><a class="download" href="/dl/go1.19.2.windows-arm64.msi">go1.19.2.windows-arm64.msi</a></td>
<td>Installer</td>
<td>Windows</td>
<td>ARM64</td>
<td>106MB</td>
<td><tt>979e8bf619c6dc25d27bd62c3d2325e730ccb486849c274b35fdffe9bd0bb827</tt></td>
</tr>
</table>