Presented at the Jan, 2016 Electron meetup in San Francisco.
A look at where the ElectronJS project is headed as Chromium to v47, v48 and beyond. Looks at new features, including ES2016 support, requestIdleCallback, CSS motion paths and Proxy.
Diamond Application Development Crafting Solutions with Precision
What's new and what's next in Electron & Chromium [2016]
1. What's new and what's
next: Electron & Chromium
Ben Gotow (@bengotow)
2.
3. 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
4. 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)
5. 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?
7. requestIdleCallback
Schedule 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
8. 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.”
9. requestIdleCallback
function 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
});
15. 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!)
16. Coming Soon
• VP9 Codec: WebRTC support for VP9! HD video
at almost half the bandwidth of VP8 or H264
Chromium48Chromium49
• 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 🎉