Open5
Rust-analyzer及びRustのlsp実装について
はじめに
この内容を後でまとめてBookにしようと思っています。その際はここの内容を適宜まとめてから該当部分を削除し、そちらへのリンクを貼ろうかと思っています
その本は個人的なエゴで無償にするか、可能なら200円程度の本にして全額を可能ならzenn、無理ならどこかのコミュニティに寄付したいと思っています(大した額にはならないと思いますが)。 本当に身勝手ですがご容赦ください。
書き出したい内容
rust-analyzerの簡単な各要素のコンセプトや使用しているcrate、及び似た形で自分たちがlspの実装をしたい時の例、lexerやparserなども含む. 僕自身が初心者なので足りないところもあると思いますが、それをコンテンツの出来の言い訳にしたくないので、間違っている部分や不足などについては厳しく指摘していただきたいし、質問などにはどれだけ時間がかかっても丁寧に答えるつもりです。
links (WIP)
予定
- rust-analyzerのメインループ部分
- crossbeam-channel
- lsp-server crate
- parser(rowan)の思想とその特徴
- logos + rowan を使った簡易jsonパーサ (多分普通に簡単で高速なparserが作れる)
- lsp-types crate
- 問題点と移植
- wasm
- tokio runtime
- rust-analyzerのメインループ部分についてのなぐり書き
(以下スレッド、WIP)
- rust-analyzerの本体はここ(GlobalState) とここ(main)
- fn mainはlsp-serverの実装とほぼ同じでcrossbeam-channnel とstd::threadのjoinで実装