No description
Find a file
2023-07-28 13:57:29 +08:00
.cargo chore(cargo): remove sparse registries, which is now the default 2023-06-02 11:01:28 +08:00
.github ci: remove accident push trigger from website.yml 2023-07-27 18:25:17 +08:00
benchmark chore(benchmark): update benchmark result for 5800H (#551) 2023-07-15 08:50:07 +08:00
crates chore(rust): run cargo fmt --all -- crates/**/*.rs 2023-07-28 13:57:12 +08:00
npm Release @oxidation-compiler/napi v0.1.0 2023-07-19 13:15:04 +08:00
tasks refactor: avoid unstable let_chains 2023-07-27 09:44:57 +08:00
website fix(website): fix base url 2023-07-24 21:01:16 +08:00
.git-blame-ignore-revs chore: update .git-blame-ignore-revs 2023-07-28 13:57:29 +08:00
.gitignore feat(resolver): resolve extensions (#549) 2023-07-14 23:25:47 +08:00
.gitmodules chore(tasks): update submodules 2023-02-24 13:08:22 +08:00
.ignore chore: add just watch command for overcoming cargo-watch being slow 2023-05-16 13:22:42 +08:00
.taplo.toml fix(taplo): adjust the include glob so it doesn't time out searching for files 2023-07-27 12:30:34 +08:00
.typos.toml feat(linter): no disabled tests(eslint-jest-plugin) (#507) 2023-07-09 18:19:43 +08:00
Cargo.lock chore: release crates as v0.1.0 2023-07-27 13:54:17 +08:00
Cargo.toml chore(Cargo.toml): update homepage link 2023-07-27 14:16:58 +08:00
CODE_OF_CONDUCT.md chore: add CODE_OF_CONDUCT.md 2023-07-17 10:12:23 +08:00
CONTRIBUTING.md Update CONTRIBUTING.md 2023-07-26 12:30:21 +08:00
deny.toml ci: add cargo deny 2023-04-22 22:35:19 +08:00
justfile deps(rust): bump with cargo upgrade --incompatible 2023-07-24 23:24:31 +08:00
LICENSE Change MIT LICENSE holder 2023-07-24 10:15:46 +08:00
MAINTENANCE.md chore: update MAINTAINANCE.md 2023-07-27 14:09:39 +08:00
README.md Update README.md 2023-07-24 11:13:42 +08:00
rust-toolchain.toml chore: stable Rust 2023-07-27 13:11:46 +08:00
rustfmt.toml chore(rustfmt): disable all unstable format options 2023-07-27 13:11:46 +08:00
SECURITY.md Create SECURITY.md 2023-03-31 15:55:03 +08:00
THIRD-PARTY-LICENSE chore(README): add eslint-plugin-import and eslint-plugin-jest licenses 2023-07-02 11:28:38 +08:00

OXC Logo

The Oxidation Compiler is creating a suite of high-performance tools for the JavaScript / TypeScript language re-written in Rust:

Philosophy

This project follows philosophies from the Rome and Ruff projects.

  1. JavaScript tooling could be rewritten in a more performant language
  2. An integrated toolchain can tap into efficiencies that are not available to a disparate set of tools

Milestone

This project currently has a fully working parser, a prototype for the linter as well as the minifier.

The current objectives are:

  • Publish the linter as a product
  • Finish the minifier

Contributing

This project is an invitation for you to come and learn Rust with us, any contributions to this project are appreciated.

To get started, check out some of the good first issues or ask us on Discord.

If you are unable to contribute by code, you can still participate by:

Linter

The linter is fast to the extent that it feels broken.

With 45 rules implemented, testing in the VSCode repo on a Mac M2:

vscode  main  npx oxlint@latest src
Finished in 388ms on 3477 files with 45 rules using 8 threads.
Found 798 warnings.

And also in a huge monorepo using Mac i7:

Finished in 5568ms on 51931 files with 45 rules using 12 threads.

On my Intel i7 6-core, the linter is around 80 times faster than ESLint.

See benchmark for details.

Try it out yourself!

The linter is currently usable and it can potentially catch a few mistakes for you:

npx oxlint@latest path

Parser Conformance

The cargo coverage command reports the following conformance summary

Test262 Summary:
AST Parsed     : 44000/44000 (100.00%)
Positive Passed: 44000/44000 (100.00%)
Negative Passed: 3915/3915 (100.00%)

Babel Summary:
AST Parsed     : 2065/2071 (99.71%)
Positive Passed: 2062/2071 (99.57%)
Negative Passed: 1332/1502 (88.68%)

TypeScript Summary:
AST Parsed     : 2337/2337 (100.00%)
Positive Passed: 2331/2337 (99.74%)
Negative Passed: 673/2535 (26.55%)

Test262 conformance is complete. TypeScript parsing is complete.

Only unstable stage 3 json-modules and stage 3 decorators tests are skipped.

Learning Resources

Maintainers

Credits

This project was incubated with the assistance of these exceptional mentors and their projects:

License

MIT

Third Party Licenses

Licenses are listed in THIRD-PARTY-LICENSE

This project partially copies code from the following projects:

Project License
eslint/eslint MIT
typescript-eslint/typescript-eslint MIT
import-js/eslint-plugin-import MIT
jest-community/eslint-plugin-jest MIT
microsoft/TypeScript Apache 2.0
rome/tools MIT
mozilla-spidermonkey/jsparagus MIT Apache 2.0
acorn MIT
zkat/miette Apache 2.0
sindresorhus/globals MIT
terser BSD
evanw/esbuild MIT
google/closure-compiler Apache 2.0
tdewolff/minify MIT