Multi target externals

Може да указваме по няколко external (външни) имплементации за една и съща функция, което ни позволява да я ползваме и с Erlang, и с JavaScript.

Ако една функция няма external (външна) имплементация за целта (target), за която в момента се компилира, компилаторът ще покаже грешка.

Винаги се стремете да имплементирате функциите си за всички цели (targets), но не винаги това е възможно заради различия в начина, по който се извършва вход/изход (input/output) и паралелност (concurrency) в Erlang и JavaScript. В Erlang паралелният вход/изход се управлява от средата за изпълнение (runtime) автоматично (transparently), а в JavaScript паралелният вход/изход изисква използването на обещания (promises) или функции за обратна връзка (callbacks). Ако вашият код е написан в стил Erlang, обикновено е невъзможно да се имплементира и в JavaScript. Ако се използват функции за обратна връзка, няма да е съвместим с повечето Gleam и Erlang код, защото така всеки код, който извиква тази функция също ще е нужно да ползва функции за обратна връзка.

Библиотеките, които ползват паралелен вход/изход (I/O) обикновено е нужно да изберат дали ще поддържат Erlang или JavaScript, документирайки този избор в README файла на библиотеката.