what's new and what's next in electron & chromium [2016]
TRANSCRIPT
What's new and what's next: Electron & Chromium
Ben Gotow (@bengotow)
Electron• 364 pull requests closed since the last meet-up
• Cleaner public APIs, documentation in four more languages
• Web Notifications on Windows 8+
• Animated BrowserWindow.setBounds
Touch Events• Two new BrowserWindow events scroll-touch-begin, scroll-touch-end.
• IPC them into the renderer process and combine with wheel events to implement gestures!
https://github.com/bengotow/electron-swipe-to-archive
(Coming in the next Electron release)
Tracking Chromium
• Electron aggressively tracks Chromium and NodeJS releases.
• Currently at Chromium 47, Node 5.1.1.
• We’re one of the few communities that can build on new features immediately! So… what are the new features?
CSS Motion Paths
http://danielcwilson.com/blog/2015/09/animations-part-5/
requestIdleCallbackSchedule work when there is free time at the end of a frame, or when the user is inactive.
https://developers.google.com/web/updates/2015/08/using-requestidlecallback?hl=en
requestIdleCallback• Ideal for unimportant tasks
which can be paused and resumed, and broken into fixed-time chunks.
• Building thumbnails • Sending analytics • Mining Bitcoin
“Call my function within X milliseconds and give me a function I can call to know when I’ve run out of time.”
requestIdleCallbackfunction myNonEssentialWork (deadline) { while (deadline.timeRemaining() > 0 && tasks.length > 0) doWorkIfNeeded();
if (tasks.length > 0) requestIdleCallback(myNonEssentialWork);}
// Wait at most two seconds before processing events.requestIdleCallback(processPendingAnalyticsEvents, { timeout: 2000});
array.indexOf(item) !== -1
array.includes(item)
ECMAScript 6
array.indexOf(item) !== -1
array.includes(item)
ECMAScript 6
pretty much here!
array.indexOf(item) !== -1
array.includes(item)
ECMAScript 6
Chromium 47
😅😳
Chromium 48
😍😎
Memory• Same task scheduling capabilities are driving smarter
garbage collection in Chromium for jank-free scrolling!
• With Gmail open, memory consumption in Chrome 45 is 45% lower than previous versions after two minutes. (50MB less!)
Coming Soon• VP9 Codec: WebRTC support for VP9! HD video
at almost half the bandwidth of VP8 or H264
Chrom
ium 48
Chrom
ium 49
• Proxy: Define custom behavior for fundamental operations (e.g. property lookup, assignment, enumeration, function invocation, etc)
Objective-C: objc_msgsend
Ruby: method_missing
JavaScript: Proxy.handler.apply 🎉