Состояние отладки JavaScript в Webassembly

БАРСЕЛОНА. Отладка webassembly остается, по понятным причинам остается проблемой для этой относительно новой и захватывающей технологии, которая все еще развивается. Первоначально разработанный для браузера, он хорошо функционирует в этой среде, особенно для отладки веб -приложений из другого браузера. Emscripten, в качестве компилятора Toolchain и расширений, встроенных в Firefox и Chrome, предлагает достаточно надежную отладку для WASM, работающего в браузере.

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

Перед тем, как обсудить авансы в этом году по отладке приложений JavaScript в Webassembly, давайте сначала рассмотрим прошлогодний ISM I/O 2024. Был резкий контраст между обсуждением отладки, представленными тогда и в ISM I/O 2025. Во время разговора WASM I/O 2024, «Никто не знает, что проблема, с которой я видел: отладку WASM для веб -и сервера», Natalia Venditto из Microsoft, которая руководит разработчиком для JavaScript DX и Devtools на Microsoft Azure и Ralph Squillace, основной менеджер продуктов для Microsoft Azre Core вверх, описанный в дальнейшем, непреклоненном эминтере, из -за того, что он был в будущем. Браузер, особенно в бэкэнде.

В течение предыдущего года отладка браузера JavaScript была возможна в коде VS с использованием модуля «Core WASM» (т.е., а не компонента). Это было выполнимо, потому что статические языки без времени выполнения (например, C, C ++ и ржавчина) могут быть отладки. Тем не менее, общий опыт был неоптимальным.

Кроме того, JavaScript или Python нельзя отладить, потому что их время выполнения должно быть встроено в модуль вместе с кодом JavaScript или Python, поднимая вопрос о том, как прикрепить отладчик. В отличие от статических языков, JavaScript является языком сценариев и не включает в себя карликовые или подобные метаданные отладки. Отладка интерпретируемых языков требует использования функций, специфичных для интерпретатора, таких как API -интерфейсы отладки V8 или Spidermonkey.

Однако отладка компонентов была совершенно безуспешной. Это было невозможно, потому что время забега не предоставило информацию в формате, что отладчики, такие как GDB или LLDB, могли интерпретировать, что привело к сбоям системы. В этом году, на самом деле, Squillace Microsoft описал состояние отладки JavaScript в 2024 году как для передней, так и для бэкэнда как «смущающего».

Как сказала Вендитто во время ее выступления, появились две проблемы: во -первых, определение того, что принадлежит внутри модуля webassembly в сравнении с тем, что должно оставаться в стандарте JavaScript; и во -вторых, управление процессом отладки. Может существовать несколько слоев, и доступ к этим слоям может быть непрерывно. «Новые знания могут потребоваться», — сказал Вендитто.

Как отметил Вендитто, почти 100% разработчиков JavaScript, когда его спрашивают о предпочтительном редакторе кода, выберите код VS. По ее словам, предпочтительная среда остается последовательной на протяжении всего рабочего процесса: во время сборки, развертывания и отлады от отладывания облаков.

«Браузер продолжает служить основной средой для разработчиков JavaScript. Эта среда обеспечивает знакомство, известные инструменты и эффективные рабочие процессы»,-сказал Вендитто.

Вендитто описал сценарий разработчика JavaScript, который хочет использовать Webassembly в приложении и управлять всем рабочим процессом. Проблемы: во -первых, определение того, что принадлежит внутри модуля webassembly в сравнении с тем, что должно оставаться в стандарте JavaScript; и во -вторых, управление процессом отладки. «Может существовать несколько слоев, и доступ к этим слоям может быть непрерывно. Может потребоваться новые знания», — сказал Вендитто.

Несмотря на эти проблемы во время ее выступления, Вендитто добилась успеха отладки, как описано выше, но это было очень сложно и сложно. «Строительство в знакомом контексте остается важным», — сказал Вендитто.

Перенесемся на 2025 год ввода/вывода WASM во время разговора «Нет больше печати: интерактивная отладка WASM для веб -и сервера», данного Squillace и Fermyon’s Till Schneadereit. Обсуждение было сосредоточено на отладке JavaScript в Webassembly с использованием двигателя Spidermonkey и VS -кода.

В этом году отмечалось две ключевые этапы: во -первых, демонстрируя, что отладки компонентов были возможными и эффективными (выполнены с использованием ржавчины); Во -вторых, анализируя, почему интерпретируемые языки трудно отлаживать в Webassembly, а затем представляя обобщенное решение. Это решение затем было продемонстрировано с использованием SpidermonKey, скомпилированной в компонент, называемого StarlingMonkey, и дополнительно подтверждено путем создания расширения кода VS, способного подключиться к API отладки компонентного выполнения StarlingMonkey.

Последняя задача была представлена ​​и продемонстрирована Schneidereit. С тех пор было подтверждено, что это точный метод, используемый для реализации отладки WebaseMbly Python в коде VS. Следовательно, ожидается, что тот же подход будет работать для компонентов Python, а также для других языков со временем выполнения, таких как Golang. Цель состоит в том, чтобы обобщить этот метод, чтобы его можно было применить к любому компоненту с использованием интерпретированного языка и оставаться совместимым с любым временем выполнения Webassembly.

