Rider - JUG Ru Grouppublic.jugru.org › dotnext › 2016 › spb › day_1 › track_3 ›...

29
Rider Кирилл Скрыган

Transcript of Rider - JUG Ru Grouppublic.jugru.org › dotnext › 2016 › spb › day_1 › track_3 ›...

Rider

КириллСкрыган

«АпочемубывамненаписатьсвоюIDE?!»

Roadmap

Ноябрь 2014 Лето 2015 Январь 2016 Март 2016 Осень 2016

1,5 РазработчикаПрототип

5 РазработчиковAnnouncement

Private EAP

Public EAP

1.0

Лето 2016

RiderFeatures

• 100500рефакторингов• 100500навигаций• 100500анализовкода• Иещё100500другихфичей

Rider= +

Архитектура

ProtocolRider

IntelliJPlatform

JVM

ReSharperService

BundledMonoor .NET

99%общегокода

Platform.VisualStudio

Platform.Vs12 Platform.Vs14

Platform

Platform.CommandLine

Features

Platform.VisualStudio

Platform.Vs12 Platform.Vs14

Features.CommandLine

Platform.Rider

Features.Rider

MONO• Да,естьбаги• Нооноработаетидажеболееилименеестабильно

• ПроблемысI/O• MockWpf впомощь• XBuild - внашемслучаесамоеслабоезвено

devenv.exe

ReSharperVisualStudioDocumentTextBuffer

CaretCaret

FocusedEditorFocusedEditor

FeaturesUIРисуемсамиJ

Rider.exe

ReSharperIntelliJ

Intellij document R#document

Caret Caret

FocusedEditor FocusedEditor

FeaturesUI

ReSharper.Host.exe

FeaturesUI

ПроблемыпроизводительностиIDE• GC– Таккакмногоаллокацийсвязано спарсингомирезолвом

• VisualStudio– STACOM– Roslyn– НепонятнокаксделанныйвстроенныйMSBuild

• Прерывабельность• Ачтонасчётпересылкипопротоколумеждудвумяпроцессами?

Нажали Alt+Enter

Запустили движок Alt+Enter

Посчитали все элементы

Приготовили View Model

Открыли реальный popup

Frontend Backend

ActionId : String

IconId : intDisplayName : intItemId : int

Особенности

• Intellij,дажебезLanguageServices – этооченьбольшаясистема,сосвоейжизнью

• Синхронизоватьlifecycleсложногоfrontend’асbackend’омоказлосьнетривиальнойзадачей

Frontend

Backend

Solutionзагрузился,мыготовыобрабатыватьоткрытиередакторов

Открываетсяредактор!

?!

Transientsignal

Решение

• MVVMархитектура• Реактивныйпротоколссостоянием,синхронизированнымпообестороныпровода

View Model

Frontend BackendViewmodel

IDEAEditor1

R#Editor1

IDEAEditor2

ModelEditor1

ModelEditor2

ModelEditor1

ModelEditorModelEditor2

R#Editor2

Protocol

IDEAEditor3

ModelEditor3

ModelEditor3

R#Editor3

Frontend

Backend

Solutionзагрузился,мыготовыобрабатыватьоткрытиередакторов

Открываетсяредактор!

ModelEditor1

ModelEditor1

FrontendможетприсоеденитьсякBackendвлюбоймоментвремени

инаоборот

СтоитлибоятьсяInterprocessвзаимодействия?

• Вообщеговоря,нашMVVMочень«гибридный» J

• Передать5000completionitems- <100ms!

Архитектура

ProtocolRider

JVM

IntelliJ Platform

ReSharperService

BundledMonoor .NET

MSBuild Host

Any.NETRuntime

DebuggingHost

BundledMonoor .NET

Итого

• Мощныйбэкэнд• Фронтенд,почтинезависящийотпроблембэкэнда

• ПосутимыпереходимкэпохераспределённыхIDE

Web

• JS,TS,CSS,Razor,...• Наданныймоментвсеподдерживаетсясиламирешарпера.

• Думаемнадгибриднымивариантам:Idea+R#

Плагины

• Плагиныдлярешарперабудутработать• Плагиныдляидеиужеработают• Впланахсделатьвозможнстьдлякросспротокольныхплагинов

Вопросы?

• twitter.com/kskrygan• [email protected]