A fast Python language server implemented in Go
Rahu provides IDE features for Python through the Language Server Protocol.
- Arena-backed AST with stable node IDs for efficient memory usage
- Parallel workspace indexing with LRU caching
- Typeshed integration for accurate Python standard library types
- Support for Python 3.10 through 3.14
- Full LSP feature set: completion, hover, go-to-definition, rename, diagnostics, semantic tokens
- Embedded typeshed stubs require no external Python dependencies
# Build from source
git clone https://github.com/yourusername/rahu.git
cd rahu
go build ./...
# Run tests
go test ./...
# Start LSP server
go run ./cmd/lspThen configure your editor to use rahu.
- Getting Started - Installation and setup
- User Guide - Features, configuration, troubleshooting
- Architecture - How rahu works internally
- Development - Contributing guide
- Roadmap - What's planned and known limitations
Rahu vs Pyright/Pylance:
- Native Go binary with no Node.js dependency
- Embedded typeshed requires no setup
- Focus on IDE speed over strict type checking
Rahu vs Jedi:
- Static analysis using typeshed
- LSP-native design
- Parallel workspace indexing
Not yet supported:
- Lambda expressions
- Walrus operator (
:=) - Async/await
- Match statements
- Full type checking (we do inference, not enforcement)
See ROADMAP.md for complete list.
We welcome contributions. See Contributing Guide.
Good first issues:
- Parser support for missing Python features
- Editor setup guides
- Test coverage improvements
- Documentation
MIT License - see LICENSE
