github.com/Rookout/GoSDK@v0.1.48/pkg/services/assembler/internal/goexperiment/flags.go (about) 1 // Copyright 2021 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE.assembler file. 4 5 // Package goexperiment implements support for toolchain experiments. 6 // 7 // Toolchain experiments are controlled by the GOEXPERIMENT 8 // environment variable. GOEXPERIMENT is a comma-separated list of 9 // experiment names. GOEXPERIMENT can be set at make.bash time, which 10 // sets the default experiments for binaries built with the tool 11 // chain; or it can be set at build time. GOEXPERIMENT can also be set 12 // to "none", which disables any experiments that were enabled at 13 // make.bash time. 14 // 15 // Experiments are exposed to the build in the following ways: 16 // 17 // - Build tag goexperiment.x is set if experiment x (lower case) is 18 // enabled. 19 // 20 // - For each experiment x (in camel case), this package contains a 21 // boolean constant x and an integer constant xInt. 22 // 23 // - In runtime assembly, the macro GOEXPERIMENT_x is defined if 24 // experiment x (lower case) is enabled. 25 // 26 // In the toolchain, the set of experiments enabled for the current 27 // build should be accessed via objabi.Experiment. 28 // 29 // The set of experiments is included in the output of runtime.Version() 30 // and "go version <binary>" if it differs from the default experiments. 31 // 32 // For the set of experiments supported by the current toolchain, see 33 // "go doc goexperiment.Flags". 34 // 35 // Note that this package defines the set of experiments (in Flags) 36 // and records the experiments that were enabled when the package 37 // was compiled (as boolean and integer constants). 38 // 39 // Note especially that this package does not itself change behavior 40 // at run time based on the GOEXPERIMENT variable. 41 // The code used in builds to interpret the GOEXPERIMENT variable 42 // is in the separate package internal/buildcfg. 43 package goexperiment 44 45 //go:generate go run mkconsts.go 46 47 48 49 50 51 52 53 54 55 56 57 type Flags struct { 58 FieldTrack bool 59 PreemptibleLoops bool 60 StaticLockRanking bool 61 BoringCrypto bool 62 63 64 65 66 67 68 69 70 71 RegabiWrappers bool 72 73 74 75 76 77 RegabiArgs bool 78 79 80 81 82 83 84 HeapMinimum512KiB bool 85 86 87 88 CoverageRedesign bool 89 90 91 92 Arenas bool 93 94 95 96 97 98 PageTrace bool 99 100 101 102 103 CgoCheck2 bool 104 105 106 107 LoopVar bool 108 }