-
-
Notifications
You must be signed in to change notification settings - Fork 662
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
nogo: Add a _base key to be a default config for all Analyzers. #3351
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the contribution! I think this is a good feature to have. One question: would it be more useful if we instead support a "_base" config, so an analyzer can override the "includes" but continue to use "excludes" from "_base", or vice versa?
I thought about a Happy to continue to conversation to determine the best approach. I think |
An entry can be deleted by setting it to empty/null in the analyzer config. @jayconrod What do you think? |
@DolceTriade Thanks for picking this up. I like this idea. About This is definitely an improvement, but I don't think it should be marked as fixing #2513. The configuration language still makes it hard to say which targets Nogo should apply to. Ideally it would accept Bazel labels with wildcards like:
(That's separate from this PR, and it's somewhat difficult since it means Nogo needs to parse, expand, and test Bazel label patterns. Let's just leave the issue open though). |
Got it. I'll change the implementation to the {
"base": {
"exclude_files": {
"external/": "third_party",
"proto/": "generated protobuf"
}
},
"analyzer1": {
"exclude_files": {
"newpath/": "new path to scan",
"proto/": null # oops, turns out we actually want to scan this...
}
} |
This may be easier to implement: {
"base": {
"exclude_files": {
"external/": "third_party",
"proto/": "generated protobuf"
},
"include_files": {
"src": "all internal code",
},
},
"analyzer1": {
# include_files is inherited from "base", but exclude_files is overridden
"exclude_files": {
# "proto/" is not excluded here
"newpath/": "new path to scan",
"external/": "third_party",
}
},
"analyzer2": {
# include_files is inherited from "base", we don't want to exclude anything from analyzer2, so we set it to empty
"exclude_files": {}
},
} |
@linzhp Sounds good! |
Hello, I have updated the PR with the discussion. PTAL. |
go/tools/builders/nogo_main.go
Outdated
if baseConfig != nil { | ||
config = *baseConfig | ||
// Continue processing using the defaultConfig as config. | ||
} else { | ||
// If the analyzer is not explicitly configured, it emits diagnostics for | ||
// all files. | ||
for _, diag := range act.diagnostics { | ||
diagnostics = append(diagnostics, entry{Diagnostic: diag, Analyzer: act.a}) | ||
} | ||
continue | ||
} | ||
// If both the config AND the baseConfig exist, we try to merge them. | ||
// If any fields in the analyzer config are unset, they will inherit | ||
// the baseConfig config. | ||
} else if baseConfig != nil { | ||
if config.analyzerFlags == nil { | ||
config.analyzerFlags = baseConfig.analyzerFlags | ||
} | ||
if config.onlyFiles == nil { | ||
config.onlyFiles = baseConfig.onlyFiles | ||
} | ||
if config.excludeFiles == nil { | ||
config.excludeFiles = baseConfig.excludeFiles |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
for _, act := range actions {
// ....
var currentConfig config
if baseConfig, ok := configs[nogoBaseConfigName]; ok {
currentConfig = baseConfig
}
if actionConfig, ok := configs[act.a.Name]; ok {
if actionConfig.analyzerFlags != nil {
currentConfig.analyzerFlags = actionConfig.analyzerFlags
}
if actionConfig.onlyFiles != nil {
currentConfig.onlyFiles = actionConfig.onlyFiles
}
if actionConfig.excludeFiles != nil {
currentConfig.excludeFiles = actionConfig.excludeFiles
}
}
if currentConfig.onlyFiles == nil && currentConfig.excludeFiles == nil {
for _, diag := range act.diagnostics {
diagnostics = append(diagnostics, entry{Diagnostic: diag, Analyzer: act.a})
}
continue
}
//...
}
I found this easier to read: for each action, starting from an empty config, using base config if it exists, overriding it with action-specific config if exists. If it's still empty at this point, emit diagnostic for all files and continue to next action.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, nice idea! Applied!
This is useful for situations where you want to exclude/include the same directories for all the analyzers. Specifying a config for a particular analyzer will cause the _base config, if it exists, to be underlayed for that analyzer (ie, if the analyzer doesn't set an option, it will use the options specified by the _base config). You can use it like so: { "_base": { "exclude_files": { "external/": "third_party", "proto/": "generated protobuf" } }, "override": "description": "oops, I actually don't want to exclude any files here...", "exclude_files": {} } }
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io_bazel_rules_go](https://togithub.com/bazelbuild/rules_go) | http_archive | minor | `v0.36.0` -> `v0.37.0` | --- ### Release Notes <details> <summary>bazelbuild/rules_go</summary> ### [`v0.37.0`](https://togithub.com/bazelbuild/rules_go/releases/tag/v0.37.0) [Compare Source](https://togithub.com/bazelbuild/rules_go/compare/v0.36.0...v0.37.0) #### Major New Features - Support fetching packages for generated code in the Go Packages Driver #### What's Changed - bzlmod: Add missing `strip_prefix` field to `source.template.json` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3359](https://togithub.com/bazelbuild/rules_go/pull/3359) - Declare toolchains in a separate repository by [@​jfirebaugh](https://togithub.com/jfirebaugh) in [https://github.com/bazelbuild/rules_go/pull/3348](https://togithub.com/bazelbuild/rules_go/pull/3348) - Delete legacy actions API by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3173](https://togithub.com/bazelbuild/rules_go/pull/3173) - go_path: support go:embed of generated files by [@​S-Chan](https://togithub.com/S-Chan) in [https://github.com/bazelbuild/rules_go/pull/3285](https://togithub.com/bazelbuild/rules_go/pull/3285) - Properly deprecate `bindata`, `go_embed_data`, and `go_embed_data_deps` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3362](https://togithub.com/bazelbuild/rules_go/pull/3362) - link.bzl: ignore duplicate dep on coverdata by [@​robfig](https://togithub.com/robfig) in [https://github.com/bazelbuild/rules_go/pull/3032](https://togithub.com/bazelbuild/rules_go/pull/3032) - feat(pkg-drv): add support for generated files by [@​JamyDev](https://togithub.com/JamyDev) in [https://github.com/bazelbuild/rules_go/pull/3354](https://togithub.com/bazelbuild/rules_go/pull/3354) - Remove unused variables in link action by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3367](https://togithub.com/bazelbuild/rules_go/pull/3367) - Reduce number of declared files in `emit_stdlib` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3366](https://togithub.com/bazelbuild/rules_go/pull/3366) - Update docs regarding vendored proto files by [@​garymm](https://togithub.com/garymm) in [https://github.com/bazelbuild/rules_go/pull/3360](https://togithub.com/bazelbuild/rules_go/pull/3360) - go link: use external linker when in race mode by [@​motiejus](https://togithub.com/motiejus) in [https://github.com/bazelbuild/rules_go/pull/3370](https://togithub.com/bazelbuild/rules_go/pull/3370) - Adding first example by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_go/pull/3317](https://togithub.com/bazelbuild/rules_go/pull/3317) - fix(packagesdriver): bazelFlags should prefix the command by [@​JamyDev](https://togithub.com/JamyDev) in [https://github.com/bazelbuild/rules_go/pull/3371](https://togithub.com/bazelbuild/rules_go/pull/3371) - chore(gpd): export aspect utils for reusability by [@​JamyDev](https://togithub.com/JamyDev) in [https://github.com/bazelbuild/rules_go/pull/3373](https://togithub.com/bazelbuild/rules_go/pull/3373) - nogo: Add a \_base key to be a default config for all Analyzers. by [@​DolceTriade](https://togithub.com/DolceTriade) in [https://github.com/bazelbuild/rules_go/pull/3351](https://togithub.com/bazelbuild/rules_go/pull/3351) - Document that `Rlocation` can return relative paths by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3377](https://togithub.com/bazelbuild/rules_go/pull/3377) - Fix normalization check for `Rlocation` path by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3378](https://togithub.com/bazelbuild/rules_go/pull/3378) - fix(gpd): Write large target patterns to file by [@​JamyDev](https://togithub.com/JamyDev) in [https://github.com/bazelbuild/rules_go/pull/3372](https://togithub.com/bazelbuild/rules_go/pull/3372) - Make Go runfiles library repo mapping aware by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3347](https://togithub.com/bazelbuild/rules_go/pull/3347) #### New Contributors - [@​jfirebaugh](https://togithub.com/jfirebaugh) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3348](https://togithub.com/bazelbuild/rules_go/pull/3348) - [@​S-Chan](https://togithub.com/S-Chan) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3285](https://togithub.com/bazelbuild/rules_go/pull/3285) - [@​garymm](https://togithub.com/garymm) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3360](https://togithub.com/bazelbuild/rules_go/pull/3360) - [@​motiejus](https://togithub.com/motiejus) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3370](https://togithub.com/bazelbuild/rules_go/pull/3370) - [@​chrislovecnm](https://togithub.com/chrislovecnm) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3317](https://togithub.com/bazelbuild/rules_go/pull/3317) - [@​DolceTriade](https://togithub.com/DolceTriade) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3351](https://togithub.com/bazelbuild/rules_go/pull/3351) **Full Changelog**: bazel-contrib/rules_go@v0.36.0...v0.37.0 #### `WORKSPACE` code load("@​bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "io_bazel_rules_go", sha256 = "56d8c5a5c91e1af73eca71a6fab2ced959b67c86d12ba37feedb0a2dfea441a6", urls = [ "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.37.0/rules_go-v0.37.0.zip", "https://github.com/bazelbuild/rules_go/releases/download/v0.37.0/rules_go-v0.37.0.zip", ], ) load("@​io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") go_rules_dependencies() go_register_toolchains(version = "1.19.3") </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/cgrindel/bazel-starlib). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC40OS4wIiwidXBkYXRlZEluVmVyIjoiMzQuNDkuMCJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io_bazel_rules_go](https://togithub.com/bazelbuild/rules_go) | http_archive | minor | `v0.36.0` -> `v0.37.0` | --- ### Release Notes <details> <summary>bazelbuild/rules_go</summary> ### [`v0.37.0`](https://togithub.com/bazelbuild/rules_go/releases/tag/v0.37.0) [Compare Source](https://togithub.com/bazelbuild/rules_go/compare/v0.36.0...v0.37.0) #### Major New Features - Support fetching packages for generated code in the Go Packages Driver #### What's Changed - bzlmod: Add missing `strip_prefix` field to `source.template.json` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3359](https://togithub.com/bazelbuild/rules_go/pull/3359) - Declare toolchains in a separate repository by [@​jfirebaugh](https://togithub.com/jfirebaugh) in [https://github.com/bazelbuild/rules_go/pull/3348](https://togithub.com/bazelbuild/rules_go/pull/3348) - Delete legacy actions API by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3173](https://togithub.com/bazelbuild/rules_go/pull/3173) - go_path: support go:embed of generated files by [@​S-Chan](https://togithub.com/S-Chan) in [https://github.com/bazelbuild/rules_go/pull/3285](https://togithub.com/bazelbuild/rules_go/pull/3285) - Properly deprecate `bindata`, `go_embed_data`, and `go_embed_data_deps` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3362](https://togithub.com/bazelbuild/rules_go/pull/3362) - link.bzl: ignore duplicate dep on coverdata by [@​robfig](https://togithub.com/robfig) in [https://github.com/bazelbuild/rules_go/pull/3032](https://togithub.com/bazelbuild/rules_go/pull/3032) - feat(pkg-drv): add support for generated files by [@​JamyDev](https://togithub.com/JamyDev) in [https://github.com/bazelbuild/rules_go/pull/3354](https://togithub.com/bazelbuild/rules_go/pull/3354) - Remove unused variables in link action by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3367](https://togithub.com/bazelbuild/rules_go/pull/3367) - Reduce number of declared files in `emit_stdlib` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3366](https://togithub.com/bazelbuild/rules_go/pull/3366) - Update docs regarding vendored proto files by [@​garymm](https://togithub.com/garymm) in [https://github.com/bazelbuild/rules_go/pull/3360](https://togithub.com/bazelbuild/rules_go/pull/3360) - go link: use external linker when in race mode by [@​motiejus](https://togithub.com/motiejus) in [https://github.com/bazelbuild/rules_go/pull/3370](https://togithub.com/bazelbuild/rules_go/pull/3370) - Adding first example by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_go/pull/3317](https://togithub.com/bazelbuild/rules_go/pull/3317) - fix(packagesdriver): bazelFlags should prefix the command by [@​JamyDev](https://togithub.com/JamyDev) in [https://github.com/bazelbuild/rules_go/pull/3371](https://togithub.com/bazelbuild/rules_go/pull/3371) - chore(gpd): export aspect utils for reusability by [@​JamyDev](https://togithub.com/JamyDev) in [https://github.com/bazelbuild/rules_go/pull/3373](https://togithub.com/bazelbuild/rules_go/pull/3373) - nogo: Add a \_base key to be a default config for all Analyzers. by [@​DolceTriade](https://togithub.com/DolceTriade) in [https://github.com/bazelbuild/rules_go/pull/3351](https://togithub.com/bazelbuild/rules_go/pull/3351) - Document that `Rlocation` can return relative paths by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3377](https://togithub.com/bazelbuild/rules_go/pull/3377) - Fix normalization check for `Rlocation` path by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3378](https://togithub.com/bazelbuild/rules_go/pull/3378) - fix(gpd): Write large target patterns to file by [@​JamyDev](https://togithub.com/JamyDev) in [https://github.com/bazelbuild/rules_go/pull/3372](https://togithub.com/bazelbuild/rules_go/pull/3372) - Make Go runfiles library repo mapping aware by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3347](https://togithub.com/bazelbuild/rules_go/pull/3347) #### New Contributors - [@​jfirebaugh](https://togithub.com/jfirebaugh) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3348](https://togithub.com/bazelbuild/rules_go/pull/3348) - [@​S-Chan](https://togithub.com/S-Chan) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3285](https://togithub.com/bazelbuild/rules_go/pull/3285) - [@​garymm](https://togithub.com/garymm) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3360](https://togithub.com/bazelbuild/rules_go/pull/3360) - [@​motiejus](https://togithub.com/motiejus) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3370](https://togithub.com/bazelbuild/rules_go/pull/3370) - [@​chrislovecnm](https://togithub.com/chrislovecnm) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3317](https://togithub.com/bazelbuild/rules_go/pull/3317) - [@​DolceTriade](https://togithub.com/DolceTriade) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3351](https://togithub.com/bazelbuild/rules_go/pull/3351) **Full Changelog**: bazel-contrib/rules_go@v0.36.0...v0.37.0 #### `WORKSPACE` code load("@​bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "io_bazel_rules_go", sha256 = "56d8c5a5c91e1af73eca71a6fab2ced959b67c86d12ba37feedb0a2dfea441a6", urls = [ "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.37.0/rules_go-v0.37.0.zip", "https://github.com/bazelbuild/rules_go/releases/download/v0.37.0/rules_go-v0.37.0.zip", ], ) load("@​io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") go_rules_dependencies() go_register_toolchains(version = "1.19.3") </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/cgrindel/swift_bazel). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC40OS4wIiwidXBkYXRlZEluVmVyIjoiMzQuNDkuMCJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [io_bazel_rules_go](https://togithub.com/bazelbuild/rules_go) | http_archive | minor | `v0.35.0` -> `v0.38.1` | --- ### Release Notes <details> <summary>bazelbuild/rules_go</summary> ### [`v0.38.1`](https://togithub.com/bazelbuild/rules_go/releases/tag/v0.38.1) [Compare Source](https://togithub.com/bazelbuild/rules_go/compare/v0.38.0...v0.38.1) #### Bug fixes The go_googleapis upgrade in 0.38.0 is too disruptive. It changes the Go import paths of the proto packages, causing build failures in repos trying to upgrade to rules_go 0.38.0. Reverting the go_googleapis to the master of 2022-12-05 ([#​3432](https://togithub.com/bazelbuild/rules_go/issues/3432)) for now to make rules_go upgrades easier. #### `WORKSPACE` code load("@​bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "io_bazel_rules_go", sha256 = "dd926a88a564a9246713a9c00b35315f54cbd46b31a26d5d8fb264c07045f05d", urls = [ "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.38.1/rules_go-v0.38.1.zip", "https://github.com/bazelbuild/rules_go/releases/download/v0.38.1/rules_go-v0.38.1.zip", ], ) load("@​io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") go_rules_dependencies() go_register_toolchains(version = "1.19.5") **Full Changelog**: bazel-contrib/rules_go@v0.38.0...v0.38.1 ### [`v0.38.0`](https://togithub.com/bazelbuild/rules_go/releases/tag/v0.38.0) [Compare Source](https://togithub.com/bazelbuild/rules_go/compare/v0.37.0...v0.38.0) #### Breaking changes Starting this release, rules_go requires Bazel 5.3 and golang/x/tools at least 0.3.0. If you are using [stardoc](https://togithub.com/bazelbuild/stardoc), you also need to upgrade it to 0.5.3 to recognize `RunEnvironmentInfo`, which is used in this release. #### Major new features This is the first release to support Go 1.20. When on this version of Go, it is highly recommended to use Bazel 6 and set `--experimental_output_directory_naming_scheme=diff_against_baseline` to prevent certain unnecessary rebuilds. #### What's Changed - preserve intermediate files if `-work` is specified by [@​motiejus](https://togithub.com/motiejus) in [https://github.com/bazelbuild/rules_go/pull/3389](https://togithub.com/bazelbuild/rules_go/pull/3389) - Adapt `lcov_coverage_test` to `exec.Command` change by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3392](https://togithub.com/bazelbuild/rules_go/pull/3392) - explicitly build relative path for Tool command in lcov_coverage_test by [@​matloob](https://togithub.com/matloob) in [https://github.com/bazelbuild/rules_go/pull/3399](https://togithub.com/bazelbuild/rules_go/pull/3399) - Add support for building with boringcrypto by [@​matloob](https://togithub.com/matloob) in [https://github.com/bazelbuild/rules_go/pull/3398](https://togithub.com/bazelbuild/rules_go/pull/3398) - Generalize `boringcrypto` to `GOEXPERIMENT` support by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3401](https://togithub.com/bazelbuild/rules_go/pull/3401) - Replace `cfg = "host"` with `cfg = "exec"` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3404](https://togithub.com/bazelbuild/rules_go/pull/3404) - always produce .a files at the beginning of a build by [@​matloob](https://togithub.com/matloob) in [https://github.com/bazelbuild/rules_go/pull/3385](https://togithub.com/bazelbuild/rules_go/pull/3385) - Mark `nogo` targets as `manual` to keep top-level symlinks by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3410](https://togithub.com/bazelbuild/rules_go/pull/3410) - Refactoring the extld related logic by [@​linzhp](https://togithub.com/linzhp) in [https://github.com/bazelbuild/rules_go/pull/3400](https://togithub.com/bazelbuild/rules_go/pull/3400) - Fix incompatible flags not applied to integration tests by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3415](https://togithub.com/bazelbuild/rules_go/pull/3415) - chore: remove experimental warning from bzlmod module by [@​alexeagle](https://togithub.com/alexeagle) in [https://github.com/bazelbuild/rules_go/pull/3418](https://togithub.com/bazelbuild/rules_go/pull/3418) - Add a clarifying error about dependency cycle found for internal tests by [@​yushan26](https://togithub.com/yushan26) in [https://github.com/bazelbuild/rules_go/pull/3422](https://togithub.com/bazelbuild/rules_go/pull/3422) - Do not use exec paths for rundir by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3414](https://togithub.com/bazelbuild/rules_go/pull/3414) - Upgrade org_golang_x_tools to 0.5.0 by [@​linzhp](https://togithub.com/linzhp) in [https://github.com/bazelbuild/rules_go/pull/3356](https://togithub.com/bazelbuild/rules_go/pull/3356) - fix: Relative path of embedsrc by [@​bakjos](https://togithub.com/bakjos) in [https://github.com/bazelbuild/rules_go/pull/3407](https://togithub.com/bazelbuild/rules_go/pull/3407) - Add support for env_inherit by [@​ttpathan](https://togithub.com/ttpathan) in [https://github.com/bazelbuild/rules_go/pull/3256](https://togithub.com/bazelbuild/rules_go/pull/3256) - Update stardoc to 0.5.3 by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3427](https://togithub.com/bazelbuild/rules_go/pull/3427) - Add `env` attribute to `go_binary` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3428](https://togithub.com/bazelbuild/rules_go/pull/3428) #### New Contributors - [@​matloob](https://togithub.com/matloob) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3399](https://togithub.com/bazelbuild/rules_go/pull/3399) - [@​yushan26](https://togithub.com/yushan26) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3422](https://togithub.com/bazelbuild/rules_go/pull/3422) - [@​bakjos](https://togithub.com/bakjos) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3407](https://togithub.com/bazelbuild/rules_go/pull/3407) - [@​ttpathan](https://togithub.com/ttpathan) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3256](https://togithub.com/bazelbuild/rules_go/pull/3256) **Full Changelog**: bazel-contrib/rules_go@v0.37.0...v0.38.0 ### [`v0.37.0`](https://togithub.com/bazelbuild/rules_go/releases/tag/v0.37.0) [Compare Source](https://togithub.com/bazelbuild/rules_go/compare/v0.36.0...v0.37.0) #### Major New Features - Support fetching packages for generated code in the Go Packages Driver #### What's Changed - bzlmod: Add missing `strip_prefix` field to `source.template.json` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3359](https://togithub.com/bazelbuild/rules_go/pull/3359) - Declare toolchains in a separate repository by [@​jfirebaugh](https://togithub.com/jfirebaugh) in [https://github.com/bazelbuild/rules_go/pull/3348](https://togithub.com/bazelbuild/rules_go/pull/3348) - Delete legacy actions API by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3173](https://togithub.com/bazelbuild/rules_go/pull/3173) - go_path: support go:embed of generated files by [@​S-Chan](https://togithub.com/S-Chan) in [https://github.com/bazelbuild/rules_go/pull/3285](https://togithub.com/bazelbuild/rules_go/pull/3285) - Properly deprecate `bindata`, `go_embed_data`, and `go_embed_data_deps` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3362](https://togithub.com/bazelbuild/rules_go/pull/3362) - link.bzl: ignore duplicate dep on coverdata by [@​robfig](https://togithub.com/robfig) in [https://github.com/bazelbuild/rules_go/pull/3032](https://togithub.com/bazelbuild/rules_go/pull/3032) - feat(pkg-drv): add support for generated files by [@​JamyDev](https://togithub.com/JamyDev) in [https://github.com/bazelbuild/rules_go/pull/3354](https://togithub.com/bazelbuild/rules_go/pull/3354) - Remove unused variables in link action by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3367](https://togithub.com/bazelbuild/rules_go/pull/3367) - Reduce number of declared files in `emit_stdlib` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3366](https://togithub.com/bazelbuild/rules_go/pull/3366) - Update docs regarding vendored proto files by [@​garymm](https://togithub.com/garymm) in [https://github.com/bazelbuild/rules_go/pull/3360](https://togithub.com/bazelbuild/rules_go/pull/3360) - go link: use external linker when in race mode by [@​motiejus](https://togithub.com/motiejus) in [https://github.com/bazelbuild/rules_go/pull/3370](https://togithub.com/bazelbuild/rules_go/pull/3370) - Adding first example by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_go/pull/3317](https://togithub.com/bazelbuild/rules_go/pull/3317) - fix(packagesdriver): bazelFlags should prefix the command by [@​JamyDev](https://togithub.com/JamyDev) in [https://github.com/bazelbuild/rules_go/pull/3371](https://togithub.com/bazelbuild/rules_go/pull/3371) - chore(gpd): export aspect utils for reusability by [@​JamyDev](https://togithub.com/JamyDev) in [https://github.com/bazelbuild/rules_go/pull/3373](https://togithub.com/bazelbuild/rules_go/pull/3373) - nogo: Add a \_base key to be a default config for all Analyzers. by [@​DolceTriade](https://togithub.com/DolceTriade) in [https://github.com/bazelbuild/rules_go/pull/3351](https://togithub.com/bazelbuild/rules_go/pull/3351) - Document that `Rlocation` can return relative paths by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3377](https://togithub.com/bazelbuild/rules_go/pull/3377) - Fix normalization check for `Rlocation` path by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3378](https://togithub.com/bazelbuild/rules_go/pull/3378) - fix(gpd): Write large target patterns to file by [@​JamyDev](https://togithub.com/JamyDev) in [https://github.com/bazelbuild/rules_go/pull/3372](https://togithub.com/bazelbuild/rules_go/pull/3372) - Make Go runfiles library repo mapping aware by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3347](https://togithub.com/bazelbuild/rules_go/pull/3347) #### New Contributors - [@​jfirebaugh](https://togithub.com/jfirebaugh) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3348](https://togithub.com/bazelbuild/rules_go/pull/3348) - [@​S-Chan](https://togithub.com/S-Chan) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3285](https://togithub.com/bazelbuild/rules_go/pull/3285) - [@​garymm](https://togithub.com/garymm) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3360](https://togithub.com/bazelbuild/rules_go/pull/3360) - [@​motiejus](https://togithub.com/motiejus) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3370](https://togithub.com/bazelbuild/rules_go/pull/3370) - [@​chrislovecnm](https://togithub.com/chrislovecnm) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3317](https://togithub.com/bazelbuild/rules_go/pull/3317) - [@​DolceTriade](https://togithub.com/DolceTriade) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3351](https://togithub.com/bazelbuild/rules_go/pull/3351) **Full Changelog**: bazel-contrib/rules_go@v0.36.0...v0.37.0 #### `WORKSPACE` code load("@​bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "io_bazel_rules_go", sha256 = "56d8c5a5c91e1af73eca71a6fab2ced959b67c86d12ba37feedb0a2dfea441a6", urls = [ "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.37.0/rules_go-v0.37.0.zip", "https://github.com/bazelbuild/rules_go/releases/download/v0.37.0/rules_go-v0.37.0.zip", ], ) load("@​io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") go_rules_dependencies() go_register_toolchains(version = "1.19.3") ### [`v0.36.0`](https://togithub.com/bazelbuild/rules_go/releases/tag/v0.36.0) [Compare Source](https://togithub.com/bazelbuild/rules_go/compare/v0.35.0...v0.36.0) #### Major new features - The Go runfiles library developed by [@​phst](https://togithub.com/phst) at https://github.com/phst/runfiles is now available as `github.com/bazelbuild/rules_go/go/runfiles` (target `@io_bazel_rules_go//go/runfiles`) and is now the official way to look up runfiles from Go. It will be made compatible with Bzlmod in a future release. **Note:** For improved consistency with runfiles libraries in other languages, the `Path` function present in https://github.com/phst/runfiles is called `Rlocation` in rules_go. - Adding two new command line flags `--@​io_bazel_rules_go//go/config:gc_goopts` and `--@​io_bazel_rules_go//go/config:gc_linkopts` to accept additional compiler and linker flags. #### What's Changed - bzlmod: Use register_toolchains by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3290](https://togithub.com/bazelbuild/rules_go/pull/3290) - Remove unused env_execute by [@​kmicklas](https://togithub.com/kmicklas) in [https://github.com/bazelbuild/rules_go/pull/3276](https://togithub.com/bazelbuild/rules_go/pull/3276) - Correctly forward InstrumentedFilesInfo from dependencies by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3294](https://togithub.com/bazelbuild/rules_go/pull/3294) - Parse Go SDK version out of `go version` instead of `VERSION` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3296](https://togithub.com/bazelbuild/rules_go/pull/3296) - also write test stderr to json (xml) output file by [@​rickystewart](https://togithub.com/rickystewart) in [https://github.com/bazelbuild/rules_go/pull/3300](https://togithub.com/bazelbuild/rules_go/pull/3300) - Bzlmod: Pin Bazel version in CI by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3301](https://togithub.com/bazelbuild/rules_go/pull/3301) - Allow to select Go SDK version from declared SDKs by [@​ash2k](https://togithub.com/ash2k) in [https://github.com/bazelbuild/rules_go/pull/3303](https://togithub.com/bazelbuild/rules_go/pull/3303) - Use top level VERSION file when it exists by [@​linzhp](https://togithub.com/linzhp) in [https://github.com/bazelbuild/rules_go/pull/3309](https://togithub.com/bazelbuild/rules_go/pull/3309) - synchronize when writing to the JSON converter by [@​rickystewart](https://togithub.com/rickystewart) in [https://github.com/bazelbuild/rules_go/pull/3311](https://togithub.com/bazelbuild/rules_go/pull/3311) - update version manifest URL by [@​benjaminp](https://togithub.com/benjaminp) in [https://github.com/bazelbuild/rules_go/pull/3314](https://togithub.com/bazelbuild/rules_go/pull/3314) - Symlink "misc" into repository for local_sdk. by [@​adam-azarchs](https://togithub.com/adam-azarchs) in [https://github.com/bazelbuild/rules_go/pull/3313](https://togithub.com/bazelbuild/rules_go/pull/3313) - Ensure compatibility with incompatible flags close to flipping by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3319](https://togithub.com/bazelbuild/rules_go/pull/3319) - Add additional bzlmod requirements to allow grpc protobufs to work by [@​shs96c](https://togithub.com/shs96c) in [https://github.com/bazelbuild/rules_go/pull/3320](https://togithub.com/bazelbuild/rules_go/pull/3320) - bzlmod: Update pinned Bazel version by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3321](https://togithub.com/bazelbuild/rules_go/pull/3321) - bzlmod: Set up automated BCR releases by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3324](https://togithub.com/bazelbuild/rules_go/pull/3324) - bzlmod: Add support for gogo proto compiler by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3323](https://togithub.com/bazelbuild/rules_go/pull/3323) - gopackagesdriver: move non-Go files to OtherFiles (Fixes [#​3326](https://togithub.com/bazelbuild/rules_go/issues/3326)) by [@​michaelarusso](https://togithub.com/michaelarusso) in [https://github.com/bazelbuild/rules_go/pull/3327](https://togithub.com/bazelbuild/rules_go/pull/3327) - bzlmod: Allow yanked versions in CI by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3329](https://togithub.com/bazelbuild/rules_go/pull/3329) - feat(pkg-drv): allow setting custom aspect and kinds by [@​JamyDev](https://togithub.com/JamyDev) in [https://github.com/bazelbuild/rules_go/pull/3328](https://togithub.com/bazelbuild/rules_go/pull/3328) - fix(packages-driver): allow defining additional aspects instead by [@​JamyDev](https://togithub.com/JamyDev) in [https://github.com/bazelbuild/rules_go/pull/3330](https://togithub.com/bazelbuild/rules_go/pull/3330) - Add support for parsing Go development versions by [@​zakcutner](https://togithub.com/zakcutner) in [https://github.com/bazelbuild/rules_go/pull/3333](https://togithub.com/bazelbuild/rules_go/pull/3333) - Match GOARCH ppc64 to @​platforms//cpu:ppc as well. by [@​mahiuchun](https://togithub.com/mahiuchun) in [https://github.com/bazelbuild/rules_go/pull/3336](https://togithub.com/bazelbuild/rules_go/pull/3336) - bzlmod: Update Publish to BCR app config by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3337](https://togithub.com/bazelbuild/rules_go/pull/3337) - gopackagesdriver: default to NotHandled:true for package queries by [@​ian-h-chamberlain](https://togithub.com/ian-h-chamberlain) in [https://github.com/bazelbuild/rules_go/pull/3338](https://togithub.com/bazelbuild/rules_go/pull/3338) - fix(packagesdrv): resolve third party go packages by [@​JamyDev](https://togithub.com/JamyDev) in [https://github.com/bazelbuild/rules_go/pull/3332](https://togithub.com/bazelbuild/rules_go/pull/3332) - runfiles: port phst/runfiles to rules_go by [@​sluongng](https://togithub.com/sluongng) in [https://github.com/bazelbuild/rules_go/pull/3205](https://togithub.com/bazelbuild/rules_go/pull/3205) - Adding gc_linopts to command line flag by [@​linzhp](https://togithub.com/linzhp) in [https://github.com/bazelbuild/rules_go/pull/3342](https://togithub.com/bazelbuild/rules_go/pull/3342) - Move new runfiles library to `//go/runfiles` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3341](https://togithub.com/bazelbuild/rules_go/pull/3341) - Rename `Path` to `Rlocation` in runfiles library by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3346](https://togithub.com/bazelbuild/rules_go/pull/3346) - Add 'gc_goopts' flag to command line to allow gc_goopts to propagate by [@​LWarrens](https://togithub.com/LWarrens) in [https://github.com/bazelbuild/rules_go/pull/3340](https://togithub.com/bazelbuild/rules_go/pull/3340) #### New Contributors - [@​kmicklas](https://togithub.com/kmicklas) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3276](https://togithub.com/bazelbuild/rules_go/pull/3276) - [@​adam-azarchs](https://togithub.com/adam-azarchs) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3313](https://togithub.com/bazelbuild/rules_go/pull/3313) - [@​shs96c](https://togithub.com/shs96c) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3320](https://togithub.com/bazelbuild/rules_go/pull/3320) - [@​michaelarusso](https://togithub.com/michaelarusso) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3327](https://togithub.com/bazelbuild/rules_go/pull/3327) - [@​zakcutner](https://togithub.com/zakcutner) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3333](https://togithub.com/bazelbuild/rules_go/pull/3333) - [@​mahiuchun](https://togithub.com/mahiuchun) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3336](https://togithub.com/bazelbuild/rules_go/pull/3336) - [@​LWarrens](https://togithub.com/LWarrens) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3340](https://togithub.com/bazelbuild/rules_go/pull/3340) **Full Changelog**: bazel-contrib/rules_go@v0.35.0...v0.36.0 #### `WORKSPACE` code load("@​bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "io_bazel_rules_go", sha256 = "ae013bf35bd23234d1dea46b079f1e05ba74ac0321423830119d3e787ec73483", urls = [ "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.36.0/rules_go-v0.36.0.zip", "https://github.com/bazelbuild/rules_go/releases/download/v0.36.0/rules_go-v0.36.0.zip", ], ) load("@​io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") go_rules_dependencies() go_register_toolchains(version = "1.19.3") </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/kreempuff/rules_unreal_engine). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4xMTcuMSIsInVwZGF0ZWRJblZlciI6IjM0LjExNy4xIn0=-->
…l-contrib#3351) This is useful for situations where you want to exclude/include the same directories for all the analyzers. Specifying a config for a particular analyzer will cause the _base config, if it exists, to be underlayed for that analyzer (ie, if the analyzer doesn't set an option, it will use the options specified by the _base config). You can use it like so: { "_base": { "exclude_files": { "external/": "third_party", "proto/": "generated protobuf" } }, "override": "description": "oops, I actually don't want to exclude any files here...", "exclude_files": {} } }
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/Masterminds/sprig/v3](https://togithub.com/Masterminds/sprig) | require | patch | `v3.2.2` -> `v3.2.3` | | [github.com/bazelbuild/rules_go](https://togithub.com/bazelbuild/rules_go) | require | minor | `v0.36.0` -> `v0.37.0` | | [github.com/emicklei/proto](https://togithub.com/emicklei/proto) | require | patch | `v1.11.0` -> `v1.11.1` | | [github.com/evanw/esbuild](https://togithub.com/evanw/esbuild) | require | minor | `v0.15.16` -> `v0.16.3` | | [github.com/hashicorp/go-hclog](https://togithub.com/hashicorp/go-hclog) | require | minor | `v1.3.1` -> `v1.4.0` | | [github.com/hashicorp/go-plugin](https://togithub.com/hashicorp/go-plugin) | require | patch | `v1.4.6` -> `v1.4.8` | | [golang.org/x/exp](https://togithub.com/golang/exp) | require | digest | `6ab00d0` -> `732eee0` | | [google.golang.org/genproto](https://togithub.com/googleapis/go-genproto) | require | digest | `1645502` -> `23e4bf6` | | [k8s.io/apimachinery](https://togithub.com/kubernetes/apimachinery) | require | patch | `v0.25.4` -> `v0.25.5` | --- ### ⚠ Dependency Lookup Warnings ⚠ Warnings were logged while processing this repo. Please check the Dependency Dashboard for more information. --- ### Release Notes <details> <summary>Masterminds/sprig</summary> ### [`v3.2.3`](https://togithub.com/Masterminds/sprig/releases/tag/v3.2.3) [Compare Source](https://togithub.com/Masterminds/sprig/compare/v3.2.2...v3.2.3) #### Changed - Updated docs (thanks [@​book987](https://togithub.com/book987) [@​aJetHorn](https://togithub.com/aJetHorn) [@​neelayu](https://togithub.com/neelayu) [@​pellizzetti](https://togithub.com/pellizzetti) [@​apricote](https://togithub.com/apricote) [@​SaigyoujiYuyuko233](https://togithub.com/SaigyoujiYuyuko233) [@​AlekSi](https://togithub.com/AlekSi)) - [#​348](https://togithub.com/Masterminds/sprig/issues/348): Updated huandu/xstrings which fixed a snake case bug (thanks [@​yxxhero](https://togithub.com/yxxhero)) - [#​353](https://togithub.com/Masterminds/sprig/issues/353): Updated masterminds/semver which included bug fixes - [#​354](https://togithub.com/Masterminds/sprig/issues/354): Updated golang.org/x/crypto which included bug fixes </details> <details> <summary>bazelbuild/rules_go</summary> ### [`v0.37.0`](https://togithub.com/bazelbuild/rules_go/releases/tag/v0.37.0) [Compare Source](https://togithub.com/bazelbuild/rules_go/compare/v0.36.0...v0.37.0) #### Major New Features - Support fetching packages for generated code in the Go Packages Driver #### What's Changed - bzlmod: Add missing `strip_prefix` field to `source.template.json` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3359](https://togithub.com/bazelbuild/rules_go/pull/3359) - Declare toolchains in a separate repository by [@​jfirebaugh](https://togithub.com/jfirebaugh) in [https://github.com/bazelbuild/rules_go/pull/3348](https://togithub.com/bazelbuild/rules_go/pull/3348) - Delete legacy actions API by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3173](https://togithub.com/bazelbuild/rules_go/pull/3173) - go_path: support go:embed of generated files by [@​S-Chan](https://togithub.com/S-Chan) in [https://github.com/bazelbuild/rules_go/pull/3285](https://togithub.com/bazelbuild/rules_go/pull/3285) - Properly deprecate `bindata`, `go_embed_data`, and `go_embed_data_deps` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3362](https://togithub.com/bazelbuild/rules_go/pull/3362) - link.bzl: ignore duplicate dep on coverdata by [@​robfig](https://togithub.com/robfig) in [https://github.com/bazelbuild/rules_go/pull/3032](https://togithub.com/bazelbuild/rules_go/pull/3032) - feat(pkg-drv): add support for generated files by [@​JamyDev](https://togithub.com/JamyDev) in [https://github.com/bazelbuild/rules_go/pull/3354](https://togithub.com/bazelbuild/rules_go/pull/3354) - Remove unused variables in link action by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3367](https://togithub.com/bazelbuild/rules_go/pull/3367) - Reduce number of declared files in `emit_stdlib` by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3366](https://togithub.com/bazelbuild/rules_go/pull/3366) - Update docs regarding vendored proto files by [@​garymm](https://togithub.com/garymm) in [https://github.com/bazelbuild/rules_go/pull/3360](https://togithub.com/bazelbuild/rules_go/pull/3360) - go link: use external linker when in race mode by [@​motiejus](https://togithub.com/motiejus) in [https://github.com/bazelbuild/rules_go/pull/3370](https://togithub.com/bazelbuild/rules_go/pull/3370) - Adding first example by [@​chrislovecnm](https://togithub.com/chrislovecnm) in [https://github.com/bazelbuild/rules_go/pull/3317](https://togithub.com/bazelbuild/rules_go/pull/3317) - fix(packagesdriver): bazelFlags should prefix the command by [@​JamyDev](https://togithub.com/JamyDev) in [https://github.com/bazelbuild/rules_go/pull/3371](https://togithub.com/bazelbuild/rules_go/pull/3371) - chore(gpd): export aspect utils for reusability by [@​JamyDev](https://togithub.com/JamyDev) in [https://github.com/bazelbuild/rules_go/pull/3373](https://togithub.com/bazelbuild/rules_go/pull/3373) - nogo: Add a \_base key to be a default config for all Analyzers. by [@​DolceTriade](https://togithub.com/DolceTriade) in [https://github.com/bazelbuild/rules_go/pull/3351](https://togithub.com/bazelbuild/rules_go/pull/3351) - Document that `Rlocation` can return relative paths by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3377](https://togithub.com/bazelbuild/rules_go/pull/3377) - Fix normalization check for `Rlocation` path by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3378](https://togithub.com/bazelbuild/rules_go/pull/3378) - fix(gpd): Write large target patterns to file by [@​JamyDev](https://togithub.com/JamyDev) in [https://github.com/bazelbuild/rules_go/pull/3372](https://togithub.com/bazelbuild/rules_go/pull/3372) - Make Go runfiles library repo mapping aware by [@​fmeum](https://togithub.com/fmeum) in [https://github.com/bazelbuild/rules_go/pull/3347](https://togithub.com/bazelbuild/rules_go/pull/3347) #### New Contributors - [@​jfirebaugh](https://togithub.com/jfirebaugh) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3348](https://togithub.com/bazelbuild/rules_go/pull/3348) - [@​S-Chan](https://togithub.com/S-Chan) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3285](https://togithub.com/bazelbuild/rules_go/pull/3285) - [@​garymm](https://togithub.com/garymm) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3360](https://togithub.com/bazelbuild/rules_go/pull/3360) - [@​motiejus](https://togithub.com/motiejus) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3370](https://togithub.com/bazelbuild/rules_go/pull/3370) - [@​chrislovecnm](https://togithub.com/chrislovecnm) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3317](https://togithub.com/bazelbuild/rules_go/pull/3317) - [@​DolceTriade](https://togithub.com/DolceTriade) made their first contribution in [https://github.com/bazelbuild/rules_go/pull/3351](https://togithub.com/bazelbuild/rules_go/pull/3351) **Full Changelog**: bazel-contrib/rules_go@v0.36.0...v0.37.0 #### `WORKSPACE` code load("@​bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "io_bazel_rules_go", sha256 = "56d8c5a5c91e1af73eca71a6fab2ced959b67c86d12ba37feedb0a2dfea441a6", urls = [ "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.37.0/rules_go-v0.37.0.zip", "https://github.com/bazelbuild/rules_go/releases/download/v0.37.0/rules_go-v0.37.0.zip", ], ) load("@​io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") go_rules_dependencies() go_register_toolchains(version = "1.19.3") </details> <details> <summary>emicklei/proto</summary> ### [`v1.11.1`](https://togithub.com/emicklei/proto/blob/HEAD/CHANGES.md#v1111-2022-12-01) [Compare Source](https://togithub.com/emicklei/proto/compare/v1.11.0...v1.11.1) - added Doc for MapField so it implements Documented </details> <details> <summary>evanw/esbuild</summary> ### [`v0.16.3`](https://togithub.com/evanw/esbuild/releases/tag/v0.16.3) [Compare Source](https://togithub.com/evanw/esbuild/compare/v0.16.2...v0.16.3) - Fix a hang with the JS API in certain cases ([#​2727](https://togithub.com/evanw/esbuild/issues/2727)) A change that was made in version 0.15.13 accidentally introduced a case when using esbuild's JS API could cause the node process to fail to exit. The change broke esbuild's watchdog timer, which detects if the parent process no longer exists and then automatically exits esbuild. This hang happened when you ran node as a child process with the `stderr` stream set to `pipe` instead of `inherit`, in the child process you call esbuild's JS API and pass `incremental: true` but do not call `dispose()` on the returned `rebuild` object, and then call `process.exit()`. In that case the parent node process was still waiting for the esbuild process that was created by the child node process to exit. The change made in version 0.15.13 was trying to avoid using Go's `sync.WaitGroup` API incorrectly because the API is not thread-safe. Instead of doing this, I have now reverted that change and implemented a thread-safe version of the `sync.WaitGroup` API for esbuild to use instead. ### [`v0.16.2`](https://togithub.com/evanw/esbuild/releases/tag/v0.16.2) [Compare Source](https://togithub.com/evanw/esbuild/compare/v0.16.1...v0.16.2) - Fix `process.env.NODE_ENV` substitution when transforming ([#​2718](https://togithub.com/evanw/esbuild/issues/2718)) Version 0.16.0 introduced an unintentional regression that caused `process.env.NODE_ENV` to be automatically substituted with either `"development"` or `"production"` when using esbuild's `transform` API. This substitution is a necessary feature of esbuild's `build` API because the React framework crashes when you bundle it without doing this. But the `transform` API is typically used as part of a larger build pipeline so the benefit of esbuild doing this automatically is not as clear, and esbuild previously didn't do this. However, version 0.16.0 switched the default value of the `platform` setting for the `transform` API from `neutral` to `browser`, both to align it with esbuild's documentation (which says `browser` is the default value) and because escaping the `</script>` character sequence is now tied to the `browser` platform (see the release notes for version 0.16.0 for details). That accidentally enabled automatic substitution of `process.env.NODE_ENV` because esbuild always did that for code meant for the browser. To fix this regression, esbuild will now only automatically substitute `process.env.NODE_ENV` when using the `build` API. - Prevent `define` from substituting constants into assignment position ([#​2719](https://togithub.com/evanw/esbuild/issues/2719)) The `define` feature lets you replace certain expressions with constants. For example, you could use it to replace references to the global property reference `window.DEBUG` with `false` at compile time, which can then potentially help esbuild remove unused code from your bundle. It's similar to [DefinePlugin](https://webpack.js.org/plugins/define-plugin/) in Webpack. However, if you write code such as `window.DEBUG = true` and then defined `window.DEBUG` to `false`, esbuild previously generated the output `false = true` which is a syntax error in JavaScript. This behavior is not typically a problem because it doesn't make sense to substitute `window.DEBUG` with a constant if its value changes at run-time (Webpack's `DefinePlugin` also generates `false = true` in this case). But it can be alarming to have esbuild generate code with a syntax error. So with this release, esbuild will no longer substitute `define` constants into assignment position to avoid generating code with a syntax error. Instead esbuild will generate a warning, which currently looks like this: ▲ [WARNING] Suspicious assignment to defined constant "window.DEBUG" [assign-to-define] example.js:1:0: 1 │ window.DEBUG = true ╵ ~~~~~~~~~~~~ The expression "window.DEBUG" has been configured to be replaced with a constant using the "define" feature. If this expression is supposed to be a compile-time constant, then it doesn't make sense to assign to it here. Or if this expression is supposed to change at run-time, this "define" substitution should be removed. - Fix a regression with `npm install --no-optional` ([#​2720](https://togithub.com/evanw/esbuild/issues/2720)) Normally when you install esbuild with `npm install`, npm itself is the tool that downloads the correct binary executable for the current platform. This happens because of how esbuild's primary package uses npm's `optionalDependencies` feature. However, if you deliberately disable this with `npm install --no-optional` then esbuild's install script will attempt to repair the installation by manually downloading and extracting the binary executable from the package that was supposed to be installed. The change in version 0.16.0 to move esbuild's nested packages into the `@esbuild/` scope unintentionally broke this logic because of how npm's URL structure is different for scoped packages vs. normal packages. It was actually already broken for a few platforms earlier because esbuild already had packages for some platforms in the `@esbuild/` scope, but I didn't discover this then because esbuild's integration tests aren't run on all platforms. Anyway, this release contains some changes to the install script that should hopefully get this scenario working again. ### [`v0.16.1`](https://togithub.com/evanw/esbuild/releases/tag/v0.16.1) [Compare Source](https://togithub.com/evanw/esbuild/compare/v0.16.0...v0.16.1) This is a hotfix for the previous release. - Re-allow importing JSON with the `copy` loader using an import assertion The previous release made it so when `assert { type: 'json' }` is present on an import statement, esbuild validated that the `json` loader was used. This is what an import assertion is supposed to do. However, I forgot about the relatively new `copy` loader, which sort of behaves as if the import path was marked as external (and thus not loaded at all) except that the file is copied to the output directory and the import path is rewritten to point to the copy. In this case whatever JavaScript runtime ends up running the code is the one to evaluate the import assertion. So esbuild should really allow this case as well. With this release, esbuild now allows both the `json` and `copy` loaders when an `assert { type: 'json' }` import assertion is present. ### [`v0.16.0`](https://togithub.com/evanw/esbuild/releases/tag/v0.16.0) [Compare Source](https://togithub.com/evanw/esbuild/compare/v0.15.18...v0.16.0) **This release deliberately contains backwards-incompatible changes.** To avoid automatically picking up releases like this, you should either be pinning the exact version of `esbuild` in your `package.json` file (recommended) or be using a version range syntax that only accepts patch upgrades such as `^0.15.0` or `~0.15.0`. See npm's documentation about [semver](https://docs.npmjs.com/cli/v6/using-npm/semver/) for more information. - Move all binary executable packages to the `@esbuild/` scope Binary package executables for esbuild are published as individual packages separate from the main `esbuild` package so you only have to download the relevant one for the current platform when you install esbuild. This release moves all of these packages under the `@esbuild/` scope to avoid collisions with 3rd-party packages. It also changes them to a consistent naming scheme that uses the `os` and `cpu` names from node. The package name changes are as follows: - `@esbuild/linux-loong64` => `@esbuild/linux-loong64` (no change) - `esbuild-android-64` => `@esbuild/android-x64` - `esbuild-android-arm64` => `@esbuild/android-arm64` - `esbuild-darwin-64` => `@esbuild/darwin-x64` - `esbuild-darwin-arm64` => `@esbuild/darwin-arm64` - `esbuild-freebsd-64` => `@esbuild/freebsd-x64` - `esbuild-freebsd-arm64` => `@esbuild/freebsd-arm64` - `esbuild-linux-32` => `@esbuild/linux-ia32` - `esbuild-linux-64` => `@esbuild/linux-x64` - `esbuild-linux-arm` => `@esbuild/linux-arm` - `esbuild-linux-arm64` => `@esbuild/linux-arm64` - `esbuild-linux-mips64le` => `@esbuild/linux-mips64el` - `esbuild-linux-ppc64le` => `@esbuild/linux-ppc64` - `esbuild-linux-riscv64` => `@esbuild/linux-riscv64` - `esbuild-linux-s390x` => `@esbuild/linux-s390x` - `esbuild-netbsd-64` => `@esbuild/netbsd-x64` - `esbuild-openbsd-64` => `@esbuild/openbsd-x64` - `esbuild-sunos-64` => `@esbuild/sunos-x64` - `esbuild-wasm` => `esbuild-wasm` (no change) - `esbuild-windows-32` => `@esbuild/win32-ia32` - `esbuild-windows-64` => `@esbuild/win32-x64` - `esbuild-windows-arm64` => `@esbuild/win32-arm64` - `esbuild` => `esbuild` (no change) Normal usage of the `esbuild` and `esbuild-wasm` packages should not be affected. These name changes should only affect tools that hard-coded the individual binary executable package names into custom esbuild downloader scripts. This change was not made with performance in mind. But as a bonus, installing esbuild with npm may potentially happen faster now. This is because npm's package installation protocol is inefficient: it always downloads metadata for all past versions of each package even when it only needs metadata about a single version. This makes npm package downloads O(n) in the number of published versions, which penalizes packages like esbuild that are updated regularly. Since most of esbuild's package names have now changed, npm will now need to download much less data when installing esbuild (8.72mb of package manifests before this change → 0.06mb of package manifests after this change). However, this is only a temporary improvement. Installing esbuild will gradually get slower again as further versions of esbuild are published. - Publish a shell script that downloads esbuild directly In addition to all of the existing ways to install esbuild, you can now also download esbuild directly like this: ```sh curl -fsSL https://esbuild.github.io/dl/latest | sh ``` This runs a small shell script that downloads the latest `esbuild` binary executable to the current directory. This can be convenient on systems that don't have `npm` installed or when you just want to get a copy of esbuild quickly without any extra steps. If you want a specific version of esbuild (starting with this version onward), you can provide that version in the URL instead of `latest`: ```sh curl -fsSL https://esbuild.github.io/dl/v0.16.0 | sh ``` Note that the download script needs to be able to access registry.npmjs.org to be able to complete the download. This download script doesn't yet support all of the platforms that esbuild supports because I lack the necessary testing environments. If the download script doesn't work for you because you're on an unsupported platform, please file an issue on the esbuild repo so we can add support for it. - Fix some parameter names for the Go API This release changes some parameter names for the Go API to be consistent with the JavaScript and CLI APIs: - `OutExtensions` => `OutExtension` - `JSXMode` => `JSX` - Add additional validation of API parameters The JavaScript API now does some additional validation of API parameters to catch incorrect uses of esbuild's API. The biggest impact of this is likely that esbuild now strictly only accepts strings with the `define` parameter. This would already have been a type error with esbuild's TypeScript type definitions, but it was previously not enforced for people using esbuild's API JavaScript without TypeScript. The `define` parameter appears at first glance to take a JSON object if you aren't paying close attention, but this actually isn't true. Values for `define` are instead strings of JavaScript code. This means you have to use `define: { foo: '"bar"' }` to replace `foo` with the string `"bar"`. Using `define: { foo: 'bar' }` actually replaces `foo` with the identifier `bar`. Previously esbuild allowed you to pass `define: { foo: false }` and `false` was automatically converted into a string, which made it more confusing to understand what `define` actually represents. Starting with this release, passing non-string values such as with `define: { foo: false }` will no longer be allowed. You will now have to write `define: { foo: 'false' }` instead. - Generate shorter data URLs if possible ([#​1843](https://togithub.com/evanw/esbuild/issues/1843)) Loading a file with esbuild's `dataurl` loader generates a JavaScript module with a [data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) for that file in a string as a single default export. Previously the data URLs generated by esbuild all used [base64 encoding](https://en.wikipedia.org/wiki/Base64). However, this is unnecessarily long for most textual data (e.g. SVG images). So with this release, esbuild's `dataurl` loader will now use percent encoding instead of base64 encoding if the result will be shorter. This can result in ~25% smaller data URLs for large SVGs. If you want the old behavior, you can use the `base64` loader instead and then construct the data URL yourself. - Avoid marking entry points as external ([#​2382](https://togithub.com/evanw/esbuild/issues/2382)) Previously you couldn't specify `--external:*` to mark all import paths as external because that also ended up making the entry point itself external, which caused the build to fail. With this release, esbuild's `external` API parameter no longer applies to entry points so using `--external:*` is now possible. One additional consequence of this change is that the `kind` parameter is now required when calling the `resolve()` function in esbuild's plugin API. Previously the `kind` parameter defaulted to `entry-point`, but that no longer interacts with `external` so it didn't seem wise for this to continue to be the default. You now have to specify `kind` so that the path resolution mode is explicit. - Disallow non-`default` imports when `assert { type: 'json' }` is present There is now standard behavior for importing a JSON file into an ES module using an `import` statement. However, it requires you to place the `assert { type: 'json' }` import assertion after the import path. This import assertion tells the JavaScript runtime to throw an error if the import does not end up resolving to a JSON file. On the web, the type of a file is determined by the `Content-Type` HTTP header instead of by the file extension. The import assertion prevents security problems on the web where a `.json` file may actually resolve to a JavaScript file containing malicious code, which is likely not expected for an import that is supposed to only contain pure side-effect free data. By default, esbuild uses the file extension to determine the type of a file, so this import assertion is unnecessary with esbuild. However, esbuild's JSON import feature has a non-standard extension that allows you to import top-level properties of the JSON object as named imports. For example, esbuild lets you do this: ```js import { version } from './package.json' ``` This is useful for tree-shaking when bundling because it means esbuild will only include the the `version` field of `package.json` in your bundle. This is non-standard behavior though and doesn't match the behavior of what happens when you import JSON in a real JavaScript runtime (after adding `assert { type: 'json' }`). In a real JavaScript runtime the only thing you can import is the `default` import. So with this release, esbuild will now prevent you from importing non-`default` import names if `assert { type: 'json' }` is present. This ensures that code containing `assert { type: 'json' }` isn't relying on non-standard behavior that won't work everywhere. So the following code is now an error with esbuild when bundling: ```js import { version } from './package.json' assert { type: 'json' } ``` In addition, adding `assert { type: 'json' }` to an import statement now means esbuild will generate an error if the loader for the file is anything other than `json`, which is required by the import assertion specification. - Provide a way to disable automatic escaping of `</script>` ([#​2649](https://togithub.com/evanw/esbuild/issues/2649)) If you inject esbuild's output into a script tag in an HTML file, code containing the literal characters `</script>` will cause the tag to be ended early which will break the code: ```html <script> console.log("</script>"); </script> ``` To avoid this, esbuild automatically escapes these strings in generated JavaScript files (e.g. `"</script>"` becomes `"<\/script>"` instead). This also applies to `</style>` in generated CSS files. Previously this always happened and there wasn't a way to turn this off. With this release, esbuild will now only do this if the `platform` setting is set to `browser` (the default value). Setting `platform` to `node` or `neutral` will disable this behavior. This behavior can also now be disabled with `--supported:inline-script=false` (for JS) and `--supported:inline-style=false` (for CSS). - Throw an early error if decoded UTF-8 text isn't a `Uint8Array` ([#​2532](https://togithub.com/evanw/esbuild/issues/2532)) If you run esbuild's JavaScript API in a broken JavaScript environment where `new TextEncoder().encode("") instanceof Uint8Array` is false, then esbuild's API will fail with a confusing serialization error message that makes it seem like esbuild has a bug even though the real problem is that the JavaScript environment itself is broken. This can happen when using the test framework called [Jest](https://jestjs.io/). With this release, esbuild's API will now throw earlier when it detects that the environment is unable to encode UTF-8 text correctly with an error message that makes it more clear that this is not a problem with esbuild. - Change the default "legal comment" behavior The legal comments feature automatically gathers comments containing `@license` or `@preserve` and puts the comments somewhere (either in the generated code or in a separate file). People sometimes want this to happen so that the their dependencies' software licenses are retained in the generated output code. By default esbuild puts these comments at the end of the file when bundling. However, people sometimes find this confusing because these comments can be very generic and may not mention which library they come from. So with this release, esbuild will now discard legal comments by default. You now have to opt-in to preserving them if you want this behavior. - Enable the `module` condition by default ([#​2417](https://togithub.com/evanw/esbuild/issues/2417)) Package authors want to be able to use the new [`exports`](https://nodejs.org/api/packages.html#conditional-exports) field in `package.json` to provide tree-shakable ESM code for ESM-aware bundlers while simultaneously providing fallback CommonJS code for other cases. Node's proposed way to do this involves using the `import` and `require` export conditions so that you get the ESM code if you use an import statement and the CommonJS code if you use a require call. However, this has a major drawback: if some code in the bundle uses an import statement and other code in the bundle uses a require call, then you'll get two copies of the same package in the bundle. This is known as the [dual package hazard](https://nodejs.org/api/packages.html#dual-package-hazard) and can lead to bloated bundles or even worse to subtle logic bugs. Webpack supports an alternate solution: an export condition called `module` that takes effect regardless of whether the package was imported using an import statement or a require call. This works because bundlers such as Webpack support importing a ESM using a require call (something node doesn't support). You could already do this with esbuild using `--conditions=module` but you previously had to explicitly enable this. Package authors are concerned that esbuild users won't know to do this and will get suboptimal output with their package, so they have requested for esbuild to do this automatically. So with this release, esbuild will now automatically add the `module` condition when there aren't any custom `conditions` already configured. You can disable this with `--conditions=` or `conditions: []` (i.e. explicitly clearing all custom conditions). - Rename the `master` branch to `main` The primary branch for this repository was previously called `master` but is now called `main`. This change mirrors a similar change in many other projects. - Remove esbuild's `_exit(0)` hack for WebAssembly ([#​714](https://togithub.com/evanw/esbuild/issues/714)) Node had an unfortunate bug where the node process is unnecessarily kept open while a WebAssembly module is being optimized: [https://github.com/nodejs/node/issues/36616](https://togithub.com/nodejs/node/issues/36616). This means cases where running `esbuild` should take a few milliseconds can end up taking many seconds instead. The workaround was to force node to exit by ending the process early. This was done by esbuild in one of two ways depending on the exit code. For non-zero exit codes (i.e. when there is a build error), the `esbuild` command could just call `process.kill(process.pid)` to avoid the hang. But for zero exit codes, esbuild had to load a N-API native node extension that calls the operating system's `exit(0)` function. However, this problem has essentially been fixed in node starting with version 18.3.0. So I have removed this hack from esbuild. If you are using an earlier version of node with `esbuild-wasm` and you don't want the `esbuild` command to hang for a while when exiting, you can upgrade to node 18.3.0 or higher to remove the hang. The fix came from a V8 upgrade: [this commit](https://togithub.com/v8/v8/commit/bfe12807c14c91714c7db1485e6b265439375e16) enabled [dynamic tiering for WebAssembly](https://v8.dev/blog/wasm-dynamic-tiering) by default for all projects that use V8's WebAssembly implementation. Previously all functions in the WebAssembly module were optimized in a single batch job but with dynamic tiering, V8 now optimizes individual WebAssembly functions as needed. This avoids unnecessary WebAssembly compilation which allows node to exit on time. ### [`v0.15.18`](https://togithub.com/evanw/esbuild/releases/tag/v0.15.18) [Compare Source](https://togithub.com/evanw/esbuild/compare/v0.15.17...v0.15.18) - Performance improvements for both JS and CSS This release brings noticeable performance improvements for JS parsing and for CSS parsing and printing. Here's an example benchmark for using esbuild to pretty-print a single large minified CSS file and JS file: | Test case | Previous release | This release | |----------------|------------------|--------------------| | 4.8mb CSS file | 19ms | 11ms (1.7x faster) | | 5.8mb JS file | 36ms | 32ms (1.1x faster) | The performance improvements were very straightforward: - Identifiers were being scanned using a generic character advancement function instead of using custom inline code. Advancing past each character involved UTF-8 decoding as well as updating multiple member variables. This was sped up using loop that skips UTF-8 decoding entirely and that only updates member variables once at the end. This is faster because identifiers are plain ASCII in the vast majority of cases, so Unicode decoding is almost always unnecessary. - CSS identifiers and CSS strings were still being printed one character at a time. Apparently I forgot to move this part of esbuild's CSS infrastructure beyond the proof-of-concept stage. These were both very obvious in the profiler, so I think maybe I have just never profiled esbuild's CSS printing before? - There was unnecessary work being done that was related to source maps when source map output was disabled. I likely haven't observed this before because esbuild's benchmarks always have source maps enabled. This work is now disabled when it's not going to be used. I definitely should have caught these performance issues earlier. Better late than never I suppose. ### [`v0.15.17`](https://togithub.com/evanw/esbuild/releases/tag/v0.15.17) [Compare Source](https://togithub.com/evanw/esbuild/compare/v0.15.16...v0.15.17) - Search for missing source map code on the file system ([#​2711](https://togithub.com/evanw/esbuild/issues/2711)) [Source maps](https://sourcemaps.info/spec.html) are JSON files that map from compiled code back to the original code. They provide the original source code using two arrays: `sources` (required) and `sourcesContent` (optional). When bundling is enabled, esbuild is able to bundle code with source maps that was compiled by other tools (e.g. with Webpack) and emit source maps that map all the way back to the original code (e.g. before Webpack compiled it). Previously if the input source maps omitted the optional `sourcesContent` array, esbuild would use `null` for the source content in the source map that it generates (since the source content isn't available). However, sometimes the original source code is actually still present on the file system. With this release, esbuild will now try to find the original source code using the path in the `sources` array and will use that instead of `null` if it was found. - Fix parsing bug with TypeScript `infer` and `extends` ([#​2712](https://togithub.com/evanw/esbuild/issues/2712)) This release fixes a bug where esbuild incorrectly failed to parse valid TypeScript code that nests `extends` inside `infer` inside `extends`, such as in the example below: ```ts type A<T> = {}; type B = {} extends infer T extends {} ? A<T> : never; ``` TypeScript code that does this should now be parsed correctly. - Use `WebAssembly.instantiateStreaming` if available ([#​1036](https://togithub.com/evanw/esbuild/pull/1036), [#​1900](https://togithub.com/evanw/esbuild/pull/1900)) Currently the WebAssembly version of esbuild uses `fetch` to download `esbuild.wasm` and then `WebAssembly.instantiate` to compile it. There is a newer API called `WebAssembly.instantiateStreaming` that both downloads and compiles at the same time, which can be a performance improvement if both downloading and compiling are slow. With this release, esbuild now attempts to use `WebAssembly.instantiateStreaming` and falls back to the original approach if that fails. The implementation for this builds on a PR by [@​lbwa](https://togithub.com/lbwa). - Preserve Webpack comments inside constructor calls ([#​2439](https://togithub.com/evanw/esbuild/issues/2439)) This improves the use of esbuild as a faster TypeScript-to-JavaScript frontend for Webpack, which has special [magic comments](https://webpack.js.org/api/module-methods/#magic-comments) inside `new Worker()` expressions that affect Webpack's behavior. </details> <details> <summary>hashicorp/go-hclog</summary> ### [`v1.4.0`](https://togithub.com/hashicorp/go-hclog/releases/tag/v1.4.0): Add GetLevel [Compare Source](https://togithub.com/hashicorp/go-hclog/compare/v1.3.1...v1.4.0) What it says on the tin, add GetLevel to the Logger interface. #### What's Changed - Add GetLevel to Logger interface by [@​evanphx](https://togithub.com/evanphx) in [https://github.com/hashicorp/go-hclog/pull/120](https://togithub.com/hashicorp/go-hclog/pull/120) **Full Changelog**: hashicorp/go-hclog@v1.3.1...v1.4.0 </details> <details> <summary>hashicorp/go-plugin</summary> ### [`v1.4.8`](https://togithub.com/hashicorp/go-plugin/blob/HEAD/CHANGELOG.md#v148) [Compare Source](https://togithub.com/hashicorp/go-plugin/compare/v1.4.7...v1.4.8) BUG FIXES: - Fix windows build: \[[GH-227](https://togithub.com/hashicorp/go-plugin/pull/227)] ### [`v1.4.7`](https://togithub.com/hashicorp/go-plugin/blob/HEAD/CHANGELOG.md#v147) [Compare Source](https://togithub.com/hashicorp/go-plugin/compare/v1.4.6...v1.4.7) ENHANCEMENTS: - More detailed error message on plugin start failure: \[[GH-223](https://togithub.com/hashicorp/go-plugin/pull/223)] </details> <details> <summary>kubernetes/apimachinery</summary> ### [`v0.25.5`](https://togithub.com/kubernetes/apimachinery/compare/v0.25.4...v0.25.5) [Compare Source](https://togithub.com/kubernetes/apimachinery/compare/v0.25.4...v0.25.5) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/aspect-build/silo). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC40MC4yIiwidXBkYXRlZEluVmVyIjoiMzQuNTEuMCJ9--> Signed-off-by: Thulio Ferraz Assis <3149049+f0rmiga@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Thulio Ferraz Assis <3149049+f0rmiga@users.noreply.github.com>
This is useful for situations where you want to exclude/include the same directories for all the analyzers. Specifying a config for a particular analyzer will cause the _base config, if it exists, to be underlayed for that analyzer (ie, if the analyzer doesn't set an option, it will use the options specified by the _base config).
You can use it like so:
What type of PR is this?
Feature
What does this PR do? Why is it needed?
nogo: Add a _base key to be a default config for all Analyzers.
Which issues(s) does this PR fix?
Partially addresses #2513
Other notes for review
Now that we have agreed on the approach, this PR has been updated with a test and docs.
Thanks!