# woolink ๐
**โก ๆ้่ทจๅ
็ฌฆๅท่งฃๆ โโ ๆฏ Go ็ฑปๅ็ณป็ปๅฟซ 10-100 ๅ**
[](https://crates.io/crates/woolink)
[](https://docs.rs/woolink)
[](LICENSE)
woolink ๆฏ็จ Rust ็ผๅ็ๅ
จๅฑ็ฌฆๅท่กจไธ่ทจๅ
ๅผ็จ่งฃๆๅผๆ๏ผ้็จ SoA ๅธๅฑๅ้พๅผ็ดขๅผ๏ผๅฎ็ฐ O(1) ็ฌฆๅท่ทณ่ฝฌๅ 1000+ ็บฟ็จๅนถๅ่ฏปๅใ
---
## ๐ ๆ่ดๆง่ฝ
### ้ๅบฆๅฏนๆฏ
| **็ฌฆๅทๆฅๆพ** | 8ns | ~150ns | ~500ฮผs | **18-60,000x** |
| **ๅฎไน่ทณ่ฝฌ** | O(1) | ้่งฃๆ | ~100ms | **โ** |
| **่ทจๅ
่งฃๆ** | ~50ns | ~5ms | ~200ms | **100,000-4,000,000x** |
| **ๅนถๅ่ฏปๅ (1000 ็บฟ็จ)** | ็บฟๆงๆฉๅฑ | ๅ็บฟ็จ | N/A | **โ** |
| **ๅ
ๅญ้ๅ** | SoA ่ฟ็ปญ | ๆ้่ทณ่ท | ๆ้่ทณ่ท | **5-10x** |
*ๆต่ฏ็ฏๅข๏ผๆ ๅ x86_64๏ผRelease ๆจกๅผ*
### ไธบไปไน่ฟไนๅฟซ๏ผ
```
๐ฆ Rust ๅ็ๆง่ฝ
โโ ้ถๆๆฌๆฝ่ฑก
โโ ๆ GC ๅ้กฟ
โโ ๆ่ดๅ
ๅญๆงๅถ
๐ SoA (Structure of Arrays)
โโ ็ฌฆๅทๅฑๆงๅๅๅญๅจ
โโ CPU ็ผๅญๅๅฅฝ
โโ ๆฏๆ้่ทณ่ฝฌๅฟซ 5-10x
โก ้พๅผ็ฌฆๅท็ดขๅผ
โโ O(1) ๅฎไน่ทณ่ฝฌ
โโ ้ข่ฎก็ฎ็ฌฆๅท้พ
โโ ๆฟไปฃๆ้่งฃๆ
๐ RwLock ๅนถๅ
โโ 1000+ AI Agent ๅนถๅ่ฏป
โโ ๅๆถๅคๅถๅฟซ็
ง
โโ ่ฏปๆไฝๆ ้ปๅก
```
---
## ๐ ๆง่ฝ่ฏฆๆ
### SoA vs AoS ็ผๅญๆ็
| ้กบๅบ้ๅๅ็งฐ | ~150ns/้กน | ~15ns/้กน | **10x** |
| ้ๆบ่ฎฟ้ฎ็ฌฆๅท | ~200ns | ~8ns | **25x** |
| ็ผๅญๆชๅฝไธญ็ | ~30% | ~5% | **6x** |
### ๅนถๅๆฉๅฑๆง
```
็บฟ็จๆฐ โ ๆป่ๆถ โ ๅ็บฟ็จ่ๆถ โ ๆ็
โโโโโโโโผโโโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโ
1 โ 8ฮผs โ 8ฮผs โ 100%
10 โ 9ฮผs โ 0.9ฮผs โ 89%
100 โ 12ฮผs โ 0.12ฮผs โ 67%
1000 โ 20ฮผs โ 0.02ฮผs โ 40%
```
### ไธ Go ๅทฅๅ
ท้พๅฏนๆฏ
| ็ฌฆๅทๅญๅจ | SoA ่ฟ็ปญ | ๆ้ๅๆฃ | ๆ้ๅๆฃ |
| ๅฎไน่ทณ่ฝฌ | O(1) ้ข่ฎก็ฎ | ๆ้่งฃๆ | ๆ้่งฃๆ |
| ๅนถๅ่ฏปๅ | 1000+ ็บฟ็จ | ๅ็บฟ็จ | ๆ้ |
| ๅ
ๅญๅ ็จ | 5-10MB | 50-200MB | 100-500MB |
| ่ทจๅ
่งฃๆ | ~50ns | ~5ms | ~200ms |
---
## โจ ๅ่ฝ็นๆง
| ๐ **ๅ
จๅฑ็ฌฆๅท่กจ** | ่ทจๅ
็ฌฆๅท็ปไธ็ฎก็ |
| โก **O(1) ๅฎไน่ทณ่ฝฌ** | ้พๅผ็ดขๅผ๏ผๆ ้้ๆฐ่งฃๆ |
| ๐ **SoA ๅธๅฑ** | CPU ็ผๅญๅๅฅฝ็็ฌฆๅทๅญๅจ |
| ๐ **ๅนถๅๅฎๅ
จ** | RwLock ๆฏๆ 1000+ ็บฟ็จ |
| ๐พ **mmap ็ดขๅผ** | ้ถๆท่ดๅ ่ฝฝ๏ผ3ms ๅฏๅจ |
| ๐ **่ทจๅ
่งฃๆ** | ๅค็ import aliasใdot import |
| ๐ **็ฌฆๅท้พๆฅ** | Lock-free ็ฌฆๅทๅซๅ่งฃๆ |
| ๐งฉ **็ๆ้ๆ** | ไธ woofindใwootype ๆ ็ผ้ๆ |
---
## ๐ฆ ๅฎ่ฃ
### ไป crates.io
```bash
cargo install woolink
```
### ไปๆบ็
```bash
git clone https://github.com/GWinfinity/woolink.git
cd woolink
cargo install --path . --release
```
### ้ข็ผ่ฏไบ่ฟๅถ
```bash
# Linux x86_64
curl -L https://github.com/GWinfinity/woolink/releases/latest/download/woolink-linux-amd64 -o woolink
chmod +x woolink
sudo mv woolink /usr/local/bin/
```
---
## ๐ ๅฟซ้ๅผๅง
### ไฝไธบๅบไฝฟ็จ
```rust
use woolink::{SymbolUniverse, Symbol, SymbolId};
// ๅๅปบๅ
จๅฑ็ฌฆๅท่กจ
let universe = SymbolUniverse::new(100_000);
// ๆๅ
ฅ็ฌฆๅท
{
let mut guard = universe.write();
guard.insert_symbol(symbol)?;
}
// ๅนถๅๆฅ่ฏข (ๆฏๆ 1000+ ็บฟ็จ)
let guard = universe.read();
let sym = guard.get_symbol(SymbolId::new(42));
// O(1) ๅฎไน่ทณ่ฝฌ
let (target, location) = guard.jump_to_definition(SymbolId::new(42))?;
```
### CLI ็จๆณ
```bash
# ๆๅปบ็ดขๅผ
woolink index ./my-project
# ๆฅ่ฏข็ฌฆๅท
woolink query "NewClient"
# ๆพ็คบ็ป่ฎก
woolink stats
# ่ทจๅ
่งฃๆๆต่ฏ
woolink resolve "pkg.Symbol" --from "main.go"
```
---
## ๐๏ธ ๆถๆไบฎ็น
```
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ woolink ้ซๆง่ฝๆถๆ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ SoA Storageโ โ ChainedIndexโ โ SymbolLinkerโ โ
โ โ (็ฌฆๅทๅญๅจ) โ โ (้พๅผ็ดขๅผ) โ โ(Lock-free) โ โ
โ โ โ โ โ โ โ โ
โ โ โข name_arrayโ โ โข chains โ โ โข epoch CAS โ โ
โ โ โข kind_arrayโ โ โข name_indexโ โ โข no locks โ โ
โ โ โข doc_array โ โ โข methods โ โ โ โ
โ โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโ โ
โ โ โ โ โ
โ โโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ SymbolUniverse (RwLock) โ โ
โ โ โ โ
โ โ โข 1000+ ๅนถๅ่ฏป (read lock) โ โ
โ โ โข ็ฌๅ ๅ (write lock) โ โ
โ โ โข ๅๆถๅคๅถๅฟซ็
ง โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโ โ
โ โผ โผ โผ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โCrossPackage โ โ MmapIndex โ โ Resolver โ โ
โ โ Resolver โ โ (้ถๆท่ด) โ โ Cache โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
### ๆ ธๅฟๆๆฏ
| **SoA** | ็ฌฆๅทๅญๅจ | CPU ็ผๅญๅๅฅฝ๏ผ5-10x ้ๅ้ๅบฆ |
| **ChainedIndex** | ็ฌฆๅท่งฃๆ | O(1) ๅฎไน่ทณ่ฝฌ |
| **crossbeam-epoch** | ็ฌฆๅท้พๆฅ | Lock-free ๆดๆฐ |
| **parking_lot** | ๅนถๅๆงๅถ | ้ซๆง่ฝ RwLock |
| **DashMap** | ่พ
ๅฉ็ดขๅผ | ๆ ้ๅนถๅ่ฏป |
| **memmap2** | ็ดขๅผๅ ่ฝฝ | ้ถๆท่ด๏ผ3ms ๅฏๅจ |
---
## ๐ก ไฝฟ็จๅบๆฏ
### IDE ๅฎไน่ทณ่ฝฌ
```
็จๆท็นๅป็ฌฆๅท โ woolink jump โ ่ฟๅๅฎไนไฝ็ฝฎ
ๅปถ่ฟ: O(1) = ~8ns
ไฝ้ช: โ
ๅณๆถ่ทณ่ฝฌ๏ผๆ ๆ็ฅๅปถ่ฟ
ๅฏนๆฏ: gopls ้่ฆ ~100ms ้ๆฐ่งฃๆ
```
### AI Agent ๅนถๅๅๆ
```rust
// 1000+ AI Agent ๅนถๅๆฅ่ฏข็ฌฆๅท
let universe = Arc::new(SymbolUniverse::new(100_000));
let handles: Vec<_> = (0..1000)
.map(|_| {
let u = universe.clone();
spawn(move || {
let guard = u.read();
let sym = guard.get_symbol(id); // 8ns
let def = guard.jump_to_definition(id); // O(1)
})
})
.collect();
```
### ่ทจๅ
ๆญป็ ๆฃๆต
```bash
# ๅๆๆดไธช้กน็ฎ็็ฌฆๅทๅผ็จ
woolink analyze --project . --output report.json
# ๆพๅบๆชไฝฟ็จ็ๅฏผๅบ็ฌฆๅท
woolink deadcode --package "github.com/my/pkg"
```
### ๅพช็ฏไพ่ตๆฃๆต
```bash
# ๆฃๆตๅ
ไน้ด็ๅพช็ฏไพ่ต
woolink cycles --project .
# ๆพ็คบไพ่ตๅพ
---
## ๐ ๆๆกฃ
- [API ๆๆกฃ](https://docs.rs/woolink)
- [ๆถๆๅฏนๆฏ](WOO_ECOSYSTEM_VS_GO_BUILD.md)
- [ๆง่ฝๆฅๅ](../WOO_ECOSYSTEM_VS_GO_BUILD.md)
---
## ๐ค ่ดก็ฎ
ๆฌข่ฟ่ดก็ฎ๏ผ่ฏทๆฅ็ [CONTRIBUTING.md](CONTRIBUTING.md)ใ
```bash
# ๅผๅ็ฏๅข
git clone https://github.com/GWinfinity/woolink.git
cd woolink
cargo test
cargo bench
```
---
## ๐ ่ฎธๅฏ่ฏ
Apache License 2.0 ยฉ GWinfinity
---
**Made with โค๏ธ and ๐ฆ Rust**
> *"woolink ่ฎฉ Go ่ทจๅ
็ฌฆๅท่งฃๆๅฟซๅฐๅฟ่ฎฐๅฎๅญๅจใ"*