Мне интересно вникать в исходный код Erlang C и попытаться понять, что происходит под капотом. Где я могу найти информацию о дизайне и структуре кода?
Руководство по исходному коду Erlang
Ответ 1
Прежде всего, вы можете взглянуть на диссертацию Джо Армстронга, представляя Эрланг на высоком уровень. Будет полезно получить представление о том, какова была идея языка. Затем вы можете сосредоточиться на Erlang Run Time System (erts). Модуль erlang.erl может стать хорошим началом. Затем я хотел бы сосредоточиться на приложениях, которые составляют так называемый минимальный релиз, ядро и stdlib. Внутри stdlib посмотрите, как реализованы поведения. Могу ли я предложить модуль gen_server.erl в качестве запуска?
Ответ 2
Руководство к источнику Erlang
http://www.trapexit.org/A_Guide_To_The_Erlang_Source
Ответ 3
Короткий ответ: хорошего руководства нет. И код не очень хорошо документирован.
Я рекомендую найти кого-то в вашем районе, который хорошо знает код, и купите им ужин в обмен на небольшой чат.
Если у вас нет возможности сделать это, я рекомендую начать с загрузчика.
./erts/emulator/beam/beam_load.c
Некоторая полезная информация также может быть найдена путем красивой печати представления луча. Я не знаю, есть ли способ сделать это, предоставленный OTP, но в проекте HiPE есть некоторые читы.
hipe:c(MODULE, [pp_beam]).
Должен вас начать.
(И я также рекомендую книгу Джо).
Ответ 4
Довольно принтер пучка может быть выполнен с помощью "erlc -S", что эквивалентно бегу: c (M, [pp_beam]), упомянутое Дэниелом.
Я также использую erts_debug:df(Module).
, чтобы разобрать загруженный код луча, которые являются инструкциями, фактически интерпретированными виртуальной машиной.
Иногда я использую отладчик. OTP предоставляет инструменты, поддерживающие gdb очень хорошо. См. Пример использования http://www.erlang.org/pipermail/erlang-questions/2008-September/037793.html