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  }