* bench: setup benchmarks * add charcodes * perf: use string as buffer backend baseline 256 empty statements: 3_718 ops/sec ±18.65% (0.269ms) baseline 512 empty statements: 2_070 ops/sec ±0.96% (0.483ms) baseline 1024 empty statements: 1_012 ops/sec ±1.76% (0.988ms) baseline 2048 empty statements: 510 ops/sec ±1.53% (1.96ms) current 256 empty statements: 3_965 ops/sec ±21.14% (0.252ms) current 512 empty statements: 2_219 ops/sec ±1.29% (0.451ms) current 1024 empty statements: 1_089 ops/sec ±1.53% (0.918ms) current 2048 empty statements: 548 ops/sec ±1.87% (1.824ms) * perf: add endsWithCharAndNewline baseline 256 1-length identifiers: 1_947 ops/sec ±25.11% (0.514ms) baseline 512 1-length identifiers: 1_115 ops/sec ±0.89% (0.897ms) baseline 1024 1-length identifiers: 537 ops/sec ±1.71% (1.862ms) baseline 2048 1-length identifiers: 273 ops/sec ±0.57% (3.669ms) current 256 1-length identifiers: 2_178 ops/sec ±27.17% (0.459ms) current 512 1-length identifiers: 1_250 ops/sec ±1.19% (0.8ms) current 1024 1-length identifiers: 622 ops/sec ±0.71% (1.608ms) current 2048 1-length identifiers: 308 ops/sec ±1.35% (3.251ms) * perf: avoid one byte string compare * perf: avoid scaning word for / * perf: hoist babel type methods baseline 256 25-length identifiers: 1_869 ops/sec ±29.4% (0.535ms) baseline 512 25-length identifiers: 1_092 ops/sec ±1.62% (0.916ms) baseline 1024 25-length identifiers: 537 ops/sec ±1.29% (1.862ms) baseline 2048 25-length identifiers: 264 ops/sec ±2% (3.793ms) current 256 25-length identifiers: 2_462 ops/sec ±23.38% (0.406ms) current 512 25-length identifiers: 1_401 ops/sec ±0.73% (0.714ms) current 1024 25-length identifiers: 671 ops/sec ±1.55% (1.491ms) current 2048 25-length identifiers: 332 ops/sec ±1.44% (3.014ms) * perf: hoist parens methods baseline 256 1-length identifiers: 2_678 ops/sec ±24.96% (0.373ms) baseline 512 1-length identifiers: 1_472 ops/sec ±2.33% (0.68ms) baseline 1024 1-length identifiers: 737 ops/sec ±1.74% (1.357ms) baseline 2048 1-length identifiers: 371 ops/sec ±0.79% (2.695ms) current 256 1-length identifiers: 2_633 ops/sec ±32.44% (0.38ms) current 512 1-length identifiers: 1_676 ops/sec ±1.49% (0.597ms) current 1024 1-length identifiers: 803 ops/sec ±1.95% (1.246ms) current 2048 1-length identifiers: 385 ops/sec ±2.22% (2.596ms) * cleanup unused benchcase * Update packages/babel-generator/src/buffer.ts Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com> * cleanup benchmarks Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
The compiler for writing next generation JavaScript.
Supporting Babel
Babel (pronounced "babble") is a community-driven project used by many companies and projects, and is maintained by a group of volunteers. If you'd like to help support the future of the project, please consider:
- Giving developer time on the project. (Message us on Twitter or Slack for guidance!)
- Giving funds by becoming a sponsor on Open Collective or Patreon!
Sponsors
Our top sponsors are shown below! [Become a sponsor]
Intro
Babel is a tool that helps you write code in the latest version of JavaScript. When your supported environments don't support certain features natively, Babel will help you compile those features down to a supported version.
In
// ES2020 nullish coalescing
function greet(input) {
return input ?? "Hello world";
}
Out
function greet(input) {
return input != null ? input : "Hello world";
}
Try it out at our REPL.
FAQ
Who maintains Babel?
Mostly a handful of volunteers, funded by you! Please check out our team page!
Is there a Babel song?
I'm so glad you asked: Hallelujah —— In Praise of Babel by @angus-c, audio version by @swyx. Tweet us your recordings!
Looking for support?
For questions and support please join our Slack Community (you can sign up here for an invite), ask a question on Stack Overflow, or ping us on Twitter.
Where are the docs?
Check out our website: babeljs.io, and report issues/features at babel/website.
Want to report a bug or request a feature?
Please read through our CONTRIBUTING.md and fill out the issue template at babel/issues!
Want to contribute to Babel?
Check out:
- Our #development Slack channel and say hi! (sign-up)
- Issues with the good first issue and help wanted label. We suggest also looking at the closed ones to get a sense of the kinds of issues you can tackle.
Some resources:
- Our CONTRIBUTING.md to get started with setting up the repo.
- Our discussions/notes/roadmap: babel/notes
- Our progress on TC39 proposals: babel/proposals
- Our blog which contains release posts and explanations: /blog
- Our videos page with talks about open source and Babel: /videos
- Our podcast
How is the repo structured?
The Babel repo is managed as a monorepo that is composed of many npm packages.