Skip to content

Commit 1d448d6

Browse files
committed
clean up docs
1 parent 6bb5450 commit 1d448d6

21 files changed

+1312
-612
lines changed

ROADMAP.md

Lines changed: 69 additions & 8 deletions
Large diffs are not rendered by default.

docs/dev/LAZY_LOADING_IMPLEMENTATION.md

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
Replaced eager loading with on-demand language loading:
1414

1515
**Key Features:**
16+
1617
- **Extension registry**: Maps file extensions → language files
1718
- **Load on demand**: Languages loaded only when opening matching files
1819
- **Caching**: Once loaded, languages reused for all subsequent files
@@ -21,6 +22,7 @@ Replaced eager loading with on-demand language loading:
2122
- **Multiple search paths**: `.loki/languages/` and `~/.loki/languages/`
2223

2324
**API:**
25+
2426
```lua
2527
languages.init() -- Set up lazy loading (call at startup)
2628
languages.load(name) -- Load specific language
@@ -37,11 +39,13 @@ languages.load_all() -- Backwards compat: eager loading
3739
Changed from eager to lazy loading:
3840

3941
**Before:**
42+
4043
```lua
4144
local lang_count = languages.load_all() -- Loads ALL languages at startup
4245
```
4346

4447
**After:**
48+
4549
```lua
4650
languages = require("languages") -- Global for REPL access
4751
local ext_count = languages.init() -- Just scans, doesn't load
@@ -66,10 +70,12 @@ loki.register_language({
6670
### Performance Improvements
6771

6872
**Startup Time:**
73+
6974
- **Before (Eager)**: Load all languages ~10-15ms
7075
- **After (Lazy)**: Scan extensions ~2-3ms (**60% faster!**)
7176

7277
**Memory Usage (7 languages available):**
78+
7379
- **Initial**: 1 language loaded (markdown)
7480
- **After opening .py**: 2 languages loaded
7581
- **Savings**: 5 languages unloaded = ~150KB saved
@@ -113,12 +119,14 @@ Loaded: 2 ✅
113119
**Effort:** 2-3 hours
114120

115121
Currently, these languages exist in BOTH C and Lua (duplication):
122+
116123
- ❌ Python (`src/loki_languages.c:52` + `.loki/languages/python.lua`)
117124
- ❌ Lua (`src/loki_languages.c:67` + `.loki/languages/lua.lua`)
118125
- ❌ JavaScript (`src/loki_languages.c:109` + `.loki/languages/javascript.lua`)
119126
- ❌ Rust (`src/loki_languages.c` + `.loki/languages/rust.lua`)
120127

121128
**Action Required:**
129+
122130
```c
123131
// src/loki_languages.c - DELETE these sections:
124132
// - Lines 50-63: Python definition
@@ -128,6 +136,7 @@ Currently, these languages exist in BOTH C and Lua (duplication):
128136
```
129137

130138
**Verification:**
139+
131140
```bash
132141
# After removal, test that languages still work via Lua:
133142
./build/loki-editor test.py # Should load python.lua on-demand
@@ -144,16 +153,19 @@ Currently, these languages exist in BOTH C and Lua (duplication):
144153
These languages only exist in C (need Lua equivalents):
145154

146155
**Essential (keep as C emergency fallback):**
156+
147157
- C/C++ - ⚠️ Keep minimal C version for editing loki source
148158

149159
**Should move to Lua:**
160+
150161
- Cython (`.pyx`, `.pxd`, `.pxi`)
151162
- TypeScript (`.ts`, `.tsx`)
152163
- Swift (`.swift`)
153164
- SQL (`.sql`)
154165
- Shell (`.sh`, `.bash`)
155166

156167
**Action Required:**
168+
157169
1. Create `.loki/languages/c.lua` (from C definition)
158170
2. Create `.loki/languages/cython.lua` (from C definition)
159171
3. Create `.loki/languages/typescript.lua` (from C definition)
@@ -162,6 +174,7 @@ These languages only exist in C (need Lua equivalents):
162174
6. Create `.loki/languages/shell.lua` (from C definition)
163175

164176
**Template:**
177+
165178
```lua
166179
-- .loki/languages/typescript.lua
167180
return loki.register_language({
@@ -218,22 +231,26 @@ struct t_editor_syntax HLDB[] = {
218231
## Benefits Achieved ✅
219232

220233
### 1. Performance ✅
234+
221235
- **60% faster startup** (2-3ms vs 10-15ms)
222236
- **Lower memory footprint** (only loaded languages in RAM)
223237
- **Instant file opening** (no language loading delay)
224238

225239
### 2. User Experience ✅
240+
226241
- **Partial installs work** (missing Go? No problem, just no .go highlighting)
227242
- **Graceful degradation** (editor works even if `.loki/languages/` missing)
228243
- **Faster perceived performance** (editor ready immediately)
229244

230245
### 3. Architecture ✅
246+
231247
- **Single source of truth** (all languages in `.loki/languages/*.lua`)
232248
- **No duplication** (when C definitions removed)
233249
- **User-extensible** (add languages without recompilation)
234250
- **Lua-powered** (aligns with project vision)
235251

236252
### 4. Maintainability ✅
253+
237254
- **Easier to add languages** (just drop in `.lua` file)
238255
- **Easier to modify** (edit `.lua`, no recompilation)
239256
- **No sync issues** (one definition per language)
@@ -244,17 +261,20 @@ struct t_editor_syntax HLDB[] = {
244261
## Documentation Updates Needed 📝
245262

246263
### CLAUDE.md ✅
264+
247265
- [x] Document lazy loading behavior
248266
- [ ] Update language registration section
249267
- [ ] Explain extension registry
250268
- [ ] Document C fallback strategy
251269

252270
### README.md 🚧
271+
253272
- [ ] Explain lazy loading in features section
254273
- [ ] Update installation (`.loki/languages/` required)
255274
- [ ] Document language statistics commands
256275

257276
### New Guides 🚧
277+
258278
- [ ] `.loki/languages/README.md` - How to add languages
259279
- [ ] Migration guide for users with custom languages
260280

@@ -270,15 +290,15 @@ struct t_editor_syntax HLDB[] = {
270290

271291
### Short Term (Next Week)
272292

273-
4. 🚧 **Create missing Lua files** - c.lua, typescript.lua, etc.
274-
5. 🚧 **Clean up C code** - Reduce to minimal emergency fallback
275-
6. 🚧 **Update documentation** - CLAUDE.md, README.md
293+
1. 🚧 **Create missing Lua files** - c.lua, typescript.lua, etc.
294+
2. 🚧 **Clean up C code** - Reduce to minimal emergency fallback
295+
3. 🚧 **Update documentation** - CLAUDE.md, README.md
276296

277297
### Validation
278298

279-
7. 🚧 **Run all tests** - `make test` should pass
280-
8. 🚧 **Test each language** - Open files with each extension
281-
9. 🚧 **Performance benchmark** - Measure startup time improvement
299+
1. 🚧 **Run all tests** - `make test` should pass
300+
2. 🚧 **Test each language** - Open files with each extension
301+
3. 🚧 **Performance benchmark** - Measure startup time improvement
282302

283303
---
284304

@@ -287,6 +307,7 @@ struct t_editor_syntax HLDB[] = {
287307
### For Users
288308

289309
**Default behavior** (lazy loading):
310+
290311
```bash
291312
# Startup is instant - no languages loaded except markdown
292313
./build/loki-editor test.py
@@ -296,13 +317,15 @@ struct t_editor_syntax HLDB[] = {
296317
```
297318

298319
**Eager loading** (if preferred):
320+
299321
```lua
300322
-- .loki/init.lua
301323
languages = require("languages")
302324
languages.load_all() -- Load everything at startup (backwards compat)
303325
```
304326

305327
**Check what's loaded**:
328+
306329
```lua
307330
-- In REPL or script
308331
stats = languages.stats()
@@ -312,6 +335,7 @@ print(string.format("Loaded: %d/%d", stats.loaded, stats.extensions))
312335
### For Developers
313336

314337
**Add a new language:**
338+
315339
```bash
316340
# 1. Create language file
317341
cat > .loki/languages/kotlin.lua << 'EOF'
@@ -336,6 +360,7 @@ EOF
336360
```
337361

338362
**Hot-reload a language** (no restart needed):
363+
339364
```lua
340365
-- Edit .loki/languages/python.lua
341366
-- Then in REPL:
@@ -375,13 +400,15 @@ languages.reload("python")
375400
**Lazy loading is now fully implemented and tested!**
376401

377402
**Key Achievements:**
403+
378404
- ✅ 60% faster startup
379405
- ✅ Lower memory footprint
380406
- ✅ Single source of truth (Lua)
381407
- ✅ User-extensible
382408
- ✅ Graceful degradation
383409

384410
**Remaining Work:**
411+
385412
- 🚧 Remove C duplicates (2-3 hours)
386413
- 🚧 Create missing Lua files (3-4 hours)
387414
- 🚧 Update documentation (2-3 hours)

0 commit comments

Comments
 (0)