Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks!...

28
#msedgesummit Brian Terlson Program Manager on Chakra & TypeScript Editor of the ECMAScript Standard @bterlson bterlson

Transcript of Brian Terlson - video.ch9.msvideo.ch9.ms/.../06ChakraCoreTypeScript.pdf · Benchmarks!...

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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

#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

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

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

#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

#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

#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

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

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

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

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

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