GN⁺: Electrobun - TypeScript로 작성된 크로스 플랫폼 데스크톱 애플리케이션
(electrobun.dev)- Electrobun은 Typescript로 작성된 초고속, 경량, 크로스 플랫폼 데스크톱 애플리케이션을 구축, 업데이트 및 배포하기 위한 완전한 솔루션을 제공하는 것을 목표로 함
- bun을 사용하여 메인 프로세스를 실행하고 웹뷰 Typescript를 번들링하며, zig로 작성된 네이티브 바인딩을 포함
-
주요 기능
- Typescript: 메인 프로세스와 웹뷰를 위한 Typescript를 작성할 수 있으며, 하나의 언어로 간편하게 작업 가능함.
- 빠름: 메인과 웹뷰 프로세스 간의 격리로 보안과 성능을 보장하며, 빠르고 타입이 지정된 RPC를 쉽게 구현할 수 있음.
- 작음: 약 12MB의 작은 자체 추출 앱 번들과 4KB만큼 작은 앱 업데이트로 자주 배포하면서 대역폭 비용을 절감할 수 있음.
- 완전한 통합: 5분 내에 코드 작성을 시작하고 10분 내에 배포할 수 있는 완전한 통합 워크플로우를 제공함.
Bun은 써보면 써볼수록 정말 마음에 들었습니다. 무엇보다 빠르게 동작한다는 목표를 아직까지도 충실하게 따르고 있는 점이 대단해 보입니다. 이 프로젝트는 잘되었으면 좋겠습니다.
Hacker News 의견
-
Electrobun은 Tauri와 비슷하지만 Zig를 사용하여 빠르고 네이티브한 부분을 구현하고, 프론트엔드/UI 부분에 더 집중하는 프로젝트임
- 이는 흥미로운 제안이지만 엄청난 작업량을 요구함
-
Electrobun의 개발자는 프로젝트가 초기 단계에 있으며, 로드맵이 업데이트가 필요하다고 언급함
- Tauri처럼 시스템 웹뷰를 사용하고, Chromium을 번들링하지 않음
- Electron처럼 Bun을 메인 프로세스로 사용하여 타입스크립트를 메인 및 브라우저 컨텍스트에서 사용함
- C/Objective-C로 작성된 네이티브 바인딩을 Zig 래퍼로 감싸서 Bun 프로세스가 실행함
- 크로스 플랫폼을 목표로 하지만 안정성에 우선 집중하고 있음
- CLI가 업데이트, 코드 서명 등을 처리하며, 빌드 아티팩트를 생성하여 S3나 정적 파일 호스트에 업로드할 수 있음
- Zig로 최적화된 bsdiff 구현을 통해 4KB 크기의 업데이트를 자동 생성함
- Zstd를 사용하는 자체 Zig 셀프 추출 메커니즘으로 초기 다운로드 크기를 최소화함
- Bun과 브라우저 프로세스 간에 메서드 시그니처와 핸들러만 작성하면 되는 암호화된 RPC 메커니즘을 제공함
- OOPIF 구현을 통해 성능이 뛰어나고 사용하기 쉬운 격리된 브라우저 컨텍스트를 HTML <electrobun-webview> 요소로 임베드할 수 있음
-
OS별 기능을 순수 타입스크립트로 어떻게 관리하는지, Tauri와 비교하여 크기와 속도에서 어떤 차이가 있는지 궁금해하는 의견이 있음
-
Electrobun의 렌더링 엔진에 대한 질문이 있으며, 프로젝트 이름이 Electron을 암시하지만 언급되지 않음
- Electrobun Playground 앱의 크기가 50.4MB로, 대부분이 Bun 런타임임
-
Electrobun의 성장을 지켜보는 것이 흥미롭다는 의견이 있으며, 바로 참여하지는 않겠지만 훌륭한 프로젝트라고 평가함
-
Electrobun은 Node.js를 Bun으로, Chromium을 WebView로 대체한 Electron이라는 의견이 있음
-
크로스 플랫폼 앱을 만들기 위한 대안이 많을수록 좋다는 의견이 있음
-
Electrobun이 NeutralinoJS, Electrino, DeskGap과 같은 또 다른 웹뷰 기반 프레임워크인지, Node 대신 Bun을 사용하는 것 외에 어떤 장점이 있는지 궁금해하는 의견이 있음
- 정말 가벼운 크로스 플랫폼 데스크톱 앱을 위해서는 Qt, GTK, wxWidgets, FLTK 1.4와 같은 비웹뷰 기반 네이티브 프레임워크를 사용하는 것이 좋다고 제안함
-
메인 프로세스와 웹뷰 프로세스 간의 격리로 인한 성능 문제를 우려하는 의견이 있음
- IPC 브리지를 사용하여 데이터를 공유해야 하며, 이는 모든 공유 데이터를 복사해야 함
- 예를 들어, ffmpeg를 사용하여 비디오를 디코딩할 때 각 프레임을 렌더링하기 전에 디코딩된 이미지를 복사해야 함
-
Electron의 대안으로 Bun을 사용하는 것이 좋지만, Electron보다 나은 것은 낮은 기준이라고 평가함
- Bun이 FreeBSD에서 작동하기를 기다리고 있으며, 크리스마스 위시리스트에 포함되어 있다고 언급함
기존에 nodejs로 개발 된 것들을 bunjs로 재작성하는 시도? 중 하나 일까요.
Bun 은 아직 안써봤는데 + 이미 node로 만들고 있고 만든 걸 Bun 으로 옮길 계획도 없는데...
10년 뒤엔 모르려나요. 혹시 모르니 만져보긴 해야겠네요.