MOGWAI: .NET용 임베더블 스크립팅 엔진
요약
MOGWAI는 .NET 애플리케이션에 쉽게 임베드할 수 있는 경량 스크립팅 엔진입니다. 단 4줄의 코드로 복잡한 워크플로우나 사용자 정의 로직을 구현할 수 있게 합니다. 이 엔진은 NativeAOT 친화적이며, 데스크톱, 모바일, IoT 등 다양한 환경에 적합합니다.
핵심 포인트
- 단 4줄의 코드로 .NET 앱에 스크립팅 엔진 추가 가능
- 임베더블하고 확장성이 뛰어나며 NativeAOT를 지원함
- 워크플로우 스크립트 및 사용자 로직 노출에 유용
- C# 스타일과 RPN 형태 등 다양한 호출 방식을 제공
MOGWAI - .NET용 임베더블 스크립팅 (Embeddable Scripting for .NET)
단 4줄의 코드로 .NET 앱에 스크립팅 엔진을 추가하세요. 임베더블하고, 확장 가능하며, NativeAOT 친화적입니다 — 데스크톱, 모바일 또는 IoT 앱에 넣기 충분히 작아 워크플로우를 스크립트하거나 사용자에게 안전하고 핫스왑 가능한 로직을 노출할 수 있습니다.
▶ 지금 사용해 보세요 — 브라우저에서 MOGWAI 실행하기 — 설치나 가입이 필요 없으며, 완전히 클라이언트 측에서 실행됩니다.
MOGWAI가 유용해 보인다면, ⭐을 눌러 다른 사람들이 발견하도록 도와주세요 — 감사합니다!
MOGWAI란 무엇인가요?
MOGWAI는 .NET 애플리케이션에 임베드하는 경량 스크립팅 엔진입니다. 복잡한 워크플로우를 스크립트하거나, 안전하고 사용자 정의 가능한 로직을 노출하거나, 자체 DSL(Domain Specific Language)을 설계할 수 있으며, 이 모든 것을 .NET 런타임(NativeAOT 포함)을 벗어나지 않고 수행합니다.
익숙한가요? 그럴 겁니다.
foo(45 "TOTO" 17) # classic-style call — foo(45, "TOTO", 17)처럼 읽힙니다
foo[x: 10 y: 20] # named parameters, C#-style (이름 있는 매개변수, C# 스타일)
45 "TOTO" 17 foo # 정확히 같은 호출을 MOGWAI의 네이티브 RPN(Reverse Polish Notation) 형태로 작성
쉼표가 아닌 공백에 주목하세요. MOGWAI 매개변수는 공백으로 구분됩니다 —
foo(45 "TOTO" 17)이며,foo(45, "TOTO", 17)이 아닙니다. 익숙한 함수 호출처럼 읽히지만, 이 언어에는 쉼표 연산자(comma operator)가 없습니다.
내부적으로 MOGWAI는 스택 기반의 연결형 엔진입니다. 이것이 이 엔진에 연산자 우선순위에 대해 고민할 필요가 없는 명확하고 모호하지 않은 의미론을 부여합니다. 하지만 일상적으로는 위에서 본 고전적인 스타일의 구문으로 코드를 작성하고 읽을 수 있습니다. 스택 형태는 원할 때 항상 존재합니다 (더 나은 성능, 더 높은 조합성)만 필수는 아닙니다.
30초 만에 이해하는 스택
궁금한 분들을 위해 — 내부적으로 실제로 무슨 일이 일어나는지 알려드립니다.
MOGWAI는 왼쪽에서 오른쪽으로 읽습니다. 값들은 스택에 쌓이고; 연산자들은 스택에서 값을 소비하고 그 결과를 다시 푸시합니다. 연산자 우선순위도 괄호도 없습니다. 스택 위의 순서 자체가 프로그램입니다.
3 → [ 3 ]
4 → [ 3 4 ]
+ → [ 7 ]
...
단일 라인에 대한 동일한 계산 — 3 4 + 2 * — 역시 스택에 [ 14 ]를 남깁니다. 이것이 전체 아이디어입니다: 작은 조각들이 조합되고, 여러분이 보는 것은 정확히 일어나는 일과 같습니다.
RPN을 아직 준비하지 못했나요? calc 사용하기
스택 기반 사고방식이 낯선가요? 모든 공식을 수동으로 변환할 필요는 없습니다. calc 원시값(primitive)은 일반적인 중위 표기법(infix expression) 표현식 문자열을 받습니다 — 괄호, 연산자 우선순위 등을 모두 포함하여 — 내부적으로 RPN으로 변환하고 (Dijkstra의 Shunting-yard 알고리즘), 즉시 실행합니다.
"5 * X + (7 + sin(Y))" calc
이미 익숙한 방식으로 공식을 작성하고, 자신의 속도에 맞춰 RPN으로 성장할 수 있습니다.
주요 기능
- 클래식 스타일 구문 (Classic-Style Syntax) -
foo(45 "TOTO" 17)또는foo[x: 10 y: 20]처럼 작성 — C#/Java와 유사하게 읽히며, 시작하는 데 RPN이 필요하지 않습니다. - 354개 내장 함수 (Built-in Functions) - 수학(Math), 문자열(strings), 리스트(lists), 파일(files), HTTP 등 지원합니다.
- Async/Await 지원 - 최신 비동기 실행을 지원합니다.
- 플러그인 시스템 (Plugin System) -
MOGWAI.IPlugin을 통해 깔끔한 플러그인 계약(contract)을 제공하며, 공식 플러그인이 개발 중입니다. - 실전 검증됨 (Battle-Tested) - 10년 이상의 실제 사용 경험을 보유했습니다.
- 확장 가능 (Extensible) - .NET 애플리케이션과의 통합이 쉽습니다.
- NativeAOT 지원 - AOT(ahead-of-time) 컴파일된 .NET 앱에 임베드할 수 있습니다.
- 크로스 플랫폼 (Cross-Platform) - Windows, Linux, macOS, Android, iOS를 지원합니다.
- VS Code 확장 프로그램 (VS Code Extension) - 구문 강조 및 자동 완성 기능을 제공하며, VS Code에서 직접 실행 및 디버깅이 가능합니다. (install)
- 스택 기반 RPN 코어 (Stack-Based RPN Core) - 내부적으로는 깔끔하고 모호하지 않은 엔진을 사용하며, 원하는 경우 클래식 중위 표기법(infix) 수학 공식 처리를 위해
calc를 사용할 수 있습니다 ("5 * X + 2", Shunting-yard 방식 이용).
몇 초 만에 시작하기 (Get Started in Seconds)
사전 빌드 CLI 다운로드
MOGWAI를 가장 빠르게 사용해 보는 방법입니다. .NET SDK가 필요하지 않습니다. 릴리스 페이지(Releases page)에서 사용하는 플랫폼에 맞는 바로 실행 가능한 CLI를 다운로드하세요. 각 릴리스는 Windows (x64), Linux (x64 / arm64), macOS (x64 / arm64)용으로 자체 포함된 바이너리를 제공합니다: 아카이브를 다운로드하고 압축을 풀은 다음, MOGWAI_CLI 실행 파일을 실행하면 됩니다.
Windows 또는 macOS에서 처음 실행할 때. 이 바이너리들은 코드 서명(code-signed) 되어 있지 않기 때문에, 시스템이 처음 사용할 때 “인식되지 않은” 앱이라는 경고를 표시하는 것이 일반적입니다 — 이는 문제가 아니라 예상되는 상황입니다:
- Windows (SmartScreen): 추가 정보(More info) 클릭 → **어쨌든 실행(Run anyway)**을 선택하거나, 다운로드한 파일을 마우스 오른쪽 버튼으로 클릭 → 속성(Properties) → **차단 해제(Unblock)**를 수행한 후 압축을 푸세요.
- macOS (Gatekeeper): 바이너리를 마우스 오른쪽 버튼으로 클릭 → 열기(Open) → 확인하거나, 터미널에서
xattr -d com.apple.quarantine MOGWAI_CLI를 실행하세요.
소스에서 MOGWAI CLI 빌드하기
저장소(repository)를 클론하고 .NET SDK를 사용하여 사용하는 플랫폼에 맞는 CLI를 빌드하세요:
git clone https://github.com/Sydney680928/mogwai.git
cd mogwai/examples/Console/ConsoleExample/MOGWAI_CLI
dotnet run
또는 자립형 바이너리(self-contained binary)를 게시할 수 있습니다:
# Windows x64
dotnet publish -c Release -r win-x64 --self-contained
...
VS Code 확장 프로그램 (VS Code Extension)
Visual Studio Code에서 MOGWAI 스크립트를 작성, 실행 및 디버깅하고 전체 언어 지원을 받을 수 있습니다:
- 구문 강조(Syntax highlighting) — 연결된 런타임의 정적 키워드와 동적 프리미티브(primitives) 지원
- 자동 완성(Autocompletion) — 모든 런타임 프리미티브를 카테고리별로 색상 코딩하여 제공
- 실행 및 디버깅(Run & Debug) — VS Code를 벗어나지 않고 스크립트를 실행하고 코드 단계 추적(step through) 가능
- 런타임 패널(Runtime panel) — 스택, 로컬 변수 및 전역 변수의 실시간 보기 제공
- 오류 탐색(Error navigation) — 실패한 명령어(instruction)로 직접 이동
MOGWAI 언어 지원 설치하기를 VS Code Marketplace에서 설치하세요.
VS Code와 런타임 연결 방법: 단계별 연결 가이드는 MOGWAI_VSCODE.md를 참조하세요.
MOGWAI 생태계 (The MOGWAI Ecosystem)
MOGWAI 런타임 (MOGWAI Runtime) (오픈 소스)
핵심 스크립팅 엔진으로, NuGet 패키지 형태로 제공됩니다. MOGWAI를 .NET 애플리케이션에 임베드할 수 있습니다.
- 라이선스: Apache 2.0
- 패키지: NuGet에서 MOGWAI
- 상태: 프로덕션 준비 완료(Production ready)
API 안정성. MOGWAI는 Semantic Versioning을 따릅니다. 오늘 작성된 스크립트는 계속 작동하며, 언어 표면(syntax, primitives,
MW.x오류 코드)은 8.x 라인 내에서 안정적으로 유지됩니다. C# 임베딩 API는 아직 성숙 단계에 있으며, 간헐적인 호환성 변경 사항(breaking changes)은 CHANGELOG에 문서화되어 있습니다.
MOGWAI CLI (MOGWAI CLI) (오픈 소스)
MOGWAI 스크립트를 실행하고 대화형 REPL 세션을 위한 커맨드라인 인터페이스입니다.
- 라이선스: Apache 2.0
- 소스: 이 저장소 내의
examples/Console예제에서 빌드됨 - 상태: 기능적(Functional)
소스에서 빌드하기 (Build from source) — .NET SDK가 필요합니다:
git clone https://github.com/Sydney680928/mogwai.git
cd mogwai/examples/Console/ConsoleExample/MOGWAI_CLI
dotnet run
MOGWAI VS Code 확장 프로그램 (Extension)
구문 강조(Syntax highlighting), 자동 완성(autocompletion), 런타임 실행(runtime execution), 단계별 디버깅(step-by-step debugging), 라이브 변수 검사(live variable inspection) — 모두 VS Code 내부에서 직접 가능합니다.
- 라이선스: Apache 2.0
- 저장소 (Repository): Sydney680928/mogwai-vscode
- 마켓플레이스 (Marketplace): mogwai.mogwai-language
- 문서 (Documentation): MOGWAI_VSCODE.md
- 상태: 사용 가능 — v1.3.4
MOGWAI STUDIO
MOGWAI 8을 위한 시각적 IDE (디버깅, 중단점(breakpoints), 스택 검사(stack inspection), 코드 편집)이며, 현재 WinForms로 구축되었습니다 (Windows 전용). 자세한 내용은 mogwai.eu.com에서 준비되는 대로 확인하실 수 있습니다.
- 라이선스: 독점적 (Proprietary) (프리미엄)
MOGWAI로 구축된 프로젝트 (Built with MOGWAI)
MOGWAI 스크립팅 엔진으로 구동되는 오픈 소스 프로젝트:
| 프로젝트 | 설명 |
|---|---|
| GIZMO | MOGWAI 스크립팅을 사용하여 터미널 사용자 인터페이스(TUI) 애플리케이션 구축 — 크로스 플랫폼, 독립적, Apache 2.0 |
블로그 기사 (Blog Articles)
MOGWAI가 처음이신가요? 다음 세 가지부터 시작하세요:
- MOGWAI — 기원 이야기 (The Origin Story) — MOGWAI의 존재 이유와 출처
- MOGWAI 해부학 (Anatomy of MOGWAI) — 구성적 설계(concatenative design)의 기본 원리
- .NET MAUI 앱에 스크립팅 엔진 임베딩하기 — 엔드투엔드로 구현하는 임베딩 가치 제안(value prop)
- MOGWAI Snake — RPN 스크립팅 언어로 작성된 완전한 게임 - MOGWAI를 사용한 스네이크 게임, 가능합니다!
빠른 시작 (Quick Start)
설치 (Installation)
NuGet을 통해 MOGWAI 런타임을 설치합니다:
dotnet add package MOGWAI
Hello World
using MOGWAI.Engine;
using MOGWAI.Interfaces;
...

MOGWAI 언어 예제 (MOGWAI Language Example)
# 1 — ?로 출력하기
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기