@akahana あと https://mstdn.maud.io/@orumin/111254444036604681 で言及したけど言語組み込み API と同じみため同じアクセス速度で Vim API にアクセスさせることは Lua や Vim Script からは可能だけど、remote plugin だと msgpack RPC の request/response がいちいちかかるからね……。
@akahana あと https://mstdn.maud.io/@orumin/111254444036604681 で言及したけど言語組み込み API と同じみため同じアクセス速度で Vim API にアクセスさせることは Lua や Vim Script からは可能だけど、remote plugin だと msgpack RPC の request/response がいちいちかかるからね……。
@akahana Lua は小さくするために regex を持ってない、とかもある
“Lua does not use POSIX regular expressions (regexp) for pattern matching. The main reason for this is size: A typical implementation of POSIX regexp takes more than 4,000 lines of code. This is bigger than all Lua standard libraries together.”
https://www.lua.org/pil/20.1.html
(その上で LuaVM を liblua から construct するときに簡単に native 実装側の C function をガンガン register して Lua script のグローバル空間に expose できるので、べつに Vim がもともと持ってる regex engine を使う何かは Lua script から触らせらせられる)
@akahana Lua 自体、JavaScript w/ V8 engine とかを除いたら intepret する言語では最速に近い速さがあるのと、runtime が異様に小さい (200KB もあるかどうか)というのでもともと設計されてるので native 実装の DSL として組み込みやすいのもあるね
@akahana 最初は remote plugin で Python でも Node.js でもなんでも、が方向性だったけど Lua runtime に battery included にすることに NeoVim 自体が舵を切ったのと、tree-sitter や LSP とかが neovim embedded になったときにこれらを叩く便利な utility library が Lua library として整備されたのが結構おおきい
@pikepikeid たぶん環境の違いじゃないかなあ……。単に仮想化環境でたまたま出てくるタイミングバグとかそういうのそう
@pikepikeid その報告私も見たことあるんですが、手元だとなぜかそのチェックパスできるんですよね。謎……。
@pikepikeid ウチよりひどくてワロタ。私の環境だと WSL 有効化切りたくない、かつ Windows Hypervisor Platform 対応版の Nox も絶望的に遅かったんで Bluestack 入れてますね……
WSA 入れる人たぶん https://github.com/alesimula/wsa_pacman これも入れるといいです
このアカウントは、notestockで公開設定になっていません。
NeoVim から Lua VM に export してる API は https://github.com/neovim/neovim/tree/master/runtime/lua/vim/_meta として LSP server に提供してる I/F 一覧があるのだけど、これらを expose する elisp 実装をつくって NeoVim のビルドに組み込めば elisp native な vim つくれそう
Fennel で Lisp ぽく config/plugin を書くこともできる >> Olical/aniseed: Neovim configuration and plugins in Fennel (Lisp compiled to Lua)
https://github.com/Olical/aniseed
このアカウントは、notestockで公開設定になっていません。
コードや原稿書きながら NeoVim のコンフィグ(というかほぼプラグインみたいな部分)を Lua で書き換えるの同時にやり続けていたら、だんだん NeoVim がテキストエディタではなく DSL が Lua な battery included な universal TUI application runtime に見えてきた。
あれ GNOME included なアプリでしかみたことないけど、GObject を C で触るより DSL で UI 書くほうがマシなのはわかる > vala
“深く進化したAndroidと自社開発のVelaシステムに基づいており、基盤アーキテクチャを完全に書き直し、将来的には数百億の端末と数百億のIoE(すべてのインターネット)のパブリックベースとなるもの”
Xiaomi、“人、車、スマートホームのための新OS”「HyperOS」発表 - ITmedia Mobile
https://www.itmedia.co.jp/mobile/articles/2310/17/news109.html