Общее описание задачи
Необходимо выполнить три последовательных этапа по модификации и компиляции научного скрипта, написанного на Fortran. Исходный код скрипта расположен в открытом репозитории. Итогом работы является: форкнутый репозиторий с адаптированным кодом + рабочий модуль WebAssembly.
Этап 1. Адаптация ввода-вывода
- Дано: Скрипт на Fortran, который принимает входные данные из файла (
.in) и выводит результат в другой файл (.txt). - Требуется: Изменить программу таким образом, чтоб она считывала те же данные из стандартного потока ввода (
stdin) и сразу же выводила результат в stdout. - Формат ввода/вывода данных: Полностью идентичный существующему, меняется только способ передачи (поток вместо файла). Функционал не должен пострадать.
- Результат этапа: Ссылка на GitHub-репозиторий с модифицированным фортрановским кодом (форк оригинального репозитория).
Этап 2. Компиляция в WebAssembly (WASM)
- Цель: Создать рабочую сборку скрипта в виде модуля WASM.
- Инструмент: Рекомендуется использовать компилятор Emscripten (как основной инструмент для компиляции C/C++/Fortran в WASM, но обратите внимание, что предложенный 'Seqtk' - это утилита на C, для примера подхода к компиляции. Исполнитель должен подобрать подходящий компилятор для Fortran, например,
flang или gfortran при помощи флагов Emscripten). - Конфигурация: Сборка должна поддерживать перенаправление
stdin/stdout из/в JavaScript. - Результат этапа: Полученный файл
application.wasm и обвязка для вызова (Glue code .js). Всё это должно быть в общем репозитории с этапом 1.
Этап 3. Интеграция с JavaScript и проверка работоспособности
- Создать простой HTML-файл с JS-кодом и кнопкой для выбора/вставки данных.
- Убедиться, что WASM корректно грузится.
- Реализовать передачу данных в WASM через
stdin (например, используя FS.init или запись в фейковую файловую систему Emscripten). - Вывод
stdout проверить визуально, отобразив результат в текстовом блоке на странице (пример кастомной команды тестового запуска). - Сделать небольшой отчет или Readme в корне репозитория с инструкцией, как запускаются этапы.
Критерии завершения и приемки
- Скрипт корректно обрабатывает входные данные, соответствующие стандарту исходного DNAWorks.
- Весь стек - от модификации фортрана до кнопки в HTML - работает локально.
- Код аккуратный, README содержит описание шагов сборки.