Zylix — 7개 플랫폼용 Zig 기반 UI 프레임워크

발행: (2025년 12월 25일 오후 12:16 GMT+9)
7 min read
원문: Dev.to

Source: Dev.to

Zylix — Zig 기반 UI 프레임워크, 7개 플랫폼용 커버 이미지

Kazuhiro Kotsutsumi

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:

FrameworkTrade‑off
Flutter커스텀 Skia 렌더링 → 네이티브 느낌 감소
React NativeJS 브리지 → 성능 오버헤드
ElectronChromium 번들 → 거대한 바이너리 크기
TauriWebView → 제한된 네이티브 통합

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는 아직 초기 단계이지만, 이것이 여러분에게 공감된다면 함께 만들고 싶습니다.

읽어 주셔서 감사합니다.

Back to Blog

관련 글

더 보기 »