Семинар по анатомии CLR и .Net Framework. Roslyn, CoreCLR, CoreFx, Nitra, RyuJIT

сегодня в 08:28

9febae003ba04676b415ebe91e614223.jpg 03–04 Апреля в Москве и 29–30 мая — в Санкт-Петербурге пройдет серия семинаров CLRium. У данного семинара нет определенной целевой аудитории, мы рады всем. И начинающим свою карьеру, разработчикам, и махровым, повидавшим виды, архитекторам.Как люди и хотят, у нас будут не просто технические доклады, без воды и маркетинга. У нас будет много тем, одна из которых — настоящая разминка для мозгов. Мы будем по дампам памяти понимать как устроена CLR и как с ней взаимодействовать не привычным для всех способом — напрямую.

У нас будет:

Максимально глубокие, отборные доклады по редко-раскрываемым вопросам Целый вечер, посвященный исключительно ядру .Net. Как с ним работать «без перчаток», напрямую, со структурами в памяти, без рефлексии. Чем мы гордимся:

Наш материал не встретишь в сети Интернет: он полностью авторский Материал освещает самые интересные области .Net, которые почему-то не покрыты материалом. Мы не берем лишних денег с вас и потому у нас — самая дешевая конференция и всех существующих. 2,000 рублей за два дня — такого не предлагает никто. Это ведь как в магазин сходить. Анатомия CLR В данном вопросе я варюсь уже около года и достаточно плотно изучил как устроен CLR в качестве структур данных чтобы рассказать вам о них максимально подробно. Интерес к данному мероприятию должен возникнуть как минимум потому что эта тема практически не освещена в Интернете и знания, которые вы получите, помогут Вам взглянуть на платформу под совершенно новым углом. Также данный раздел знаний по CLR является чрезвычайно интересным. Microsoft с каждым днем давит на нас словом «безопасность». А так ли она безопасна, эта CLR? А так ли много там «магии», позволяющей нам не думать о безопасности? Это авторский проект и является результатом исследований с отладчиком: каково строение.Net объектов в памяти и что с этим можно сделать.Во-первых мы посмотрим на реальное строение объектов в памяти Во-вторых мы исследуем структуры данных в памяти, относящиеся к построению виртуальных методов, реализации интерфейсов и классов (этого не было на CLRium #1) Далее, на основе полученных данных мы построим прокси-тип в памяти И исследуем возможность сделать множественное наследование в .Net Также попробуем совместить в одном объекте и Java и .Net объект, запустив одновременно оба рантайма (привет, Xamarin) После чего, воспользовавшись полученным опытом расшарим объект .Net между процессами так чтобы он одновременно существовал бы в обоих мирах. Полученные знания мы используем для ответа на вопрос: какие стандартные конструкции языка приводят к проседанию производительности и каким образом? Подключим компилятор и сделаем собственный JIT с блекджеком d3073385d4f34aa9b069b717a1fc528a.jpg. CoreCLR В этой теме мы во всех подробностях раскроем возможности, которые встают перед вами при использовании открытого ядра .NetРассмотрим архитектуру CLR, доступную нам по исходным кодам Построим первое приложение, рассчитанное на кроссплатформенность и работающее на нашем собственном ядре Встроим в ядро метрики призводительности ядра, которые будет считывать само приложение Запустим ASP.NET приложение на ядре CoreCLR [сетка формируется] Roslyn: Мы не будем делать вводную: в интернете все доклады — это вводные и вы их видели Мы разберем от простого к сложному, как устроены существующие правила в поставке Roslyn (C# 6 features). Но рассмотрим не список, как это делают на конференциях, а их исходный код Как только мы их рассмотрим, мы рассмотрим существующие метрики на Roslyn. Как они написаны, как строятся метрики кода. Далее мы напишем не просто «подсчитаем количество букв «а» во всех словах исходных текстов, мы напишем поддержку кортежей для C#: var (x, y) = CalcCoords (); public (int, int) CalcCoords () { return (0,0); } И сделаем Nemerle оператор match match (i) { | 1 => Console.WriteLine (1) | 2 => Console.WriteLine (2) | x => Console.WriteLine (x) } match (i) { | x when (x < 0) => WriteLine («negative») | x when (x > 36) => WriteLine («more than 36») | x when (x % 2 == 0)=> WriteLine ($«valid even number $x») | x => WriteLine ($«valid odd number $x») } match (obj) { | iDisp is IDisposable => iDisp.Dispose () | _ => (); } ​​Это очень сложные примеры, которые так просто не напишешь за вечерок и это то, что вы хотите найти в сети Интернет, но не можете. 88572207fc3049c2b04541d03ce429fc.jpg JetBrains Nitra Почему JetBrains выкупила себе всех разработчиков проекта N2 и сделала ставку на его будущее? Потому что возможно перед нами будущая часть ядра или плагин для ReSharper: тула создания языков и трансляторов к ним. Мы рассмотрим все ее преимущества и попробуем в бою на примере создания парсеров языков DSL.Мы рассмотрим по шагам существующие примеры парсинга и попробуем в действии существующие тулы, которые его поддерживают Мы сделаем парсер собственной DSL и оценим трудозатраты, которые необходимы на построение собственного языка и поддержки IntelliSense Мы рассмотрим создание языка SpecFlow для поддержки тестирования. RyuJIT Мы опишем что нам даст его использование Попробуем запустить на нем проект и померить производительность приложения с ним и без него на наборе синтетических тестов Рассмотрим сценарии, когда бы его открытость, которая близится с каждым днем, дала бы нам преимущества CoreFx Многие говорят что открытость.Net Framework для сообщества и предоставление сообществу возможностей для свободного внесения правок — это плохо и черевато бесконечными багами, небрежным кодом и не стабильным API. Так ли это? Итоги полугода открытого.Net Framework CoreFx. Возросшая производительность от 10х до 1000х кратной в некоторых местах Закрытые баги Соотношение кода сообщества к коду команды.Net Framework Попробуем скомпилировать и разобрать по косточкам приложение, написанное под CoreFx Что-то пропустили? Если по-вашему мы что-то пропустили, пишите в комментах, о чем еще рассказать =) c62e85f6b85a481682cf2eaf51aff8f4.jpgКонтакты:

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

© Habrahabr.ru