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 버전에서 예정된 주요 변경 사항에 대한 정보는 예정된 주요 변경 사항 문서를 확인한다.