Skip to main content

Electron 6.0.0

· 8 min read

Electron 팀은 Electron 6.0.0 출시를 발표하게 되어 기쁩니다! npm install electron@latest 명령어를 통해 npm으로 설치하거나 릴리스 웹사이트에서 직접 다운로드할 수 있습니다. 이번 릴리스에는 다양한 업그레이드, 버그 수정, 그리고 새로운 기능이 포함되어 있습니다. 여러분이 이 기능들을 활용해 무엇을 만들어낼지 기대가 큽니다! 이번 릴리스에 대한 자세한 내용을 확인해 보세요. 여러분의 피드백도 언제나 환영합니다!

새로운 기능

오늘은 Electron 프로젝트에 있어서 특별한 날이다. 이번이 바로 Chrome 안정 버전동일한 날에 Electron의 안정 버전을 출시한 첫 번째 사례다! 🎉

Electron의 대부분 기능은 Chromium, Node.js, V8의 핵심 컴포넌트에 의해 제공된다. Electron은 사용자들에게 새로운 자바스크립트 기능, 성능 개선, 보안 패치를 제공하기 위해 이러한 프로젝트들과 최신 상태를 유지한다. Electron 6에서는 각 패키지의 메이저 버전이 업데이트되었다:

이번 릴리스에는 Electron API의 개선사항도 포함되어 있다. 릴리스 노트에서 더 자세한 목록을 확인할 수 있지만, 주요 내용은 다음과 같다:

프로미스화(Promisification)

Electron 6.0은 5.0에서 시작된 모던 자바스크립트 지원 개선 이니셔티브를 이어갑니다. 이번 업데이트에서는 Promise 지원을 더욱 강화했습니다.

다음 함수들은 이제 Promise를 반환하며, 기존의 콜백 기반 호출도 계속 지원합니다:

  • contentTracing.getCategories() #16583
  • contentTracing.getCategories() #16583
  • contentTracing.getTraceBufferUsage() #16600
  • contents.executeJavaScript() #17312
  • cookies.flushStore() #16464
  • cookies.get() #16464
  • cookies.remove() #16464
  • cookies.set() #16464
  • dialog.showCertificateTrustDialog() #17181
  • inAppPurchase.getProducts() #17355
  • inAppPurchase.purchaseProduct()#17355
  • netLog.stopLogging() #16862
  • session.clearAuthCache() #17259
  • session.clearCache() #17185
  • session.clearHostResolverCache() #17229
  • session.clearStorageData() #17249
  • session.getBlobData() #17303
  • session.getCacheSize() #17185
  • session.resolveProxy() #17222
  • session.setProxy() #17222
  • webContents.hasServiceWorker() #16535
  • webContents.printToPDF() #16795
  • webContents.savePage() #16742
  • webFrame.executeJavaScript() #17312
  • webFrame.executeJavaScriptInIsolatedWorld() #17312
  • webviewTag.executeJavaScript() #17312

다음 함수들은 이제 동기식과 Promise 기반 비동기식 두 가지 형태를 제공합니다:

  • dialog.showMessageBox()/dialog.showMessageBoxSync() #17298
  • dialog.showOpenDialog()/dialog.showOpenDialogSync() #16973
  • dialog.showSaveDialog()/dialog.showSaveDialogSync() #17054

다음 함수들은 이제 Promise를 반환합니다:

강화된 런타임을 활성화하기 위해 특별한 코드 서명 권한이 Helper에 부여되어야 한다. 강화된 런타임은 쓰기 가능한 실행 메모리나 다른 Team ID로 서명된 코드 로딩과 같은 기능을 제한한다.

이 권한을 필요한 프로세스 타입에만 적용하기 위해 Chromium은 Helper 앱의 세 가지 새로운 변형을 추가했다: 렌더러용 (Electron Helper (Renderer).app), GPU 프로세스용 (Electron Helper (GPU).app), 그리고 플러그인용 (Electron Helper (Plugin).app).

electron-osx-sign를 사용해 Electron 앱을 코드 서명하는 경우, 빌드 로직을 변경할 필요가 없다. 하지만 커스텀 스크립트로 코드 서명을 하는 경우, 이 세 가지 새로운 Helper 애플리케이션이 올바르게 서명되었는지 확인해야 한다.

이 새로운 Helper를 사용해 애플리케이션을 올바르게 패키징하려면 electron-packager@14.0.4 이상 버전을 사용해야 한다. electron-builder를 사용하는 경우, 이 이슈를 참고해 새로운 Helper에 대한 지원을 확인할 수 있다.

주요 변경 사항

  • 이번 릴리스는 렌더러 프로세스에서 로드되는 네이티브 Node 모듈이 N-API 또는 Context Aware여야 한다는 미래의 요구사항을 위한 기반을 마련한다. 이 변경의 목적은 더 빠른 성능, 강화된 보안, 그리고 유지보수 부담을 줄이기 위함이다. 자세한 내용과 제안된 타임라인은 이 이슈에서 확인할 수 있다. 이 변경사항은 Electron v11에서 완료될 예정이다.

  • net.IncomingMessage의 헤더가 Node.js 동작과 더 일치하도록 약간 변경되었다. 특히 set-cookie의 값과 중복 헤더 처리 방식이 조정되었다. #17517

  • shell.showItemInFolder()는 이제 void를 반환하며 비동기 호출로 변경되었다. #17121

  • 앱은 이제 app.getPath('log')를 사용하기 전에 새로운 함수 app.setAppLogPath()를 호출해 로그 경로를 명시적으로 설정해야 한다. #17841

3.x.y 버전 지원 종료

지원 정책에 따라, Electron 3.x.y 버전은 지원이 종료되었다. 개발자와 애플리케이션은 최신 버전의 Electron으로 업그레이드하는 것을 권장한다.

앱 피드백 프로그램

우리는 테스트를 위해 앱 피드백 프로그램을 계속 활용하고 있다. 이 프로그램에 참여하는 프로젝트는 자신들의 앱에서 Electron 베타 버전을 테스트하며, 그 대가로 발견한 새로운 버그는 안정 버전 출시 시 우선적으로 처리된다. 프로그램에 참여하거나 더 자세히 알고 싶다면, 프로그램에 관한 블로그 포스트를 확인해 보길 바란다.

다음 단계

단기적으로, 팀은 Electron을 구성하는 주요 컴포넌트인 Chromium, Node, V8의 개발 속도를 따라잡는 데 계속 집중할 것이다. 릴리스 일정에 대한 약속은 조심스럽게 다루지만, 대략 분기별로 이러한 컴포넌트의 새 버전과 함께 Electron의 새로운 주요 버전을 출시할 계획이다. Electron 7.0.0의 예정된 일정은 Electron 7 개발 주기의 주요 날짜를 보여준다. 또한, Electron의 버전 관리에 대한 더 자세한 정보는 버전 관리 문서를 참고한다.

다가오는 Electron 버전에서 예정된 주요 변경 사항에 대한 정보는 예정된 주요 변경 사항 문서를 확인한다.