0.5.1 - 2026-08-23
- Add checks for embedded mutex delegation and improve waitgroup handling
- Optimize embedded field iteration in wrapperResolver
- @sanbricio
Full Changelog: https://github.com/sanbricio/goconcurrencylint/compare/v0.5.0...v0.5.1
0.5.0 - 2026-08-20
- Enhance analysis for branch statements and add exhaustive test cases for mutex and waitgroup usage (#52)
- Detect sync.Once misuse (re-entrant Do, Do(nil)) (#53)
- Add sync.Cond checks and sharpen mutex/waitgroup analysis (#56)
- Add sync.Pool, once-constructor and rwmutex recursive-lock checks (#57)
- Enhance waitgroup analysis with "Add before you spawn" checks (#58)
- Add channel misuse checks (GCL6001-6004) (#59)
- Add checks for deferred Done in goroutines to prevent race conditions
- Check selection flags (-checks, -tests) (#64)
- Add golangci-lint module plugin support and documentation (#65)
- Treat Wait in a returning for-select branch as early-exit
- Remove waitgroup/mutex false positives found on real repos (#60)
- Check categories to use stable numeric codes and enhance documentation
- Bump the all-actions group with 2 updates (#63)
- @sanbricio
Full Changelog: https://github.com/sanbricio/goconcurrencylint/compare/v0.4.1...v0.5.0
0.4.1 - 2026-06-07
- Add GitHub Actions workflow for releasing binaries
- @sanbricio
Full Changelog: https://github.com/sanbricio/goconcurrencylint/compare/v0.4.0...v0.4.1
0.4.0 - 2026-06-07
- Add integration workflow and reporting script for real-world repos (#30)
- Skip analysis on generated files and add related test cases
- Add UnwrapParenExpr function and corresponding tests for parenthesized expressions (#36)
- Implement goto label snapshot capturing and merging for mutex lock states
- Enhance WaitGroup and Mutex Analyzers with New Cases and Logic
- Handle parentheses in mutex method calls and add test cases (#47)
- (mutex,waitgroup) Detect ownership-transfer and one-way lock patterns (#51)
- (mutex) Handle balanced guarded locks and deferred relocks
- Update integration workflow to use stable Go version and improve error handling
- Adjust timeout settings for integration workflow steps to improve reliability
- (waitgroup) Only flag Add(0) for compile-time constants
- (waitgroup) Fix two Add/Done balance false positives (#40)
- (waitgroup) Don't flag Add after Wait when the Wait early-exits
- (mutex) Ignore go method() lifecycle effects on caller state
- (mutex) Stop flagging cross-goroutine unlock handoffs (#46)
- Simplify with modernize suggestions
- Centralize Stats copying logic and fix package name (#28)
- Introduce Reporter interface and type Category (#29)
- Centralize type matching (#33)
- Consolidate unlock, lock, and runlock checks into a single method (#35)
- Simplify varRootIsFunctionParameter by using strings.Cut for base extraction
- Optimize ReportAll and add filterAndPrepare for diagnostics
- Code structure for improved readability and maintainability (#44)
- Extract funcAnalysis for per-function state management in Checker (#45)
- Mutex and waitgroup analysis with tracking, detection, and lifecycle management (#48)
- (changelog) Update for v0.3.0
- (commentfilter) O(log N) IsInComment, -31% on nats-server (#31)
- (mutex) Memoize functionIsCallerManagedReleaseFor (#32)
- @Rafael24595 made their first contribution in #47
- @alexandear made their first contribution
- @sanbricio
- @Rafael24595
- @alexandear
Full Changelog: https://github.com/sanbricio/goconcurrencylint/compare/v0.3.0...v0.4.0
0.3.0 - 2026-05-10
- Enhance WaitGroup Analyzer with additional checks and functionality (#9)
- (waitgroup) Improve and reduce false positives in balance analysis
- Add logo image for goconcurrencylint and update README
- Reduce false positives in mutex and waitgroup analysis
- (mutex) Propagate lock state through method calls and detect caller-managed release
- Enhance mutex and waitgroup analysis with copy-by-value detection and validation checks
- Enhance mutex and waitgroup analysis with new checks and test cases
- Enhance mutex and waitgroup analysis with new lifecycle checks
- Enhance mutex analysis with new lifecycle checks and test cases
- Add mutex and waitgroup analysis enhancements
- Add advanced concurrency checks and ignore directive support
- Error reporting to use diagnostic categories
- Deleted unnecesary function
- Reduce false positives in mutex and waitgroup analyzers
- Scope done-not-deferred to explicit panic and runtime.Goexit
- Waitgroup tests into multiple files for better organization (#10)
- Streamline variable declarations in mutex and waitgroup analyzers
- Reorganize waitgroup checks and add new validation functions
- (changelog) Update for v0.2.1
- @sanbricio
Full Changelog: https://github.com/sanbricio/goconcurrencylint/compare/v0.2.1...v0.3.0
0.2.1 - 2026-04-14
- Update build paths in CI and release workflows and add main package for goconcurrencylint
- (changelog) Update for v0.2.0
- @sanbricio
Full Changelog: https://github.com/sanbricio/goconcurrencylint/compare/v0.2.0...v0.2.1
0.2.0 - 2026-04-13
- Remove unused golangci-lint plugin files and update CI configuration
- (changelog) Update for v0.1.0
- @sanbricio
Full Changelog: https://github.com/sanbricio/goconcurrencylint/compare/v0.1.0...v0.2.0
0.1.0 - 2026-04-13
- Implement concurrency linter to detect misuse of sync.Mutex and sync.WaitGroup
- First steps mutex linter
- Add test cases for mutex unlock scenarios and missing locks
- Enhance mutex and rwmutex test cases for correct and incorrect usage
- Added waitgroup linter cases
- Added waitgroup for loop analysis
- Added unreachableDone waitgroup
- Added some new cases in waitgroup
- Implement CommentFilter to ignore linter warnings in commented code
- Add support for short variable declarations in sync primitives detection
- Added more edge cases to improve project coverage
- Added more unit tests
- Add test variables with typer but no typeInfo
- (waitgroup) Added new count handler in goroutines strategy
- Added new case ReuseWaitGroup
- (waitgroup) Enhance analysis of Done calls and improve error reporting (uncomplete)
- Enhance mutex/sync examples with edge cases
- Enhance synchronization primitive analysis with new functions and tests
- Add CI workflows for testing, linting, and releasing; include plugin structure
- Enhance goconcurrencylint with package-level analysis and WaitGroup.Go support; add golangci-lint plugin configuration
- Add changelog file and automate updates during release process
- Deleted unused parameters
- Quit toolchain of go.mod
- (waitgroup) Detect WaitGroup methods passed as callbacks
- Extract common helpers and move testdata into checker/
- (checker) Move Mutex and RWMutex analysis logic to mutex.go
- (checker) Extract WaitGroup logic into waitgroup.go
- General refactor to improve readability
- Restructure project
- (mutex) General refactor to improve readability
- (test) Reorganize testdata with granular subcategories
- (analyzer) Remove debug print statements from analyzeDoneCalls and analyzeSwitchStatement
- (waitgroup) Remove unused functions and streamline validation logic
- Create MIT LICENSE
- Added README.md
- Add .gitignore file to exclude build outputs and temporary files
- Added CI pipeline
- Fix CI pipeline
- Update README
- Update go test command
- Update Go version and dependencies to 1.25.0 and latest tools
- Update CI workflow to use latest action versions
- Update Go version in CI workflow and adjust golangci-lint configuration
- Update version in CI workflow and configuration files to v2.11.4
- Update actions/checkout version to v6 in CI and release workflows
- @sanbricio made their first contribution
- @sanbricio