Как я могу проверить, соответствует ли моя реализация интерпретатора WebAssembly спецификации?

#webassembly

#webassembly

Вопрос:

Представьте, я хочу создать интерпретатор WebAssembly для определенной платформы. Я хочу убедиться, что он соответствует стандарту.

Как я могу проверить, работает ли мой интерпретатор WebAssembly в соответствии со стандартом?

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

Теперь я мог бы использовать эти тесты для тестирования моего интерпретатора. Если все эти тесты пройдены, означает ли это, что мой интерпретатор соответствует стандарту?

Ответ №1:

Взгляните на webassemblyjs, проект, который включает реализацию интерпретатора.

Если вы посмотрите на код, вы можете увидеть, что он включает спецификацию WebAssembly в качестве подмодуля. Тесты спецификации выполняются через вспомогательный пакет.

Как вы заметили, тесты спецификации написаны в текстовом формате WebAssembly, однако они добавляют дополнительные инструкции, относящиеся к конкретным тестам, например assert_return . Если вы посмотрите на helper-testsuite-runner проект, связанный выше, вы можете увидеть, что он реализует эти специальные тесты конкретных команд.