]> Cypherpunks.ru repositories - gostls13.git/blobdiff - src/go/build/deps_test.go
runtime: add execution tracer v2 behind GOEXPERIMENT=exectracer2
[gostls13.git] / src / go / build / deps_test.go
index a8cb52c0d74a54708f294f45670b24a9fe8253d1..9291c95ac17f71d5c46c196f68ea5b6c5bd62157 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright 2012 The Go Authors. All rights reserved.
+// Copyright 2022 The Go Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
@@ -39,11 +39,13 @@ import (
 var depsRules = `
        # No dependencies allowed for any of these packages.
        NONE
-       < constraints, container/list, container/ring,
-         internal/cfg, internal/cpu, internal/coverage,
-         internal/coverage/uleb128, internal/coverage/rtcov, internal/goarch,
+       < cmp, container/list, container/ring,
+         internal/cfg, internal/coverage, internal/coverage/rtcov,
+         internal/coverage/uleb128, internal/coverage/calloc,
+         internal/cpu, internal/goarch, internal/godebugs,
          internal/goexperiment, internal/goos,
-         internal/goversion, internal/nettrace,
+         internal/goversion, internal/nettrace, internal/platform,
+         log/internal,
          unicode/utf8, unicode/utf16, unicode,
          unsafe;
 
@@ -51,9 +53,12 @@ var depsRules = `
        internal/goarch, unsafe
        < internal/abi;
 
+       unsafe < maps;
+
        # RUNTIME is the core runtime group of packages, all of them very light-weight.
        internal/abi, internal/cpu, internal/goarch,
-    internal/coverage/rtcov, internal/goexperiment, internal/goos, unsafe
+       internal/coverage/rtcov, internal/godebugs, internal/goexperiment,
+       internal/goos, unsafe
        < internal/bytealg
        < internal/itoa
        < internal/unsafeheader
@@ -65,18 +70,30 @@ var depsRules = `
        < sync/atomic
        < internal/race
        < sync
+       < internal/bisect
+       < internal/godebug
        < internal/reflectlite
        < errors
        < internal/oserror, math/bits
        < RUNTIME;
 
-       RUNTIME
-       < sort
+       # slices depends on unsafe for overlapping check, cmp for comparison
+       # semantics, and math/bits for # calculating bitlength of numbers.
+       unsafe, cmp, math/bits
+       < slices;
+
+       RUNTIME, slices
+       < sort;
+
+       sort
        < container/heap;
 
        RUNTIME
        < io;
 
+       RUNTIME
+       < arena;
+
        syscall !< io;
        reflect !< sort;
 
@@ -114,7 +131,7 @@ var depsRules = `
        < math/cmplx;
 
        MATH
-       < math/rand;
+       < math/rand, math/rand/v2;
 
        MATH
        < runtime/metrics;
@@ -138,6 +155,7 @@ var depsRules = `
        io/fs
        < internal/testlog
        < internal/poll
+       < internal/safefilepath
        < os
        < os/signal;
 
@@ -146,12 +164,10 @@ var depsRules = `
 
        unicode, fmt !< net, os, os/signal;
 
-       os/signal, STR
+       os/signal, internal/safefilepath, STR
        < path/filepath
        < io/ioutil;
 
-       os < internal/godebug;
-
        path/filepath, internal/godebug < os/exec;
 
        io/ioutil, os/exec, os/signal
@@ -164,7 +180,7 @@ var depsRules = `
 
        # FMT is OS (which includes string routines) plus reflect and fmt.
        # It does not include package log, which should be avoided in core packages.
-       strconv, unicode
+       arena, strconv, unicode
        < reflect;
 
        os, reflect
@@ -181,6 +197,7 @@ var depsRules = `
        < html,
          internal/dag,
          internal/goroot,
+         internal/types/errors,
          mime/quotedprintable,
          net/internal/socktest,
          net/url,
@@ -193,7 +210,7 @@ var depsRules = `
 
        # encodings
        # core ones do not use fmt.
-       io, strconv
+       io, strconv, slices
        < encoding;
 
        encoding, reflect
@@ -211,7 +228,7 @@ var depsRules = `
        # hashes
        io
        < hash
-       < hash/adler32, hash/crc32, hash/crc64, hash/fnv, hash/maphash;
+       < hash/adler32, hash/crc32, hash/crc64, hash/fnv;
 
        # math/big
        FMT, encoding/binary, math/rand
@@ -219,7 +236,7 @@ var depsRules = `
 
        # compression
        FMT, encoding/binary, hash/adler32, hash/crc32
-       < compress/bzip2, compress/flate, compress/lzw
+       < compress/bzip2, compress/flate, compress/lzw, internal/zstd
        < archive/zip, compress/gzip, compress/zlib;
 
        # templates
@@ -230,21 +247,21 @@ var depsRules = `
        < text/template
        < internal/lazytemplate;
 
-       encoding/json, html, text/template
-       < html/template;
-
        # regexp
        FMT
        < regexp/syntax
        < regexp
        < internal/lazyregexp;
 
+       encoding/json, html, text/template, regexp
+       < html/template;
+
        # suffix array
        encoding/binary, regexp
        < index/suffixarray;
 
        # executable parsing
-       FMT, encoding/binary, compress/zlib, internal/saferio
+       FMT, encoding/binary, compress/zlib, internal/saferio, internal/zstd
        < runtime/debug
        < debug/dwarf
        < debug/elf, debug/gosym, debug/macho, debug/pe, debug/plan9obj, internal/xcoff
@@ -253,32 +270,41 @@ var depsRules = `
 
        # go parser and friends.
        FMT
+       < internal/gover
+       < go/version
        < go/token
        < go/scanner
        < go/ast
-       < go/internal/typeparams
-       < go/parser;
+       < go/internal/typeparams;
 
        FMT
        < go/build/constraint, go/doc/comment;
 
-       go/build/constraint, go/doc/comment, go/parser, text/tabwriter
+       go/internal/typeparams, go/build/constraint
+       < go/parser;
+
+       go/doc/comment, go/parser, text/tabwriter
        < go/printer
        < go/format;
 
-       go/doc/comment, go/parser, internal/lazyregexp, text/template
-       < go/doc;
-
        math/big, go/token
        < go/constant;
 
-       container/heap, go/constant, go/parser, regexp
-       < go/types;
-
        FMT, internal/goexperiment
        < internal/buildcfg;
 
-       go/build/constraint, go/doc, go/parser, internal/buildcfg, internal/goroot, internal/goversion
+       container/heap, go/constant, go/parser, internal/buildcfg, internal/goversion, internal/types/errors
+       < go/types;
+
+       # The vast majority of standard library packages should not be resorting to regexp.
+       # go/types is a good chokepoint. It shouldn't use regexp, nor should anything
+       # that is low-enough level to be used by go/types.
+       regexp !< go/types;
+
+       go/doc/comment, go/parser, internal/lazyregexp, text/template
+       < go/doc;
+
+       go/build/constraint, go/doc, go/parser, internal/buildcfg, internal/goroot, internal/goversion, internal/platform
        < go/build;
 
        # databases
@@ -311,7 +337,7 @@ var depsRules = `
 
        # Bulk of the standard library must not use cgo.
        # The prohibition stops at net and os/user.
-       C !< fmt, go/types, CRYPTO-MATH;
+       C !< fmt, go/types, CRYPTO-MATH, log/slog;
 
        CGO, OS
        < plugin;
@@ -363,14 +389,25 @@ var depsRules = `
        < NET;
 
        # logging - most packages should not import; http and up is allowed
-       FMT
+       FMT, log/internal
        < log;
 
-       log !< crypto/tls, database/sql, go/importer, testing;
+       log, log/slog !< crypto/tls, database/sql, go/importer, testing;
 
        FMT, log, net
        < log/syslog;
 
+       RUNTIME
+       < log/slog/internal, log/slog/internal/buffer;
+
+       FMT,
+       encoding, encoding/json,
+       log, log/internal,
+       log/slog/internal, log/slog/internal/buffer,
+       slices
+       < log/slog
+       < log/slog/internal/slogtest, log/slog/internal/benchmarks;
+
        NET, log
        < net/mail;
 
@@ -388,19 +425,37 @@ var depsRules = `
        < crypto
        < crypto/subtle
        < crypto/internal/alias
-       < crypto/internal/randutil
-       < crypto/internal/nistec/fiat
-       < crypto/internal/nistec
-       < crypto/internal/edwards25519/field
-       < crypto/internal/edwards25519, crypto/ecdh
        < crypto/cipher;
 
        crypto/cipher,
        crypto/internal/boring/bcache
        < crypto/internal/boring
-       < crypto/boring
+       < crypto/boring;
+
+       crypto/internal/alias
+       < crypto/internal/randutil
+       < crypto/internal/nistec/fiat
+       < crypto/internal/nistec
+       < crypto/internal/edwards25519/field
+       < crypto/internal/edwards25519;
+
+       crypto/boring
        < crypto/aes, crypto/des, crypto/hmac, crypto/md5, crypto/rc4,
-         crypto/sha1, crypto/sha256, crypto/sha512
+         crypto/sha1, crypto/sha256, crypto/sha512;
+
+       crypto/boring, crypto/internal/edwards25519/field
+       < crypto/ecdh;
+
+       crypto/aes,
+       crypto/des,
+       crypto/ecdh,
+       crypto/hmac,
+       crypto/internal/edwards25519,
+       crypto/md5,
+       crypto/rc4,
+       crypto/sha1,
+       crypto/sha256,
+       crypto/sha512
        < CRYPTO;
 
        CGO, fmt, net !< CRYPTO;
@@ -413,6 +468,7 @@ var depsRules = `
        < encoding/asn1
        < golang.org/x/crypto/cryptobyte/asn1
        < golang.org/x/crypto/cryptobyte
+       < crypto/internal/bigmod
        < crypto/dsa, crypto/elliptic, crypto/rsa
        < crypto/ecdsa
        < CRYPTO-MATH;
@@ -447,6 +503,9 @@ var depsRules = `
        crypto/tls
        < net/smtp;
 
+       crypto/rand
+       < hash/maphash; # for purego implementation
+
        # HTTP, King of Dependencies.
 
        FMT
@@ -495,7 +554,7 @@ var depsRules = `
        FMT, compress/gzip, encoding/binary, text/tabwriter
        < runtime/pprof;
 
-       OS, compress/gzip, regexp
+       OS, compress/gzip, internal/lazyregexp
        < internal/profile;
 
        html, internal/profile, net/http, runtime/pprof, runtime/trace
@@ -507,7 +566,7 @@ var depsRules = `
        < net/rpc/jsonrpc;
 
        # System Information
-       internal/cpu, sync
+       bufio, bytes, internal/cpu, io, os, strings, sync
        < internal/sysinfo;
 
        # Test-only
@@ -521,6 +580,9 @@ var depsRules = `
        FMT, DEBUG, flag, runtime/trace, internal/sysinfo, math/rand
        < testing;
 
+       log/slog, testing
+       < testing/slogtest;
+
        FMT, crypto/sha256, encoding/json, go/ast, go/parser, go/token,
        internal/godebug, math/rand, encoding/hex, crypto/sha256
        < internal/fuzz;
@@ -528,14 +590,14 @@ var depsRules = `
        internal/fuzz, internal/testlog, runtime/pprof, regexp
        < testing/internal/testdeps;
 
-       OS, flag, testing, internal/cfg
+       OS, flag, testing, internal/cfg, internal/platform, internal/goroot
        < internal/testenv;
 
        OS, encoding/base64
        < internal/obscuretestdata;
 
        CGO, OS, fmt
-       < os/signal/internal/pty;
+       < internal/testpty;
 
        NET, testing, math/rand
        < golang.org/x/net/nettest;
@@ -543,36 +605,61 @@ var depsRules = `
        syscall
        < os/exec/internal/fdtest;
 
+       FMT
+       < internal/diff, internal/txtar;
+
        FMT, container/heap, math/rand
        < internal/trace;
 
+       # v2 execution trace parser.
        FMT
-       < internal/diff, internal/txtar;
+       < internal/trace/v2/event;
+
+       internal/trace/v2/event
+       < internal/trace/v2/event/go122;
+
+       FMT, io, internal/trace/v2/event/go122
+       < internal/trace/v2/version;
+
+       FMT, encoding/binary, internal/trace/v2/version
+       < internal/trace/v2/raw;
+
+       FMT, encoding/binary, internal/trace/v2/version
+       < internal/trace/v2;
 
-    FMT, os
-    < internal/coverage/slicewriter;
+       regexp, internal/trace/v2, internal/trace/v2/raw, internal/txtar
+       < internal/trace/v2/testtrace;
 
-    encoding/binary, internal/unsafeheader, unsafe
-    < internal/coverage/slicereader;
+       regexp, internal/txtar, internal/trace/v2, internal/trace/v2/raw
+       < internal/trace/v2/internal/testgen/go122;
 
-    FMT, io, internal/coverage/slicereader, internal/coverage/uleb128
-    < internal/coverage/stringtab;
+       # Coverage.
+       FMT, crypto/md5, encoding/binary, regexp, sort, text/tabwriter, unsafe,
+       internal/coverage, internal/coverage/uleb128
+       < internal/coverage/cmerge,
+         internal/coverage/pods,
+         internal/coverage/slicereader,
+         internal/coverage/slicewriter;
 
-    FMT, encoding/binary, internal/coverage, internal/coverage/stringtab,
-    io, os, bufio, crypto/md5
-    < internal/coverage/encodemeta;
+       internal/coverage/slicereader, internal/coverage/slicewriter
+       < internal/coverage/stringtab
+       < internal/coverage/decodecounter, internal/coverage/decodemeta,
+         internal/coverage/encodecounter, internal/coverage/encodemeta;
 
-    FMT, bufio, encoding/binary, internal/coverage,
-    internal/coverage/stringtab, internal/coverage/slicewriter, os, unsafe
-    < internal/coverage/encodecounter;
+       internal/coverage/cmerge
+       < internal/coverage/cformat;
 
-    FMT, encoding/binary, internal/coverage, io, os,
-    internal/coverage/slicereader, internal/coverage/stringtab
-    < internal/coverage/decodecounter;
+       internal/coverage, crypto/sha256, FMT
+       < cmd/internal/cov/covcmd;
 
-    FMT, encoding/binary, internal/coverage, io, os,
-    crypto/md5, internal/coverage/stringtab
-    < internal/coverage/decodemeta;
+    encoding/json,
+       runtime/debug,
+       internal/coverage/calloc,
+       internal/coverage/cformat,
+       internal/coverage/decodecounter, internal/coverage/decodemeta,
+       internal/coverage/encodecounter, internal/coverage/encodemeta,
+       internal/coverage/pods
+       < runtime/coverage;
 `
 
 // listStdPkgs returns the same list of packages as "go list std".