SlideShare a Scribd company logo
1 of 43
Download to read offline
From the proposal to
ECMAScript
Step by step
@romulocintra
Hello 👋👋👋👋👋
0 #JetBrains
JS Day Folks
I’m Romulo Cintra
∎ Doing Web Stuff -
● Browsers and Client-side Web Technologies
○ Webkit , Wolvic, WPE , JSC , Chromium, V8 ,
SpiderMonkey,…
● Standards
○ WASM , TC39 , Unicode , W3C …
● Compilers, Graphics, Multimedia, Device
Drivers
What’s Standards
BODY and TC39 ?
1
Do you remember 🧀?
@romulocintra
They’re Avenues for
unification & uniformization
● WHATWG
● W3C
● ISO
● ECMA
● Unicode
● …
@romulocintra
Marvel Studios
@romulocintra
TC39 is the
Technical committee
that defines the
JavaScript language
Glossary …
❏ ECMA
❏ ECMA-262 …
❏ ECMAScript
❏ JavaScript
❏ TC-XX (TC39 , TC45)
@romulocintra
How
TC39 works?
2
@romulocintra
Consensus-based decision
Diverse set of people in the committee
Implementers , Practitioners, Community Experts
Objections and concerns to satisfy everyone’s
No stakeholder kept over another and , Backing rationales
@romulocintra
STAGES
Steps where proposal evolves and receives
feedback
1 + 4 Stages
When & How
4-8 Plenary
Meetings a year
Online or In person
Focus Groups and Incubator
Calls
Monthly or Biweekly
TG2/TG4 / Editors / Outreach /
Proposals / Educators / Tools
Monthly or Biweekly
The Process
3 Stage-by-stage
@romulocintra
STAGE 0 💡
Strawperson
Just an Idea
Explainer, Idea under discussion,
Strawperson Proposal
@romulocintra
@romulocintra
STAGE 1
Describe the shape of a solution it’s an idea
under discussion
Proposal ��
Devote time and have a “Champion”
Demos / Polyfills
Major changes
STAGE 1
Types Annotations
Daniel Rossenwaver, Rob Palmer,
Romulo Cintra
STAGE 1
Pattern Matching
Daniel Rosenwasser, Jack Works, Jordan Harband,
Mark Cohen, Ross Kirsling, Tab Atkins-Bittner,
Yulia Startsev
const res = await fetch(jsonService);
match (res) {
when ({ status: 200, headers: { 'Content-Length': s } }):
console.log(`size is ${s}`);
when ({ status: 404 }):
console.log('JSON not found');
when ({ status }) if (status >= 400): do {
throw new RequestError(res);
}
};
@romulocintra
STAGE 2 Draft ��
Describe syntactic and semantic details
Form spec language - Initial Spec Text
Semantics and API are covered - not completed
TC39 Expects that feature would be developed in future
Experimental
@romulocintra
STAGE 2
Deferring Module
Evaluation
Yulia Startsev, Nicolò Ribaudo
// Eagerly load&link mod and its dependencies
import defer * as ns from "mod";
function rarelyUsed() {
// Later, ns.someValue triggers the evaluation of mod
doSomethingWith(ns.someValue);
}
@romulocintra
STAGE 3 Candidate ��
Refinement phase(Feedback from
implementers and users), almost ready to go
Completed Spec Text
Have Reviewers and Editors Signed off the spec
Coverage on Test262
Spec Compliant
Some browser might implement under a flag
test262.fyi
Test262(Github)
STAGE 3 Intl.DurationFormat
Younies Mahmoud, Ujjwal Sharma
const duration = { seconds: 12, milliseconds: 345, microseconds: 600 } ;
new Intl.DurationFormat('en', { style: "digital", fractionalDigits: 2 }).format(duration);
// "0:00:12.35"
new Intl.DurationFormat('en', { seconds: "numeric", fractionalDigits: 2
}).format(duration);
// "12.35"
> new Intl.DurationFormat('en', { seconds: "numeric", fractionalDigits: 5
}).format(duration);
// "12.34560"
> new Intl.DurationFormat('en', { seconds: "numeric"}).format(duration);
// "12.3456"
new Intl.DurationFormat("fr-FR", { style: "long" }).format({
hours: 1,
minutes: 46,
seconds: 40,
});
// => "1 heure, 46 minutes et 40 secondes"
STAGE 3 Temporal
Philipp Dunkel , Maggie Johnson-Pint,
Matt Johnson-Pint, Brian Terlson, Shane
Carr, Ujjwal Sharma, Philip Chimento,
Jason Williams, Justin Grant
const yearMonth = Temporal.PlainYearMonth.from({ year: 2020, month: 10 });
yearMonth.toString() => 2020-10
yearMonth.daysInMonth; // => 31
yearMonth.daysInYear; // => 366
const monthDay = Temporal.PlainMonthDay.from({ month: 7, day: 14 });
const date = monthDay.toPlainDate({ year: 2030 });
date.dayOfWeek; // => 7
date.dayOfYear // => 195
date.daysInMonth // => 31
date.daysInYear // => 365
date.inLeapYear // => false
let calcDate = Temporal.Now.plainDateISO(); // => 2021-11-29
calcDate.add({ days : 15 }); // => 2021-12-14
calcDate.subtract({ days : 15 }); // => 2021-11-14
calcDate.equals(calcDate); // => true
calcDate.equals(calcDate.add({ days : 2})); // => false
const time = Temporal.Instant.fromEpochSeconds(new Date);
Temporal.TimeZone.from('Europe/Berlin').getOffsetStringFor(time);
// => +01:00
Temporal.TimeZone.from('America/Vancouver').getOffsetStringFor(time);
// => -08:00
Temporal.TimeZone.from('Europe/Moscow').getOffsetStringFor(time);
// => +03:00
@romulocintra
STAGE 4 Finished ��
About to be include in the upcoming edition
of ECMAScript®
Merged into the Spec text
Two implementations that passes acceptance tests
Will be included on the upcoming Spec
Shipping
STAGE 4 Change Array By Copy
Robin Ricard
Ashley Claymore
const original = [1, 2, 3, 4];
const reversed = original.toReversed();
// -> [ 4, 3, 2, 1 ]
const sorted = original.toSorted();
// -> [ 1, 2, 3, 4 ]
const spliced = original.toSpliced(0, 4, 2 , 3, 5 );
// -> [ 2, 3, 5]
const withThree = original.with(3, 10);
original.with(2, 3);
// -> [1, 2, 3, 10]
Error: .cause Symbols as
WeakMap keys
Top-level await
Array find from last
Search : T39 finished-proposals.md
ECMAScript 2024
ES.next
June 2024
Collaboration & Help
Get involved !!!
4
@romulocintra
Write test262 conformance tests
Refine proposals in GitHub issues
Write documentation and
educational materials
Provide feedback on GitHub
��
��
��
��
Muchas Gracias
Thanks
Obrigado
Спасибо
@romulocintra

