diff options
Diffstat (limited to 'users/tazjin/presentations/tvix-eval-2023/presentation.pdfpc')
-rw-r--r-- | users/tazjin/presentations/tvix-eval-2023/presentation.pdfpc | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/users/tazjin/presentations/tvix-eval-2023/presentation.pdfpc b/users/tazjin/presentations/tvix-eval-2023/presentation.pdfpc new file mode 100644 index 000000000000..ab5cba68bf45 --- /dev/null +++ b/users/tazjin/presentations/tvix-eval-2023/presentation.pdfpc @@ -0,0 +1,98 @@ +{ + "pdfpcFormat": 2, + "duration": 40, + "disableMarkdown": false, + "noteFontSize": 20, + "pages": [ + { + "idx": 1, + "label": "2", + "overlay": 0, + "note": "Привет, меня зовут .... Я уже много лет, с 2016г. примерно, пишу на Расте, и хотя на работе у меня часто бывают другие языки, Раст - любимый мой язык.\n\nПару лет назад, во время Кодида, я создал онлайн-коммюнити ТВЛ, и сегодня хочу вам об одном из наших проектов рассказать." + }, + { + "idx": 2, + "label": "3", + "overlay": 0, + "note": "монорепо: объяснить. Весь код орга в одном месте. Единный тулинг. Много из нас раньше работали в компаниях, где так делают (нп Гугл).\n\nМы хотели создать такой же тулинг, но открыто. Но у нас меньше ресурсов чем у Гугла, намного меньше. Пришлось выбрать эфф. способ.\nФокусируем на Никс, потому что (...). Есть доклад.\n\nМы начали его не только для пакетов использовать (конфиг и тд.), хотелось решение, которое работает везде." + }, + { + "idx": 3, + "label": "4", + "overlay": 0, + "note": "Будем фокусировать только на язык сейчас. Остальные части интересные, но не сегодня.\nЯзык ленивый, значит только вычисляем код, когда его результат нужен где-то.\nЗначит, нам нужен рантайм-представление отложенных вычислений.\nОрганично развивался: добавили фичи, когда нуждались. Много функтции работают только случайно, комбинации фич - часто странно. (шутка про С++?)\nНо есть хороший фактор: весь публичный код в принципе в одном репо. Объяснять nixpkgs." + }, + { + "idx": 4, + "label": "5", + "overlay": 0, + "note": "Текушая имплементация на С++. Вот пример. Кто-то здесь понимает, что мы видем? Это часть парсера в як, но тут создают рантайм-значения во время парсинга. Очень сложно понимать, читать, дебажить и так далее.\nЧитали парсер, и даже нашли там неизвестные фичи языка." + }, + { + "idx": 5, + "label": "6", + "overlay": 0, + "note": "Второй пример. Есть стракт Env, которая используется во многих местах в коде. Там массив типа Value.\nВот использование этого массива. Что мы видем? Кто понимает?\nДа, там на самом деле происходит каст на другой тип. Значит, в структуре добавляют данные, которые не подойдет. Очень unsafe!\n\nДа, что же делать? Пытались почистить код, но случилось burnout очень быстро. Меняешь одну маленькую штуку -> segfaults.\nПочему код вот такой? -> объяснять.\nПришлась очевидная идея." + }, + { + "idx": 6, + "label": "6", + "overlay": 1, + "note": "Переписать проекты полностью, обычно очень сложно. Но мы можем менять арх., и обходить переписивание некоторых частей.\nРаст - нам очевидный выбор для имплементация языка. Много нас знают Раст, и в целом, почему именно Раст, вы уже сами понимаете.\n\nМы от NLNet, организация, ..., получили денги за этого и начали с языком. Этот проект называем tvix-eval.\n\nЕсть еще одна важная причина для выбора Раста." + }, + { + "idx": 7, + "label": "6", + "overlay": 2, + "note": "Пару лет назад, шведский парень юзернеймом, который нельзя происносить, написал на Расте очень быстрый и в целом хороший парсер для Никса.\nЭтот парсер уже используется в разных с Никсом связанных проектах. Он скорее всего в пути стать дефольтним парсером Никса.\nКонечно, неплохо если мы его тоже используем.\nК сожалению, автор рникса умерл в 2021 году. Мали исвестно о том, что случилось. Мы ему очень благодарные, и я просто хотел его здесь упомянуть." + }, + { + "idx": 9, + "label": "8", + "overlay": 0, + "note": "показать opcode.rs, compiler/mod (compile_binop)\n\nчтобы он не разжирел (про variant_size_differences)\n" + }, + { + "idx": 10, + "label": "9", + "overlay": 0, + "note": "показать value/mod.rs, потом value/list.rs\n\nкороткая объяснение ситуации с Gc<...> vs. Rc<...>" + }, + { + "idx": 11, + "label": "10", + "overlay": 0, + "note": "показать vm/mod.rs\n\nпоследовательно выпольняет инструктции в execute_bytecode\n\nсначала на алфавитным порядке, потом с помощью профайлера меняли это" + }, + { + "idx": 12, + "label": "10", + "overlay": 1, + "note": "показать диаграмму\n\nгенераторый можно приостановить\n\nTCO - хвостовый вызов\n\nasync - очень наязчивный (intrusive), надо было его везде добавить, неудоб" + }, + { + "idx": 13, + "label": "10", + "overlay": 2, + "note": "Зависимо от времени, можно либо только про tvixbolt, либо тоже про тесты из cppnix" + }, + { + "idx": 14, + "label": "11", + "overlay": 0, + "note": "на самом деле удивительно легко, но сталкивались с проблемой, что он иногда перестал работать\n\nпоказать пример с SystemTime::now\n\nесть кое-какие библиотеки, которые мб помогут, но мы их пока не проверили\n\nв целом, wasm на расте довольно удобно" + }, + { + "idx": 15, + "label": "12", + "overlay": 0, + "note": "открытый проект, принимаем коммиты от всех\n\nесть еще баги, TODOs, и тд в tvix-eval\n\nно есть тоже остальные части твикса, что-то найдется" + }, + { + "idx": 16, + "label": "13", + "overlay": 0, + "note": "спасибо всем, вот ссылки, на QR-коде есть все вот этот вот, и там тоже потом добавлю сам доклад\n\nеще завтра начинается NixCon, если вам вдруг интересно, можно онлайн посмотреть. Там будет доклад про tvix тоже, но об остальных частях." + } + ] +} |