Zylix — 7개 플랫폼용 Zig 기반 UI 프레임워크
Source: Dev.to

Introduction
“Zig만으로 모든 것을 만들 수 있을까요?”
그 간단한 질문이 Zylix 를 시작하게 했습니다.
Zylix는 Zig를 중심으로 만든 크로스‑플랫폼 UI 프레임워크입니다. 하나의 코드베이스로 다음과 같은 네이티브 애플리케이션을 만들 수 있습니다:
- Web (WASM)
- iOS
- Android
- macOS
- Linux
- Windows
지원되는 타깃은 이제 총 7개로 확대되었습니다.
우리는 v0.19.0 을 방금 출시했으며, 이는 PoC 단계의 종료를 의미합니다. 프로젝트는 아직 초기 단계이지만, 그 아이디어와 설계에 대해 공유하고 싶습니다.
The name
If you’re a long‑time Delphi user, the name Zylix might feel familiar.
Yes — it’s inspired by Kylix, Borland’s early‑2000s attempt to bring Delphi to Linux. Kylix didn’t last, but the idea of “one language, many platforms” still feels powerful.
Zylix is a modern attempt to revive that spirit with Zig.
Zig + Kylix = Zylix.
Why Zig?
Cross‑platform development already has a lot of options. Each comes with trade‑offs:
| Framework | Trade‑off |
|---|---|
| Flutter | 커스텀 Skia 렌더링 → 네이티브 느낌 감소 |
| React Native | JS 브리지 → 성능 오버헤드 |
| Electron | Chromium 번들 → 거대한 바이너리 크기 |
| Tauri | WebView → 제한된 네이티브 통합 |
Zig feels like a promising way to push past those limits:
- Zero‑cost abstractions – 런타임 오버헤드 없음
- Predictable performance – GC 없음, 결정적인 메모리 관리
- Cross‑compile ready – 모든 타깃을 위한 하나의 툴체인
- Full C ABI compatibility – Swift/Kotlin/C#와 손쉽게 통합 가능
- Compile‑time safety – 널 안전성, 경계 검사
Zylix 접근 방식
핵심 아이디어는 간단합니다:
UI를 통합하지 마세요. 의미와 결정을 통합하세요.
Flutter와 React Native와 같은 프레임워크는 UI 자체를 통합하려고 합니다. Zylix는 네이티브 UI 프레임워크(SwiftUI, Jetpack Compose, GTK4, WinUI 3 등)를 유지하고 로직 레이어만 공유합니다.
Zig에서 공유되는 것
- 애플리케이션 상태
- 비즈니스 로직
- 데이터 검증
- 이벤트 처리
플랫폼 고유로 유지되는 것
- UI 컴포넌트
- 애니메이션
- OS API
- 네이티브 제스처
Architecture
Zylix는 Central Brain 아키텍처를 사용합니다:
┌──────────────────────────────────────────────┐
│ Your Application │
├──────────┬──────────┬──────────┬─────────────┤
│ SwiftUI │ Compose │ GTK4 │ WinUI 3 │ HTML/JS
├──────────┴──────────┴──────────┴─────────────┤
│ C ABI Layer │
├──────────────────────────────────────────────┤
│ Zylix Core (Zig) │
│ Virtual DOM | State | Events | Diff | ... │
└──────────────────────────────────────────────┘
Benefits
사용자를 위한 장점
- 네이티브 외관 및 느낌
- 완전한 접근성 지원
- 작은 앱 크기
- 배터리 수명 향상
개발자를 위한 장점
- 로직을 한 곳에서 관리
- 컴파일 시 타입 안전성 보장
- 하나의 툴체인으로 교차 컴파일 가능
- 예측 가능한 메모리 동작
지원되는 플랫폼
Zylix는 현재 7개의 플랫폼을 목표로 합니다. 오늘날 안정적인 플랫폼은 다음과 같습니다:
- Web / WASM
- iOS
- Android
- macOS
- Linux
- Windows
- watchOS
Implementation example
A minimal counter shared across platforms.
Zig core (shared logic)
pub const State = struct {
counter: i64 = 0,
};
pub fn increment(state: *State) void {
state.counter += 1;
}
SwiftUI (iOS/macOS)
Text("\(zylixState.counter)")
Button("Increment") {
zylix_dispatch(.increment)
}
Jetpack Compose (Android)
Text("${zylixState.counter}")
Button(onClick = { zylixDispatch(INCREMENT) }) {
Text("Increment")
}
Same logic, fully native UI.
Project layout
zylix/
├── core/ # Zig 코어 라이브러리
├── platforms/ # 플랫폼 구현
│ ├── android/ # Kotlin / Jetpack Compose
│ ├── ios/ # Swift / SwiftUI
│ ├── linux/ # GTK4
│ ├── macos/ # SwiftUI
│ ├── web/ # WASM
│ └── windows/ # WinUI 3
├── site/ # 문서 사이트
└── examples/ # 샘플 프로젝트
현재 상황 및 향후 계획
Zylix v0.19.0은 이제 PoC를 넘어섰습니다. Zenn 기사
(https://zenn.dev/kotsutsumi/articles/bd4607160de5be)에 따르면:
- 지원 대상이 7개로 확대되었습니다
- 핵심 기능 구현이 완료되었습니다
- 자동화 테스트가 구축되었습니다
- 현재는 실제 앱을 만들면서 경험을 검증하는 단계에 있습니다
이 단계가 가장 중요합니다. “작동한다”는 수준을 넘어, 실제로 무언가를 만들 때의 느낌이 어떤지 확인하는 것이 핵심입니다.
기여 환영합니다
Zylix는 오픈 소스 (Apache License 2.0)입니다. 모든 기여를 환영합니다:
- 🐛 버그 보고
- 💡 기능 아이디어
- 📝 문서 개선
- 🔧 풀 리퀘스트
GitHub:
Docs:
Zig에 관심이 있거나 크로스‑플랫폼 네이티브 앱에 대한 새로운 접근 방식을 원한다면, 한 번 살펴보세요.
마무리
“Zig로 모든 것을 구현한다”는 무모하게 들릴 수 있지만, 나는 가능한 것이 무엇인지 보고 싶었다.
네이티브 UX를 잃지 않고 로직을 공유할 수 있을까?
성능을 유지하면서도 여러 플랫폼을 타깃으로 할 수 있을까?
— Kazuhiro Kotsutsumi
tforms?
Zylix는 아직 초기 단계이지만, 이것이 여러분에게 공감된다면 함께 만들고 싶습니다.
읽어 주셔서 감사합니다.
