Website is served from nine Neovim buffers on my old ThinkPad
Кратко: плагин nvim-web-server на чистом Lua отдаёт HTTP-запросы прямо из открытых буферов Neovim, без внешних зависимостей, с нативной поддержкой Djot и быстрее Nginx.
Почему так быстро?
- Однозадачность: только статика.
- libuv + асинхронный I/O Neovim.
- LuaJIT: NaN-тегинг, отсутствие boxing чисел, allocation sinking.
- aiohttp тормозит из-за парсера на чистом Python и boxing в CPython.
Бенчмарк, RPS (среднее):
| сервер | 1 | 50 | 100 | 200 | 400 |
|---|---|---|---|---|---|
| nvim-web-server | 3981 | 15284 | 15124 | 14476 | 14446 |
| Nginx | 4451 | 11306 | 11576 | 10011 | 10461 |
| aiohttp | 6391 | 8477 | 8448 | 7696 | 7132 |
Развёртывание: живёт на старом ThinkPad, 9 буферов — весь сайт.
Безопасность: да, но мелочи мы игнорируем.