Автономная среда выполнения WebAssembly на базе генератора кода Cranelift, с поддержкой WASI и встраиванием в приложения на разных языках.
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
Установите .NET SDK 10.0.303 или новее
- 2
Установите шаблоны проектов NetWasm
dotnet new install NetWasm.Templates - 3
Создайте новое приложение NetWasm и запустите его
dotnet new netwasm-app -n HelloNetWasm - 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 обновляется ежедневно.
Похожие проекты
Компилятор Go на базе LLVM для микроконтроллеров, WebAssembly (WASM/WASI) и инструментов командной строки.
Экспериментальный компилятор TypeScript и JavaScript, который превращает программы в нативные исполняемые файлы или WebAssembly без необходимости устанавливать Node.js.
Среда выполнения WebAssembly и CLI для запуска приложений и кода AI-агентов в быстрых, лёгких и изолированных средах.
Набор инструментов компиляции, который преобразует код на C и C++ в WebAssembly для запуска в браузерах, Node.js и других Wasm-средах.
Язык и компилятор в духе TypeScript, преобразующие типизированное подмножество TypeScript в модули WebAssembly.