go1.20-doc-1.20.14-150000.1.41.1<>,eļp9|`ɪ=d"<5W|6"s8Ez8:lnrVP, Y(ɡcrPO_3(KP,~ꡔoqv2Rhk[,-SM[ܳͤRz%\Vgq|@>ʿFJkd,q7 `Gb 'j`%uBqVw?E7!*Tފx|€4H **hvR+YHIN>;?d  # 4TXdh      4 y (8(89 :FG4HHI\XdYp\]^bcd:e?fBlDuXvlzCgo1.20-doc1.20.14150000.1.41.1Go documentationGo examples and documentation.eļh03-ch2c =SUSE Linux Enterprise 15SUSE LLC BSD-3-Clausehttps://www.suse.com/Documentation/Otherhttps://go.dev/linuxx86_64Mh>i+xeļneļneļneļneļnd996fb9181360d605adb42c662c36fb5884988f29940621dfa8b7895215740e3123c14365f20daf6c31123df409b281bc131e5d1f88fbe543b1a68b5382cf6e7e9fec1047b1a8e504dc8796e5e86bfccb1423d52ee9aa8f699d16e2346b40fb9f31eb0879010f88e534ffd161f74f81be18135a5cd8d5a688369290581cb24d263ce5b7390691d66f71e60d7425026bbd3cd6c2845ccbcaa0d3c5b9af46b204crootrootrootrootrootrootrootrootrootrootgo1.20-1.20.14-150000.1.41.1.src.rpmgo-docgo1.20-docgo1.20-doc(x86-64)    rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.0.4-14.6.0-14.0-15.2-14.14.1e@e5@eoeJ&e% to change directory to before performing the command, which may be useful for scripts that need to execute commands in multiple different modules. * go command: The go build and go test commands no longer accept the -i flag, which has been deprecated since Go 1.16. * go command: The go generate command now accepts -skip to skip //go:generate directives matching . * go command: The go test command now accepts -skip to skip tests, subtests, or examples matching . * go command: When the main module is located within GOPATH/src, go install no longer installs libraries for non-main packages to GOPATH/pkg, and go list no longer reports a Target field for such packages. (In module mode, compiled packages are stored in the build cache only, but a bug had caused the GOPATH install targets to unexpectedly remain in effect.) * go command: The go build, go install, and other build-related commands now support a -pgo flag that enables profile-guided optimization, which is described in more detail in the Compiler section below. The -pgo flag specifies the file path of the profile. Specifying -pgo=auto causes the go command to search for a file named default.pgo in the main package's directory and use it if present. This mode currently requires a single main package to be specified on the command line, but we plan to lift this restriction in a future release. Specifying - pgo=off turns off profile-guided optimization. * go command: The go build, go install, and other build-related commands now support a -cover flag that builds the specified target with code coverage instrumentation. This is described in more detail in the Cover section below. * go version: The go version -m command now supports reading more types of Go binaries, most notably, Windows DLLs built with go build -buildmode=c-shared and Linux binaries without execute permission. * Cgo: The go command now disables cgo by default on systems without a C toolchain. More specifically, when the CGO_ENABLED environment variable is unset, the CC environment variable is unset, and the default C compiler (typically clang or gcc) is not found in the path, CGO_ENABLED defaults to 0. As always, you can override the default by setting CGO_ENABLED explicitly. The most important effect of the default change is that when Go is installed on a system without a C compiler, it will now use pure Go builds for packages in the standard library that use cgo, instead of using pre-distributed package archives (which have been removed, as noted above) or attempting to use cgo and failing. This makes Go work better in some minimal container environments as well as on macOS, where pre-distributed package archives have not been used for cgo-based packages since Go 1.16. The packages in the standard library that use cgo are net, os/user, and plugin. On macOS, the net and os/user packages have been rewritten not to use cgo: the same code is now used for cgo and non-cgo builds as well as cross-compiled builds. On Windows, the net and os/user packages have never used cgo. On other systems, builds with cgo disabled will use a pure Go version of these packages. On macOS, the race detector has been rewritten not to use cgo: race-detector-enabled programs can be built and run without Xcode. On Linux and other Unix systems, and on Windows, a host C toolchain is required to use the race detector. * go cover: Go 1.20 supports collecting code coverage profiles for programs (applications and integration tests), as opposed to just unit tests. To collect coverage data for a program, build it with go build's -cover flag, then run the resulting binary with the environment variable GOCOVERDIR set to an output directory for coverage profiles. See the 'coverage for integration tests' landing page for more on how to get started. For details on the design and implementation, see the proposal. * go vet: Improved detection of loop variable capture by nested functions. The vet tool now reports references to loop variables following a call to T.Parallel() within subtest function bodies. Such references may observe the value of the variable from a different iteration (typically causing test cases to be skipped) or an invalid state due to unsynchronized concurrent access. * go vet: The tool also detects reference mistakes in more places. Previously it would only consider the last statement of the loop body, but now it recursively inspects the last statements within if, switch, and select statements. * go vet: New diagnostic for incorrect time formats. The vet tool now reports use of the time format 2006-02-01 (yyyy-dd-mm) with Time.Format and time.Parse. This format does not appear in common date standards, but is frequently used by mistake when attempting to use the ISO 8601 date format (yyyy-mm-dd). * Runtime: Some of the garbage collector's internal data structures were reorganized to be both more space and CPU efficient. This change reduces memory overheads and improves overall CPU performance by up to 2%. * Runtime: The garbage collector behaves less erratically with respect to goroutine assists in some circumstances. * Runtime: Go 1.20 adds a new runtime/coverage package containing APIs for writing coverage profile data at runtime from long-running and/or server programs that do not terminate via os.Exit(). * Compiler: Go 1.20 adds preview support for profile-guided optimization (PGO). PGO enables the toolchain to perform application- and workload-specific optimizations based on run-time profile information. Currently, the compiler supports pprof CPU profiles, which can be collected through usual means, such as the runtime/pprof or net/http/pprof packages. To enable PGO, pass the path of a pprof profile file via the -pgo flag to go build, as mentioned above. Go 1.20 uses PGO to more aggressively inline functions at hot call sites. Benchmarks for a representative set of Go programs show enabling profile-guided inlining optimization improves performance about 3–4%. See the PGO user guide for detailed documentation. We plan to add more profile-guided optimizations in future releases. Note that profile-guided optimization is a preview, so please use it with appropriate caution. * Compiler: The Go 1.20 compiler upgraded its front-end to use a new way of handling the compiler's internal data, which fixes several generic-types issues and enables type declarations within generic functions and methods. * Compiler: The compiler now rejects anonymous interface cycles with a compiler error by default. These arise from tricky uses of embedded interfaces and have always had subtle correctness issues, yet we have no evidence that they're actually used in practice. Assuming no reports from users adversely affected by this change, we plan to update the language specification for Go 1.22 to formally disallow them so tools authors can stop supporting them too. * Compiler: Go 1.18 and 1.19 saw regressions in build speed, largely due to the addition of support for generics and follow-on work. Go 1.20 improves build speeds by up to 10%, bringing it back in line with Go 1.17. Relative to Go 1.19, generated code performance is also generally slightly improved. * Linker: On Linux, the linker now selects the dynamic interpreter for glibc or musl at link time. * Linker: On Windows, the Go linker now supports modern LLVM-based C toolchains. * Linker: Go 1.20 uses go: and type: prefixes for compiler-generated symbols rather than go. and type.. This avoids confusion for user packages whose name starts with go.. The debug/gosym package understands this new naming convention for binaries built with Go 1.20 and newer. * Bootstrap: When building a Go release from source and GOROOT_BOOTSTRAP is not set, previous versions of Go looked for a Go 1.4 or later bootstrap toolchain in the directory $HOME/go1.4 (%HOMEDRIVE%%HOMEPATH%\go1.4 on Windows). Go 1.18 and Go 1.19 looked first for $HOME/go1.17 or $HOME/sdk/go1.17 before falling back to $HOME/go1.4, in anticipation of requiring Go 1.17 for use when bootstrapping Go 1.20. Go 1.20 does require a Go 1.17 release for bootstrapping, but we realized that we should adopt the latest point release of the bootstrap toolchain, so it requires Go 1.17.13. Go 1.20 looks for $HOME/go1.17.13 or $HOME/sdk/go1.17.13 before falling back to $HOME/go1.4 (to support systems that hard-coded the path $HOME/go1.4 but have installed a newer Go toolchain there). In the future, we plan to move the bootstrap toolchain forward approximately once a year, and in particular we expect that Go 1.22 will require the final point release of Go 1.20 for bootstrap. * Library: Go 1.20 adds a new crypto/ecdh package to provide explicit support for Elliptic Curve Diffie-Hellman key exchanges over NIST curves and Curve25519. Programs should use crypto/ecdh instead of the lower-level functionality in crypto/elliptic for ECDH, and third-party modules for more advanced use cases. * Error handling: Go 1.20 expands support for error wrapping to permit an error to wrap multiple other errors. * Error handling: An error e can wrap more than one error by providing an Unwrap method that returns a []error. * Error handling: The errors.Is and errors.As functions have been updated to inspect multiply wrapped errors. * Error handling: The fmt.Errorf function now supports multiple occurrences of the %w format verb, which will cause it to return an error that wraps all of those error operands. * Error handling: The new function errors.Join returns an error wrapping a list of errors. * HTTP ResponseController: The new "net/http".ResponseController type provides access to extended per-request functionality not handled by the "net/http".ResponseWriter interface. The ResponseController type provides a clearer, more discoverable way to add per-handler controls. Two such controls also added in Go 1.20 are SetReadDeadline and SetWriteDeadline, which allow setting per-request read and write deadlines. * New ReverseProxy Rewrite hook: The httputil.ReverseProxy forwarding proxy includes a new Rewrite hook function, superseding the previous Director hook. * archive/tar: When the GODEBUG=tarinsecurepath=0 environment variable is set, Reader.Next method will now return the error ErrInsecurePath for an entry with a file name that is an absolute path, refers to a location outside the current directory, contains invalid characters, or (on Windows) is a reserved name such as NUL. A future version of Go may disable insecure paths by default. * archive/zip: When the GODEBUG=zipinsecurepath=0 environment variable is set, NewReader will now return the error ErrInsecurePath when opening an archive which contains any file name that is an absolute path, refers to a location outside the current directory, contains invalid characters, or (on Windows) is a reserved names such as NUL. A future version of Go may disable insecure paths by default. * archive/zip: Reading from a directory file that contains file data will now return an error. The zip specification does not permit directory files to contain file data, so this change only affects reading from invalid archives. * bytes: The new CutPrefix and CutSuffix functions are like TrimPrefix and TrimSuffix but also report whether the string was trimmed. * bytes: The new Clone function allocates a copy of a byte slice. * context: The new WithCancelCause function provides a way to cancel a context with a given error. That error can be retrieved by calling the new Cause function. * crypto/ecdsa: When using supported curves, all operations are now implemented in constant time. This led to an increase in CPU time between 5% and 30%, mostly affecting P-384 and P-521. * crypto/ecdsa: The new PrivateKey.ECDH method converts an ecdsa.PrivateKey to an ecdh.PrivateKey. * crypto/ed25519: The PrivateKey.Sign method and the VerifyWithOptions function now support signing pre-hashed messages with Ed25519ph, indicated by an Options.HashFunc that returns crypto.SHA512. They also now support Ed25519ctx and Ed25519ph with context, indicated by setting the new Options.Context field. * crypto/rsa: The new field OAEPOptions.MGFHash allows configuring the MGF1 hash separately for OAEP decryption. * crypto/rsa: crypto/rsa now uses a new, safer, constant-time backend. This causes a CPU runtime increase for decryption operations between approximately 15% (RSA-2048 on amd64) and 45% (RSA-4096 on arm64), and more on 32-bit architectures. Encryption operations are approximately 20x slower than before (but still 5-10x faster than decryption). Performance is expected to improve in future releases. Programs must not modify or manually generate the fields of PrecomputedValues. * crypto/subtle: The new function XORBytes XORs two byte slices together. * crypto/tls: Parsed certificates are now shared across all clients actively using that certificate. The memory savings can be significant in programs that make many concurrent connections to a server or collection of servers sharing any part of their certificate chains. * crypto/tls: For a handshake failure due to a certificate verification failure, the TLS client and server now return an error of the new type CertificateVerificationError, which includes the presented certificates. * crypto/x509: ParsePKCS8PrivateKey and MarshalPKCS8PrivateKey now support keys of type *crypto/ecdh.PrivateKey. ParsePKIXPublicKey and MarshalPKIXPublicKey now support keys of type *crypto/ecdh.PublicKey. Parsing NIST curve keys still returns values of type *ecdsa.PublicKey and *ecdsa.PrivateKey. Use their new ECDH methods to convert to the crypto/ecdh types. * crypto/x509: The new SetFallbackRoots function allows a program to define a set of fallback root certificates in case an operating system verifier or standard platform root bundle is unavailable at runtime. It will most commonly be used with a new package, golang.org/x/crypto/x509roots/fallback, which will provide an up to date root bundle. * debug/elf: Attempts to read from a SHT_NOBITS section using Section.Data or the reader returned by Section.Open now return an error. * debug/elf: Additional R_LARCH_* constants are defined for use with LoongArch systems. * debug/elf: Additional R_PPC64_* constants are defined for use with PPC64 ELFv2 relocations. * debug/elf: The constant value for R_PPC64_SECTOFF_LO_DS is corrected, from 61 to 62. * debug/gosym: Due to a change of Go's symbol naming conventions, tools that process Go binaries should use Go 1.20's debug/gosym package to transparently handle both old and new binaries. * debug/pe: Additional IMAGE_FILE_MACHINE_RISCV* constants are defined for use with RISC-V systems. * encoding/binary: The ReadVarint and ReadUvarint functions will now return io.ErrUnexpectedEOF after reading a partial value, rather than io.EOF. * encoding/xml: The new Encoder.Close method can be used to check for unclosed elements when finished encoding. * encoding/xml: The decoder now rejects element and attribute names with more than one colon, such as , as well as namespaces that resolve to an empty string, such as xmlns:a="". * encoding/xml: The decoder now rejects elements that use different namespace prefixes in the opening and closing tag, even if those prefixes both denote the same namespace. * errors: The new Join function returns an error wrapping a list of errors. * fmt: The Errorf function supports multiple occurrences of the %w format verb, returning an error that unwraps to the list of all arguments to %w. * fmt: The new FormatString function recovers the formatting directive corresponding to a State, which can be useful in Formatter. implementations. * go/ast: The new RangeStmt.Range field records the position of the range keyword in a range statement. * go/ast: The new File.FileStart and File.FileEnd fields record the position of the start and end of the entire source file. * go/token: The new FileSet.RemoveFile method removes a file from a FileSet. Long-running programs can use this to release memory associated with files they no longer need. * go/types: The new Satisfies function reports whether a type satisfies a constraint. This change aligns with the new language semantics that distinguish satisfying a constraint from implementing an interface. * io: The new OffsetWriter wraps an underlying WriterAt and provides Seek, Write, and WriteAt methods that adjust their effective file offset position by a fixed amount. * io/fs: The new error SkipAll terminates a WalkDir immediately but successfully. * math/big: The math/big package's wide scope and input-dependent timing make it ill-suited for implementing cryptography. The cryptography packages in the standard library no longer call non-trivial Int methods on attacker-controlled inputs. In the future, the determination of whether a bug in math/big is considered a security vulnerability will depend on its wider impact on the standard library. * math/rand: The math/rand package now automatically seeds the global random number generator (used by top-level functions like Float64 and Int) with a random value, and the top-level Seed function has been deprecated. Programs that need a reproducible sequence of random numbers should prefer to allocate their own random source, using rand.New(rand.NewSource(seed)). * math/rand: Programs that need the earlier consistent global seeding behavior can set GODEBUG=randautoseed=0 in their environment. * math/rand: The top-level Read function has been deprecated. In almost all cases, crypto/rand.Read is more appropriate. * mime: The ParseMediaType function now allows duplicate parameter names, so long as the values of the names are the same. * mime/multipart: Methods of the Reader type now wrap errors returned by the underlying io.Reader. * net: The LookupCNAME function now consistently returns the contents of a CNAME record when one exists. Previously on Unix systems and when using the pure Go resolver, LookupCNAME would return an error if a CNAME record referred to a name that with no A, AAAA, or CNAME record. This change modifies LookupCNAME to match the previous behavior on Windows, allowing LookupCNAME to succeed whenever a CNAME exists. * net: Interface.Flags now includes the new flag FlagRunning, indicating an operationally active interface. An interface which is administratively configured but not active (for example, because the network cable is not connected) will have FlagUp set but not FlagRunning. * net: The new Dialer.ControlContext field contains a callback function similar to the existing Dialer.Control hook, that additionally accepts the dial context as a parameter. Control is ignored when ControlContext is not nil. * net: The Go DNS resolver recognizes the trust-ad resolver option. When options trust-ad is set in resolv.conf, the Go resolver will set the AD bit in DNS queries. The resolver does not make use of the AD bit in responses. * net: DNS resolution will detect changes to /etc/nsswitch.conf and reload the file when it changes. Checks are made at most once every five seconds, matching the previous handling of /etc/hosts and /etc/resolv.conf. * net/http: The ResponseWriter.WriteHeader function now supports sending 1xx status codes. * net/http: The new Server.DisableGeneralOptionsHandler configuration setting allows disabling the default OPTIONS * handler. * net/http: The new Transport.OnProxyConnectResponse hook is called when a Transport receives an HTTP response from a proxy for a CONNECT request. * net/http: The HTTP server now accepts HEAD requests containing a body, rather than rejecting them as invalid. * net/http: HTTP/2 stream errors returned by net/http functions may be converted to a golang.org/x/net/http2.StreamError using errors.As. * net/http: Leading and trailing spaces are trimmed from cookie names, rather than being rejected as invalid. For example, a cookie setting of "name =value" is now accepted as setting the cookie "name". * net/netip: The new IPv6LinkLocalAllRouters and IPv6Loopback functions are the net/netip equivalents of net.IPv6loopback and net.IPv6linklocalallrouters. * os: On Windows, the name NUL is no longer treated as a special case in Mkdir and Stat. * os: On Windows, File.Stat now uses the file handle to retrieve attributes when the file is a directory. Previously it would use the path passed to Open, which may no longer be the file represented by the file handle if the file has been moved or replaced. This change modifies Open to open directories without the FILE_SHARE_DELETE access, which match the behavior of regular files. * os: On Windows, File.Seek now supports seeking to the beginning of a directory. * os/exec: The new Cmd fields Cancel and WaitDelay specify the behavior of the Cmd when its associated Context is canceled or its process exits with I/O pipes still held open by a child process. * path/filepath: The new error SkipAll terminates a Walk immediately but successfully. * path/filepath: The new IsLocal function reports whether a path is lexically local to a directory. For example, if IsLocal(p) is true, then Open(p) will refer to a file that is lexically within the subtree rooted at the current directory. * reflect: The new Value.Comparable and Value.Equal methods can be used to compare two Values for equality. Comparable reports whether Equal is a valid operation for a given Value receiver. * reflect: The new Value.Grow method extends a slice to guarantee space for another n elements. * reflect: The new Value.SetZero method sets a value to be the zero value for its type. * reflect: Go 1.18 introduced Value.SetIterKey and Value.SetIterValue methods. These are optimizations: v.SetIterKey(it) is meant to be equivalent to v.Set(it.Key()). The implementations incorrectly omitted a check for use of unexported fields that was present in the unoptimized forms. Go 1.20 corrects these methods to include the unexported field check. * regexp: Go 1.19.2 and Go 1.18.7 included a security fix to the regular expression parser, making it reject very large expressions that would consume too much memory. Because Go patch releases do not introduce new API, the parser returned syntax.ErrInternalError in this case. Go 1.20 adds a more specific error, syntax.ErrLarge, which the parser now returns instead. * runtime/cgo: Go 1.20 adds new Incomplete marker type. Code generated by cgo will use cgo.Incomplete to mark an incomplete C type. * runtime/metrics: Go 1.20 adds new supported metrics, including the current GOMAXPROCS setting (/sched/gomaxprocs:threads), the number of cgo calls executed (/cgo/go-to-c-calls:calls), total mutex block time (/sync/mutex/wait/total:seconds), and various measures of time spent in garbage collection. * runtime/metrics: Time-based histogram metrics are now less precise, but take up much less memory. * runtime/pprof: Mutex profile samples are now pre-scaled, fixing an issue where old mutex profile samples would be scaled incorrectly if the sampling rate changed during execution. * runtime/pprof: Profiles collected on Windows now include memory mapping information that fixes symbolization issues for position-independent binaries. * runtime/trace: The garbage collector's background sweeper now yields less frequently, resulting in many fewer extraneous events in execution traces. * strings: The new CutPrefix and CutSuffix functions are like TrimPrefix and TrimSuffix but also report whether the string was trimmed. * sync: The new Map methods Swap, CompareAndSwap, and CompareAndDelete allow existing map entries to be updated atomically. * syscall: On FreeBSD, compatibility shims needed for FreeBSD 11 and earlier have been removed. * syscall: On Linux, additional CLONE_* constants are defined for use with the SysProcAttr.Cloneflags field. * syscall: On Linux, the new SysProcAttr.CgroupFD and SysProcAttr.UseCgroupFD fields provide a way to place a child process into a specific cgroup. * testing: The new method B.Elapsed reports the current elapsed time of the benchmark, which may be useful for calculating rates to report with ReportMetric. * time: The new time layout constants DateTime, DateOnly, and TimeOnly provide names for three of the most common layout strings used in a survey of public Go source code. * time: The new Time.Compare method compares two times. * time: Parse now ignores sub-nanosecond precision in its input, instead of reporting those digits as an error. * time: The Time.MarshalJSON method is now more strict about adherence to RFC 3339. * unicode/utf16: The new AppendRune function appends the UTF-16 encoding of a given rune to a uint16 slice, analogous to utf8.AppendRune.- go1.20rc3 (released 2023-01-12) is a release candidate version of go1.20 cut from the master branch at the revision tagged go1.20rc3. Refs boo#1206346 go1.20 release tracking- go1.20rc2 (released 2023-01-04) is a release candidate version of go1.20 cut from the master branch at the revision tagged go1.20rc2. Refs boo#1206346 go1.20 release tracking- go1.20rc1 (released 2022-12-08) is a release candidate version of go1.20 cut from the master branch at the revision tagged go1.20rc1. Refs boo#1206346 go1.20 release trackingh03-ch2c 17073921431.20.141.20.14-150000.1.41.11.20.14-150000.1.41.1asm.htmlgo1.17_spec.htmlgo1.20.htmlgo_mem.htmlgo_spec.html/usr/share/doc/packages/go/1.20/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:32512/SUSE_SLE-15_Update/584799a8d58204976b7fa26ddeb60b14-go1.20.SUSE_SLE-15_Updatedrpmxz5x86_64-suse-linuxHTML document, UTF-8 Unicode text?2bwZ+rlYc#utf-87cd3823b26900eb6a6c2ff04c706cf4ec527b1a02414d86ee4309cfe210b364a?P7zXZ !t/]"k%qa+OWIe2_lp}p7FH%#tbB?ׯOdNtw-]05xY'A{-TvTPl]Zw*W+ia(*΃\Grj< Hz9gJk8av!Đ`4% {t[NңiAmSfкI:ϥmLZ8Ҹ"H z+ hqǖ{&@Nq֮~I LL} م+۸OǶh p~yD3cT6?e&&W[3F.OѯMЃ[3Ng܀ .e*BC-k\ݎ_ 8ajXl&U¬5Nf^wGŃa1ieuQEFܚ)m#"w.Fm_[tlJ$6 \ 9|4?>OŴA@ˆV*ԑ2b!Jd6aY¨.X+KR9咏k[n{ AI,VC'Y.EZȲmõ{UX R8 zsIDG,]<ډd6qfbE?]#gWnߟm";p}92Wo