Repolode
zion-sati

zion-sati/NetWasm

Компилятор C# и .NET CIL в WebAssembly со своими CoreLib, runtime и SDK для создания компактных автономных компонентов WASI Preview 2.

Звёзды
233
Форки
7
Открытые issues
6
Последний коммит
2 часа назад

Что это?

NetWasm компилирует C# и .NET CIL напрямую в WebAssembly, используя собственные компилятор, CoreLib, runtime и SDK вместо поставки desktop CLR, Mono или DLL приложения. Компилятор анализирует достижимую часть программы и подключает только необходимые компоненты runtime. В результате получается автономный компонент WASI Preview 2, который запускается в Wasm-хосте, например Wasmtime, а для сборки используется обычный dotnet CLI.

Проект рассчитан на разработчиков, которым нужны компактные изолированные C#-бинарники, например для serverless-функций или модулей браузера. В нём предусмотрены три стратегии сборки мусора (по умолчанию Compact, а также NetWasmGC и Bump); C#-экспорты публикуются как типизированные JavaScript-модули, в том числе для запуска в Web Worker, а по WIT генерируются C#-биндинги. Поддерживается лишь определённая часть .NET: рефлексия во время выполнения, dynamic, загрузка сборок во время выполнения и управляемая многопоточность не входят в неё. Проект пока не достиг версии 1.0.

Ключевые возможности

  • 01Компилирует C# и .NET CIL напрямую в автономные компоненты WASI Preview 2.
  • 02Подключает только достижимый код и необходимые компоненты runtime, чтобы уменьшить размер бинарников.
  • 03Предлагает стратегии сборки мусора Compact, NetWasmGC и Bump.
  • 04Публикует C#-экспорты как типизированные JavaScript-модули, в том числе для использования в Web Worker.
  • 05Генерирует C#-биндинги по WIT и поддерживает нативное взаимодействие со статическими .a-библиотеками.
  • 06Позволяет собирать и запускать тесты через стандартный dotnet CLI.

Сценарии использования

  • Поставка компактных C#-функций для WebAssembly-хоста или serverless-среды выполнения.
  • Запуск C#-логики на странице браузера или в Web Worker в виде типизированного JavaScript-модуля.
  • Создание переносимых C#-библиотек для NetWasm и desktop .NET.
  • Оценка C# как компактной альтернативы более крупным сборкам Blazor WebAssembly для Wasm.

Быстрый старт

  1. 1

    Установите .NET SDK 10.0.303 или новее

  2. 2

    Установите шаблоны проектов NetWasm

    dotnet new install NetWasm.Templates
  3. 3

    Создайте новое приложение NetWasm и запустите его

    dotnet new netwasm-app -n HelloNetWasm
  4. 4

    Опубликуйте приложение как автономный компонент WASI

    dotnet publish -c Release -o publish/local

Что важно знать

  • NetWasm ещё не достиг версии 1.0, поэтому контракты исходного кода, пакетов и ABI могут меняться между минорными релизами.
  • Рефлексия во время выполнения, dynamic, загрузка сборок во время выполнения и управляемая многопоточность не поддерживаются.
  • Общие API для работы с файлами, каталогами, сокетами и дочерними процессами ещё не реализованы.
  • Для запуска опубликованного компонента требуется хост WebAssembly, например Wasmtime.

Темы

Частые вопросы

Что такое NetWasm?
Компилятор C# и .NET CIL в WebAssembly со своими CoreLib, runtime и SDK для создания компактных автономных компонентов WASI Preview 2. NetWasm компилирует C# и .NET CIL напрямую в WebAssembly, используя собственные компилятор, CoreLib, runtime и SDK вместо поставки desktop CLR, Mono или DLL приложения. Компилятор анализирует достижимую часть программы и подключает только необходимые компоненты runtime. В результате получается автономный компонент WASI Preview 2, который запускается в Wasm-хосте, например Wasmtime, а для сборки используется обычный dotnet CLI.
NetWasm можно использовать бесплатно? Какая у него лицензия?
NetWasm распространяется с открытым исходным кодом под лицензией Other. Перед использованием в коммерческих продуктах проверьте условия лицензии.
NetWasm всё ещё поддерживается?
Активно поддерживается. Последний коммит в NetWasm — 22 окт. 2026 г..
Для чего можно использовать NetWasm?
Поставка компактных C#-функций для WebAssembly-хоста или serverless-среды выполнения. Запуск C#-логики на странице браузера или в Web Worker в виде типизированного JavaScript-модуля. Создание переносимых C#-библиотек для NetWasm и desktop .NET. Оценка C# как компактной альтернативы более крупным сборкам Blazor WebAssembly для Wasm.
Как установить NetWasm?
Установите .NET SDK 10.0.303 или новее Установите шаблоны проектов NetWasm: dotnet new install NetWasm.Templates Создайте новое приложение NetWasm и запустите его: dotnet new netwasm-app -n HelloNetWasm Опубликуйте приложение как автономный компонент WASI: dotnet publish -c Release -o publish/local
Где скачать NetWasm?
Исходный код и инструкции по установке — на GitHub: https://github.com/zion-sati/NetWasm

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты