Skip to content

Releases: KrishRVH/boringlint

v1.0.0

Choose a tag to compare

@KrishRVH KrishRVH released this 05 Sep 00:38

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 nogenericmethod coverage 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 noiterator traversal 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.0

Full changelog

v0.9.5

Choose a tag to compare

@KrishRVH KrishRVH released this 17 Jul 02:50

Full Changelog: v0.9.0...v0.9.5

v0.9.0

Choose a tag to compare

@KrishRVH KrishRVH released this 17 Jul 00:13

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

  • noiterator now recognizes heterogeneous iterator-only constraints, generic yield families, exact-bool type 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 -vettool integration now assert complete diagnostic multisets.
  • nogenericmethod help 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

Choose a tag to compare

@KrishRVH KrishRVH released this 16 Jul 22:31

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

Choose a tag to compare

@KrishRVH KrishRVH released this 14 Jul 23:33

boringlint v0.2.1 closes the remaining imported-constraint escape hatch in noiterator and sharpens its diagnostics.

Highlights

  • noiterator now 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 -vettool modes 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

Choose a tag to compare

@KrishRVH KrishRVH released this 14 Jul 21:57

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.Analyzer prerequisite for canonical, composable AST traversal.
  • noiterator now 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

Choose a tag to compare

@KrishRVH KrishRVH released this 13 Jul 18:10

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