VIM в браузере — Магия WASM


Нет, это не какой-то JavaScript-макет VIM, это действительно оригинальный настоящий VIM, скомпилированный в WASM и затем загруженный в браузер. Нет ничего более аутентичного или сумасшедшего, чем это. Это форма будущего.

Кто знает, возможно, в проекте WASM есть какой-то фатальный недостаток, который означает, что его потенциал никогда не будет реализован, но важно понимать, что, возможно, мы находимся на грани кардинальных перемен.

WASM — Web ASseMbly — это довольно низкоуровневое представление программы, состоящее из набора синтаксических деревьев, которые поддаются выполнению либо путем прямой интерпретации, либо с помощью виртуальной машины, либо путем компиляции в собственный код. Идея состоит в том, что представление кода должно обеспечивать быстрое выполнение с минимальной потребностью в дальнейшем синтаксическом анализе.

Изначально идея была представлена как способ сделать JavaScript более приемлемым. Давно сказано, что JavaScript — это ассемблер в сети, и WASM создан именно для этого. Однако не обязательно нацеливаться только на браузер. В стандарте WASM браузер — лишь одна из возможностей. Да, это еще один шанс получить Святой Грааль «напиши один раз, беги повсюду».

На данный момент все последние версии наиболее часто используемых браузеров поддерживают WASM. Это означает, что если вы возьмете компилятор, такой как LLVM C, и преобразуете его промежуточный битовый код в WASM, то вы сможете запустить программу на C в браузере или в любом другом месте, где WASM разрешен.

Конечно, все не так просто, потому что такая программа, как VIM, предполагает наличие операционной системы и других библиотек. Тебе еще нужно поработать.

Разработчик rhysd на GiHub имеет репозиторий, в котором вы можете избежать работы и просто загрузить и запустить его. Есть даже ссылка, которая просто откроет VIM в вашем браузере — надеюсь, вы помните команду выхода из нее.

Проект действительно подчеркивает некоторые трудности в работе с WASM, и одна из них, в частности, может быть проблемой, которая означает, что его успех не является определенным, как хотели бы нас убедить его сторонники.

Проблема в том, что вам необходимо создать службы ввода-вывода и другие службы ОС для программы, которую вы конвертируете, используя JavaScript. Также необходимо было закомментировать многие функции, которые не могли поддерживаться.

Да, то, что вы можете запускать VIM в браузере, впечатляет, но в основном это впечатляет из-за того, что в него вложено много работы. Как ни парадоксально, но было бы более впечатляюще, если бы это было легко.

На данный момент большая проблема с WASM заключается в том, что компиляция ряда языков в общий исполняемый формат — это не совсем то, что нам нужно. И .NET, и Java делают именно это, и им не удалось полностью захватить мир. Настоящая задача WASM состоит в том, чтобы предоставить все неязыковые функции, которые используются в среде выполнения. В этом смысле проект WASM больше похож на WINE — создание среды Windows под Linux. Разработка WINE продолжалась годами, так что вы можете запускать все больше и больше приложений для Windows, но всегда есть чем заняться, и всегда приложение, которое нарушает эмуляцию.

WASM должен стать проще в использовании, и для этого требуется огромный вклад в разработку. Недостаточно просто создать браузеры, которые могут выполнять код.

Теперь все, что я могу попросить, — это EMAC в браузере. а затем мы можем начать весь аргумент EMACs v VIM снова, но на этот раз с боковым порядком того, какой браузер лучше. Почему-то я не думаю, что этот сценарий привлечет подходящего программиста.

Ян Эллиот — автор книг по JavaScript, последней из которых является Just JavaScript: Idiomatic Approach.


Добавить комментарий