Семінар з анатомії CLR і .Net Framework

03-04 Квітня в Москві і 29-30 травня — у Санкт-Петербурзі пройде серія семінарів CLRium. У даного семінару немає певної цільової аудиторії, ми раді всім. І починаючим свою кар'єру, розробникам, і махровим, бачили види, архітекторам.

Як люди і хочуть, у нас будуть не просто технічні доповіді, без води і маркетингу. У нас буде багато тем, одна з яких — справжня розминка для мізків. Ми будемо дампів пам'яті розуміти як влаштована CLR і як з нею взаємодіяти не звичним для всіх способом — безпосередньо.

У нас буде:
  • Максимально глибокі, добірні доповіді з рідко-поставленого питання
  • Цілий вечір, присвячений виключно ядру .Net. Як з ним працювати «без рукавичок», безпосередньо, зі структурами в пам'яті, без рефлексії.
  • Стали популярними зони вільного спілкування в перерві.


Чим ми пишаємося:
  • Наш матеріал не зустрінеш в мережі Інтернет: він повністю авторський
  • Матеріал висвітлює найцікавіші області .Net, які чомусь не покриті матеріалом.
  • Ми не беремо зайвих грошей з вас і тому у нас найдешевша конференція та усіх існуючих. 2,000 рублів за два дні — такого не пропонує ніхто. Це ж як в магазин сходити. І, так, у нас немає ступенів 2,000 -> 3,000 -> 6,000 -> 10,000 залежно від дня. Не встигли зараз? Потім буде коштувати стільки ж. Ми не на ринку.
Анатомія CLR
У даному питанні я варюся вже близько року і досить щільно вивчив як влаштований CLR як структур даних щоб розповісти вам про них максимально детально. Інтерес до цього заходу має виникнути як мінімум тому що ця тема практично не представлена в Інтернеті і знання, які ви отримаєте, допоможуть Вам поглянути на платформу під зовсім новим кутом. Також даний розділ знань з CLR є надзвичайно цікавим. Microsoft з кожним днем тисне на нас словом «безпека». А так вона безпечна, ця CLR? А чи багато там «магії», що дозволяє нам не думати про безпеку? Це авторський проект і є результатом досліджень з відладчиком: яке строение.Net об'єктів у пам'яті і що з цим можна зробити.
  • По-перше ми подивимося на реальну будову об'єктів в пам'яті
  • По-друге ми досліджуємо структури даних в пам'яті, що відносяться до побудови віртуальних методів, реалізації інтерфейсів і класів (цього не було на CLRium #1)
  • Далі, на основі отриманих даних ми побудуємо проксі-тип в пам'яті
  • І досліджуємо можливість зробити множинне спадкування.Net
  • спробуємо поєднати в одному об'єкті і Java і .Net об'єкт, запустивши одночасно обидва рантайма (привіт, Xamarin)
  • Після чого, скориставшись отриманим досвідом расшарим об'єкт .Net між процесами так щоб він одночасно існував би в обох світах.
  • Отримані знання ми використовуємо для відповіді на питання: які стандартні конструкції мови призводять до просідання продуктивності і яким чином?
  • Підключимо компілятор і зробимо власний JIT.



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()
    | _ => (); 
    }
    
  • Це дуже складні приклади, які так просто не напишеш за вечір і це те, що ви хочете знайти в мережі Інтернет, але не можете.



JetBrains Nitra
Чому JetBrains викупила собі всіх розробників проекту N2 і зробила ставку на його майбутнє? Тому що, можливо, перед нами майбутня частина ядра або плагін для ReSharper: тула створення мов і трансляторів до них. Ми розглянемо всі її переваги і спробуємо в бою на прикладі створення парсера мов DSL.
  • Ми розглянемо покроково існуючі приклади парсинга і спробуємо в дії існуючі тули, які його підтримують
  • Ми зробимо парсер власної DSL і оцінимо трудовитрати, які необхідні на побудову власної мови і підтримки IntelliSense
  • Ми розглянемо створення мови SpecFlow для підтримки тестування.



RyuJIT
  • Ми опишемо що нам дасть його використання
  • Спробуємо запустити на ньому проект і поміряти продуктивність додатка з ним і без нього на наборі синтетичних тестів
  • Розглянемо сценарії, коли б його відкритість, яка наближається з кожним днем, дала б нам переваги


CoreFx
Багато говорять що открытость.Net Framework для спільноти та надання спільноти можливостей для вільного внесення правок — це погано і черевато нескінченними багами, недбалим кодом і не стабільним API. Чи це Так?
  • Підсумки півроку открытого.Net Framework CoreFx.
  • Збільшена продуктивність від 10х до 1000х кратною в деяких місцях
  • Закриті баги
  • Співвідношення коду спільноти до коду команды.Net Framework
  • Спробуємо зібрати і розібрати по кісточках додаток, написаний під CoreFx


щось пропустили?
Якщо по-вашому, ми щось пропустили, пишіть в коментах, про що ще розповісти =)

Почитати і зареєструватися

Контакти:


Контакти:


Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.