Description
Go 1.26 introduced a rewritten go fix subcommand with a source-level inliner. The //go:fix inline directive allows annotating deprecated functions, type aliases, and variables so that go fix (or IDEs) automatically rewrite call sites to the modern replacement.
For tektoncd/operator this is relevant in two ways:
-
As a consumer: Once tektoncd/pipeline adds //go:fix inline annotations to its deprecated APIs, operator can run go fix ./... to auto-migrate usage of deprecated pipeline types and functions.
-
Own deprecated APIs: operator has deprecated fields and generated code that could be annotated.
Prerequisite
Bump go.mod to Go 1.26 (currently at 1.25.5).
Opportunities
Own Deprecated APIs
The generated informer factory has the common deprecated wrapper pattern:
// pkg/client/informers/externalversions/factory.go
// Deprecated: Please use NewSharedInformerFactoryWithOptions instead
//
//go:fix inline
func NewFilteredSharedInformerFactory(client versioned.Interface, defaultResync time.Duration, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) SharedInformerFactory {
return NewSharedInformerFactoryWithOptions(client, defaultResync, WithNamespace(namespace), WithTweakListOptions(tweakListOptions))
}
Deprecated fields in the operator API types (pkg/apis/operator/v1alpha1/) could also benefit from annotation where applicable.
Consuming pipeline's annotations
Once tektoncd/pipeline annotates its deprecated APIs (tektoncd/pipeline#9560), running go fix ./... in operator will automatically migrate:
- Deprecated type aliases (e.g.
ArrayOrString → ParamValue)
- Deprecated wrapper functions
- Deprecated resolution package imports
Go 1.26 built-in modernizers
Beyond //go:fix inline, Go 1.26's go fix ships with 24+ built-in modernizers that automatically apply improvements like using slices.Sort, min/max builtins, strings.Cut, and more. Running go fix ./... after bumping to Go 1.26 would apply all applicable modernizations.
References
Description
Go 1.26 introduced a rewritten
go fixsubcommand with a source-level inliner. The//go:fix inlinedirective allows annotating deprecated functions, type aliases, and variables so thatgo fix(or IDEs) automatically rewrite call sites to the modern replacement.For tektoncd/operator this is relevant in two ways:
As a consumer: Once tektoncd/pipeline adds
//go:fix inlineannotations to its deprecated APIs, operator can rungo fix ./...to auto-migrate usage of deprecated pipeline types and functions.Own deprecated APIs: operator has deprecated fields and generated code that could be annotated.
Prerequisite
Bump
go.modto Go 1.26 (currently at 1.25.5).Opportunities
Own Deprecated APIs
The generated informer factory has the common deprecated wrapper pattern:
Deprecated fields in the operator API types (
pkg/apis/operator/v1alpha1/) could also benefit from annotation where applicable.Consuming pipeline's annotations
Once tektoncd/pipeline annotates its deprecated APIs (tektoncd/pipeline#9560), running
go fix ./...in operator will automatically migrate:ArrayOrString→ParamValue)Go 1.26 built-in modernizers
Beyond
//go:fix inline, Go 1.26'sgo fixships with 24+ built-in modernizers that automatically apply improvements like usingslices.Sort,min/maxbuiltins,strings.Cut, and more. Runninggo fix ./...after bumping to Go 1.26 would apply all applicable modernizations.References