В разговоре использовался пример отладки кода компонента Webassembly, который использует время выполнения Spidermonkey, составленное в компонент, чтобы описать, почему было трудно отлаживать интерпретируемые языки, что нужно сделать, чтобы сделать это, и продемонстрировал, как это выполнено. Кроме того, шаблон для расширения может работать и для других выступлений Wasm, сказали они. Schneidereit подчеркнул необходимость объединенного опыта отладки на разных языках, включая .NET и Python, и цель обеспечения отладки между компонентами в многолучевой среде. Сеанс также освещал использование конфигураций запуска в коде VS для отладки и потенциал для отладки после развертывания в живых средах.

Squillace выразил энтузиазм по поводу достижений в инструментах отладки, в частности, подчеркивая интеграцию инструментов C ++ и статического анализа. Он ссылался на предыдущие проблемы, столкнувшиеся в прошлом году, и отметил переход вдали от нативных зависимостей кода.

Schneidereit сказал, что основное внимание уделяется не созданию нового отладчика для Bytecode Webassembly, но является подходом, который требует расширения кода VS для использования сокетов для подключения API отладки Starlingmonkey к расширению VS -кода.

Процесс, описанный во время разговора, заключается не в создании нового отладчика так же, как о том, как использовать API отладчика Debugger Debin Runting в компоненте WASM. Этот подход избегает необходимости напрямую осматривать байт -код. Вместо этого используется встроенный отладчик контента в SpidermonKey, подключается к внешним отладчикам, таким как VS-код через разъемы. Этот метод оказывается полезным для производственных сборов, устраняя необходимость встроенных символов отладки или оптимизации отключений. Более того, это не зависит от какого-либо конкретного времени выполнения, в отличие от других решений, которые требуют комплексных реализаций отладки на основе карликов, сказал Schneidereit.

Демонстрация демонстрирует node.js, работающий с компонентами, обрабатываемыми JCO, который преобразует основной профиль JavaScript в набор модулей WebAssembly, сопровождаемых кодом клея JavaScript. Эта настройка позволяет выполнять выполнение в node.js, которой не хватает поддержки нативного модуля. JCO, по умолчанию, использует порт 8000, облегчая тот же трубопровод для запуска JavaScript в SpidermonKey в компоненте Webassembly в node.js. По словам Шнадерета, эта конфигурация допускает последовательный опыт отладки в разных средах, включая прохождение кода и достижение точек останова.

По словам Шнадереита, заметным преимуществом этого подхода является требование только исходящего подключения к сокетам, устраняя необходимость запуска сервера сокета. Традиционная отладка часто включает запуск сервера отладки на отладном устройстве, например, в приложениях iOS или Android. Напротив, этот метод переворачивает процесс, требующий только исходящего соединения, которое упрощает удаленную отладку. По словам Шнейдерета, эта возможность позволяет отладку после развертывания в живых средах, отправив специальный запрос с ключом аутентификации, подключаясь к окружающей среде без необходимости перераспределения.

Следующие шаги включают координацию с другими языками программирования, включая .NET и Python, с целью объединения отладки опыта на разных платформах, сказал Schneidereit. Как указывалось выше, этот подход уже подтвержден, чтобы работать с компонентами Python, и ведутся работа по объединению этого опыта. Фактически, .NET уже продемонстрировал ту же функциональность, используя WASI Предварительный просмотр 1 (основные модули), а не компоненты. Это подтверждает, что подход жизнеспособен для таких языков, как .NET, а также для других, таких как Java. Цель состоит в том, чтобы включить использование одного и того же расширения, в идеале в пределах VS -кода, чтобы отладить различные языки. По словам Шнейдереита, поскольку используемый протокол не требует, чтобы код VS для распознавания конкретного языка, который будет отлаживаться, он должен только получать соответствующие сообщения, касающиеся макетов стека и другой информации отладки.

«Значительная мотивация этой работы состоит в том, чтобы проложить путь для стандартизированного решения, где время выполнения играет роль в содействии единому рабочему процессу отладки. В настоящее время подход полностью содержится в содержании, который ограничивает способность беспрепятственно переходить между компонентами», — сказал Шнейдерет.

Учитывая, что компонентная модель подчеркивает составление приложений из разных строительных блоков на различных языках, «конечная цель» состоит в том, чтобы обеспечить опыт отладки, который охватывает эти компоненты, сказал Schneidereit. «Это позволит разработчикам вступить в импортируемые функции из других компонентов, плавно переходя между различными языками, такими как переход от JavaScript к C#», — сказал Шнадерет. «Стремление состоит в том, чтобы достичь этой интегрированной способности отладки в ближайшем будущем».

Trending Stories youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. BC Gain является основателем и главным аналитиком Revecom Media. Его одержимость компьютерами началась, когда он взломал консоль космических захватчиков, чтобы играть весь день за 25 центов в местной видеокаде в начале 1980 -х годов. Затем он … читайте больше от B. Cameron Gain

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *