Repository navigation
Releases: KrishRVH/boringlint
Release list
v1.0.0
boringlint v1.0.0 is the first stable release, with Go 1.27 support for the standalone command, go vet -vettool, and the exported NoIterator and NoGenericMethod analyzers.
Building, installing, or importing boringlint now requires Go 1.27.0 or newer, up from Go 1.25.0. Both command modes support source projects declaring Go 1.23 through Go 1.27.
Changes since v0.9.5:
- Target stable Go 1.27 and remove compatibility code and conditional tests for older build toolchains.
- Expand
nogenericmethodcoverage for inferred method uses and standard-library methods such as(*rand.Rand).N. Generic functions and methods using only receiver type parameters remain allowed. - Verify that Go 1.27's promoted-field struct literal keys and generalized function type inference remain allowed.
- Fix
noiteratortraversal of array length expressions: function literal signatures and variable types remain allowed, while nested type declarations and function ranges are checked. - Update the analysis dependencies, development tools, and CI runtime.
mise run standards:check passed locally and in CI for commit 1fecc724b4763717bd0e65bcd16d7f34bc284288. The gate includes tests on Go 1.27.0 and Go 1.27.1, race checks, and integration tests for both command modes. No checks were skipped.
Install with Go 1.27.0 or newer:
go install github.com/KrishRVH/boringlint/cmd/boringlint@v1.0.0v0.9.5
v0.9.0
boringlint v0.9.0 is the release candidate for the v1 analyzer scope and public API. It closes the adversarial constraint-analysis gaps found during release review and locks both supported command modes before the final stable-Go-1.27 review.
Highlights
noiteratornow recognizes heterogeneous iterator-only constraints, generic yield families, exact-booltype parameters, and method-narrowed intersections while preserving mixed and empty-set exemptions.- Hidden named constraint terms are reported independently, and nested prohibited types are no longer pruned or duplicated across aliases, selectors, parentheses, and generic instantiations.
- Pre-Go-1.27 legacy alias handling is regression-tested, and standalone plus
go vet -vettoolintegration now assert complete diagnostic multisets. nogenericmethodhelp and analyzer metadata now state the Go-1.27-built driver requirement.- The README records the exact-SHA CI and annotated-tag release procedure.
Compatibility
The complete local and remote release gates pass on the Go 1.25.12 floor and Go 1.27rc2, including race tests, standalone and vettool integration, vulnerability scanning, module verification, and secret scanning. v1.0 remains gated on stable Go 1.27 and the planned external review.
Install
go install github.com/KrishRVH/boringlint/cmd/boringlint@v0.9.0
Full Changelog: v0.2.2...v0.9.0
v0.2.2
boringlint v0.2.2 makes noiterator diagnostics exhaustive within each project type declaration and documents the project inspiration.
Highlights
- noiterator now reports named constraints with iterator-shaped terms even when another type or constraint in the same declaration already produced a diagnostic.
- Expression-scoped duplicate suppression preserves a single diagnostic for pure named constraints while exposing distinct mixed and same-constraint findings in one run.
- Regression fixtures cover separate type parameters, combined constraints, and named constraints reused in a type body.
- The README credits and links ThePrimeagen’s I am done with Golang and clarifies the intentional allowance for function-literal signatures.
Compatibility
The complete release gate passes standalone and go vet -vettool integration on the Go 1.25.12 floor and the Go 1.27rc2 toolchain, including race, vulnerability, module-integrity, and secret checks. Building and running boringlint requires Go 1.25 or newer; analyzing Go 1.27 generic-method syntax requires a binary built with Go 1.27 or newer.
Install
go install github.com/KrishRVH/boringlint/cmd/boringlint@v0.2.2
Full Changelog: v0.2.1...v0.2.2
v0.2.1
boringlint v0.2.1 closes the remaining imported-constraint escape hatch in noiterator and sharpens its diagnostics.
Highlights
noiteratornow reports project type aliases and embedded interfaces that re-export iterator-shaped terms from dependency-defined constraints.- Detection covers instantiated constraints, mixed unions, transitive embeddings, and intersections whose narrowing eliminates the iterator term.
- Fallback diagnostics identify the forbidden iterator-shaped constraint term without mischaracterizing mixed or empty constraints as iterator-shaped types.
- Regression coverage exercises both standalone and
go vet -vettoolmodes while preserving the documented allowance for variable declarations.
Compatibility
The complete release gate passes both command modes on the Go 1.25.12 floor and the Go 1.27rc2 toolchain, including race, vulnerability, module-integrity, and secret checks. Building and running boringlint requires Go 1.25 or newer; analyzing Go 1.27 generic-method syntax requires a binary built with Go 1.27 or newer.
Install
go install github.com/KrishRVH/boringlint/cmd/boringlint@v0.2.1
Full Changelog: v0.2.0...v0.2.1
v0.2.0
boringlint v0.2.0 improves analyzer composition, closes a constraint-reporting gap, and documents the project’s policy boundaries.
Highlights
- Both analyzers now use the standard
inspect.Analyzerprerequisite for canonical, composable AST traversal. noiteratornow reports iterator-shaped type parameters whose named interface constraints come from dependencies, while preserving established diagnostic counts and positions.- The README documents the deliberate absence of per-site suppression and the verified analyzer-selection and package-scoping alternatives.
- Rule rationale and analyzer documentation now state what each policy detects, where it applies, and the prescribed alternative.
Compatibility
The release gate passes both standalone and go vet -vettool integration on the Go 1.25.12 floor and the Go 1.27rc2 toolchain. Building and running boringlint requires Go 1.25 or newer; analyzing Go 1.27 generic-method syntax requires a binary built with Go 1.27 or newer.
Install
go install github.com/KrishRVH/boringlint/cmd/boringlint@v0.2.0
Full Changelog: v0.1.0...v0.2.0
v0.1.0
boringlint v0.1.0 is the first tagged release of the deliberately restricted Go analyzer.
Highlights
- noiterator rejects direct iter imports, range-over-function, and iterator-shaped project declarations.
- nogenericmethod rejects method-local type parameters introduced in Go 1.27.
- The command works both as a standalone multichecker and through go vet -vettool.
- The analyzers are also available as a small public go/analysis package.
Install
go install github.com/KrishRVH/boringlint/cmd/boringlint@v0.1.0
Building and running boringlint requires Go 1.25 or newer. The nogenericmethod rule analyzes Go 1.27 syntax and must be built with Go 1.27 or newer.
Full Changelog: https://github.com/KrishRVH/boringlint/commits/v0.1.0