Як ви можете знати, Erlang має власне бінарне кодування BERT всередині своєї віртуальної машини під назвою BEAM.
Для enterprise RPC зазвичай ви використовуєте protobuf або MessagePack, Thrift або ASN.1 бінарні парсер-генератори.
Однак, як ви знаєте, Erlang не є надто швидким у будь-яких завданнях, окрім переміщування бінарних даних між сокетами.
Тому ми в Synrc зазвичай використовуємо нативне кодування Erlang BERT для всіх клієнтів з нульовим кодуванням/декодуванням на стороні сервера.
Кодери/декодери можуть бути двох видів:
строгі (з перевіркою моделі для підпису певного типу за допомогою сум та добутків)
та загальні, які кодують/декодують все, що може бути закодоване у коректне кодування.
Наприклад, JavaScript генератор кодування/декодування, представлений у даному репозиторії, є саме таким
(він не перевіряє типи та контанти, вказані в Erlang HRL файлах).
Натомість Swift версія може перевірити закодований/декодований вираз на відповідність специфікації Erlang типу.
Приклади
По-перше, ви можете вибрати мову, не представлену у цьому репозиторії,
та спробувати написати реалізацію вашого власного BERT генератора кодування/декодування для цієї мови,
користуючись Swift (строго відповідним специфікації типів) та JavaScript (нестрогим) генераторами у якості прикладів.
Мета цього конкурсу — створити кодери/декодери для кожної мови
та зробити мости до інших описаних форматів протоколів, таких як Can’n’Proto чи protobuf!