More Related Content

Similar to From the proposal to ECMAScript, step by step

From SQLAlchemy to Ming with TurboGears2
From SQLAlchemy to Ming with TurboGears2From SQLAlchemy to Ming with TurboGears2
From SQLAlchemy to Ming with TurboGears2
Alessandro Molina
 

Similar to From the proposal to ECMAScript, step by step (20)

PostgreSQL as seen by Rubyists (Kaigi on Rails 2022)
PostgreSQL as seen by Rubyists (Kaigi on Rails 2022)PostgreSQL as seen by Rubyists (Kaigi on Rails 2022)
PostgreSQL as seen by Rubyists (Kaigi on Rails 2022)
 
getting started with java script
 getting started with java script  getting started with java script
getting started with java script
 
Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020
 
The State of the GeoServer project
The State of the GeoServer projectThe State of the GeoServer project
The State of the GeoServer project
 
Application Monitoring using Open Source: VictoriaMetrics - ClickHouse
Application Monitoring using Open Source: VictoriaMetrics - ClickHouseApplication Monitoring using Open Source: VictoriaMetrics - ClickHouse
Application Monitoring using Open Source: VictoriaMetrics - ClickHouse
 
Application Monitoring using Open Source - VictoriaMetrics & Altinity ClickHo...
Application Monitoring using Open Source - VictoriaMetrics & Altinity ClickHo...Application Monitoring using Open Source - VictoriaMetrics & Altinity ClickHo...
Application Monitoring using Open Source - VictoriaMetrics & Altinity ClickHo...
 
Introduction to Grunt.js on Taiwan JavaScript Conference
Introduction to Grunt.js on Taiwan JavaScript ConferenceIntroduction to Grunt.js on Taiwan JavaScript Conference
Introduction to Grunt.js on Taiwan JavaScript Conference
 
PVS-Studio and Continuous Integration: TeamCity. Analysis of the Open RollerC...
PVS-Studio and Continuous Integration: TeamCity. Analysis of the Open RollerC...PVS-Studio and Continuous Integration: TeamCity. Analysis of the Open RollerC...
PVS-Studio and Continuous Integration: TeamCity. Analysis of the Open RollerC...
 
Deduplicating and analysing time-series data with Apache Beam and QuestDB
Deduplicating and analysing time-series data with Apache Beam and QuestDBDeduplicating and analysing time-series data with Apache Beam and QuestDB
Deduplicating and analysing time-series data with Apache Beam and QuestDB
 
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
Comment développer une application mobile en 8 semaines - Meetup PAUG 24-01-2023
 
