# cel-lite

What if: CEL was light enough to run on every keystroke?\
Status: released, used in myelin and plx

I wanted keybindings with `when` conditions, like VS Code and Zed have, and
[CEL](https://cel.dev) is a great language for that. But
[cel-go](https://github.com/google/cel-go) pulls protobuf, ANTLR and a bunch more
modules into your program, and my plx config only asks things like
`mode == 'normal' && !pane.zoomed`. That's a lot of weight for one line.

So I wrote cel-lite:
* no dependencies, just the standard library
* builds with TinyGo and runs in WebAssembly
* compiles an expression in a microsecond or two, evaluates it in tens of nanoseconds
* what it doesn't implement, it refuses by name, so nothing quietly means something else

It's a subset of CEL. If you need all of it, cel-go is still the right choice.

- [cel-lite.neuroplast.io](https://cel-lite.neuroplast.io): docs
- [github.com/neuroplastio/cel-lite](https://github.com/neuroplastio/cel-lite)

---

[neuroplast.io](https://neuroplast.io/) · [github.com/neuroplastio](https://github.com/neuroplastio)
