diff --git a/_service b/_service index 7d532e3..01289e3 100644 --- a/_service +++ b/_service @@ -4,7 +4,7 @@ git compiler-rt - 41cb504b7c4b18ac15830107431a0c1eec73a6b2 + 127e59048cd3d8dbb80c14b3036918c114089529 %H llvm diff --git a/go1.19.changes b/go1.19.changes index 2d02621..7b297fe 100644 --- a/go1.19.changes +++ b/go1.19.changes @@ -1,3 +1,280 @@ +------------------------------------------------------------------- +Tue Aug 2 17:19:11 UTC 2022 - Jeff Kowalczyk + +- go1.19 (released 2022-08-02) is a major release of Go. + go1.19.x minor releases will be provided through August 2023. + https://github.com/golang/go/wiki/Go-Release-Cycle + go1.19 arrives five months after go1.18. 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. + Refs boo#1200441 go1.19 release tracking + * See release notes https://golang.org/doc/go1.19. Excerpts + relevant to OBS environment and for SUSE/openSUSE follow: + * There is only one small change to the language, a very small + correction to the scope of type parameters in method + declarations. Existing programs are unaffected. + * The Go memory model has been revised to align Go with the + memory model used by C, C++, Java, JavaScript, Rust, and + Swift. Go only provides sequentially consistent atomics, not + any of the more relaxed forms found in other languages. Along + with the memory model update, Go 1.19 introduces new types in + the sync/atomic package that make it easier to use atomic + values, such as atomic.Int64 and atomic.Pointer[T]. + * go1.19 adds support for the Loongson 64-bit architecture + LoongArch on Linux (GOOS=linux, GOARCH=loong64). The ABI + implemented is LP64D. Minimum kernel version supported is 5.19. + * The riscv64 port now supports passing function arguments and + result using registers. Benchmarking shows typical performance + improvements of 10% or more on riscv64. + * Go 1.19 adds support for links, lists, and clearer headings in + doc comments. As part of this change, gofmt now reformats doc + comments to make their rendered meaning clearer. See "Go Doc + Comments" for syntax details and descriptions of common + mistakes now highlighted by gofmt. As another part of this + change, the new package go/doc/comment provides parsing and + reformatting of doc comments as well as support for rendering + them to HTML, Markdown, and text. + * The new build constraint "unix" is now recognized in //go:build + lines. The constraint is satisfied if the target operating + system, also known as GOOS, is a Unix or Unix-like system. For + the 1.19 release it is satisfied if GOOS is one of aix, + android, darwin, dragonfly, freebsd, hurd, illumos, ios, linux, + netbsd, openbsd, or solaris. In future releases the unix + constraint may match additional newly supported operating + systems. + * The -trimpath flag, if set, is now included in the build + settings stamped into Go binaries by go build, and can be + examined using go version -m or debug.ReadBuildInfo. + * go generate now sets the GOROOT environment variable explicitly + in the generator's environment, so that generators can locate + the correct GOROOT even if built with -trimpath. + * go test and go generate now place GOROOT/bin at the beginning + of the PATH used for the subprocess, so tests and generators + that execute the go command will resolve it to same GOROOT. + * go env now quotes entries that contain spaces in the + CGO_CFLAGS, CGO_CPPFLAGS, CGO_CXXFLAGS, CGO_FFLAGS, + CGO_LDFLAGS, and GOGCCFLAGS variables it reports. + * go list -json now accepts a comma-separated list of JSON fields + to populate. If a list is specified, the JSON output will + include only those fields, and go list may avoid work to + compute fields that are not included. In some cases, this may + suppress errors that would otherwise be reported. + * The go command now caches information necessary to load some + modules, which should result in a speed-up of some go list + invocations. + * The vet checker "errorsas" now reports when errors.As is called + with a second argument of type *error, a common mistake. + * The runtime now includes support for a soft memory limit. This + memory limit includes the Go heap and all other memory managed + by the runtime, and excludes external memory sources such as + mappings of the binary itself, memory managed in other + languages, and memory held by the operating system on behalf of + the Go program. This limit may be managed via + runtime/debug.SetMemoryLimit or the equivalent GOMEMLIMIT + environment variable. The limit works in conjunction with + runtime/debug.SetGCPercent / GOGC, and will be respected even + if GOGC=off, allowing Go programs to always make maximal use of + their memory limit, improving resource efficiency in some + cases. + * In order to limit the effects of GC thrashing when the + program's live heap size approaches the soft memory limit, the + Go runtime also attempts to limit total GC CPU utilization to + 50%, excluding idle time, choosing to use more memory over + preventing application progress. In practice, we expect this + limit to only play a role in exceptional cases, and the new + runtime metric /gc/limiter/last-enabled:gc-cycle reports when + this last occurred. + * The runtime now schedules many fewer GC worker goroutines on + idle operating system threads when the application is idle + enough to force a periodic GC cycle. + * The runtime will now allocate initial goroutine stacks based on + the historic average stack usage of goroutines. This avoids + some of the early stack growth and copying needed in the + average case in exchange for at most 2x wasted space on + below-average goroutines. + * On Unix operating systems, Go programs that import package os + now automatically increase the open file limit (RLIMIT_NOFILE) + to the maximum allowed value; that is, they change the soft + limit to match the hard limit. This corrects artificially low + limits set on some systems for compatibility with very old C + programs using the select system call. Go programs are not + helped by that limit, and instead even simple programs like + gofmt often ran out of file descriptors on such systems when + processing many files in parallel. One impact of this change is + that Go programs that in turn execute very old C programs in + child processes may run those programs with too high a + limit. This can be corrected by setting the hard limit before + invoking the Go program. + * Unrecoverable fatal errors (such as concurrent map writes, or + unlock of unlocked mutexes) now print a simpler traceback + excluding runtime metadata (equivalent to a fatal panic) unless + GOTRACEBACK=system or crash. Runtime-internal fatal error + tracebacks always include full metadata regardless of the value + of GOTRACEBACK + * Support for debugger-injected function calls has been added on + ARM64, enabling users to call functions from their binary in an + interactive debugging session when using a debugger that is + updated to make use of this functionality. + * The address sanitizer support added in Go 1.18 now handles + function arguments and global variables more precisely. + * The compiler now uses a jump table to implement large integer + and string switch statements. Performance improvements for the + switch statement vary but can be on the order of 20% + faster. (GOARCH=amd64 and GOARCH=arm64 only) + * The Go compiler now requires the -p=importpath flag to build a + linkable object file. This is already supplied by the go + command and by Bazel. Any other build systems that invoke the + Go compiler directly will need to make sure they pass this flag + as well. + * The Go compiler no longer accepts the -importmap flag. Build + systems that invoke the Go compiler directly must use the + -importcfg flag instead. + * Like the compiler, the assembler now requires the -p=importpath + flag to build a linkable object file. This is already supplied + by the go command. Any other build systems that invoke the Go + assembler directly will need to make sure they pass this flag + as well. + * Command and LookPath no longer allow results from a PATH search + to be found relative to the current directory. This removes a + common source of security problems but may also break existing + programs that depend on using, say, exec.Command("prog") to run + a binary named prog (or, on Windows, prog.exe) in the current + directory. See the os/exec package documentation for + information about how best to update such programs. + * On Windows, Command and LookPath now respect the + NoDefaultCurrentDirectoryInExePath environment variable, making + it possible to disable the default implicit search of “.” in + PATH lookups on Windows systems. + * crypto/elliptic: Operating on invalid curve points (those for + which the IsOnCurve method returns false, and which are never + returned by Unmarshal or by a Curve method operating on a valid + point) has always been undefined behavior and can lead to key + recovery attacks. If an invalid point is supplied to Marshal, + MarshalCompressed, Add, Double, or ScalarMult, they will now + panic. ScalarBaseMult operations on the P224, P384, and P521 + curves are now up to three times faster, leading to similar + speedups in some ECDSA operations. The generic (not platform + optimized) P256 implementation was replaced with one derived + from a formally verified model; this might lead to significant + slowdowns on 32-bit platforms. + * crypto/rand: Read no longer buffers random data obtained from + the operating system between calls. Applications that perform + many small reads at high frequency might choose to wrap Reader + in a bufio.Reader for performance reasons, taking care to use + io.ReadFull to ensure no partial reads occur. The Prime + implementation was changed to use only rejection sampling, + which removes a bias when generating small primes in + non-cryptographic contexts, removes one possible minor timing + leak, and better aligns the behavior with BoringSSL, all while + simplifying the implementation. The change does produce + different outputs for a given random source stream compared to + the previous implementation, which can break tests written + expecting specific results from specific deterministic random + sources. To help prevent such problems in the future, the + implementation is now intentionally non-deterministic with + respect to the input stream. + * crypto/tls: The GODEBUG option tls10default=1 has been + removed. It is still possible to enable TLS 1.0 client-side by + setting Config.MinVersion. The TLS server and client now reject + duplicate extensions in TLS handshakes, as required by RFC + 5246, Section 7.4.1.4 and RFC 8446, Section 4.2. + * crypto/x509: CreateCertificate no longer supports creating + certificates with SignatureAlgorithm set to + MD5WithRSA. CreateCertificate no longer accepts negative serial + numbers. CreateCertificate will not emit an empty SEQUENCE + anymore when the produced certificate has no + extensions. ParseCertificate and ParseCertificateRequest now + reject certificates and CSRs which contain duplicate + extensions. The new CertPool.Clone and CertPool.Equal methods + allow cloning a CertPool and checking the equivalence of two + CertPools respectively. The new function ParseRevocationList + provides a faster, safer to use CRL parser which returns a + RevocationList. Parsing a CRL also populates the new + RevocationList fields RawIssuer, Signature, AuthorityKeyId, and + Extensions, which are ignored by CreateRevocationList. The new + method RevocationList.CheckSignatureFrom checks that the + signature on a CRL is a valid signature from a Certificate. The + ParseCRL and ParseDERCRL functions are now deprecated in favor + of ParseRevocationList. The Certificate.CheckCRLSignature + method is deprecated in favor of + RevocationList.CheckSignatureFrom. The path builder of + Certificate.Verify was overhauled and should now produce better + chains and/or be more efficient in complicated scenarios. Name + constraints are now also enforced on non-leaf certificates. + * crypto/x509/pkix: The types CertificateList and + TBSCertificateList have been deprecated. The new crypto/x509 + CRL functionality should be used instead. + * debug/elf: The new EM_LOONGARCH and R_LARCH_* constants support + the loong64 port. + * debug/pe: The new File.COFFSymbolReadSectionDefAux method, + which returns a COFFSymbolAuxFormat5, provides access to COMDAT + information in PE file sections. These are supported by new + IMAGE_COMDAT_* and IMAGE_SCN_* constants. + * runtime: The GOROOT function now returns the empty string + (instead of "go") when the binary was built with the -trimpath + flag set and the GOROOT variable is not set in the process + environment. + * runtime/metrics: The new /sched/gomaxprocs:threads metric + reports the current runtime.GOMAXPROCS value. The new + /cgo/go-to-c-calls:calls metric reports the total number of + calls made from Go to C. This metric is identical to the + runtime.NumCgoCall function. The new + /gc/limiter/last-enabled:gc-cycle metric reports the last GC + cycle when the GC CPU limiter was enabled. See the runtime + notes for details about the GC CPU limiter. + * runtime/pprof: Stop-the-world pause times have been + significantly reduced when collecting goroutine profiles, + reducing the overall latency impact to the application. MaxRSS + is now reported in heap profiles for all Unix operating systems + (it was previously only reported for GOOS=android, darwin, ios, + and linux). + * runtime/race: The race detector has been upgraded to use thread + sanitizer version v3 on all supported platforms except + windows/amd64 and openbsd/amd64, which remain on v2. Compared + to v2, it is now typically 1.5x to 2x faster, uses half as much + memory, and it supports an unlimited number of goroutines. On + Linux, the race detector now requires at least glibc version + 2.17 and GNU binutils 2.26. The race detector is now supported + on GOARCH=s390x. Race detector support for openbsd/amd64 has + been removed from thread sanitizer upstream, so it is unlikely + to ever be updated from v2. + * runtime/trace: When tracing and the CPU profiler are enabled + simultaneously, the execution trace includes CPU profile + samples as instantaneous events. + * syscall: On PowerPC (GOARCH=ppc64, ppc64le), Syscall, Syscall6, + RawSyscall, and RawSyscall6 now always return 0 for return + value r2 instead of an undefined value. On AIX and Solaris, + Getrusage is now defined. + +------------------------------------------------------------------- +Tue Jul 12 23:39:16 UTC 2022 - Jeff Kowalczyk + +- go1.19rc2 (released 2022-07-12) is a release candidate version of + go1.19 cut from the master branch at the revision tagged + go1.19rc2. + Refs boo#1200441 go1.19 release tracking + +------------------------------------------------------------------- +Wed Jul 6 21:40:49 UTC 2022 - Jeff Kowalczyk + +- go1.19rc1 (released 2022-07-06) is a release candidate version of + go1.19 cut from the master branch at the revision tagged + go1.19rc1. + Refs boo#1200441 go1.19 release tracking + +------------------------------------------------------------------- +Tue Jun 14 20:00:43 UTC 2022 - Jeff Kowalczyk + +- Trace viewer html and javascript files moved from misc/trace in + previous versions to src/cmd/trace/static in go1.19. + * Added files with mode 0644: + /usr/share/go/1.19/src/cmd/trace/static + /usr/share/go/1.19/src/cmd/trace/static/README.md + /usr/share/go/1.19/src/cmd/trace/static/trace_viewer_full.html + /usr/share/go/1.19/src/cmd/trace/static/webcomponents.min.js + ------------------------------------------------------------------- Fri Jun 10 20:39:05 UTC 2022 - Jeff Kowalczyk diff --git a/go1.19.spec b/go1.19.spec index 7324106..cc0f73c 100644 --- a/go1.19.spec +++ b/go1.19.spec @@ -69,11 +69,9 @@ #!BuildIgnore: gcc-PIE %endif -# Build go-race only on platforms where it's supported (both amd64 and aarch64 -# requires SLE15-or-later because of C++14, and ppc64le doesn't build at all -# on openSUSE yet). +# Build go-race only on platforms where C++14 is supported (SLE-15) %if 0%{?suse_version} >= 1500 || 0%{?sle_version} >= 150000 -%define tsan_arch x86_64 aarch64 +%define tsan_arch x86_64 aarch64 s390x ppc64le %else # Cannot use {nil} here (ifarch doesn't like it) so just make up a fake # architecture that no build will ever match. @@ -87,7 +85,11 @@ # # In order to update the TSAN version, modify _service. See boo#1052528 for # more details. +%ifarch x86_64 +%define tsan_commit 127e59048cd3d8dbb80c14b3036918c114089529 +%else %define tsan_commit 41cb504b7c4b18ac15830107431a0c1eec73a6b2 +%endif # go_api is the major version of Go. # Used by go1.x packages and go metapackage for: @@ -145,7 +147,7 @@ %endif Name: go1.19 -Version: 1.19beta1 +Version: 1.19 Release: 0 Summary: A compiled, garbage-collected, concurrent programming language License: BSD-3-Clause @@ -156,7 +158,10 @@ Source1: go-rpmlintrc Source4: README.SUSE Source6: go.gdbinit # We have to compile TSAN ourselves. boo#1052528 -Source100: llvm-%{tsan_commit}.tar.xz +# Preferred form when all arches share llvm race version +# Source100: llvm-%{tsan_commit}.tar.xz +Source100: llvm-127e59048cd3d8dbb80c14b3036918c114089529.tar.xz +Source101: llvm-41cb504b7c4b18ac15830107431a0c1eec73a6b2.tar.xz # PATCH-FIX-OPENSUSE: https://go-review.googlesource.com/c/go/+/391115 Patch7: dont-force-gold-on-arm64.patch # PATCH-FIX-UPSTREAM marguerite@opensuse.org - find /usr/bin/go-8 when bootstrapping with gcc8-go @@ -224,7 +229,12 @@ Go runtime race detector libraries. Install this package if you wish to use the %prep %ifarch %{tsan_arch} # compiler-rt (from LLVM) +%ifarch x86_64 %setup -q -T -b 100 -n llvm-%{tsan_commit} +%else +%setup -q -T -b 101 -n llvm-%{tsan_commit} +%endif + %endif # go %setup -q -n go @@ -313,6 +323,14 @@ for ext in *.{go,c,h,s,S,py,syso,bin}; do done # executable bash scripts called by go tool, etc find src -name "*.bash" -exec install -Dm655 \{\} %{buildroot}%{_datadir}/go/%{go_label}/\{\} \; +# # Trace viewer html and javascript files moved from misc/trace in +# # previous versions to src/cmd/trace/static in go1.19. +# # static contains pprof trace viewer html javascript and markdown +# echo "PWD:" `pwd` +# echo "GOROOT:" $GOROOT +# mkdir -v -p $GOROOT/src/cmd/trace/static +install -d %{buildroot}%{_datadir}/go/%{go_label}/src/cmd/trace/static +install -Dm644 src/cmd/trace/static/* %{buildroot}%{_datadir}/go/%{go_label}/src/cmd/trace/static mkdir -p $GOROOT/src for i in $(ls %{buildroot}/usr/share/go/%{go_label}/src);do @@ -341,14 +359,14 @@ sed -i "s/\$go_label/%{go_label}/" $GOROOT/bin/gdbinit.d/go.gdb %endif # update-alternatives - mkdir -p %{buildroot}%{_sysconfdir}/alternatives - mkdir -p %{buildroot}%{_bindir} - mkdir -p %{buildroot}%{_sysconfdir}/profile.d - mkdir -p %{buildroot}%{_sysconfdir}/gdbinit.d - touch %{buildroot}%{_sysconfdir}/alternatives/{go,gofmt,go.gdb} - ln -sf %{_sysconfdir}/alternatives/go %{buildroot}%{_bindir}/go - ln -sf %{_sysconfdir}/alternatives/gofmt %{buildroot}%{_bindir}/gofmt - ln -sf %{_sysconfdir}/alternatives/go.gdb %{buildroot}%{_sysconfdir}/gdbinit.d/go.gdb +mkdir -p %{buildroot}%{_sysconfdir}/alternatives +mkdir -p %{buildroot}%{_bindir} +mkdir -p %{buildroot}%{_sysconfdir}/profile.d +mkdir -p %{buildroot}%{_sysconfdir}/gdbinit.d +touch %{buildroot}%{_sysconfdir}/alternatives/{go,gofmt,go.gdb} +ln -sf %{_sysconfdir}/alternatives/go %{buildroot}%{_bindir}/go +ln -sf %{_sysconfdir}/alternatives/gofmt %{buildroot}%{_bindir}/gofmt +ln -sf %{_sysconfdir}/alternatives/go.gdb %{buildroot}%{_sysconfdir}/gdbinit.d/go.gdb # documentation and examples # fix documetation permissions (rpmlint warning) @@ -357,7 +375,7 @@ find doc/ misc/ -type f -exec chmod 0644 '{}' + rm -rf misc/cgo/test/{_*,*.o,*.out,*.6,*.8} # prepare go-doc mkdir -p %{buildroot}%{_docdir}/go/%{go_label} -cp -r AUTHORS CONTRIBUTORS CONTRIBUTING.md LICENSE PATENTS README.md README.SUSE %{buildroot}%{_docdir}/go/%{go_label} +cp -r CONTRIBUTING.md LICENSE PATENTS README.md README.SUSE %{buildroot}%{_docdir}/go/%{go_label} cp -r doc/* %{buildroot}%{_docdir}/go/%{go_label} %fdupes -s %{buildroot}%{_prefix} @@ -388,8 +406,6 @@ fi %ghost %{_sysconfdir}/alternatives/go.gdb %dir %{_docdir}/go %dir %{_docdir}/go/%{go_label} -%doc %{_docdir}/go/%{go_label}/AUTHORS -%doc %{_docdir}/go/%{go_label}/CONTRIBUTORS %doc %{_docdir}/go/%{go_label}/CONTRIBUTING.md %doc %{_docdir}/go/%{go_label}/PATENTS %doc %{_docdir}/go/%{go_label}/README.md diff --git a/go1.19.src.tar.gz b/go1.19.src.tar.gz new file mode 100644 index 0000000..1583f87 --- /dev/null +++ b/go1.19.src.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9419cc70dc5a2523f29a77053cafff658ed21ef3561d9b6b020280ebceab28b9 +size 26521849 diff --git a/go1.19beta1.src.tar.gz b/go1.19beta1.src.tar.gz deleted file mode 100644 index e40babd..0000000 --- a/go1.19beta1.src.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f463e5a5c25eebdea06d7ae3890c91de2f3795304e9fa350505804d826ec2683 -size 26333687 diff --git a/llvm-127e59048cd3d8dbb80c14b3036918c114089529.tar.xz b/llvm-127e59048cd3d8dbb80c14b3036918c114089529.tar.xz new file mode 100644 index 0000000..27d586c --- /dev/null +++ b/llvm-127e59048cd3d8dbb80c14b3036918c114089529.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e0ba571f59de5ae92357c53b36930cc63beebd5be715a58813f7ba166787cc5 +size 2358388