├── .github └── workflows │ └── deploy.yml ├── .gitignore └── index.bs /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: Deploy 2 | on: [push] 3 | 4 | jobs: 5 | deploy: 6 | name: Deploy 7 | runs-on: ubuntu-latest 8 | permissions: 9 | id-token: write 10 | contents: read 11 | 12 | steps: 13 | - name: Clone repository 14 | uses: actions/checkout@v2 15 | 16 | - name: Build spec 17 | run: | 18 | mkdir -p out 19 | curl --retry 2 --fail https://api.csswg.org/bikeshed/ --output out/index.html --header "Accept: text/plain, text/html" -F die-on=fatal -F file=@"index.bs" 20 | 21 | - name: Upload to Deno Deploy 22 | uses: denoland/deployctl@v1 23 | with: 24 | project: "wintercg-runtime-keys" 25 | entrypoint: "https://deno.land/std@0.134.0/http/file_server.ts" 26 | root: out/ 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | index.html 2 | .vercel 3 | -------------------------------------------------------------------------------- /index.bs: -------------------------------------------------------------------------------- 1 |
2 | Title: Runtime Keys 3 | Shortname: runtime-keys 4 | Level: 1 5 | Status: w3c/CG-DRAFT 6 | Group: wintercg 7 | URL: http://runtime-keys.proposal.wintercg.org 8 | Editor: Ethan Arrowood, ethan@arrowood.dev 9 | Abstract: A proposal defining standard identifier keys for various runtime environments 10 | Markup Shorthands: markdown yes 11 |12 |
13 | spec:url; type:interface; text:URL 14 | spec:html; type:attribute; for:Window; text:navigator 15 | spec:html; type:attribute; for:Window; text:self 16 |17 | 18 | Introduction {#intro} 19 | ===================== 20 | 21 | This proposal defines a list of keys that represent various runtime environments. 22 | 23 | These keys can be used in a variety of ways, and should be considered a reliable representation of the given runtime. 24 | 25 | For example, they may be used in a project configuration file to indicate the given project supports the specified runtime. 26 | 27 | This specification does not detail how the keys can be used; that is left up to community developed tools. 28 | 29 | The point of this proposal is to only define what the keys are in order to prevent conflicts, and provide users a reliable list of platforms they can build tooling around. 30 | 31 | 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/). 32 | 33 | Inclusing in this registry does not imply endorsement of any kind. 34 | 35 | ## Example Usage ## {#example-usage} 36 | 37 | One example of how these keys may be used (remember, this proposal does not specify how the keys are to be used) is within `package.json` files for projects hosted on npm. 38 | 39 | 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. 40 | 41 | ```json 42 | { 43 | "name": "the-library", 44 | "version": "1.0.0", 45 | "exports": { 46 | "node": "./dist/node/index.js", 47 | "deno": "./dist/deno/index.js" 48 | }, 49 | "engines": { 50 | "node": ">=16", 51 | "deno": ">=1.10" 52 | } 53 | } 54 | ``` 55 | 56 | Keys {#keys} 57 | ============ 58 | 59 | ## Alibaba Cloud - edge-routine ## {#edge-routine} 60 | 61 | The JavaScript/Webassembly runtime that powers Alibaba Cloud edge-routine. 62 | 63 | Key: `edge-routine` 64 | 65 | 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) 66 | 67 | ## Arvancloud Edge Computing ## {#arvancloud} 68 | 69 | The JavaScript runtime that powers Arvancloud Edge Computing. 70 | 71 | Key: `arvancloud` 72 | 73 | Website: [https://www.arvancloud.ir/en/products/edge-computing](https://www.arvancloud.ir/en/products/edge-computing) 74 | 75 | ## Azion - Edge Functions ## {#azion} 76 | 77 | Azion Edge Functions for ultra-low latency, edge-native applications, built with open standards for secure, high-performance serverless computing. 78 | 79 | Key: `azion` 80 | 81 | Website: [https://www.azion.com/en/products/edge-functions/](https://www.azion.com/en/products/edge-functions/) 82 | 83 | ## Cloudflare - workerd ## {#workerd} 84 | 85 | The JavaScript / WebAssembly runtime that powers Cloudflare Workers. 86 | 87 | Key: `workerd` 88 | 89 | Website: [https://workers.cloudflare.com/](https://workers.cloudflare.com/) 90 | 91 | Repository: [https://github.com/cloudflare/workerd](https://github.com/cloudflare/workerd) 92 | 93 | ## Deno Land - Deno ## {#deno} 94 | 95 | A modern runtime for JavaScript and TypeScript. 96 | 97 | Key: `deno` 98 | 99 | Website: [https://deno.com](https://deno.com) 100 | 101 | Repository: [https://github.com/denoland/deno](https://github.com/denoland/deno) 102 | 103 | ## Lagon - Lagon Runtime ## {#lagon} 104 | 105 | Lagon is an open-source runtime and platform that allows developers to run TypeScript and JavaScript Functions at the Edge. 106 | 107 | Key: `lagon` 108 | 109 | Website: [https://lagon.app](https://lagon.app) 110 | 111 | Repository: [https://github.com/lagonapp/lagon](https://github.com/lagonapp/lagon) 112 | 113 | ## Meta - React Native ## {#react-native} 114 | 115 | A framework for building native apps using React. This key represents supported React Native JS runtimes on native platforms (excludes react-native-web). 116 | 117 | Key: `react-native` 118 | 119 | Website: [https://reactnative.dev/](https://reactnative.dev/) 120 | 121 | Repository: [https://github.com/facebook/react-native](https://github.com/facebook/react-native) 122 | 123 | ## Moddable - Moddable SDK ## {#moddable} 124 | 125 | Open source runtime for resource-constrained embedded devices using standard JavaScript and TypeScript. Supports standard ECMA-419 APIs. 126 | 127 | Key: `moddable` 128 | 129 | Website: [https://www.moddable.com/](https://www.moddable.com/) 130 | 131 | Repository: [https://github.com/Moddable-OpenSource/moddable](https://github.com/Moddable-OpenSource/moddable) 132 | 133 | ## Netlify - Edge Functions ## {#netlify} 134 | 135 | Edge Functions connect the Netlify platform and workflow with an open runtime standard at the network edge. 136 | 137 | Key: `netlify` 138 | 139 | Website: [https://docs.netlify.com/edge-functions/overview/](https://docs.netlify.com/edge-functions/overview/) 140 | 141 | Repository: [https://github.com/netlify/edge-functions](https://github.com/netlify/edge-functions) 142 | 143 | ## OpenJS Foundation - Electron ## {#electron} 144 | 145 | Build cross-platform desktop apps with JavaScript, HTML, and CSS. 146 | 147 | Key: `electron` 148 | 149 | Website: [https://www.electronjs.org/](https://www.electronjs.org/) 150 | 151 | Repository: [https://github.com/electron/electron](https://github.com/electron/electron) 152 | 153 | ## OpenJS Foundation - Node.js ## {#node} 154 | 155 | Node.js is an open-source, cross-platform JavaScript runtime environment. 156 | 157 | Key: `node` 158 | 159 | Website: [https://nodejs.org](https://nodejs.org) 160 | 161 | Repository: [https://github.com/nodejs/node](https://github.com/nodejs/node) 162 | 163 | ## Oven - Bun ## {#bun} 164 | 165 | Incredibly fast JavaScript runtime, bundler, transpiler and package manager - all in one. 166 | 167 | Key: `bun` 168 | 169 | Website: [https://bun.sh/](https://bun.sh/) 170 | 171 | Repository: [https://github.com/oven-sh/bun](https://github.com/oven-sh/bun) 172 | 173 | ## React - Server Components ## {#react-server} 174 | 175 | Used by React Server Components. 176 | 177 | Key: `react-server` 178 | 179 | Website: [https://react.dev/](https://react.dev/) 180 | 181 | Repository: [https://github.com/facebook/react](https://github.com/facebook/react) 182 | 183 | 184 | ## Vercel - Edge Light ## {#edge-light} 185 | 186 | Developing, testing, and defining the runtime Web APIs for Edge infrastructure. 187 | 188 | Key: `edge-light` 189 | 190 | Website: [https://edge-runtime.vercel.app/](https://edge-runtime.vercel.app/) 191 | 192 | Repository: [https://github.com/vercel/edge-runtime](https://github.com/vercel/edge-runtime) 193 | 194 | ## Fastly - JavaScript on Compute@Edge ## {#fastly} 195 | 196 | JavaScript runtime for Fastly Compute@Edge. 197 | 198 | Key: `fastly` 199 | 200 | Website: [https://developer.fastly.com/learning/compute/javascript/](https://developer.fastly.com/learning/compute/javascript/) 201 | 202 | Repository: [https://github.com/fastly/js-compute-runtime](https://github.com/fastly/js-compute-runtime) 203 | 204 | ## Kiesel ## {#kiesel} 205 | 206 | A JavaScript engine and runtime written in Zig. 207 | 208 | Key: `kiesel` 209 | 210 | Website: [https://kiesel.dev/](https://kiesel.dev/) 211 | 212 | Repository: [https://codeberg.org/kiesel-js/runtime](https://codeberg.org/kiesel-js/runtime) 213 | 214 | ## Wasmer Edge ## {#wasmer} 215 | 216 | The JavaScript runtime that brings JavaScript to Wasmer Edge. 217 | 218 | Key: `wasmer` 219 | 220 | Website: [https://wasmer.io/products/edge](https://wasmer.io/products/edge) 221 | 222 | Repository: [https://github.com/wasmerio/winterjs](https://github.com/wasmerio/winterjs) 223 | 224 | 235 | 236 | Key Management {#key-management} 237 | ================================ 238 | 239 | ## Adding a key ## {#adding-a-key} 240 | 241 | 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. 242 | 243 | 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: 244 | 245 | ```md 246 | ##