Show HN: W++ – NuGet 지원을 갖춘 .NET용 Python 스타일 스크립팅 언어
요약
W++ v2는 Rust와 LLVM을 기반으로 새롭게 재설계된 .NET용 Python 스타일 스크립팅 언어입니다. 기존 C# 인터프리터 방식에서 벗어나 LLVM IR로 직접 컴파일되는 고성능 컴파일러 구조를 채택하여 실행 속도를 최적화했습니다.
핵심 포인트
- Rust로 재작성되었으며 LLVM을 타겟팅하는 진정한 컴파일러 구조 제공
- let 선언, 제어문, 사용자 정의 함수 등 핵심 프로그래밍 기능 지원
- LLVM 백엔드를 통한 네이티브 수준의 최적화된 실행 속도
- NuGet 지원을 통해 .NET 생태계와의 연동 가능
W++ 🦥
혼돈으로 만들어졌고, 나무늘보에 의해 단련되었으며, Rust로 다시 작성되었습니다.
🧠 W++ v2에 오신 것을 환영합니다 — LLVM 시대
W++ v2는 여러분이 요청한 적 없는 **나무늘보 기반 스크립팅 언어 (scripting language)**의 완전한 재탄생을 알립니다.
기존의 C# 인터프리터(interpreter)는 평화롭게 은퇴하였고, 그 자리에 **진정한 컴파일러 (compiler)**가 등장했습니다 — Rust로 구축되었으며, LLVM을 타겟팅하고, 의심스러운 인생의 선택들에 의해 구동됩니다.
이것은 단순한 재작성이 아닙니다. W++가 공식적으로 "장난감" 단계에서 "무서울 정도로 기능적인" 단계로 이동한다는 선언입니다.
⚙️ v2는 무엇이 다른가요?
| 기존 W++ | 새로운 W++ (v2) |
|---|---|
| ☠️ 비동기(async)의 눈물을 흘리는 C# 인터프리터 | 🦀 Rust + LLVM 기반 컴파일러 |
| ... |
🧩 핵심 기능
let선언 및 표현식 (expressions)print(네이티브printf를 통해 제공)if / else,while,for,break,continue- 사용자 정의 함수 (User-defined functions)
- 기본적인 예외 전역 변수 (exception globals) (여러분의 피할 수 없는 실수를 위해)
모든 기능은 LLVM IR로 직접 컴파일되며, Clang 및 Rust를 구동하는 것과 동일한 백엔드(backend)에 의해 최적화됩니다.
(네, 이제 여러분의 밈(memes)도 네이티브 속도로 실행됩니다.)
💾 설치 방법
-
Releases에서 사용 중인 플랫폼에 맞는 최신 바이너리(binary)를 다운로드하세요.
-
편리한 곳에 압축을 해제하세요.
-
시스템
PATH에 추가하세요. -
파일을 실행하세요:
ingot run hello.wpp
만약 폭발한다면, 축하합니다 — 제대로 사용하고 계신 겁니다.
🪟 Windows 지원에 대하여
현재 LLVM과 Windows는 서로 대화가 통하지 않는 상태입니다.
평화 협상이 성공하면 네이티브 바이너리(native binaries)가 다시 돌아올 것입니다.
그때까지는:
- WSL 🐧을 사용하거나
- Linux VM을 사용하거나
- 그냥 운명을 받아들이세요
💻 Chromebook에 W++ 설치하기 (일명, 보증을 무효화하는 방법)
그러니까... 여러분은 Chromebook을 사용 중이면서 이렇게 생각했군요:
"그래, 내 브라우저 기반 노트북에 나무늘보 기반 LLVM 컴파일러가 꼭 필요해."
존중합니다. 어떻게 실행하는지 알려드리겠습니다:
-
Linux (Crostini) 활성화
설정(Settings) → 고급(Advanced) → 개발자(Developers) → **Linux 개발 환경(Beta) 켜기(Turn On Linux (Beta))**를 선택하세요.
(만약 비활성화되어 있다면 — 죄송합니다, 학교 IT 관리자가 이미 재미를 싫어하는 모양이네요.) -
터미널(Terminal) 열기
“Penguin 🐧”라고 적힌 그 무시무시한 검은 창 — 바로 그겁니다.
업데이트를 요청하더라도 당황하지 마세요. 업데이트를 요청하지 않을 때 당황해야 합니다. -
리포지토리(repo) 수동 클론(Clone)
아직 화려한 설치 스크립트가 없기 때문에 (아직요 😭), 고전적인 방식을 사용해야 합니다:
sudo apt update
sudo apt install -y git build-essential llvm-15 clang-15
git clone https://github.com/sinisterMage/WPlusPlus.git
- PATH에 W++ 추가 (선택 사항이지만 전문가처럼 보이게 해줍니다)
echo 'export PATH="$PATH:$HOME/WPlusPlus/target/release"' >> ~/.bashrc
source ~/.bashrc
- 첫 번째 혼돈의 프로그램 실행하기
ingot run hello.wpp
무언가 출력된다면 — 축하합니다!
방금 Chromebook에서 프로그래밍 언어를 컴파일하셨습니다.
(이제 당신의 팬(fan)은 NASA 수준으로 작동하고 있을 겁니다.)
⚠️ 면책 조항: W++는 당신의 Chromebook이 자신의 존재 이유를 의심하게 만들 수 있습니다.
정서적 안정을 위해 근처에 간식을 준비해 두세요.
🧬 기술 스택 (Tech Stack)
- 언어 코어 (Language core): Rust 🦀
- 백엔드 (Backend):
inkwell+llvm-sys를 통한 LLVM 15 - CLI:
ingot, 이제 컴파일러를 라이브러리로 호출하는 독립형 바이너리(standalone binary)로 작동 - 최적화 (Optimization): JIT 및 빌드를 위한 선택적 패스(passes)
- 설계 목표 (Design goal): “컴파일이 되고, 재미있어야 한다.”
❤️ 크레딧 (Credits)
- LLVM Project – 존재해 주는 것과 내 삶을 힘들게 해주는 것에 대해 (여전히 사랑합니다 💕)
- Rust 커뮤니티 – 패닉 메시지(panic messages)를 시(poetry)로 바꿔준 것에 대해
- Wloth the Sloth – 모든 커밋(commit)을 0.2배속으로 승인해 준 것에 대해
🗺️ W++ 로드맵 (Roadmap) — 통제된 혼돈으로 가는 길
🦥 릴리스 1.0 — LLVM의 각성 (첫 번째 안정 버전)
-
드디어 **W++ v2의 최초 안정 버전(stable release)**이 출시되었습니다!
전부 Rust로 구축되었고, LLVM을 기반으로 하며, 네이티브한 혼돈의 속도로 실행됩니다. -
기존 C# 인터프리터로부터 완전히 재작성되었으며, 이제 다음을 포함합니다:
-
UTF-8 가변 이름 (UTF-8 variable names)
- 람다 지원 (Lambda support)
- 다중 디스패치 (Multiple dispatch)
- OOPSIE Framework™
- Ingot 패키지 레지스트리 (
ingotwpp.dev)
-
세그폴트 (segfaulting) 없이 실행된다면, 그것은 기능 (feature)입니다.
-
만약 그렇지 않다면 — 그것은 전통 (tradition)입니다.
“컴파일됩니다! 아마도요!”
🧩 계획된 라이브러리 (일명: 나무늘보 유니버스 확장팩)
| 라이브러리 | 설명 |
|---|---|
| 🧠 JSON | 네이티브 JSON 파싱 및 직렬화 (serialization) - ingot 레지스트리에서 확인 가능 |
| ... |
🧩 퍼스트 파티 라이브러리 가이드라인
- 모든 퍼스트 파티 W++ 라이브러리는 OSI 승인 허용적 라이선스 (permissive license) 하에 **오픈 소스 (open-sourced)**로 공개됩니다.
- 모든 퍼스트 파티 라이브러리는 실제로 작동해야 합니다.
네 — 심지어is-odd조차도 말이죠.
🧃 미래의 꿈 / 위협
- 감정적으로 분리된 메모리 관리 (memory management)를 위한
async drop - 네이티브 그래픽 API (
draw.rect,draw.wloth) - W++ Cloud ☁️ — 서버리스 (serverless), 상태 비저장 (stateless), 정신 나간 (sanity-less)
- 양자 지원 (우리가 “얽힌 null (entangled null)”이 무엇인지 알아낸 후에)
🦥 “W++는 결코 완성되지 않을 것입니다 — 오직 일시적으로 안정적일 뿐입니다.”
🦥 철학
W++는 결코 완벽해지기 위해 만들어진 것이 아닙니다.
이것은 재미있고, 혼란스러우며, 교육적이기 위해 만들어졌습니다 — 컴파일러를 끊임없이 파괴하려고 시도함으로써 컴파일러를 가르치는 언어입니다.
만약 당신이 W++ v2로 무언가를 만들었는데 세그폴트 (segfault)가 발생하지 않는다면, 그것은 기능 (feature)입니다.
나아가서, 혼돈을 컴파일하고, 나무늘보를 자랑스럽게 만드세요.
— Ofek “sinisterMage” Bickel 🦥
W++ 제작자 | 전문 혼돈 엔지니어 (Professional Chaos Engineer)
AI 자동 생성 콘텐츠
본 콘텐츠는 HN Game Dev의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기