v0.6.0 - Lambda Type Inference & Developer Tooling
Highlights
4-Layer Lambda Type Inference Architecture
- Layer 1: Local go/types inference (existing)
- Layer 2: dgo-specific signatures for all 26 functions (Map, Filter, Reduce, GroupBy, etc.)
- Layer 3: Generic type unification for third-party libraries
- Layer 4: gopls fallback (configurable via dingo.toml)
Lambda types are now correctly inferred:
products := dgo.Filter(inventory, |p| p.InStock && p.Price < 100.0)
// Previously: func(p any) any
// Now: func(p Product) bool
Source Map System (dmap v2)
- Binary .dmap format for efficient LSP position translation
- TransformTracker for robust line-level mappings
- Accurate hover/go-to-definition across all Dingo syntax
Developer Tooling
dingo lint- Linter with refactoring suggestionsdingo format- Code formatter preserving structure- Neovim plugin (dingo.nvim) with LSP, tree-sitter, and tooling integration
- SQLite structured logging for LSP debugging
Syntax Changes
- BREAKING:
guard letmigrated toguard :=syntax - Fail-fast detection for unresolved lambda types
What's Changed
- feat(typechecker): 4-layer lambda type inference architecture
- feat(sourcemap): TransformTracker for robust line-level mappings
- feat(sourcemap): Binary .dmap format
- feat(lint,format): Add Dingo linter, formatter, and refactoring system
- feat(nvim): Neovim plugin with LSP and tree-sitter
- feat(lsp): SQLite structured logging
- feat(guard)!: Migrate from 'guard let' to 'guard' syntax
- feat(tuple): Add tuple destructuring
- fix(lsp): Correct line translation for transformed regions
- fix(format): Preserve source line structure
Full Changelog: v0.5.0...v0.6.0