HTML5 and Other Modern Browser Game Tech
HTML5 and Other Modern Browser Game TechHTML5 and Other Modern Browser Game Tech
HTML5 and Other Modern Browser Game Tech
 
Yavorsky
YavorskyYavorsky
Yavorsky
 
Maciej Treder ''Angular Universal - a medicine for the Angular + SEO/CDN issu...
Maciej Treder ''Angular Universal - a medicine for the Angular + SEO/CDN issu...Maciej Treder ''Angular Universal - a medicine for the Angular + SEO/CDN issu...
Maciej Treder ''Angular Universal - a medicine for the Angular + SEO/CDN issu...
 
Vertically Scaled Design Patters
Vertically Scaled Design PattersVertically Scaled Design Patters
Vertically Scaled Design Patters
 
angular2.0
angular2.0angular2.0
angular2.0
 
Get together on getting more out of typescript & angular 2
Get together on getting more out of typescript & angular 2Get together on getting more out of typescript & angular 2
Get together on getting more out of typescript & angular 2
 
State of the Art Web Mapping with Open Source
State of the Art Web Mapping with Open SourceState of the Art Web Mapping with Open Source
State of the Art Web Mapping with Open Source
 
app/server monitoring
app/server monitoringapp/server monitoring
app/server monitoring
 
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...
 
From SQLAlchemy to Ming with TurboGears2
From SQLAlchemy to Ming with TurboGears2From SQLAlchemy to Ming with TurboGears2
From SQLAlchemy to Ming with TurboGears2
 

More from Igalia

Building End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEBuilding End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPE
Igalia
 
Automated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesAutomated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded Devices
Igalia
 
Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JIT
Igalia
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Igalia
 

