13
neovim = VM

neovim = VM

  • Upload
    shougo

  • View
    4.593

  • Download
    0

Embed Size (px)

DESCRIPTION

この発表は伝説の某発表のリメイクである。 我は Kernel/neovim 勉強会 in Tsuskuba にて思った。 「発表にエディタ成分が足りなすぎる」と。そこで我は天啓を受けたのだ。 「エディタ成分が足りないのなら、自分で補えば良い。そのまさかだ、フハハハハ!」 我の名は暗黒真美夢王(ダーク・ネオ・ビムマスター)今ここに neovim は VM であると高らかに宣言する!

Citation preview

Page 1: neovim = VM

neovim = VM

Page 2: neovim = VM

注意:

この発表は 4 年前好評だった某発表のリメイクである。

Page 3: neovim = VM

自己紹介

ハンドルネーム:暗黒美夢王(Shougo) Vim大好き

CPUやOSの話も好きだったのだ、昔はな……

職業:闇の Vim 使い

Vim歴:8年目

.vimrcの行数を数えるのはやめた

Page 4: neovim = VM

今日はneovimの話をしよう。

Page 5: neovim = VM

neovimとは?

意見が合わずにfork した

Vim

Page 6: neovim = VM

なぜneovimなのか?

カーネル / VM探検隊 in つくば↓

カーネル / VIM探検隊 in New Place↓

カーネル / neovim探検隊↓

neovim自然な発想!

Page 7: neovim = VM

まじめな解説

ハードウェア

ホストOS

VMMアプリケーション

アプリケーション

Type II VMM

ハードウェア

ホストOS

アプリケーション

アプリケーション

neovimmer's Environment

Page 8: neovim = VM

「neovimは環境」

neovimはマルチプラットフォーム(予定)

neovimさえあれば、その上で様々なアプリケーションが動作する

例: テトリス,  Twitterクライアント, シェル,  端末, スネーク

辞書ビューワ, ファイラー,Rogue, 某落ち物ゲーム

よって、neovim = VMの式がなりたつ

最近は軽量な仮想化が流行しているので neovim はその流れに乗ることができる(はず)

Page 9: neovim = VM

neovimの低レベルレイヤー

neovimはVim ScriptとLuaで拡張が可能(予定)

Vim ScriptはOS用語でいえばDevice Driver それでも実現不能な場合は外部と通信するか、

ソース本体を書き換えて Pull Request ソース変更 = カーネルそのものを書き換え

外部と通信 = カーネルモジュール

各々で読み換えてください

Page 10: neovim = VM

neovimの通信機能

全てをneovimだけでやることは不可能なので、外部との通信機能が必要

VMでいうところの、VM RPC (Remote Procedure Call)

neovim は MessagePackRPCを実装している

外部プログラムとの通信機能もEmacsを超える

外部インタフェースやGUIはMessagePackRPCで実現

Page 11: neovim = VM

Emacsとの比較

Emacsはシェルと通信するための機能が充実していた

例: shell­mode, term­mode, eshell­mode, comint­mode...

しかし、neovimも理論上同じことが出来る

Emacsの利点はだんだん薄れていくのでは?

Page 12: neovim = VM

vimproc

外部インタフェースを用いず、Vimで非同期通信を行うには必須であった

しかし、neovimには標準で非同期通信機能が実装されているので必要性が薄れる

とはいえ一応 neovim でも動くよ!

Page 13: neovim = VM

おまけ

neovimの弱点:開発者が足りない

Vimのアップストリームでの変更をどれだけマージできるか

XEmacsと同じ道を辿らなければよいが

neovimについて詳しい話が聞きたい?

今年の Vim conference で聞けるだろう。クックック……