knurlbench. · Languages + tooling

An editor has to protect the work.

A native IDE written in knurl. makes file persistence and compiler-response freshness part of the language dogfood.

Keep application policy in the language

Application behaviour is written in knurl.; shared native adapters supply window events, drawing, filesystem IO and process transport. Layout, commands, edit history and save acknowledgements belong to the application. The native boundary supplies mechanisms rather than duplicating editor policy.

Disk state and buffer state are different

The editor keeps separate revisions for the retained disk document and edited buffer. Save compares actual bytes and uses a checked temporary-file/rename path. External replacement is refused, preserving the edit in memory. Save, Discard and Cancel guard dirty-file navigation and normal closing; this is not crash recovery.

Diagnostics need a freshness contract

Checking the unsaved current buffer stages a snapshot for bootstrap semantic analysis without modifying the saved source. Responses carry source and project identity, diagnostic counts and checked UTF-8 spans. Malformed, truncated or stale responses are refused. Editing invalidates old results and disables their navigation.

Native compilation and semantic authority are separate

Native knurl. compiles the application and drives independent application Build, Run and Stop. Current semantic checks still use the bootstrap checker. Real X11 interaction tests exercise typing, selection, history, saved bytes and conflicts; a headless native build alone would not prove those behaviours.

Current limits: The working editor is experimental and currently X11-focused. Windows editor acceptance, broader Wayland workflows, crash recovery and multiple-document workflows remain unfinished.