<div class="container">
<h1>Recommended update for go1.24</h1>
<table class="table table-striped table-bordered">
<tbody>
<tr>
<th>Announcement ID:</th>
<td>SUSE-RU-2025:0509-1</td>
</tr>
<tr>
<th>Release Date:</th>
<td>2025-02-13T11:33:31Z</td>
</tr>
<tr>
<th>Rating:</th>
<td>moderate</td>
</tr>
<tr>
<th>References:</th>
<td>
<ul>
<li style="display: inline;">
<a href="https://bugzilla.suse.com/show_bug.cgi?id=1236217">bsc#1236217</a>
</li>
</ul>
</td>
</tr>
<tr>
<th>Affected Products:</th>
<td>
<ul class="list-group">
<li class="list-group-item">Development Tools Module 15-SP6</li>
<li class="list-group-item">openSUSE Leap 15.6</li>
<li class="list-group-item">SUSE Enterprise Storage 7.1</li>
<li class="list-group-item">SUSE Linux Enterprise Desktop 15 SP6</li>
<li class="list-group-item">SUSE Linux Enterprise High Performance Computing 15 SP3</li>
<li class="list-group-item">SUSE Linux Enterprise High Performance Computing 15 SP4</li>
<li class="list-group-item">SUSE Linux Enterprise High Performance Computing 15 SP5</li>
<li class="list-group-item">SUSE Linux Enterprise High Performance Computing ESPOS 15 SP4</li>
<li class="list-group-item">SUSE Linux Enterprise High Performance Computing ESPOS 15 SP5</li>
<li class="list-group-item">SUSE Linux Enterprise High Performance Computing LTSS 15 SP3</li>
<li class="list-group-item">SUSE Linux Enterprise High Performance Computing LTSS 15 SP4</li>
<li class="list-group-item">SUSE Linux Enterprise High Performance Computing LTSS 15 SP5</li>
<li class="list-group-item">SUSE Linux Enterprise Real Time 15 SP6</li>
<li class="list-group-item">SUSE Linux Enterprise Server 15 SP3</li>
<li class="list-group-item">SUSE Linux Enterprise Server 15 SP3 LTSS</li>
<li class="list-group-item">SUSE Linux Enterprise Server 15 SP4</li>
<li class="list-group-item">SUSE Linux Enterprise Server 15 SP4 LTSS</li>
<li class="list-group-item">SUSE Linux Enterprise Server 15 SP5</li>
<li class="list-group-item">SUSE Linux Enterprise Server 15 SP5 LTSS</li>
<li class="list-group-item">SUSE Linux Enterprise Server 15 SP6</li>
<li class="list-group-item">SUSE Linux Enterprise Server for SAP Applications 15 SP3</li>
<li class="list-group-item">SUSE Linux Enterprise Server for SAP Applications 15 SP4</li>
<li class="list-group-item">SUSE Linux Enterprise Server for SAP Applications 15 SP5</li>
<li class="list-group-item">SUSE Linux Enterprise Server for SAP Applications 15 SP6</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p>An update that has one fix can now be installed.</p>
<h2>Description:</h2>
<p>This update for go1.24 fixes the following issues:</p>
<p>go1.24 (released 2025-02-11) is a major release of Go.</p>
<p>go1.24.x minor releases will be provided through February 2026.
https://github.com/golang/go/wiki/Go-Release-Cycle</p>
<p>go1.24 arrives six months after Go 1.23. Most of its changes are
in the implementation of the toolchain, runtime, and
libraries. As always, the release maintains the Go 1 promise of
compatibility. We expect almost all Go programs to continue to
compile and run as before. (boo#1236217)</p>
<ul>
<li>Language change: Go 1.24 now fully supports generic type
aliases: a type alias may be parameterized like a defined
type. See the language spec for details. For now, the feature
can be disabled by setting GOEXPERIMENT=noaliastypeparams; but
the aliastypeparams setting will be removed for Go 1.25.</li>
<li>go command: Go modules can now track executable dependencies
using tool directives in go.mod. This removes the need for the
previous workaround of adding tools as blank imports to a file
conventionally named "tools.go". The go tool command can now
run these tools in addition to tools shipped with the Go
distribution.</li>
<li>go command: The new -tool flag for go get causes a tool
directive to be added to the current module for named packages
in addition to adding require directives.</li>
<li>go command: The new tool meta-pattern refers to all tools in
the current module. This can be used to upgrade them all with
go get tool or to install them into your GOBIN directory with
go install tool.</li>
<li>go command: Executables created by go run and the new behavior
of go tool are now cached in the Go build cache. This makes
repeated executions faster at the expense of making the cache
larger. See go#69290.</li>
<li>go command: The go build and go install commands now accept a
-json flag that reports build output and failures as structured
JSON output on standard output. For details of the reporting
format, see go help buildjson. Furthermore, go test -json now
reports build output and failures in JSON, interleaved with
test result JSON. These are distinguished by new Action types,
but if they cause problems in a test integration system, you
can revert to the text build output with GODEBUG setting
gotestjsonbuildtext=1.</li>
<li>go command: The new GOAUTH environment variable provides a
flexible way to authenticate private module fetches. See go
help goauth for more information.</li>
<li>go command: The go build command now sets the main module's
version in the compiled binary based on the version control
system tag and/or commit. A +dirty suffix will be appended if
there are uncommitted changes. Use the -buildvcs=false flag to
omit version control information from the binary.</li>
<li>go command: The new GODEBUG setting toolchaintrace=1 can be
used to trace the go command's toolchain selection process.</li>
<li>cgo: cgo supports new annotations for C functions to improve
run time performance. cgo noescape cFunctionName tells the
compiler that memory passed to the C function cFunctionname
does not escape. cgo nocallback cFunctionName tells the
compiler that the C function cFunctionName does not call back
to any Go functions.</li>
<li>cgo: cgo currently refuses to compile calls to a C function
which has multiple incompatible declarations. For instance,
if f is declared as both void f(int) and void f(double),
cgo will report an error instead of possibly generating an
incorrect call sequence for f(0). New in this release is a
better detector for this error condition when the incompatible
declarations appear in different files. See go#67699.</li>
<li>objdump: The objdump tool now supports dissassembly on 64-bit
LoongArch (GOARCH=loong64), RISC-V (GOARCH=riscv64), and S390X
(GOARCH=s390x).</li>
<li>vet: The new tests analyzer reports common mistakes in
declarations of tests, fuzzers, benchmarks, and examples in
test packages, such as malformed names, incorrect signatures,
or examples that document non-existent identifiers. Some of
these mistakes may cause tests not to run. This analyzer is
among the subset of analyzers that are run by go test.</li>
<li>vet: The existing printf analyzer now reports a diagnostic for
calls of the form fmt.Printf(s), where s is a non-constant
format string, with no other arguments. Such calls are nearly
always a mistake as the value of s may contain the % symbol;
use fmt.Print instead. See go#60529. This check tends to
produce findings in existing code, and so is only applied when
the language version (as specified by the go.mod go directive
or //go:build comments) is at least Go 1.24, to avoid causing
continuous integration failures when updating to the 1.24 Go
toolchain.</li>
<li>vet: The existing buildtag analyzer now reports a diagnostic
when there is an invalid Go major version build constraint
within a //go:build directive. For example, //go:build go1.23.1
refers to a point release; use //go:build go1.23 instead.
See go#64127.</li>
<li>vet: The existing copylock analyzer now reports a diagnostic
when a variable declared in a 3-clause "for" loop such as for i
:= iter(); done(i); i = next(i) { ... } contains a sync.Locker,
such as a sync.Mutex. Go 1.22 changed the behavior of these
loops to create a new variable for each iteration, copying the
value from the previous iteration; this copy operation is not
safe for locks. See go#66387.</li>
<li>GOCACHEPROG: The cmd/go internal binary and test caching
mechanism can now be implemented by child processes
implementing a JSON protocol between the cmd/go tool and the
child process named by the GOCACHEPROG environment
variable. This was previously behind a GOEXPERIMENT. For
protocol details, see the documentation.</li>
<li>Runtime: Several performance improvements to the runtime have
decreased CPU overheads by 2-3% on average across a suite of
representative benchmarks. Results may vary by
application. These improvements include a new builtin map
implementation based on Swiss Tables, more efficient memory
allocation of small objects, and a new runtime-internal mutex
implementation.</li>
<li>Runtime: The new builtin map implementation and new
runtime-internal mutex may be disabled by setting
GOEXPERIMENT=noswissmap and GOEXPERIMENT=nospinbitmutex at
build time respectively.</li>
<li>Compiler: The compiler already disallowed defining new methods
with receiver types that were cgo-generated, but it was
possible to circumvent that restriction via an alias type. Go
1.24 now always reports an error if a receiver denotes a
cgo-generated type, whether directly or indirectly (through an
alias type).</li>
<li>Linker: The linker now generates a GNU build ID (the ELF
NT_GNU_BUILD_ID note) on ELF platforms and a UUID (the Mach-O
LC_UUID load command) on macOS by default. The build ID or UUID
is derived from the Go build ID. It can be disabled by the -B
none linker flag, or overridden by the -B 0xNNNN linker flag
with a user-specified hexadecimal value.</li>
<li>Bootstrap: As mentioned in the Go 1.22 release notes, Go 1.24
now requires Go 1.22.6 or later for bootstrap. We expect that
Go 1.26 will require a point release of Go 1.24 or later for
bootstrap.</li>
<li>Standard library: Directory-limited filesystem access: The new
os.Root type provides the ability to perform filesystem
operations within a specific directory. The os.OpenRoot
function opens a directory and returns an os.Root. Methods on
os.Root operate within the directory and do not permit paths
that refer to locations outside the directory, including ones
that follow symbolic links out of the directory. The methods on
os.Root mirror most of the file system operations available in
the os package, including for example os.Root.Open,
os.Root.Create, os.Root.Mkdir, and os.Root.Stat,</li>
<li>Standard library: new benchmark function: Benchmarks may now
use the faster and less error-prone testing.B.Loop method to
perform benchmark iterations like for b.Loop() { ... } in place
of the typical loop structures involving b.N like for range
b.N. This offers two significant advantages: 1) The benchmark
function will execute exactly once per -count, so expensive
setup and cleanup steps execute only once, and 2) Function call
parameters and results are kept alive, preventing the compiler
from fully optimizing away the loop body.</li>
<li>Standard library: Improved finalizers: The new
runtime.AddCleanup function is a finalization mechanism that is
more flexible, more efficient, and less error-prone than
runtime.SetFinalizer. AddCleanup attaches a cleanup function to
an object that will run once the object is no longer reachable.
However, unlike SetFinalizer, multiple cleanups may be attached
to a single object, cleanups may be attached to interior
pointers, cleanups do not generally cause leaks when objects
form a cycle, and cleanups do not delay the freeing of an
object or objects it points to. New code should prefer
AddCleanup over SetFinalizer.</li>
<li>Standard library: New weak package: The new weak package
provides weak pointers. Weak pointers are a low-level primitive
provided to enable the creation of memory-efficient structures,
such as weak maps for associating values, canonicalization maps
for anything not covered by package unique, and various kinds
of caches. For supporting these use-cases, this release also
provides runtime.AddCleanup and maphash.Comparable.</li>
<li>Standard library: New crypto/mlkem package: The new
crypto/mlkem package implements ML-KEM-768 and
ML-KEM-1024. ML-KEM is a post-quantum key exchange mechanism
formerly known as Kyber and specified in FIPS 203.</li>
<li>Standard library: New crypto/hkdf, crypto/pbkdf2, and
crypto/sha3 packages: The new crypto/hkdf package implements
the HMAC-based Extract-and-Expand key derivation function HKDF,
as defined in RFC 5869. The new crypto/pbkdf2 package
implements the password-based key derivation function PBKDF2,
as defined in RFC 8018. The new crypto/sha3 package implements
the SHA-3 hash function and SHAKE and cSHAKE extendable-output
functions, as defined in FIPS 202. All three packages are based
on pre-existing golang.org/x/crypto/... packages.</li>
<li>FIPS: release includes a new set of mechanisms to facilitate
FIPS 140-3 compliance. See https://go.dev/doc/security/fips140
The Go Cryptographic Module is a set of internal standard
library packages that are transparently used to implement FIPS
140-3 approved algorithms. Applications require no changes to
use the Go Cryptographic Module for approved algorithms.</li>
<li>FIPS: The new GOFIPS140 environment variable can be used to
select the Go Cryptographic Module version to use in a
build. The new fips140 GODEBUG setting can be used to enable
FIPS 140-3 mode at runtime.</li>
<li>FIPS: Go 1.24 includes Go Cryptographic Module version v1.0.0,
which is currently under test with a CMVP-accredited
laboratory.</li>
<li>Standard library: New experimental testing/synctest package:
The new experimental testing/synctest package provides support
for testing concurrent code. The synctest.Run function starts a
group of goroutines in an isolated "bubble". Within the bubble,
time package functions operate on a fake clock. The
synctest.Wait function waits for all goroutines in the current
bubble to block. The synctest package is experimental and must
be enabled by setting GOEXPERIMENT=synctest at build time. The
package API is subject to change in future releases. See issue
go#67434 for more information and to provide feeback.</li>
<li>archive: The (*Writer).AddFS implementations in both
archive/zip and archive/tar now write a directory header for an
empty directory.</li>
<li>bytes: The bytes package adds several functions that work with
iterators.</li>
<li>bytes: Lines returns an iterator over the newline-terminated
lines in a byte slice.</li>
<li>bytes: SplitSeq returns an iterator over all subslices of a
byte slice split around a separator.</li>
<li>bytes: SplitAfterSeq returns an iterator over subslices of a
byte slice split after each instance of a separator.</li>
<li>bytes: FieldsSeq returns an iterator over subslices of a byte
slice split around runs of whitespace characters, as defined by
unicode.IsSpace.</li>
<li>bytes: FieldsFuncSeq returns an iterator over subslices of a
byte slice split around runs of Unicode code points satisfying
a predicate.</li>
<li>crypto/aes: The value returned by NewCipher no longer
implements the NewCTR, NewGCM, NewCBCEncrypter, and
NewCBCDecrypter methods. These methods were undocumented and
not available on all architectures. Instead, the Block value
should be passed directly to the relevant crypto/cipher
functions. For now, crypto/cipher still checks for those
methods on Block values, even if they are not used by the
standard library anymore.</li>
<li>crypto/aes: The Stream implementation returned by NewCTR when
used with crypto/aes is now several times faster on amd64 and
arm64.</li>
<li>crypto/cipher: The new NewGCMWithRandomNonce function returns
an AEAD that implements AES-GCM by generating a random nonce
during Seal and prepending it to the ciphertext.</li>
<li>crypto/cipher: NewOFB, NewCFBEncrypter, and NewCFBDecrypter are
now deprecated. OFB and CFB mode are not authenticated, which
generally enables active attacks to manipulate and recover the
plaintext. It is recommended that applications use AEAD modes
instead. If an unauthenticated Stream mode is required, use
NewCTR instead.</li>
<li>crypto/ecdsa: PrivateKey.Sign now produces a deterministic
signature according to RFC 6979 if the random source is nil.</li>
<li>crypto/md5: The value returned by md5.New now also implements
the encoding.BinaryAppender interface.</li>
<li>crypto/rand: The Read function is now guaranteed not to
fail. It will always return nil as the error result. If Read
were to encounter an error while reading from Reader, the
program will irrecoverably crash. Note that the platform APIs
used by the default Reader are documented to always succeed, so
this change should only affect programs that override the
Reader variable. One exception are Linux kernels before version
3.17, where the default Reader still opens /dev/urandom and may
fail.</li>
<li>crypto/rand: On Linux 6.11 and later, Reader now uses the
getrandom system call via vDSO. This is several times faster,
especially for small reads.</li>
<li>crypto/rand: On OpenBSD, Reader now uses arc4random_buf(3).</li>
<li>crypto/rand: The new Text function can be used to generate
cryptographically secure random text strings.</li>
<li>crypto/rsa: GenerateKey now returns an error if a key of less
than 1024 bits is requested. All Sign, Verify, Encrypt, and
Decrypt methods now return an error if used with a key smaller
than 1024 bits. Such keys are insecure and should not be
used. GODEBUG setting rsa1024min=0 restores the old behavior,
but we recommend doing so only if necessary and only in tests,
for example by adding a //go:debug rsa1024min=0 line to a test
file. A new GenerateKey example provides an easy-to-use
standard 2048-bit test key.</li>
<li>crypto/rsa: It is now safe and more efficient to call
PrivateKey.Precompute before PrivateKey.Validate. Precompute is
now faster in the presence of partially filled out
PrecomputedValues, such as when unmarshaling a key from JSON.</li>
<li>crypto/rsa: The package now rejects more invalid keys, even
when Validate is not called, and GenerateKey may return new
errors for broken random sources. The Primes and Precomputed
fields of PrivateKey are now used and validated even when some
values are missing. See also the changes to crypto/x509 parsing
and marshaling of RSA keys described below.</li>
<li>crypto/rsa: SignPKCS1v15 and VerifyPKCS1v15 now support
SHA-512/224, SHA-512/256, and SHA-3.</li>
<li>crypto/rsa: GenerateKey now uses a slightly different method to
generate the private exponent (Carmichael's totient instead of
Euler's totient). Rare applications that externally regenerate
keys from only the prime factors may produce different but
compatible results.</li>
<li>crypto/rsa: Public and private key operations are now up to two
times faster on wasm.</li>
<li>crypto/sha1: The value returned by sha1.New now also implements
the encoding.BinaryAppender interface.</li>
<li>crypto/sha256: The values returned by sha256.New and
sha256.New224 now also implement the encoding.BinaryAppender
interface.</li>
<li>crypto/sha512: The values returned by sha512.New,
sha512.New384, sha512.New512_224 and sha512.New512_256 now also
implement the encoding.BinaryAppender interface.</li>
<li>crypto/subtle: The new WithDataIndependentTiming function
allows the user to run a function with architecture specific
features enabled which guarantee specific instructions are data
value timing invariant. This can be used to make sure that code
designed to run in constant time is not optimized by CPU-level
features such that it operates in variable time. Currently,
WithDataIndependentTiming uses the PSTATE.DIT bit on arm64, and
is a no-op on all other architectures. GODEBUG setting
dataindependenttiming=1 enables the DIT mode for the entire Go
program.</li>
<li>crypto/subtle: The XORBytes output must overlap exactly or not
at all with the inputs. Previously, the behavior was otherwise
undefined, while now XORBytes will panic.</li>
<li>crypto/tls: The TLS server now supports Encrypted Client Hello
(ECH). This feature can be enabled by populating the
Config.EncryptedClientHelloKeys field.</li>
<li>crypto/tls: The new post-quantum X25519MLKEM768 key exchange
mechanism is now supported and is enabled by default when
Config.CurvePreferences is nil. GODEBUG setting tlsmlkem=0
reverts the default.</li>
<li>crypto/tls: Support for the experimental X25519Kyber768Draft00
key exchange has been removed.</li>
<li>crypto/tls: Key exchange ordering is now handled entirely by
the crypto/tls package. The order of Config.CurvePreferences is
now ignored, and the contents are only used to determine which
key exchanges to enable when the field is populated.</li>
<li>crypto/tls: The new ClientHelloInfo.Extensions field lists the
IDs of the extensions received in the Client Hello
message. This can be useful for fingerprinting TLS clients.</li>
<li>crypto/x509: The x509sha1 GODEBUG setting has been
removed. Certificate.Verify no longer supports SHA-1 based
signatures.</li>
<li>crypto/x509: OID now implements the encoding.BinaryAppender and
encoding.TextAppender interfaces.</li>
<li>crypto/x509: The default certificate policies field has changed
from Certificate.PolicyIdentifiers to
Certificate.Policies. When parsing certificates, both fields
will be populated, but when creating certificates policies will
now be taken from the Certificate.Policies field instead of the
Certificate.PolicyIdentifiers field. This change can be
reverted with GODEBUG setting x509usepolicies=0.</li>
<li>crypto/x509: CreateCertificate will now generate a serial
number using a RFC 5280 compliant method when passed a template
with a nil Certificate.SerialNumber field, instead of failing.</li>
<li>crypto/x509: Certificate.Verify now supports policy validation,
as defined in RFC 5280 and RFC 9618. The new
VerifyOptions.CertificatePolicies field can be set to an
acceptable set of policy OIDs. Only certificate chains with
valid policy graphs will be returned from Certificate.Verify.</li>
<li>crypto/x509: MarshalPKCS8PrivateKey now returns an error
instead of marshaling an invalid RSA
key. (MarshalPKCS1PrivateKey doesn't have an error return, and
its behavior when provided invalid keys continues to be
undefined.)</li>
<li>crypto/x509: ParsePKCS1PrivateKey and ParsePKCS8PrivateKey now
use and validate the encoded CRT values, so might reject
invalid RSA keys that were previously accepted. Use GODEBUG
setting x509rsacrt=0 to revert to recomputing the CRT values.</li>
<li>debug/elf: The debug/elf package adds support for handling
symbol versions in dynamic ELF (Executable and Linkable Format)
files. The new File.DynamicVersions method returns a list of
dynamic versions defined in the ELF file. The new
File.DynamicVersionNeeds method returns a list of dynamic
versions required by this ELF file that are defined in other
ELF objects. Finally, the new Symbol.HasVersion and
Symbol.VersionIndex fields indicate the version of a symbol.</li>
<li>encoding: Two new interfaces, TextAppender and BinaryAppender,
have been introduced to append the textual or binary
representation of an object to a byte slice. These interfaces
provide the same functionality as TextMarshaler and
BinaryMarshaler, but instead of allocating a new slice each
time, they append the data directly to an existing slice. These
interfaces are now implemented by standard library types that
already implemented TextMarshaler and/or BinaryMarshaler.</li>
<li>encoding/json: When marshaling, a struct field with the new
omitzero option in the struct field tag will be omitted if its
value is zero. If the field type has an IsZero() bool method,
that will be used to determine whether the value is
zero. Otherwise, the value is zero if it is the zero value for
its type. The omitzero field tag is clearer and less
error-prone than omitempty when the intent is to omit zero
values. In particular, unlike omitempty, omitzero omits
zero-valued time.Time values, which is a common source of
friction.</li>
<li>encoding/json: If both omitempty and omitzero are specified,
the field will be omitted if the value is either empty or zero
(or both).</li>
<li>encoding/json: UnmarshalTypeError.Field now includes embedded
structs to provide more detailed error messages.</li>
<li>go/types: All go/types data structures that expose sequences
using a pair of methods such as Len() int and At(int) T now
also have methods that return iterators, allowing you to
simplify code. The methods are: Interface.EmbeddedTypes,
Interface.ExplicitMethods, Interface.Methods,
MethodSet.Methods, Named.Methods, Scope.Children,
Struct.Fields, Tuple.Variables, TypeList.Types,
TypeParamList.TypeParams, Union.Terms.</li>
<li>hash/adler32: The value returned by New now also implements the
encoding.BinaryAppender interface.</li>
<li>hash/crc32: The values returned by New and NewIEEE now also
implement the encoding.BinaryAppender interface.</li>
<li>hash/crc64: The value returned by New now also implements the
encoding.BinaryAppender interface.</li>
<li>hash/fnv: The values returned by New32, New32a, New64, New64a,
New128 and New128a now also implement the
encoding.BinaryAppender interface.</li>
<li>hash/maphash: The new Comparable and WriteComparable functions
can compute the hash of any comparable value. These make it
possible to hash anything that can be used as a Go map key.</li>
<li>log/slog: The new DiscardHandler is a handler that is never
enabled and always discards its output.</li>
<li>log/slog: Level and LevelVar now implement the
encoding.TextAppender interface.</li>
<li>math/big: Float, Int and Rat now implement the
encoding.TextAppender interface.</li>
<li>math/rand: Calls to the deprecated top-level Seed function no
longer have any effect. To restore the old behavior use GODEBUG
setting randseednop=0. For more background see proposal
go#67273.</li>
<li>math/rand/v2: ChaCha8 and PCG now implement the
encoding.BinaryAppender interface.</li>
<li>net: ListenConfig now uses MPTCP by default on systems where it
is supported (currently on Linux only).</li>
<li>net: IP now implements the encoding.TextAppender interface.</li>
<li>net/http: Transport's limit on 1xx informational responses
received in response to a request has changed. It previously
aborted a request and returned an error after receiving more
than 5 1xx responses. It now returns an error if the total size
of all 1xx responses exceeds the
Transport.MaxResponseHeaderBytes configuration setting.</li>
<li>net/http: In addition, when a request has a
net/http/httptrace.ClientTrace.Got1xxResponse trace hook, there
is now no limit on the total number of 1xx responses. The
Got1xxResponse hook may return an error to abort a request.</li>
<li>net/http: Transport and Server now have an HTTP2 field which
permits configuring HTTP/2 protocol settings.</li>
<li>net/http: The new Server.Protocols and Transport.Protocols
fields provide a simple way to configure what HTTP protocols a
server or client use.</li>
<li>net/http: The server and client may be configured to support
unencrypted HTTP/2 connections.</li>
<li>net/http: When Server.Protocols contains UnencryptedHTTP2, the
server will accept HTTP/2 connections on unencrypted ports. The
server can accept both HTTP/1 and unencrypted HTTP/2 on the
same port.</li>
<li>net/http: When Transport.Protocols contains UnencryptedHTTP2
and does not contain HTTP1, the transport will use unencrypted
HTTP/2 for http:// URLs. If the transport is configured to use
both HTTP/1 and unencrypted HTTP/2, it will use HTTP/1.</li>
<li>net/http: Unencrypted HTTP/2 support uses "HTTP/2 with Prior
Knowledge" (RFC 9113, section 3.3). The deprecated "Upgrade:
h2c" header is not supported.</li>
<li>net/netip: Addr, AddrPort and Prefix now implement the
encoding.BinaryAppender and encoding.TextAppender interfaces.</li>
<li>net/url: URL now also implements the encoding.BinaryAppender
interface.</li>
<li>os/user: On Windows, Current can now be used in Windows Nano
Server. The implementation has been updated to avoid using
functions from the NetApi32 library, which is not available in
Nano Server.</li>
<li>os/user: On Windows, Current, Lookup and LookupId now support
the following built-in service user accounts: NT
AUTHORITY\SYSTEM, NT AUTHORITY\LOCAL SERVICE, NT
AUTHORITY\NETWORK SERVICE</li>
<li>os/user: On Windows, Current has been made considerably faster
when the current user is joined to a slow domain, which is the
usual case for many corporate users. The new implementation
performance is now in the order of milliseconds, compared to
the previous implementation which could take several seconds,
or even minutes, to complete.</li>
<li>os/user: On Windows, Current now returns the process owner user
when the current thread is impersonating another
user. Previously, it returned an error.</li>
<li>regexp: Regexp now implements the encoding.TextAppender
interface.</li>
<li>runtime: The GOROOT function is now deprecated. In new code
prefer to use the system path to locate the "go" binary, and
use go env GOROOT to find its GOROOT.</li>
<li>strings: The strings package adds several functions that work
with iterators.</li>
<li>strings: Lines returns an iterator over the newline-terminated
lines in a string.</li>
<li>strings: SplitSeq returns an iterator over all substrings of a
string split around a separator.</li>
<li>strings: SplitAfterSeq returns an iterator over substrings of a
string split after each instance of a separator.</li>
<li>strings: FieldsSeq returns an iterator over substrings of a
string split around runs of whitespace characters, as defined
by unicode.IsSpace.</li>
<li>strings: FieldsFuncSeq returns an iterator over substrings of a
string split around runs of Unicode code points satisfying a
predicate.</li>
<li>sync: The implementation of sync.Map has been changed,
improving performance, particularly for map modifications. For
instance, modifications of disjoint sets of keys are much less
likely to contend on larger maps, and there is no longer any
ramp-up time required to achieve low-contention loads from the
map. If you encounter any problems, set
GOEXPERIMENT=nosynchashtriemap at build time to switch back to
the old implementation and please file an issue.</li>
<li>testing: The new T.Context and B.Context methods return a
context that's canceled after the test completes and before
test cleanup functions run.</li>
<li>testing: The new T.Chdir and B.Chdir methods can be used to
change the working directory for the duration of a test or
benchmark.</li>
<li>text/template: Templates now support range-over-func and
range-over-int.</li>
<li>time: Time now implements the encoding.BinaryAppender and
encoding.TextAppender interfaces.</li>
<li>Linux port: As announced in the Go 1.23 release notes, Go 1.24
requires Linux kernel version 3.2 or later.</li>
<li>Darwin port: Go 1.24 is the last release that will run on macOS
11 Big Sur. Go 1.25 will require macOS 12 Monterey or later.</li>
<li>WebAssembly: The go:wasmexport compiler directive is added for
Go programs to export functions to the WebAssembly host.</li>
<li>WebAssembly: On WebAssembly System Interface Preview 1
(GOOS=wasip1 GOARCH=wasm), Go 1.24 supports building a Go
program as a reactor/library, by specifying the
-buildmode=c-shared build flag.</li>
<li>WebAssembly: More types are now permitted as argument or result
types for go:wasmimport functions. Specifically, bool, string,
uintptr, and pointers to certain types are allowed (see the
documentation for detail), along with 32-bit and 64-bit integer
and float types, and unsafe.Pointer, which are already
allowed. These types are also permitted as argument or result
types for go:wasmexport functions.</li>
<li>WebAssembly: The support files for WebAssembly have been moved
to lib/wasm from misc/wasm.</li>
<li>Windows: The 32-bit windows/arm port (GOOS=windows GOARCH=arm)
has been marked broken. See issue go#70705 for details.</li>
</ul>
<h2>Patch Instructions:</h2>
<p>
To install this SUSE update use the SUSE recommended
installation methods like YaST online_update or "zypper patch".<br/>
Alternatively you can run the command listed for your product:
</p>
<ul class="list-group">
<li class="list-group-item">
SUSE Linux Enterprise Server 15 SP3 LTSS
<br/>
<code>zypper in -t patch SUSE-SLE-Product-SLES-15-SP3-LTSS-2025-509=1</code>
</li>
<li class="list-group-item">
SUSE Linux Enterprise Server 15 SP4 LTSS
<br/>
<code>zypper in -t patch SUSE-SLE-Product-SLES-15-SP4-LTSS-2025-509=1</code>
</li>
<li class="list-group-item">
SUSE Linux Enterprise Server 15 SP5 LTSS
<br/>
<code>zypper in -t patch SUSE-SLE-Product-SLES-15-SP5-LTSS-2025-509=1</code>
</li>
<li class="list-group-item">
SUSE Linux Enterprise Server for SAP Applications 15 SP3
<br/>
<code>zypper in -t patch SUSE-SLE-Product-SLES_SAP-15-SP3-2025-509=1</code>
</li>
<li class="list-group-item">
SUSE Linux Enterprise Server for SAP Applications 15 SP4
<br/>
<code>zypper in -t patch SUSE-SLE-Product-SLES_SAP-15-SP4-2025-509=1</code>
</li>
<li class="list-group-item">
SUSE Linux Enterprise Server for SAP Applications 15 SP5
<br/>
<code>zypper in -t patch SUSE-SLE-Product-SLES_SAP-15-SP5-2025-509=1</code>
</li>
<li class="list-group-item">
SUSE Enterprise Storage 7.1
<br/>
<code>zypper in -t patch SUSE-Storage-7.1-2025-509=1</code>
</li>
<li class="list-group-item">
openSUSE Leap 15.6
<br/>
<code>zypper in -t patch openSUSE-SLE-15.6-2025-509=1</code>
</li>
<li class="list-group-item">
Development Tools Module 15-SP6
<br/>
<code>zypper in -t patch SUSE-SLE-Module-Development-Tools-15-SP6-2025-509=1</code>
</li>
<li class="list-group-item">
SUSE Linux Enterprise High Performance Computing LTSS 15 SP3
<br/>
<code>zypper in -t patch SUSE-SLE-Product-HPC-15-SP3-LTSS-2025-509=1</code>
</li>
<li class="list-group-item">
SUSE Linux Enterprise High Performance Computing ESPOS 15 SP4
<br/>
<code>zypper in -t patch SUSE-SLE-Product-HPC-15-SP4-ESPOS-2025-509=1</code>
</li>
<li class="list-group-item">
SUSE Linux Enterprise High Performance Computing LTSS 15 SP4
<br/>
<code>zypper in -t patch SUSE-SLE-Product-HPC-15-SP4-LTSS-2025-509=1</code>
</li>
<li class="list-group-item">
SUSE Linux Enterprise High Performance Computing ESPOS 15 SP5
<br/>
<code>zypper in -t patch SUSE-SLE-Product-HPC-15-SP5-ESPOS-2025-509=1</code>
</li>
<li class="list-group-item">
SUSE Linux Enterprise High Performance Computing LTSS 15 SP5
<br/>
<code>zypper in -t patch SUSE-SLE-Product-HPC-15-SP5-LTSS-2025-509=1</code>
</li>
</ul>
<h2>Package List:</h2>
<ul>
<li>
SUSE Linux Enterprise Server 15 SP3 LTSS (aarch64 ppc64le s390x x86_64)
<ul>
<li>go1.24-doc-1.24.0-150000.1.9.1</li>
<li>go1.24-race-1.24.0-150000.1.9.1</li>
<li>go1.24-1.24.0-150000.1.9.1</li>
</ul>
</li>
<li>
SUSE Linux Enterprise Server 15 SP4 LTSS (aarch64 ppc64le s390x x86_64)
<ul>
<li>go1.24-doc-1.24.0-150000.1.9.1</li>
<li>go1.24-race-1.24.0-150000.1.9.1</li>
<li>go1.24-1.24.0-150000.1.9.1</li>
</ul>
</li>
<li>
SUSE Linux Enterprise Server 15 SP5 LTSS (aarch64 ppc64le s390x x86_64)
<ul>
<li>go1.24-doc-1.24.0-150000.1.9.1</li>
<li>go1.24-race-1.24.0-150000.1.9.1</li>
<li>go1.24-1.24.0-150000.1.9.1</li>
</ul>
</li>
<li>
SUSE Linux Enterprise Server for SAP Applications 15 SP3 (ppc64le x86_64)
<ul>
<li>go1.24-doc-1.24.0-150000.1.9.1</li>
<li>go1.24-race-1.24.0-150000.1.9.1</li>
<li>go1.24-1.24.0-150000.1.9.1</li>
</ul>
</li>
<li>
SUSE Linux Enterprise Server for SAP Applications 15 SP4 (ppc64le x86_64)
<ul>
<li>go1.24-doc-1.24.0-150000.1.9.1</li>
<li>go1.24-race-1.24.0-150000.1.9.1</li>
<li>go1.24-1.24.0-150000.1.9.1</li>
</ul>
</li>
<li>
SUSE Linux Enterprise Server for SAP Applications 15 SP5 (ppc64le x86_64)
<ul>
<li>go1.24-doc-1.24.0-150000.1.9.1</li>
<li>go1.24-race-1.24.0-150000.1.9.1</li>
<li>go1.24-1.24.0-150000.1.9.1</li>
</ul>
</li>
<li>
SUSE Enterprise Storage 7.1 (aarch64 x86_64)
<ul>
<li>go1.24-doc-1.24.0-150000.1.9.1</li>
<li>go1.24-race-1.24.0-150000.1.9.1</li>
<li>go1.24-1.24.0-150000.1.9.1</li>
</ul>
</li>
<li>
openSUSE Leap 15.6 (aarch64 ppc64le s390x x86_64)
<ul>
<li>go1.24-doc-1.24.0-150000.1.9.1</li>
<li>go1.24-race-1.24.0-150000.1.9.1</li>
<li>go1.24-1.24.0-150000.1.9.1</li>
</ul>
</li>
<li>
Development Tools Module 15-SP6 (aarch64 ppc64le s390x x86_64)
<ul>
<li>go1.24-doc-1.24.0-150000.1.9.1</li>
<li>go1.24-race-1.24.0-150000.1.9.1</li>
<li>go1.24-1.24.0-150000.1.9.1</li>
</ul>
</li>
<li>
SUSE Linux Enterprise High Performance Computing LTSS 15 SP3 (aarch64 x86_64)
<ul>
<li>go1.24-doc-1.24.0-150000.1.9.1</li>
<li>go1.24-race-1.24.0-150000.1.9.1</li>
<li>go1.24-1.24.0-150000.1.9.1</li>
</ul>
</li>
<li>
SUSE Linux Enterprise High Performance Computing ESPOS 15 SP4 (aarch64 x86_64)
<ul>
<li>go1.24-doc-1.24.0-150000.1.9.1</li>
<li>go1.24-race-1.24.0-150000.1.9.1</li>
<li>go1.24-1.24.0-150000.1.9.1</li>
</ul>
</li>
<li>
SUSE Linux Enterprise High Performance Computing LTSS 15 SP4 (aarch64 x86_64)
<ul>
<li>go1.24-doc-1.24.0-150000.1.9.1</li>
<li>go1.24-race-1.24.0-150000.1.9.1</li>
<li>go1.24-1.24.0-150000.1.9.1</li>
</ul>
</li>
<li>
SUSE Linux Enterprise High Performance Computing ESPOS 15 SP5 (aarch64 x86_64)
<ul>
<li>go1.24-doc-1.24.0-150000.1.9.1</li>
<li>go1.24-race-1.24.0-150000.1.9.1</li>
<li>go1.24-1.24.0-150000.1.9.1</li>
</ul>
</li>
<li>
SUSE Linux Enterprise High Performance Computing LTSS 15 SP5 (aarch64 x86_64)
<ul>
<li>go1.24-doc-1.24.0-150000.1.9.1</li>
<li>go1.24-race-1.24.0-150000.1.9.1</li>
<li>go1.24-1.24.0-150000.1.9.1</li>
</ul>
</li>
</ul>
<h2>References:</h2>
<ul>
<li>
<a href="https://bugzilla.suse.com/show_bug.cgi?id=1236217">https://bugzilla.suse.com/show_bug.cgi?id=1236217</a>
</li>
</ul>
</div>