Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
TableGenの言語サーバーをつくる
Search
Arata
December 02, 2023
640
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
TableGenの言語サーバーをつくる
Arata
December 02, 2023
More Decks by Arata
See All by Arata
Operating Systems: Three Easy Pieces, Chapter 49 / Sun's Network File System (NFS)
arata_nvm
0
7
デコンパイラ研究調査
arata_nvm
1
20
コンパイラ基盤を支える言語たち
arata_nvm
1
73
LLVMのDSL”TableGen”向け言語サーバーの開発
arata_nvm
0
26
5分でわかるPage-Fault Weird Machine
arata_nvm
2
360
eBPFを用いたAndroid向けデバッガ「eDBG」のx86_64 Linuxへの移植
arata_nvm
0
23
Pythonのcopy-and-patch JITの実装を読む
arata_nvm
0
150
eBPFを使った動的解析手法
arata_nvm
1
800
カーネルハック実験の振り返り
arata_nvm
1
63
Featured
See All Featured
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
390
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Practical Orchestrator
shlominoach
191
11k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.5k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
600
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
350
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.4k
How GitHub (no longer) Works
holman
316
150k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
190
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
380
Transcript
TableGenの言語サーバーをつくる 2023/12/02 Kernel/VM探検隊@北陸 Part 6 @Arata
2023/12/02 TableGenの言語サーバーを作る @arata-nvm TableGenとは • コンパイラ基盤LLVMの内部で使用されているDSL • レジスタや命令など、ターゲットマシン固有の情報を 記述するために用いられることが多い 2
2023/12/02 TableGenの言語サーバーを作る @arata-nvm https://github.com/llvm/llvm-project/blob/1c822e1e8278ebefdb7701249bdfe51f1ed03d7d/llvm/lib/Target/X86/X86RegisterInfo.td#L163-L184 例: TableGenでX86のレジスタを記述 3
2023/12/02 TableGenの言語サーバーを作る @arata-nvm TableGen嫌われがち問題 4
2023/12/02 TableGenの言語サーバーを作る @arata-nvm • エディタの支援を受けられない • C++と組み合わせてのビルドに手間がかかる • 情報が少ない なぜTableGenは嫌われているのか
5
2023/12/02 TableGenの言語サーバーを作る @arata-nvm • エディタの支援を受けられない • C++と組み合わせてのビルドに手間がかかる • 情報が少ない なぜTableGenは嫌われているのか
6
2023/12/02 TableGenの言語サーバーを作る @arata-nvm 2022年5月から言語サーバーが実装され始める 今日までに実装された機能: • シンタックスハイライト • エラー表示 •
定義へ移動 • 参照へ移動 • ホバー表示 エディタ支援の現状 7
2023/12/02 TableGenの言語サーバーを作る @arata-nvm • 言語サーバーの応答性が悪い • 一部のコードで支援機能を提供できない • 内部実装が言語サーバー向きではない 現状の言語サーバーの問題点
8
TableGenの言語サーバーをつくる 2023/12/02 Kernel/VM探検隊@北陸 Part 6 @Arata [再掲]
2023/12/02 TableGenの言語サーバーを作る @arata-nvm 現在は以下の機能が使用できる • エラーの表示 • シンタックスハイライト • 定義へ移動
• 参照へ移動 • ホバー表示 • 入力補完 • インレイヒント 実装した機能 10
2023/12/02 TableGenの言語サーバーを作る @arata-nvm エラーの表示 11
2023/12/02 TableGenの言語サーバーを作る @arata-nvm シンタックスハイライト 12
2023/12/02 TableGenの言語サーバーを作る @arata-nvm 定義へ移動/参照へ移動 13
2023/12/02 TableGenの言語サーバーを作る @arata-nvm ホバー時のドキュメント表示 14
2023/12/02 TableGenの言語サーバーを作る @arata-nvm 入力補完 15
2023/12/02 TableGenの言語サーバーを作る @arata-nvm インレイヒント 16
2023/12/02 TableGenの言語サーバーを作る @arata-nvm • TableGenのすべての構文を処理できるようにする ◦ たとえば現在はinclude文やforeach文などを無視している • 使い勝手を改善する ◦
補完候補が表示される順番の最適化、型チェックなど • 言語サーバーのWASM化 ◦ 現在はプラットフォームごとのバイナリをバンドルしている 今後の展望 17
2023/12/02 TableGenの言語サーバーを作る @arata-nvm TableGenへの不平不満を募集しています おわりに 18
2023/12/02 TableGenの言語サーバーを作る @arata-nvm TableGenへの不平不満を募集しています おわりに 19 tablegen-lspで VSCode拡張を公開しています