Да, именно так встроен нативный компилятор. Только те модули, которые скомпилированы с опцией + native, выполняются в собственном машинном коде, а остальные интерпретируются эмулятором BEAM как обычно. Когда вы делаете вызовы между модулями, скомпилированными по-разному, происходит «переключение режимов». Таким образом, вы можете легко смешивать собственные и эмулированные модули. Тем не менее, вы должны попытаться выбрать, какие модули вы компилируете, чтобы избежать переключения режимов в узких, критичных к производительности циклах, потому что каждый раз возникают небольшие накладные расходы.