Подтвердить что ты не робот

Руководство по исходному коду Erlang

Мне интересно вникать в исходный код Erlang C и попытаться понять, что происходит под капотом. Где я могу найти информацию о дизайне и структуре кода?

4b9b3361

Ответ 1

Прежде всего, вы можете взглянуть на диссертацию Джо Армстронга, представляя Эрланг на высоком уровень. Будет полезно получить представление о том, какова была идея языка. Затем вы можете сосредоточиться на Erlang Run Time System (erts). Модуль erlang.erl может стать хорошим началом. Затем я хотел бы сосредоточиться на приложениях, которые составляют так называемый минимальный релиз, ядро ​​ и stdlib. Внутри stdlib посмотрите, как реализованы поведения. Могу ли я предложить модуль gen_server.erl в качестве запуска?

Ответ 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