dbezhetskov

23 ноября 2020, Novosibirsk, Russia

# Понедельник 9 твитов

Привет хакеры! Всю эту неделю я буду ващим MC из мира разработки компиляторов.

12:55

Тут буквально на днях я работал над webassembly в JavaScriptCore. JavaScriptCore это движок для JS и webassembly в… twitter.com/i/web/status/1…

15:09

Я уже привык что код на c++, да еще и в больших проектах не блещет новыми идеями и фишками из новых стандартов, раз… twitter.com/i/web/status/1…

15:10

Посмотрите на эту кучу макросов: webkit-search.igalia.com/webkit/source/…,
WASM_PARSER_FAIL_IF(!parseVarUInt32(elementCount), "can't… twitter.com/i/web/status/1…

15:11

Спустя буквально пару часов я прозрел, блин, а это удобно. Не надо как в Go писать каждый раз if not error, просто… twitter.com/i/web/status/1…

15:12

Посмотрите как функция объявлена, auto SectionParser::parseElement() -> PartialResult, это же в прямом виде rail wa… twitter.com/i/web/status/1…

15:13

Также Андрей Александреску предлагал внести похожий способ обработки ошибок в c++: youtube.com/watch?v=CGwk3i….

15:13

Возвращаясь к своей задаче я написал пару функций для парсинга в стиле:
PartialResult WARN_UNUSED_RETURN parseElemK… twitter.com/i/web/status/1…

15:14

Вот к слову и патч в JSC который добавляет поддержку обновленной секции elements и reference-type proposal: bugs.webkit.org/attachment.cgi….

15:17

# Вторник 16 твитов

“Пфф, да как два байта дописать.” Людям, которые не знакомы с внутренней кухней разработки браузеров или компилятор… twitter.com/i/web/status/1…

16:59

Например, средний инженер гугла может потратить всю свою карьеру только на то, чтобы в google drive интерфейсе прав… twitter.com/i/web/status/1…

16:59

Другой пример парольный менеджер в браузере. Рядовой фулстек разработчик скажет что это по сути всего лишь бд для п… twitter.com/i/web/status/1…

16:59

Вот в прошлом году мне поручили сделать оптимизацию в wasm, которая помимо всего прочего требовала поменять ABI в S… twitter.com/i/web/status/1…

16:59

ABI это application binary interface, т.е. это что-то похоже на api, в том смысле что это тоже набор соглашений о т… twitter.com/i/web/status/1…

16:59

В отличии от API ABI работает на более низком уровне и отвечает на такие вопросы: а как физически передавать параме… twitter.com/i/web/status/1…

16:59

Если не сильно вдаваться в мотивацию, то мне надо было добавить пару байтов прямо после аргументов функции на стек… twitter.com/i/web/status/1…

16:59

Я пропущу тот момент что задача требовала еще и проведения небольших исследований, а опишу лишь небольшой перечень… twitter.com/i/web/status/1…

16:59

  • В SM то и дело в разных частях кода раскидано знание о abi: где и в каких регистрах ожидаются значения и т.д. Та… twitter.com/i/web/status/1…
  • 16:59

  • Делать платформенно-зависимые правки и фиксить баги для arm32, arm64, x86 и конечно x86_64, благо mips и mips64… twitter.com/i/web/status/1…
  • 16:59

  • Менять и фиксить баги в двух компиляторах - Baseline и Ion. Это было относительно легко, потому что и Baseline и… twitter.com/i/web/status/1…
  • 16:59

  • Эх, еще от моих правок отвалился аллокатор регистров. Аллокатор регистров это компонента компилятора которая обы… twitter.com/i/web/status/1…
  • 16:59

  • Не сильно сложный пункт, но нужно помнить что разные OS требуют разного ABI, особенно windows с его shadow stack… twitter.com/i/web/status/1…
  • 16:59

  • Чтобы это все залить в браузер надо разбить все работу на очень маленькие кусочки и заливать по отдельности на р… twitter.com/i/web/status/1…
  • 16:59

  • Наконец после заливки ваш код может внезапно упасть через неделю на какой-нибудь конфигурации OS + arch, наприме… twitter.com/i/web/status/1…
  • 16:59

    Подытоживая могу сказать что это не все так сложно как и я описал. Комитить в большие проекты это как играть в dark… twitter.com/i/web/status/1…

    16:59

    # Среда 13 твитов

    Третий день, хочется пожертвовать им и просто поговорить о книгах.

    14:02

    Меня много спрашивают о том, что бы такого почитать чтобы стать тру программистом, 10x или просто наконец-то выучит… twitter.com/i/web/status/1…

    14:02

    Вокруг книг много хайпа. Есть книга дракона, есть книга динозавра, есть книга тигра, я думаю есть еще и другие фант… twitter.com/i/web/status/1…

    14:02

    Забавно что этот культ "крутых" книг, по моему скромному мнению, поддерживают те люди, которые этих самых книг никогда и не читали.

    14:02

    Но если вы прям сразу как максимально крутой парень начнете читать книгу дракона, естественно в оригинале, в переры… twitter.com/i/web/status/1…

    14:02

    Это не значит что хороших книг нет, есть! Для себя я понял что читать их надо не для того чтобы прочитать, а для то… twitter.com/i/web/status/1…

    14:02

    Вообще, если хотите знать основы, то смело следуйте этому сайту, ничего лучше я не находил: teachyourselfcs.com

    14:02

    Есть великая книга - SICP, бьюсь об заклад её скачивания подскочат... Вообще, только ленивый не писал про эту книгу… twitter.com/i/web/status/1…

    14:02

    Моя рекомендация по sicp, начать с лекций на hexlet, они по sicp бесплатные. Это не реклама, просто мне там понрави… twitter.com/i/web/status/1…

    14:02

    Мне очень понравилась серия книг Clean*. Да, Роберт Мартин за свою жизнь написал только fitnesse, который не блещет… twitter.com/i/web/status/1…

    14:02

    По компиляторам мне нравится engineering a compiler. Она достаточно базовая, но хорошо структурирована и позволяет… twitter.com/i/web/status/1…

    14:02

    Также по компиляторам рекомендую видеокурс: openclassroom.stanford.edu/MainFolder/Cou…. Автор круто разбил все на модули и качественно все описал.

    14:02

    А что вы посоветуете?

    14:02

    # Четверг 1 твит

    @devongovett @threepointone @buildsghost @thomasankcorn I just presented on the topic of bundling and JavaScript, w… twitter.com/i/web/status/1…

    👍

    @devongovett @threepointone @buildsghost @thomasankcorn I just presented on the topic of bundling and JavaScript, w… twitter.com/i/web/status/1…

    11:36

    # Пятница 6 твитов

    #wasm очень интересная технология, но мне кажется что ей недостает фокуса на правильных вещах. Для себя я выделил 3… twitter.com/i/web/status/1…

    7:47

    1/3 Десктопные приложения которые сложно поставлять и которые одновременно требуют производительности.

    14:19

    1/3 Идеальный пример это ugene.net. Это IDE для генетиков пользователями которой являются студенты. П… twitter.com/i/web/status/1…

    14:19

    1/3 В итоге получаем отличную IDE для генетиков, которая не тащит за собой Qt и работает сразу в браузере и причем… twitter.com/i/web/status/1…

    14:19

    2/3 Игры. Вспомните сколько было прекрасных игр на flash. Да, технология оказалась небезопасной, но все же. Как тол… twitter.com/i/web/status/1…

    14:19

    3/3 язык для экспериментов для web. Эмуляция различных языков, эксперименты с отказом от JS в браузере и переписыва… twitter.com/i/web/status/1…

    14:19

    # Суббота 8 твитов

    Коммиты в какой-нибудь большой и известный компиляторный или браузерный проект позволяют попрактиковаться в промышл… twitter.com/i/web/status/1…

    13:37

    Но как начать если еще есть и основная работа не связанная с open-source или как начать когда непонятно с чего нача… twitter.com/i/web/status/1…

    13:37

    Если ты студент, то тут есть что выбрать. Я рекомендую обратить внимание на оплачиваемые стажировки - google summer… twitter.com/i/web/status/1…

    13:37

    Если ты не студент, то стажировки тоже есть, например outreachy.org. Но если хочется просто для души и ра… twitter.com/i/web/status/1…

    13:37

    Моя первая рекомендация это mozilla. Несмотря на все увольнения и странности с руководством в mozilla очень дружелю… twitter.com/i/web/status/1…

    13:37

    идем в codetribute.mozilla.org/projects/jseng и выбираем задачу с тегом good-first-bug. Там обычно что-то в духе переименовать пер… twitter.com/i/web/status/1…

    13:37

    BTW: в большом проекте всегда есть что можно доделать, но на это просто не хватает людей. Например TODO в wasm в SpiderMonkey очень много.

    13:37

    Не хотите SpiderMonkey, есть JSC (bugs.webkit.org), есть chromium (bugs.chromium.org/p/chromium/iss…), llvm и другие.… twitter.com/i/web/status/1…

    13:37

    # Воскресенье 2 твита

    Для high-level понимания не могу не порекомендовать блог wingolog.org.

    10:38

    Вот и пришло время прощаться, как говориться: Keep doom-scrolling, keep refreshing, have a good week.

    10:40

    other