-
Notifications
You must be signed in to change notification settings - Fork 11
/
index.bs
274 lines (156 loc) · 9.07 KB
/
index.bs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
<pre class='metadata'>
Title: Runtime Keys
Shortname: runtime-keys
Level: 1
Status: w3c/CG-DRAFT
Group: wintercg
URL: http://runtime-keys.proposal.wintercg.org
Editor: Ethan Arrowood, Vercel http://vercel.com, ethan-arrowood@vercel.com
Abstract: A proposal defining standard identifier keys for various runtime environments
Markup Shorthands: markdown yes
</pre>
<pre class=link-defaults>
spec:url; type:interface; text:URL
spec:html; type:attribute; for:Window; text:navigator
spec:html; type:attribute; for:Window; text:self
</pre>
Introduction {#intro}
=====================
This proposal defines a list of keys that represent various runtime environments.
These keys can be used in a variety of ways, and should be considered a reliable representation of the given runtime.
For example, they may be used in a project configuration file to indicate the given project supports the specified runtime.
This specification does not detail <i>how</i> the keys can be used; that is left up to community developed tools.
The point of this proposal is to only define <i>what</i> the keys are in order to prevent conflicts, and provide users a reliable list of platforms they can build tooling around.
Inclusion in this registry does not imply that the specified runtime is conformant with the WinterCG [Minimum Common API](https://proposal-common-min-api.deno.dev/).
Inclusing in this registry does not imply endorsement of any kind.
## Example Usage ## {#example-usage}
One example of how these keys <i>may</i> be used (remember, this proposal <strong>does not specify</strong> <i>how</i> the keys are to be used) is within `package.json` files for projects hosted on npm.
The following `package.json` file demonstrates a library that exports separate outputs for Node.js and Deno, as well as specifies which versions of each runtime it supports.
```json
{
"name": "the-library",
"version": "1.0.0",
"exports": {
"node": "./dist/node/index.js",
"deno": "./dist/deno/index.js"
},
"engines": {
"node": ">=16",
"deno": ">=1.10"
}
}
```
Keys {#keys}
============
## Alibaba Cloud - edge-routine ## {#edge-routine}
The JavaScript/Webassembly runtime that powers Alibaba Cloud edge-routine.
Key: `edge-routine`
Website: [https://www.alibabacloud.com/help/en/dynamic-route-for-cdn/latest/er-overview](https://www.alibabacloud.com/help/en/dynamic-route-for-cdn/latest/er-overview)
## Azion - Edge Functions ## {#azion}
Azion Edge Functions for ultra-low latency, edge-native applications, built with open standards for secure, high-performance serverless computing.
Key: `azion`
Website: [https://www.azion.com/en/products/edge-functions/](https://www.azion.com/en/products/edge-functions/)
## Cloudflare - workerd ## {#workerd}
The JavaScript / WebAssembly runtime that powers Cloudflare Workers.
Key: `workerd`
Website: [https://workers.cloudflare.com/](https://workers.cloudflare.com/)
Repository: [https://github.com/cloudflare/workerd](https://github.com/cloudflare/workerd)
## Deno Land - Deno ## {#deno}
A modern runtime for JavaScript and TypeScript.
Key: `deno`
Website: [https://deno.com](https://deno.com)
Repository: [https://github.com/denoland/deno](https://github.com/denoland/deno)
## Lagon - Lagon Runtime ## {#lagon}
Lagon is an open-source runtime and platform that allows developers to run TypeScript and JavaScript Functions at the Edge.
Key: `lagon`
Website: [https://lagon.app](https://lagon.app)
Repository: [https://github.com/lagonapp/lagon](https://github.com/lagonapp/lagon)
## Meta - React Native ## {#react-native}
A framework for building native apps using React. This key represents supported React Native JS runtimes on native platforms (excludes react-native-web).
Key: `react-native`
Website: [https://reactnative.dev/](https://reactnative.dev/)
Repository: [https://github.com/facebook/react-native](https://github.com/facebook/react-native)
## Moddable - Moddable SDK ## {#moddable}
Open source runtime for resource-constrained embedded devices using standard JavaScript and TypeScript. Supports standard ECMA-419 APIs.
Key: `moddable`
Website: [https://www.moddable.com/](https://www.moddable.com/)
Repository: [https://github.com/Moddable-OpenSource/moddable](https://github.com/Moddable-OpenSource/moddable)
## Netlify - Edge Functions ## {#netlify}
Edge Functions connect the Netlify platform and workflow with an open runtime standard at the network edge.
Key: `netlify`
Website: [https://docs.netlify.com/edge-functions/overview/](https://docs.netlify.com/edge-functions/overview/)
Repository: [https://github.com/netlify/edge-functions](https://github.com/netlify/edge-functions)
## OpenJS Foundation - Electron ## {#electron}
Build cross-platform desktop apps with JavaScript, HTML, and CSS.
Key: `electron`
Website: [https://www.electronjs.org/](https://www.electronjs.org/)
Repository: [https://github.com/electron/electron](https://github.com/electron/electron)
## OpenJS Foundation - Node.js ## {#node}
Node.js is an open-source, cross-platform JavaScript runtime environment.
Key: `node`
Website: [https://nodejs.org](https://nodejs.org)
Repository: [https://github.com/nodejs/node](https://github.com/nodejs/node)
## Oven - Bun ## {#bun}
Incredibly fast JavaScript runtime, bundler, transpiler and package manager - all in one.
Key: `bun`
Website: [https://bun.sh/](https://bun.sh/)
Repository: [https://github.com/oven-sh/bun](https://github.com/oven-sh/bun)
## React - Server Components ## {#react-server}
Used by React Server Components.
Key: `react-server`
Website: [https://react.dev/](https://react.dev/)
Repository: [https://github.com/facebook/react](https://github.com/facebook/react)
## Vercel - Edge Light ## {#edge-light}
Developing, testing, and defining the runtime Web APIs for Edge infrastructure.
Key: `edge-light`
Website: [https://edge-runtime.vercel.app/](https://edge-runtime.vercel.app/)
Repository: [https://github.com/vercel/edge-runtime](https://github.com/vercel/edge-runtime)
## Fastly - JavaScript on Compute@Edge ## {#fastly}
JavaScript runtime for Fastly Compute@Edge.
Key: `fastly`
Website: [https://developer.fastly.com/learning/compute/javascript/](https://developer.fastly.com/learning/compute/javascript/)
Repository: [https://github.com/fastly/js-compute-runtime](https://github.com/fastly/js-compute-runtime)
## Kiesel ## {#kiesel}
A JavaScript engine and runtime written in Zig.
Key: `kiesel`
Website: [https://kiesel.dev/](https://kiesel.dev/)
Repository: [https://codeberg.org/kiesel-js/runtime](https://codeberg.org/kiesel-js/runtime)
## Wasmer Edge ## {#wasmer}
The JavaScript runtime that brings JavaScript to Wasmer Edge.
Key: `wasmer`
Website: [https://wasmer.io/products/edge](https://wasmer.io/products/edge)
Repository: [https://github.com/wasmerio/winterjs](https://github.com/wasmerio/winterjs)
<!--
## <Runtime Name> ## {#<Runtime Key>}
<Runtime Description>
Key: `<Runtime Key>`
Website: [<Runtime Website>](<Runtime Website>)
Repository: [<Runtime Repository>](<Runtime Repository>)
-->
Key Management {#key-management}
================================
## Adding a key ## {#adding-a-key}
All JavaScript runtimes are welcome to create a key and add it to this list. New keys must not conflict with another existing key. Runtime entries on this list are encouraged, but not required, to participate in the community group.
To propose a new key, create a pull request in [runtime-keys](https://github.com/wintercg/runtime-keys) repository that adds the desired key to the `index.bs` file using the following format:
```md
## <Runtime Organization> - <Runtime Name> ## {#<Runtime Key>}
<Runtime Description>
Key: \`<Runtime Key>\`
Website: [<Runtime Website>](<Runtime Website>)
Repository: [<Runtime Repository>](<Runtime Repository>)
```
The key should be inserted in alphabetical order based on the first character of the Runtime Organization.
Keys should meaningfully represent the relative runtime and be a simple, string-like value so it can be used in common configuration formats such as JSON and YAML.
Keys should also not conflict with existing [Browserlist entries](https://github.com/browserslist/browserslist#browsers).
Entry pull requests must be approved by at least two active members of the community group that are not directly affiliated with the proposed runtime.
## Modifying a key ## {#modifying-a-key}
Modifying an entry requires opening a pull request and recieving two approvals from active community group members not affiliated with the relative runtime project.
Modifications can be made to aspects such as the Organization, Name, Description, Website, and Repository.
Aside from extraordinary circumstances, to prevent breaking tools built around this list, <b>Keys are not modifiable</b>.
Keys may be deprecated to indicate inactive runtime projects.
Deprecated Keys may be undeprecated and claimed by another runtime.
To deprecate or undeprecate a key, open a pull request adding or removing `<b>[Deprecated]</b>` from the Name:
```diff
+ ## <b>[Deprecated]</b> <Runtime Organization> - <Runtime Name> ## {#<Runtime Key>}
- ## <Runtime Organization> - <Runtime Name> ## {#<Runtime Key>}
```