SlideShare a Scribd company logo
Moving Web forward
part i — ECMAScript 201x
Sergey
Rubanov
JavaScript Samurai
November 5-6,
2016
KharkivJS #7
previously on
moving web forward
part 0 — harmony
2
1996
3
Netscape: we need a language to
be able to change pictures in
browsers!
Brendan: pfff lol easy
Microsoft: NOT BAD
4
Brendan:
Holy shhh…
Microsoft: NOT BAD
5
2000s
6
Brendan:
Yo!
I wanna add classes, a module
system, optional type annotations and
static typing! And algebraic data
types!
NO
7
Brendan:
BUT…
NONO
8
Brendan:
But listen…
NONO
9
NOI like it
I like it
2015
11
12
💩Harmony
Unicode*
ES2015 (ES6) support
13
ES2016
14
ES2016 features
• Exponetiation operator (**)
• Array.prototype.includes
15
ES2016 support16
ES2017
17
ES2017 features
• Object.values / Object.entries
• String padding
• Object.getOwnPropertyDescriptors
• Trailing commas in function parameter lists
and calls
• Async Functions
18
Object.values / Object.entries
19
String padding
20
Object.getOwnPropertyDescriptors
• Object.assign directly accesses
properties and symbols instead of
their descriptors
• composition over classes
21
Trailing commas in function
syntax
22
Async functions
• based on promises and generators
• make asynchronous things look like
synchronous
23
ES2017 support24
Next TC39 Meetings
• 55th meeting of TC39
• Host: Facebook, Menlo Park, CA
• Dates: Tuesday, 29 November 2016 to Thursday, 01
December 2016
• 56th meeting of TC39
• Host: TBD
• Dates: 2017-01-?? to 2017-01-??
25
Spec revisions and
scheduling
• February 1: Candidate Draft is produced.
• February - March: 60 day royalty-free opt-out period.
• March TC39 Meeting: stage 4 proposals are incorporated,
final semantics are approved, and the new spec version is
branched from master. Only editorial changes are
accepted from this point forward.
• April-June: ECMA CC and ECMA GA review period.
• July: Approval of new standard by the ECMA General
Assembly
26
Unlikely ES2017
likely later
27
Stage 3
• SIMD
• global
• Rest/Spread Properties
• Asynchronous Iteration
• Function.prototype.toString revision
• Lifting Template Literal Restriction
28
SIMD
• proposed by Google and Intel
• came from Dart
• based on Typed Arrays
• x86 with SSE, ARMv7 with Neon
• may be useful in 3D graphics, video processing,
physics simulations, cryptography, and other
domains
29
SISD vs SIMD
30
SIMD
31
global
• System.global previously
• no more Function('return this’)()!
• adds portability
32
33
34
Browsers: window.global
Node.js: global.global
35
Browsers: window.global
Node.js: global.global.global.global.global.gl
36
global is
• writable
• non-enumerable
• configurable
37
38
Rest properties
Spread properties
Asynchronous iteration
39
Sync iterator:
Async iterator:
Asynchronous iteration
40
• Symbol.asyncIterator well-known symbol
• for-await-of statement
Async generator functions
41
Definitely ES2018
or never
or later
42
Stage 2
• function.sent metaproperty
• Legacy RegExp features in JavaScript
• RegExp Unicode Property Escapes
• String.prototype.trimStart and String.prototype.trimEnd
• Shared memory and atomics
• Promise.prototype.finally
• Public Class Fields
• Decorators
• import()
43
Promise.proptotype.finally
• pass callback once instead of declaring one
function twice or create a variable for it
• callback will not receive any arguments
• will be resolved or rejected with previous
promise’ value
• or will reject if it throws or returns rejected
promise
44
Public class fields
• static properties
• class fields
45
Static properties
46
Class fields
47
Decorators
48
@frozen class Foo {
@configurable(false)
@enumerable(true)
method() {}
}
decorators
import()
• dynamic imports
• returns promise for the module namespace object
• specifier can be an expression
• works in both scripts and modules
• System.import() previously
• await import form (instead of nested import
declarations)
49
Stage 1
• Date.parse fallback semantics
• export * as ns from "mod"; statements
• export v from "mod"; statements
• String.prototype.matchAll
• Math Extensions
• Generator arrow functions (=>*)
50
Stage 1
• of and from on collection constructors
• WeakRefs
• Frozen Realms
• Private Fields
• Observable
• Cancelable Promises
51
Private fields
52
Observable
53
Observable
54
Observable
55
Observable
56
Observable
57
Cancelable Promises
• a new class, Cancel, which does not
derive from Error
• try { ... } else (e) { ... }
syntax, which ignores instances of Cancel
• a new Promise method,
promise.else(onRejected), which
ignores instances of Cancel
58
Stage 0
• don’t use it in production
• it is not a maturity stage
• no guarantees
59
babel-preset-env
✨ Autoprefixer for Babel ✨
60
babel-preset-env
• browserlist
• ECMAScript compatibility tables
(ES2015 and ES2016+ tabs)
• Babel plugins
61
babili
✨ ES6+ minificator ✨
62
Thank you
@chicoxyzzy
63

More Related Content

ODP
How to start using Scala
PDF
Invitation to the dark side of Ruby
PDF
Maccro Strikes Back
PDF
Scala on-android
PDF
Upgrading to rails3
PDF
java8-patterns
PDF
JDD 2017: Kotlin for Java developers (Tomasz Kleszczyński)
PDF
Self-Hosted Scripting in Guile
How to start using Scala
Invitation to the dark side of Ruby
Maccro Strikes Back
Scala on-android
Upgrading to rails3
java8-patterns
JDD 2017: Kotlin for Java developers (Tomasz Kleszczyński)
Self-Hosted Scripting in Guile

What's hot (19)

PDF
A Type-level Ruby Interpreter for Testing and Understanding
PDF
使用.NET构建轻量级分布式框架
PPTX
Lua. The Splendors and Miseries of Game Scripting
PDF
Game Development with Corona SDK and Lua - Lua Workshop 2014
PDF
Reference Semantics with C# and .NET Core
PDF
Jslab rssh: JS as language platform
PPT
Developing Android applications with Ceylon
PDF
Reaching the lambda heaven
PPTX
Road to sbt 1.0: Paved with server (2015 Amsterdam)
PDF
Dmytro Kochergin Angular 2 and New Java Script Technologies
PDF
Run-time of Node.js : V8 JavaScript Engine
PPTX
Whats New in Java 8
PDF
Develop realtime web with Scala and Xitrum
PDF
ReactiveX
PDF
Drupal and testing (2010 - 2011 / 2)
PDF
Functional Programming in JavaScript
PPTX
Ruby to Scala in 9 weeks
PDF
Oslo.versioned objects - Deep Dive
A Type-level Ruby Interpreter for Testing and Understanding
使用.NET构建轻量级分布式框架
Lua. The Splendors and Miseries of Game Scripting
Game Development with Corona SDK and Lua - Lua Workshop 2014
Reference Semantics with C# and .NET Core
Jslab rssh: JS as language platform
Developing Android applications with Ceylon
Reaching the lambda heaven
Road to sbt 1.0: Paved with server (2015 Amsterdam)
Dmytro Kochergin Angular 2 and New Java Script Technologies
Run-time of Node.js : V8 JavaScript Engine
Whats New in Java 8
Develop realtime web with Scala and Xitrum
ReactiveX
Drupal and testing (2010 - 2011 / 2)
Functional Programming in JavaScript
Ruby to Scala in 9 weeks
Oslo.versioned objects - Deep Dive
Ad

Similar to Moving Web forward: Part I — ECMAScript 201x (20)

PDF
MEAN Stack Warm-up
PDF
Behat bdd training (php) course slides pdf
PPTX
Install, Compile, Setup, Setting OpenCV 3.2, Visual C++ 2015, Win 64bit,
PPTX
Java9to19Final.pptx
PDF
Game of Performance: A Song of JIT and GC
PPTX
Implementing a JavaScript Engine
PPTX
Bytecode Manipulation with a Java Agent and Byte Buddy
PDF
A Dynamic Analysis Framework for Front-end JavaScript
PDF
Java 8 selected updates
PDF
TMPA-2017: A Survey of High-Performance Computing for Software Verification
PDF
Embracing the Future
PDF
Masterin Large Scale Java Script Applications
PPTX
MERN_Stack_Project_Tracking_System.pptx.
PPTX
RenderScript
PDF
From MEAN to the MERN Stack
PDF
Code lifecycle in the jvm - TopConf Linz
PDF
Triton and symbolic execution on gdb
PPTX
OptView2 MUC meetup slides
PPTX
Introduction to JavaScript: The Language of the Web by Infinite Web Solutions...
PPTX
AOP on Android
MEAN Stack Warm-up
Behat bdd training (php) course slides pdf
Install, Compile, Setup, Setting OpenCV 3.2, Visual C++ 2015, Win 64bit,
Java9to19Final.pptx
Game of Performance: A Song of JIT and GC
Implementing a JavaScript Engine
Bytecode Manipulation with a Java Agent and Byte Buddy
A Dynamic Analysis Framework for Front-end JavaScript
Java 8 selected updates
TMPA-2017: A Survey of High-Performance Computing for Software Verification
Embracing the Future
Masterin Large Scale Java Script Applications
MERN_Stack_Project_Tracking_System.pptx.
RenderScript
From MEAN to the MERN Stack
Code lifecycle in the jvm - TopConf Linz
Triton and symbolic execution on gdb
OptView2 MUC meetup slides
Introduction to JavaScript: The Language of the Web by Infinite Web Solutions...
AOP on Android
Ad

Recently uploaded (20)

PDF
Machine learning based COVID-19 study performance prediction
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
Machine Learning_overview_presentation.pptx
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Approach and Philosophy of On baking technology
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
DOCX
The AUB Centre for AI in Media Proposal.docx
PPT
Teaching material agriculture food technology
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Machine learning based COVID-19 study performance prediction
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
MIND Revenue Release Quarter 2 2025 Press Release
Review of recent advances in non-invasive hemoglobin estimation
Machine Learning_overview_presentation.pptx
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Spectral efficient network and resource selection model in 5G networks
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Approach and Philosophy of On baking technology
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Per capita expenditure prediction using model stacking based on satellite ima...
The AUB Centre for AI in Media Proposal.docx
Teaching material agriculture food technology
Unlocking AI with Model Context Protocol (MCP)
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
gpt5_lecture_notes_comprehensive_20250812015547.pdf

Moving Web forward: Part I — ECMAScript 201x