JavaScript Runtime
JavaScript Engineを内包し、いくつかの追加機能を提供する
∴ ECMAScriptで定義されていない機能も含まれる
e.g.
外部と通信するためのAPI
DOM操作するAPI
module system
etc.
具体例
https://gyazo.com/182a8890414c1c28f1332f7418295087 https://blog.expo.dev/expo-managed-workflow-in-2021-5b887bbf7dbb
https://gyazo.com/eeb77ff80139453776a130ec81fe3897 https://blog.expo.dev/expo-managed-workflow-in-2021-5b887bbf7dbb
Browserのランタイムに含まれるもの
ECMAScriptの標準関数
Web API
↑開発者はこれらを拡張したりはできない
もちろんPR送ったりすればできる可能性はある
Node.jsのランタイムに含まれるもの
ECMAScriptの標準関数
Node.jsの標準関数
Node.jsのNative Extensions
C++やRustで作る
自分でランタイムを拡張できる
Expoのランタイムに含まれるもの
ECMAScriptの標準関数
React Native
e.g. UIManager, some Web API polyfills
Expo SDK
React Nativeのランタイムに含まれるもの
ECMAScriptの標準関数
React Native
e.g. UIManager, some Web API polyfills
Native Modules
Deno
Bun.js
Edge Runtime
参考
What's the difference between JavaScript engines and JavaScript runtimes? - Human Who Codes
#WIP
自作する
https://deno.com/blog/roll-your-own-javascript-runtime
Deno公式のブログ
Rustで自作する
Event Loop
Callback Queue
https://engineering.mercari.com/blog/entry/20220128-3a0922eaa4/
https://www.jsv9000.app
visualizer
Expo managed workflow in 2021. Part 1: The preset Expo runtime | by Brent Vatne | Exposition
https://snyk.io/jp/blog/javascript-runtime-compare-node-deno-bun/
https://speakerdeck.com/yosuke_furukawa/javascript-server-runtime-history
server