package goexperiment
Import Path
internal/goexperiment (on go.dev)
Dependency Relation
imports 0 packages, and imported by one package
Involved Source Files
exp_arenas_off.go
exp_boringcrypto_off.go
exp_cacheprog_off.go
exp_cgocheck2_off.go
exp_coverageredesign_on.go
exp_fieldtrack_off.go
exp_heapminimum512kib_off.go
exp_loopvar_off.go
exp_pagetrace_off.go
exp_preemptibleloops_off.go
exp_regabiargs_on.go
exp_regabiwrappers_on.go
exp_staticlockranking_off.go
Package goexperiment implements support for toolchain experiments.
Toolchain experiments are controlled by the GOEXPERIMENT
environment variable. GOEXPERIMENT is a comma-separated list of
experiment names. GOEXPERIMENT can be set at make.bash time, which
sets the default experiments for binaries built with the tool
chain; or it can be set at build time. GOEXPERIMENT can also be set
to "none", which disables any experiments that were enabled at
make.bash time.
Experiments are exposed to the build in the following ways:
- Build tag goexperiment.x is set if experiment x (lower case) is
enabled.
- For each experiment x (in camel case), this package contains a
boolean constant x and an integer constant xInt.
- In runtime assembly, the macro GOEXPERIMENT_x is defined if
experiment x (lower case) is enabled.
In the toolchain, the set of experiments enabled for the current
build should be accessed via objabi.Experiment.
The set of experiments is included in the output of runtime.Version()
and "go version <binary>" if it differs from the default experiments.
For the set of experiments supported by the current toolchain, see
"go doc goexperiment.Flags".
Note that this package defines the set of experiments (in Flags)
and records the experiments that were enabled when the package
was compiled (as boolean and integer constants).
Note especially that this package does not itself change behavior
at run time based on the GOEXPERIMENT variable.
The code used in builds to interpret the GOEXPERIMENT variable
is in the separate package internal/buildcfg.
Package-Level Type Names (only one, which is exported)
Flags is the set of experiments that can be enabled or disabled in
the current toolchain.
When specified in the GOEXPERIMENT environment variable or as build
tags, experiments use the strings.ToLower of their field name.
For the baseline experimental configuration, see
objabi.experimentBaseline.
If you change this struct definition, run "go generate".
Arenas causes the "arena" standard library package to be visible
to the outside world.
BoringCrypto bool
CacheProg adds support to cmd/go to use a child process to implement
the build cache; see https://github.com/golang/go/issues/59719.
CgoCheck2 enables an expensive cgo rule checker.
When this experiment is enabled, cgo rule checks occur regardless
of the GODEBUG=cgocheck setting provided at runtime.
CoverageRedesign enables the new compiler-based code coverage
tooling.
FieldTrack bool
HeapMinimum512KiB reduces the minimum heap size to 512 KiB.
This was originally reduced as part of PacerRedesign, but
has been broken out to its own experiment that is disabled
by default.
LoopVar changes loop semantics so that each iteration gets its own
copy of the iteration variable.
PageTrace enables GODEBUG=pagetrace=/path/to/result. This feature
is a GOEXPERIMENT due to a security risk with setuid binaries:
this compels the Go runtime to write to some arbitrary file, which
may be exploited.
PreemptibleLoops bool
RegabiArgs enables register arguments/results in all
compiled Go functions.
Requires wrappers (to do ABI translation), and reflect (so
reflection calls use registers).
RegabiWrappers enables ABI wrappers for calling between
ABI0 and ABIInternal functions. Without this, the ABIs are
assumed to be identical so cross-ABI calls are direct.
StaticLockRanking bool
Package-Level Constants (total 26, all are exported)
const BoringCrypto = false const BoringCryptoInt = 0 const CacheProgInt = 0 const CgoCheck2Int = 0 const CoverageRedesign = true const FieldTrack = false const FieldTrackInt = 0 const HeapMinimum512KiB = false const LoopVarInt = 0 const PageTraceInt = 0 const PreemptibleLoops = false const RegabiArgs = true const RegabiArgsInt = 1 const RegabiWrappers = true const StaticLockRanking = false
The pages are generated with Golds v0.6.7. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |