https://csugjp.doorkeeper.jp/events/46856 (excerpt)
You shouldn't see this page...!!you'll be cursedつなぎこみだからねー
View Slide
Mono <= 1.0ECMA 標準の利用 : Miguel de Icaza インタビューXimian: Gnome Desktopの会社GNOME: Gtk+でGUIアプリケーションを開発↓Gtk+ (Cライブラリ)のアプリケーションをCで開発するのはしんどい↓C#だ!→ Gtk# (Win32->WinFormsみたいなもの)
Roslyn"Language Service" - IDEの機能を実現● コード補完● 文法エラーのレポートと修正● 定義に移動● 利用箇所の検索● 名前の変更● コードの自動フォーマットC#コンパイラ● ついでに、C#ソースコードがコンパイルできるどう使われているの ?● VS2015 - Roslynがソース解析その他の機能と、実際のコンパイルの両方を担当できる○ 従来はコンパイルだけ.NET Framework(csc)● MonoDevelop - NRefactoryから移行○ VSと一貫性のある機能○ XS(MD)チームの開発コストが下がる● OmniSharp (used by VSCode)○ これをサポートするエディタ拡張を作るだけでエディタがC# IDEになるhttp://atsushieno.hatenablog.com/entry/2012/12/19/162038(MonoDevelop C#バインディングについて (ついでにtypescriptバインディングの話)
Debug EngineDebugger = debugger client + debugger service開発者がブレークポイントをセットする↓IDEがdebugger clientに「xxx.csのx行目にブレークポイントを設定しろ」と伝える↓debugger clientがdebugger serverにブレークポイントの追加命令を送るdebugger server: ランタイムの一部コードを1命令ずつ実行する前に、そこにブレークポイントが設定されていないかチェック↓ブレークポイントがあったら、 debugger clientにコールバック呼び出しをかける↓debugger clientは、コールバックに応じて、 IDEにコールバック呼び出しをかけるhttps://github.com/mono/debugger-libs/https://github.com/mono/mono/blob/master/mono/mini/debugger-agent.chttps://github.com/mono/monodevelop/tree/master/main/src/addins/MonoDevelop.Debugger.Soft
Debug EngineVSCode: デバッガー クライアントとデバッガー サーバーの通信プロトコルを決めた● 同じプロトコルをサポートしていれば、クライアントとサーバーは別のデバッガー実装でも通信できる● 同じプロトコルで別の言語のデバッガーも実現できる同じプロトコルをXSがサポートすれば、VSCode用のデバッガーを使いまわせるDebugger Protocol
Language ServiceIDEとコンパイラ(パーサー、セマンティック アナライザー、リファクター)間の APIは、ある程度は言語を問わず共通している共通化してしまえば、 IDEがそのプロトコルを実装するだけで、複数言語をサポートできるhttps://github.com/Microsoft/language-server-protocol
Nugetizer 3000Xamarin Plugins- 参照はコンパイル時のおとり、実装はplat.別NuGetパッケージを作るのが面倒参照アセンブリ、各実装アセンブリを全部構築↓自動化すれば楽なのでは?新規Nugetizer 3000プロジェクトに実装アセンブリのプロジェクトを参照として追加→ 参照アセンブリを自動生成 → nupkgも自動生成
Linker基本 - GCライク設定ファイル(XML)で調整可能Linker = marking steps + sweepカスタマイズ可能iOS、Androidは大量のカスタマイズステップで構成
Linker