Сегодня я пытался объяснить коллеге, что ||=
не является потокобезопасным в МРТ. Я решил, что посмотрю на источник Ruby, чтобы попытаться посмотреть, могу ли я указать место, где планировщик Ruby мог бы переключать контекст потока, но у меня возникли проблемы с навигацией по коду. Я надеялся, что кто-то более опытный может пройти меня через файлы, которые попали.
До сих пор я знаю, что Bison берет parse.y
и генерирует файл parse.c
, который вызывает некоторые базовые функции. Я вижу, что ||
анализируется как tOROP
, но затем я немного теряюсь в том, что происходит дальше
Также есть какой-то инструмент вроде Ripper, который я могу использовать, чтобы сделать этот процесс немного проще? (И на этой ноте было бы полезно, если бы кто-то мог указать мне, где определяется исходный код Ripper)