Declarative GUI toolkit Slint v1.18 Released
선언형 GUI 툴킷 Slint 1.18 출시 — FlexboxLayout·스프링 애니메이션·실험적 Vello 렌더러
Rust 기반 선언형 GUI 툴킷 Slint가 1.18 버전을 공개했습니다. 이번 릴리스는 컴파일러가 더 작고 빠른 바이너리를 생성하도록 개선됐고, 웹의 Flexbox를 옮긴 FlexboxLayout, 스프링 애니메이션, 런타임 z-order 변경 등 생산성 개선이 중심입니다. 실험적 Vello 렌더러와 접근성·언어 서버 개선도 포함됐습니다.
- 주제
본문
Slint 개발팀이 Rust 기반 선언형 GUI 툴킷 Slint의 1.18 버전을 공개했습니다. 팀은 이번 릴리스를 '삶의 질(quality-of-life) 개선'에 초점을 둔 버전이라고 설명합니다. Slint는 임베디드 기기부터 모바일·데스크톱까지 다양한 타깃을 지원하며, 도메인 특화 언어(DSL)인 .slint 파일을 네이티브 코드로 컴파일하고 Rust, C++, JavaScript, Python으로 비즈니스 로직을 작성할 수 있는 툴킷입니다.
성능 개선
1.18에서는 Slint 컴파일러가 더 간결한 코드를 생성해 컴파일 속도가 빨라지고 결과 바이너리 크기도 줄어듭니다. 대량의 텍스트를 렌더링하고 편집하는 작업도 크게 빨라졌습니다. Windows용 Node.js 포트는 1.17부터 macOS와 Linux가 누려온 개선된 이벤트 루프 통합의 혜택을 받게 됐습니다.
레이아웃과 스태킹
새 레이아웃 타입인 FlexboxLayout이 추가됐습니다. 웹에서 익숙한 Flexbox 레이아웃 시스템을 Slint로 가져온 것으로, 친숙한 API와 아이템 줄 바꿈(wrapping) 등을 지원합니다. KDAB의 @dfaure-kdab이 이 작업을 이끌었습니다. 여기에 더해 런타임에 아이템의 z-order를 변경할 수 있는 기능도 마침내 도입됐습니다. 팀은 지난 릴리스의 cross-axis-alignment와 함께 이 기능들이 복잡한 Slint 기반 UI의 개발·유지보수 능력을 높여줄 것이라 기대합니다.
애니메이션 개선
스프링(spring) 애니메이션이 추가됐습니다. 모바일 폰에서 수년간 사용돼 온 방식으로, 기존의 고정 이징(easing) 커브를 보완해 더 자연스럽게 보이고 느껴지는 애니메이션을 만들 수 있습니다. 팀은 기본값인 spring(0.0)을 권장하며, 일상적인 이동과 페이드에서 사용자가 이미 익숙한 동작일 수 있다고 설명합니다. 또한 아이템이 경로(path)를 따라 움직일 때 애니메이션과 방향 지정(orientate)을 더 쉽게 할 수 있게 됐습니다.
언어 진화
.slint 언어 자체에서 배열과 모델에 대해 push, remove, insert가 가능해졌고, 모든 언어 바인딩에 대응하는 Model API가 제공됩니다. 구조체(struct) 필드는 이전에는 타입의 기본값(예: bool은 false)으로 초기화됐지만, 이제 API에 맞는 기본값을 직접 지정할 수 있어 반복적인 설정 코드를 줄일 수 있습니다. 개발 중 실제 앱 없이 목(mock) 데이터를 넣고 싶은 경우를 위해 Platform.uses-mock-data 상수가 추가됐는데, 라이브 프리뷰나 뷰어에서 파일이 표시될 때 true가 됩니다.
기타 수정과 개선
Vello 기반의 실험적 렌더러가 추가돼 renderer-vello Cargo feature와 CMake 옵션 뒤에 숨겨져 있으며, BackendSelector API나 SLINT_BACKEND=winit-vello, SLINT_BACKEND=linuxkms-vello로 선택할 수 있습니다. no-frame: true로 자체 장식을 그리는 앱에서는 WindowMoveArea 요소가 UI 영역을 창 이동 핸들로 바꿔줍니다. 스크린 리더가 이제 텍스트 입력의 내용과 선택 영역을 읽을 수 있게 됐으며, 언어 서버는 Slint 프로퍼티나 콜백 이름 변경 시 Rust·C++ 코드의 대응 접근자(accessor)도 함께 바꿀지 제안하고, import 코드 액션과 자동완성이 컴포넌트뿐 아니라 struct와 enum도 제공합니다.
Reddit 반응
- @u/meyagci — 저는 Slint가 정말 좋습니다. 프런트엔드 개발자가 아니지만 아이디어를 최종 사용자에게 전달하려고 GUI를 만들어야 하는 사람으로서, 선언형 언어는 훌륭합니다. VecModel 같은 것들도 마음에 듭니다. 변경 사항을 감시하고 자동으로 업데이트해 주거든요.
원문: Slint Blog / 번역·요약: Trawling