Erlang руководство по исходному коду - PullRequest
16 голосов
/ 21 сентября 2010

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

Ответы [ 4 ]

16 голосов
/ 21 сентября 2010

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

9 голосов
/ 21 сентября 2010

Справочник по источнику Эрланга
http://www.trapexit.org/A_Guide_To_The_Erlang_Source

2 голосов
/ 24 сентября 2010

Прекрасный принтер луча можно сделать с помощью 'erlc -S', что эквивалентно hipe: c (M, [pp_beam]), упомянутому Даниелем.

Я также использую erts_debug:df(Module)., чтобы разобратьзагруженный код луча, которые фактически интерпретируются инструкциями виртуальной машины.

Иногда я использую отладчик.OTP очень хорошо предоставляет инструменты, поддерживающие GDB.Пример использования см. На http://www.erlang.org/pipermail/erlang-questions/2008-September/037793.html

2 голосов
/ 21 сентября 2010

Краткий ответ: хорошего руководства нет.И код не очень хорошо документирован.

Я рекомендую найти кого-то в вашем районе, кто достаточно хорошо знает код, и купить им ужин в обмен на небольшой чат.

Если вы неу меня нет возможности сделать это, тогда я рекомендую начать с загрузчика.

./erts/emulator/beam/beam_load.c

Некоторую полезную информацию также можно найти, распечатав представление луча.Я не знаю, есть ли какой-нибудь способ сделать это, предоставленный OTP, но у проекта HiPE есть некоторые читы.

hipe:c(MODULE, [pp_beam]).

Должны ли вы начать.

(И я также рекомендуюКнига Джо.)

...