brian terlson - video.ch9.msvideo.ch9.ms/.../06chakracoretypescript.pdf · benchmarks!...
TRANSCRIPT
![Page 1: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/1.jpg)
#msedgesummit
Brian TerlsonProgram Manager on Chakra & TypeScript
Editor of the ECMAScript Standard
@bterlson
bterlson
![Page 2: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/2.jpg)
#msedgesummit
JavaScript that Scales with
ChakraCore & TypeScript
![Page 3: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/3.jpg)
#msedgesummit
ChakraCore:
An open source, cross platform, blazing fast,
standards-compliant JavaScript engine
![Page 4: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/4.jpg)
#msedgesummit
Chakra & ChakraCore
#msedgesummit
![Page 5: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/5.jpg)
#msedgesummit
Node-ChakraCore:
Node.js using the ChakraCore engine
github.com/nodejs/node-chakracore
Easily switch between Node versions & flavors
github.com/jasongin/nvs
![Page 6: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/6.jpg)
#msedgesummit
ChakraCore Engine Architecture
#msedgesummit
![Page 7: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/7.jpg)
#msedgesummit
ChakraCore Engine Architecture
#msedgesummit
![Page 8: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/8.jpg)
#msedgesummit
ChakraCore Engine Architecture
#msedgesummit
Now even faster withminified code!
![Page 9: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/9.jpg)
#msedgesummit
ChakraCore Engine Architecture
#msedgesummit
![Page 10: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/10.jpg)
#msedgesummit
ChakraCore Engine Architecture
#msedgesummit
![Page 11: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/11.jpg)
#msedgesummit
ChakraCore Engine Architecture
#msedgesummit
ChakraCore’s Profiling Interpreter
• Gathers information used later by the JIT
• Low latency execution
• Pretty fast, actually!
• Just C++, compile on any platform
• Useful when JITing is impossible
• Hardware constraints (low memory, IoT)
• Software constraints (iOS)
![Page 12: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/12.jpg)
#msedgesummit
ChakraCore Engine Architecture
#msedgesummit
![Page 13: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/13.jpg)
#msedgesummit
ChakraCore Engine Architecture
#msedgesummit
![Page 14: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/14.jpg)
#msedgesummit
ChakraCore Engine Architecture
#msedgesummit
![Page 15: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/15.jpg)
#msedgesummit
ChakraCore Engine Architecture
#msedgesummit
ChakraCore’s Just In Time (JIT) Compiler
• Multiple tiers ensure low latency & high throughput
• Fully cross-platform, supported on Mac OS X and Linux
• Runs out-of-process
• Constantly getting smarter and faster!
![Page 16: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/16.jpg)
#msedgesummit
ChakraCore Engine Architecture
#msedgesummit
![Page 17: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/17.jpg)
#msedgesummit
ChakraCore Engine Architecture
#msedgesummit
Lower memory usage withfunction body redeferral
![Page 18: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/18.jpg)
#msedgesummit
ChakraCore Engine Architecture
#msedgesummit
![Page 19: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/19.jpg)
Benchmarks!
#msedgesummit
30391 3077728693
26135
0
5000
10000
15000
20000
25000
30000
35000
Microsoft
Edge CU
Microsoft
Edge FCU
Chrome
Canary 63
Firefox
Nightly 57.0a1
OCTANE 2.0
(higher is better)
207.12 211.68
149.85 139.48
0
50
100
150
200
250
Microsoft Edge
CU
Microsoft Edge
FCU
Chrome Canary
63
Firefox Nightly
57.0a1
JET STREAM 1.1
(higher is better)
57.2067.90
108
0.00
20.00
40.00
60.00
80.00
100.00
120.00
Microsoft Edge
CU
Microsoft Edge
FCU
Chrome Canary
63
Speedometer 1.0
(higher is better)
![Page 20: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/20.jpg)
Join us on GitHub!
#msedgesummit
• Keep up with what’s new
• Documentation
• File bugs & feature requests
• Download source and precompiled releases
• Send pull requests
Github.com/Microsoft/ChakraCore
![Page 21: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/21.jpg)
#msedgesummit
Excellent tooling thanks to static types
Latest JS features in any browser
TypeScript
JavaScript that Scales
![Page 22: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/22.jpg)
#msedgesummit
TypeScript
JavaScript that ScalesPrevent bugs & mistakes at compile time
Automatically fix some mistakes ( “Quick Fix” )
Refactor entire programs with ease
Works in any editor and thousands of libraries & frameworks
![Page 23: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/23.jpg)
#msedgesummit
TypeScript
JavaScript that ScalesConfigurable target language (ES3, ES5, ES2015, … )
Supports “Stage 3+” ECMAScript proposals
Async generators & iterators
async function* iter() { yield 1; await fetch(); yield 2; }
Optional catch clauses
try { … } catch { … } // no e!
Dynamic import
import(‘lodash.js’).then(_ => { ... })
![Page 24: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/24.jpg)
It always gets better…
#msedgesummit
New in 2.3--strict: Opts in to the strictest form of type checking--checkJs: Run TypeScript on vanilla JS files
New in 2.4Stricter callback typing
New in 2.5Quick fix JSDoc-style type annotationsExtract function & extract method refactorings
![Page 25: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/25.jpg)
Demo: TypeScript Types & Tooling
#msedgesummit
![Page 26: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/26.jpg)
Join us on GitHub!
#msedgesummit
• Keep up with what’s new
• Documentation
• File bugs & feature requests
• Send pull requests
Github.com/Microsoft/typescript
![Page 27: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/27.jpg)
The Future is Bright
#msedgesummit
• ChakraCore & TypeScript continue tracking
ECMAScript’s Evolution
• WebAssembly, SharedArrayBuffer &
Atomics in ChakraCore
• TypeScript improving its type system and
adding refactorings and quick fixes
frequently
![Page 28: Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks! #msedgesummit 30391 30777 28693 26135 0 5000 10000 15000 20000 25000 30000 35000 Microsoft Edge](https://reader036.vdocuments.net/reader036/viewer/2022070721/5ee14a3cad6a402d666c3953/html5/thumbnails/28.jpg)
See you on GitHub!
#msedgesummit
ChakraCore
GitHub: github.com/Microsoft/ChakraCore
node-chakracore: github.com/node/node-chakracore
nvs: github.com/jasongin/nvs
TypeScript
GitHub: github.com/Microsoft/TypeScript
Typescriptlang.org
@bterlson
bterlson