# wootype π
**β‘ Blazing-fast Go Type System Service β 100-1000x faster than traditional type checking**
[](https://crates.io/crates/wootype)
[](https://docs.rs/wootype)
[](LICENSE)
wootype is an ultra-fast Go type checking engine written in Rust, featuring incremental computation architecture (Salsa) and ECS storage model for sub-millisecond type checking response.
> π **Part of Woo Ecosystem**: [woofind](https://github.com/yourusername/woofind) β [woolink](https://github.com/yourusername/woolink) β [wootype](https://github.com/yourusername/wootype)
π [δΈζζζ‘£](README_CN.md)
---
## π Extreme Performance
### Speed Comparison
| **Cold Start (1000 functions)** | 1.2ms | 1-5s | 2-10s | **800-4000x** |
| **Incremental Update (single function)** | 25ΞΌs | Full re-check | ~500ms | **20,000x** |
| **Cache Query** | 3ns | N/A | ~1ΞΌs | **300x** |
| **LSP Single Character Response** | 50ns | ~697ns | ~1ms | **14-20,000x** |
| **Type Jump (Go to Def)** | O(1) | Requires parsing | ~100ms | **β** |
*Test environment: Standard x86_64, Release mode*
### Why So Fast?
```
π¦ Native Rust Performance
ββ Zero-cost abstractions
ββ No GC pauses
ββ Extreme memory control
β‘ Salsa Incremental Computation Framework
ββ Automatic dependency tracking
ββ Fine-grained caching (LRU)
ββ Only recompute changed parts
π§ ECS Storage Architecture
ββ Entity-Component-System
ββ Archetype compact storage
ββ Cache-friendly data layout
π Concurrent Safety Design
ββ DashMap lock-free reads
ββ scc::HashMap fine-grained locks
ββ 1000+ AI Agent concurrency
```
---
## π Performance Details
### Cold Start vs Incremental Update
| 1000 functions check | 1.2ms | **25ΞΌs** | **50x** |
| Single character response | ~697ns | **50ns** | **14x** |
| Memory usage | ~20MB | ~5MB | **-75%** |
### Cache Query Performance
| Re-query | ~500ns | **3ns** | **100x** |
| Symbol lookup | ~400ns | **3ns** | **133x** |
*Data source: SALSA_PERFORMANCE_COMPARISON.md*
### Comparison with Go Toolchain
| go/types | Full re-check | ~500ΞΌs | 1x |
| gopls | ~300ms | ~200ms | ~2x |
| **wootype** | **25ns** | **25ns** | **20,000x** |
---
## β¨ Features
| π **Full Type Checking** | Supports Go 1.22+ full syntax features |
| β‘ **Incremental Computation** | Salsa framework, only checks changes |
| π― **O(1) Type Jump** | Pre-computed type graph, no re-parsing |
| π **Cross-package Resolution** | Integrates with woolink, global symbol table |
| π§© **ECS Storage** | Entity-Component-System architecture |
| π **LSP Protocol** | Language Server Protocol support |
| π€ **AI Agent Friendly** | 1000+ concurrency, speculative transactions |
| π¦ **gRPC/WebSocket** | Server-side type checking API |
---
## π¦ Installation
### From crates.io
```bash
cargo install wootype
```
### From Source
```bash
git clone https://github.com/yourusername/wootype.git
cd wootype
cargo install --path . --release
```
### Pre-built Binaries
```bash
# Linux x86_64
curl -L https://github.com/yourusername/wootype/releases/latest/download/wootype-linux-amd64 -o wootype
chmod +x wootype
sudo mv wootype /usr/local/bin/
```
---
## π Quick Start
### As a Library
```rust
use wootype::prelude::*;
use std::sync::Arc;
// Create type universe
let universe = Arc::new(TypeUniverse::new());
// Perform type checking
let result = universe.check_file("main.go");
// Incremental update
let delta = universe.check_incremental(changes);
```
### Type Query
```rust
use wootype::core::{TypeUniverse, TypeKind, PrimitiveType};
use wootype::query::QueryEngine;
use std::sync::Arc;
#[tokio::main]
async fn main() {
let universe = Arc::new(TypeUniverse::new());
let engine = QueryEngine::new(universe);
// Query by fingerprint
let fingerprint = PrimitiveType::Int.fingerprint();
let results = engine.query_by_fingerprint(fingerprint);
for ty in results {
println!("Found type: {:?}", ty);
}
}
```
### AI Agent Session
```rust
use wootype::agent::{AgentCoordinator, AgentSession, SessionConfig, AgentType};
// Create coordinator
let coordinator = AgentCoordinator::new();
// Create session
let config = SessionConfig {
agent_type: AgentType::TypeChecker,
isolation_level: IsolationLevel::ReadCommitted,
..Default::default()
};
let session = coordinator.create_session(config);
// Perform type checking in session
let result = session.check_types("main.go");
```
### As LSP Server
```bash
# Start LSP service
wootype daemon --port 8080
# Or use stdio mode
wootype lsp
```
### Type Query CLI
```bash
# Check file types
wootype check main.go
# Query symbol type
wootype query --symbol "MyStruct" --file main.go
# Start type checking service
wootype serve --port 8080
# WebSocket mode
wootype ws --port 8081
```
---
## ποΈ Architecture
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β wootype Architecture β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β Parser β β Salsa β β Type Store β β
β β(tree-sitterβββββΆβ Database βββββΆβ (ECS/Arche β β
β β β β β β type) β β
β βββββββββββββββ ββββββββ¬βββββββ βββββββββββββββ β
β β β
β βββββββββββββββββββββΌββββββββββββββββββββ β
β βΌ βΌ βΌ β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β Queries β β Cycles β β Cache β β
β β (tracked) β β Detection β β (LRU) β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β β
β ββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββ β
β β LSP / API Layer β β
β β ββββββββββ ββββββββββ ββββββββββ ββββββββββ β β
β β β gRPC β βWebSocketβ β HTTP β β LSP β β β
β β ββββββββββ ββββββββββ ββββββββββ ββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
```
### Core Technologies
| **Salsa-rs** | Incremental Computation | Automatic dependency tracking, fine-grained caching |
| **ECS** | Type Data Storage | Archetype compact layout, cache-friendly |
| **DashMap** | Concurrent Type Table | Lock-free reads, 1000+ concurrency |
| **im::HashMap** | Snapshot Isolation | Persistent data structures, Copy-on-Write |
| **Tree-sitter** | Go Code Parsing | Accurate, fast, incremental |
---
## π Documentation
- [API Docs](https://docs.rs/wootype)
- [Architecture](ARCHITECTURE.md)
- [Chinese Docs](README_CN.md)
---
## π‘ Use Cases
### IDE Real-time Type Checking
```
User types character β Salsa incremental check β Update type hints
Latency: ~50ns (cache hit)
Experience: β
Zero-perceptible delay
```
### AI Agent Batch Analysis
```rust
// 1000+ AI Agents querying types concurrently
let universe = Arc::new(TypeUniverse::new());
for agent in 0..1000 {
let u = universe.clone();
spawn(async move {
let type_info = u.query_type(symbol_id); // O(1) query
});
}
```
### CI Type Checking
```bash
# Fast type checking in CI pipeline
wootype check ./... --incremental
# Integration with woof
woof check . --types-enabled
```
### Cross-package Type Analysis
```bash
# Analyze interface implementation relationships
wootype impl --interface "io.Reader" --project .
# Detect circular type dependencies
wootype cycles --strict
```
---
## π Ecosystem
wootype is a core component of the Woo Ecosystem:
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Woo Ecosystem β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββ ββββββββββββ ββββββββββββ β
β β woofind βββββββββΆβ woolink ββββββββββ wootype β β
β β (Search) β Index β (Link) β Types β (Types) β β
β ββββββββββββ ββββββ¬ββββββ ββββββββββββ β
β β β
β βΌ β
β βββββββββββββββββββ β
β β AI Agent / β β
β β IDE / LSP β β
β βββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
```
- **[woofind](https://crates.io/crates/woofind)**: Symbol search engine, provides symbol index
- **[woolink](https://crates.io/crates/woolink)**: Cross-package symbol resolution, global symbol table
---
## π€ Contributing
Contributions welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md).
```bash
# Development environment
git clone https://github.com/yourusername/wootype.git
cd wootype
cargo test
cargo bench
```
---
## π License
MIT License Β© [Your Name]
---
**Made with β€οΈ and π¦ Rust**
> *"wootype makes Go type checking so fast you forget it exists."*