Cranelift 코드 생성기를 기반으로 하며 WASI와 다양한 언어의 임베딩을 지원하는 독립형 WebAssembly 런타임입니다.
zion-sati/NetWasm
자체 CoreLib, 런타임 및 SDK를 갖춘 C# 및 .NET CIL-to-WebAssembly 컴파일러로, 소형 독립 실행형 WASI Preview 2 컴포넌트를 생성합니다.
- 스타
- 233
- 포크
- 7
- 열린 이슈
- 6
- 마지막 커밋
- 2시간 전
어떤 프로젝트인가요?
NetWasm은 데스크톱 CLR, Mono 또는 애플리케이션 DLL을 함께 배포하는 대신 자체 컴파일러, CoreLib, 런타임 및 SDK를 사용해 C#과 .NET CIL을 WebAssembly로 직접 컴파일합니다. 컴파일러는 프로그램에서 도달 가능한 코드만 대상으로 필요한 런타임 지원만 링크하므로, 결과물은 Wasmtime 같은 Wasm 호스트에서 실행되는 독립형 WASI Preview 2 컴포넌트입니다. 빌드에는 일반적인 dotnet CLI를 사용합니다.
이 프로젝트는 서버리스 함수나 브라우저 모듈처럼 크기가 작고 샌드박스에서 실행되는 C# 바이너리를 원하는 개발자를 대상으로 합니다. 세 가지 가비지 컬렉터 전략(기본값인 Compact, NetWasmGC, Bump)을 제공하고, C# 내보내기 함수를 Web Worker에서도 실행할 수 있는 타입이 지정된 JavaScript 모듈로 게시하며, WIT에서 C# 바인딩을 생성합니다. 지원 범위는 .NET의 일부로 한정됩니다. 런타임 리플렉션, dynamic, 런타임 어셈블리 로딩, 관리 스레딩은 포함되지 않으며, 프로젝트는 아직 1.0 이전 버전입니다.
핵심 기능
- 01C#과 .NET CIL을 독립 실행형 WASI Preview 2 컴포넌트로 직접 컴파일합니다.
- 02도달 가능한 코드와 필요한 런타임 지원만 링크해 바이너리 크기를 줄입니다.
- 03Compact, NetWasmGC, Bump 가비지 컬렉터 전략을 제공합니다.
- 04Web Worker에서 사용하는 경우를 포함해 C# 내보내기 함수를 타입이 지정된 JavaScript 모듈로 게시합니다.
- 05WIT에서 C# 바인딩을 생성하고 정적 .a 네이티브 상호 운용을 지원합니다.
- 06표준 dotnet CLI로 빌드하고 테스트합니다.
활용 사례
- 작은 C# 함수를 WebAssembly 호스트나 서버리스 런타임에 배포합니다.
- 타입이 지정된 JavaScript 모듈로 브라우저 페이지나 Web Worker에서 C# 로직을 실행합니다.
- NetWasm과 데스크톱 .NET을 모두 대상으로 하는 이식성 높은 C# 라이브러리를 빌드합니다.
- 더 큰 Blazor WebAssembly 빌드 대신 간결한 Wasm 대안으로 C#을 평가합니다.
빠른 시작
- 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는 아직 구현되지 않았습니다.
- 게시된 컴포넌트를 실행하려면 Wasmtime과 같은 WebAssembly 호스트가 필요합니다.
토픽
자주 묻는 질문
- NetWasm은(는) 무엇인가요?
- 자체 CoreLib, 런타임 및 SDK를 갖춘 C# 및 .NET CIL-to-WebAssembly 컴파일러로, 소형 독립 실행형 WASI Preview 2 컴포넌트를 생성합니다. NetWasm은 데스크톱 CLR, Mono 또는 애플리케이션 DLL을 함께 배포하는 대신 자체 컴파일러, CoreLib, 런타임 및 SDK를 사용해 C#과 .NET CIL을 WebAssembly로 직접 컴파일합니다. 컴파일러는 프로그램에서 도달 가능한 코드만 대상으로 필요한 런타임 지원만 링크하므로, 결과물은 Wasmtime 같은 Wasm 호스트에서 실행되는 독립형 WASI Preview 2 컴포넌트입니다. 빌드에는 일반적인 dotnet CLI를 사용합니다.
- NetWasm은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- NetWasm은(는) Other 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- NetWasm은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. NetWasm의 마지막 커밋은 2026년 10월 22일입니다.
- NetWasm은(는) 어디에 사용할 수 있나요?
- 작은 C# 함수를 WebAssembly 호스트나 서버리스 런타임에 배포합니다. 타입이 지정된 JavaScript 모듈로 브라우저 페이지나 Web Worker에서 C# 로직을 실행합니다. NetWasm과 데스크톱 .NET을 모두 대상으로 하는 이식성 높은 C# 라이브러리를 빌드합니다. 더 큰 Blazor WebAssembly 빌드 대신 간결한 Wasm 대안으로 C#을 평가합니다.
- 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를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
LLVM 기반 Go 컴파일러로, 마이크로컨트롤러, WebAssembly(WASM/WASI), 명령줄 도구를 대상으로 합니다.
Node.js 없이 실행되는 네이티브 실행 파일이나 WebAssembly를 만드는 실험적인 TypeScript·JavaScript 컴파일러입니다.
앱과 AI 에이전트 코드를 빠르고 가벼운 샌드박스 환경에서 실행하는 WebAssembly 런타임 및 CLI입니다.
C와 C++ 코드를 WebAssembly로 컴파일해 브라우저, Node.js 및 기타 Wasm 런타임에서 실행할 수 있게 하는 컴파일러 툴체인입니다.
타입이 지정된 TypeScript 부분집합을 WebAssembly 모듈로 컴파일하는 TypeScript 유사 언어이자 컴파일러입니다.