More from Igalia (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Building End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEBuilding End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPE
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Automated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesAutomated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded Devices
 
Embedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceEmbedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to Maintenance
 
Optimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfOptimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdf
 
Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JIT
 
To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!
 
Implementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerImplementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamer
 
8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera Linux
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVM
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
 
Graphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesGraphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devices
 
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSDelegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
 
MessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webMessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the web
 
Replacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersReplacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shaders
 
I'm not an AMD expert, but...
I'm not an AMD expert, but...I'm not an AMD expert, but...
I'm not an AMD expert, but...
 
Status of Vulkan on Raspberry
Status of Vulkan on RaspberryStatus of Vulkan on Raspberry
Status of Vulkan on Raspberry
 

Recently uploaded

Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
FIDO Alliance
 

Recently uploaded (20)

Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptx
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
ERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage Intacct
 
Navigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern EnterpriseNavigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern Enterprise
 
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
 
UiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewUiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overview
 
Event-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingEvent-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream Processing
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Decarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceDecarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational Performance
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Quantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingQuantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation Computing
 
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe
 
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformLess Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
 
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...Stronger Together: Developing an Organizational Strategy for Accessible Desig...
Stronger Together: Developing an Organizational Strategy for Accessible Desig...
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps Productivity
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
ADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptx
 

From the proposal to ECMAScript, step by step

  • 1. From the proposal to ECMAScript Step by step @romulocintra
  • 3. I’m Romulo Cintra ∎ Doing Web Stuff - ● Browsers and Client-side Web Technologies ○ Webkit , Wolvic, WPE , JSC , Chromium, V8 , SpiderMonkey,… ● Standards ○ WASM , TC39 , Unicode , W3C … ● Compilers, Graphics, Multimedia, Device Drivers
  • 6. @romulocintra They’re Avenues for unification & uniformization ● WHATWG ● W3C ● ISO ● ECMA ● Unicode ● …
  • 8. @romulocintra TC39 is the Technical committee that defines the JavaScript language
  • 9. Glossary … ❏ ECMA ❏ ECMA-262 … ❏ ECMAScript ❏ JavaScript ❏ TC-XX (TC39 , TC45) @romulocintra
  • 11. @romulocintra Consensus-based decision Diverse set of people in the committee Implementers , Practitioners, Community Experts Objections and concerns to satisfy everyone’s No stakeholder kept over another and , Backing rationales
  • 12. @romulocintra STAGES Steps where proposal evolves and receives feedback 1 + 4 Stages
  • 13. When & How 4-8 Plenary Meetings a year Online or In person Focus Groups and Incubator Calls Monthly or Biweekly TG2/TG4 / Editors / Outreach / Proposals / Educators / Tools Monthly or Biweekly
  • 15. @romulocintra STAGE 0 💡 Strawperson Just an Idea Explainer, Idea under discussion, Strawperson Proposal
  • 17. @romulocintra STAGE 1 Describe the shape of a solution it’s an idea under discussion Proposal �� Devote time and have a “Champion” Demos / Polyfills Major changes
  • 18. STAGE 1 Types Annotations Daniel Rossenwaver, Rob Palmer, Romulo Cintra
  • 19.
  • 20.
  • 21. STAGE 1 Pattern Matching Daniel Rosenwasser, Jack Works, Jordan Harband, Mark Cohen, Ross Kirsling, Tab Atkins-Bittner, Yulia Startsev
  • 22. const res = await fetch(jsonService); match (res) { when ({ status: 200, headers: { 'Content-Length': s } }): console.log(`size is ${s}`); when ({ status: 404 }): console.log('JSON not found'); when ({ status }) if (status >= 400): do { throw new RequestError(res); } };
  • 23. @romulocintra STAGE 2 Draft �� Describe syntactic and semantic details Form spec language - Initial Spec Text Semantics and API are covered - not completed TC39 Expects that feature would be developed in future Experimental
  • 25. STAGE 2 Deferring Module Evaluation Yulia Startsev, Nicolò Ribaudo
  • 26. // Eagerly load&link mod and its dependencies import defer * as ns from "mod"; function rarelyUsed() { // Later, ns.someValue triggers the evaluation of mod doSomethingWith(ns.someValue); }
  • 27. @romulocintra STAGE 3 Candidate �� Refinement phase(Feedback from implementers and users), almost ready to go Completed Spec Text Have Reviewers and Editors Signed off the spec Coverage on Test262 Spec Compliant Some browser might implement under a flag
  • 29. STAGE 3 Intl.DurationFormat Younies Mahmoud, Ujjwal Sharma
  • 30. const duration = { seconds: 12, milliseconds: 345, microseconds: 600 } ; new Intl.DurationFormat('en', { style: "digital", fractionalDigits: 2 }).format(duration); // "0:00:12.35" new Intl.DurationFormat('en', { seconds: "numeric", fractionalDigits: 2 }).format(duration); // "12.35" > new Intl.DurationFormat('en', { seconds: "numeric", fractionalDigits: 5 }).format(duration); // "12.34560" > new Intl.DurationFormat('en', { seconds: "numeric"}).format(duration); // "12.3456"
  • 31. new Intl.DurationFormat("fr-FR", { style: "long" }).format({ hours: 1, minutes: 46, seconds: 40, }); // => "1 heure, 46 minutes et 40 secondes"
  • 32. STAGE 3 Temporal Philipp Dunkel , Maggie Johnson-Pint, Matt Johnson-Pint, Brian Terlson, Shane Carr, Ujjwal Sharma, Philip Chimento, Jason Williams, Justin Grant
  • 33. const yearMonth = Temporal.PlainYearMonth.from({ year: 2020, month: 10 }); yearMonth.toString() => 2020-10 yearMonth.daysInMonth; // => 31 yearMonth.daysInYear; // => 366 const monthDay = Temporal.PlainMonthDay.from({ month: 7, day: 14 }); const date = monthDay.toPlainDate({ year: 2030 }); date.dayOfWeek; // => 7 date.dayOfYear // => 195 date.daysInMonth // => 31 date.daysInYear // => 365 date.inLeapYear // => false
  • 34. let calcDate = Temporal.Now.plainDateISO(); // => 2021-11-29 calcDate.add({ days : 15 }); // => 2021-12-14 calcDate.subtract({ days : 15 }); // => 2021-11-14 calcDate.equals(calcDate); // => true calcDate.equals(calcDate.add({ days : 2})); // => false
  • 35. const time = Temporal.Instant.fromEpochSeconds(new Date); Temporal.TimeZone.from('Europe/Berlin').getOffsetStringFor(time); // => +01:00 Temporal.TimeZone.from('America/Vancouver').getOffsetStringFor(time); // => -08:00 Temporal.TimeZone.from('Europe/Moscow').getOffsetStringFor(time); // => +03:00
  • 36. @romulocintra STAGE 4 Finished �� About to be include in the upcoming edition of ECMAScript® Merged into the Spec text Two implementations that passes acceptance tests Will be included on the upcoming Spec Shipping
  • 37. STAGE 4 Change Array By Copy Robin Ricard Ashley Claymore
  • 38. const original = [1, 2, 3, 4]; const reversed = original.toReversed(); // -> [ 4, 3, 2, 1 ] const sorted = original.toSorted(); // -> [ 1, 2, 3, 4 ] const spliced = original.toSpliced(0, 4, 2 , 3, 5 ); // -> [ 2, 3, 5] const withThree = original.with(3, 10); original.with(2, 3); // -> [1, 2, 3, 10]
  • 39. Error: .cause Symbols as WeakMap keys Top-level await Array find from last Search : T39 finished-proposals.md
  • 41. Collaboration & Help Get involved !!! 4
  • 42. @romulocintra Write test262 conformance tests Refine proposals in GitHub issues Write documentation and educational materials Provide feedback on GitHub �� �� �� ��