golang flags 代码
文件路径:/src/internal/goexperiment/flags.go
/ Copyright 2021 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.
/ 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 goexperiment
/go:generate go run mkconsts.go
/ 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".
type Flags struct {
FieldTrack bool
PreemptibleLoops bool
StaticLockRanking bool
BoringCrypto bool
/ Unified enables the compiler's unified IR construction
/ experiment.
Unified bool
/ Regabi is split into several sub-experiments that can be
/ enabled individually. Not all combinations work.
/ The "regabi" GOEXPERIMENT is an alias for all "working"
/ subexperiments.
/ 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.
RegabiWrappers bool
/ RegabiArgs enables register arguments/results in all
/ compiled Go functions.
/
/ Requires wrappers (to do ABI translation), and reflect (so
/ reflection calls use registers).
RegabiArgs 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.
HeapMinimum512KiB bool
}
相关信息
相关文章
go exp_heapminimum512kib_off 源码
go exp_heapminimum512kib_on 源码