No description
Find a file
Boshen bf76f6d8b6
chore: ignore miri on global allocators
error: unsupported operation: can't call foreign function `_rjem_malloc` on OS `linux`
   --> /home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/jemallocator-0.5.0/src/lib.rs:104:13
    |
104 |             ffi::malloc(layout.size())
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^ can't call foreign function `_rjem_malloc` on OS `linux`
    |
    = help: this is likely not a bug in the program; it indicates that the program performed an operation that the interpreter does not support
    = note: BACKTRACE:
    = note: inside `<jemallocator::Jemalloc as std::alloc::GlobalAlloc>::alloc` at /home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/jemallocator-0.5.0/src/lib.rs:104:13: 104:39
note: inside `_::__rg_alloc`
   --> tasks/benchmark/src/main.rs:13:16
    |
12  | #[global_allocator]
    | ------------------- in this procedural macro expansion
13  | static GLOBAL: jemallocator::Jemalloc = jemallocator::Jemalloc;
    |                ^^^^^^^^^^^^^^^^^^^^^^
    = note: this error originates in the attribute macro `global_allocator` (in Nightly builds, run with -Z macro-backtrace for more info)
2023-02-25 20:45:38 +08:00
.cargo feat(tasks): add parser benchmark 2023-02-11 08:46:32 -08:00
.github/workflows ci: add miri 2023-02-25 17:09:25 +08:00
benchmark feat(benchmark): setup hyperfine benchmark 2023-02-25 18:58:31 +08:00
crates chore: ignore miri on global allocators 2023-02-25 20:45:38 +08:00
tasks chore: ignore miri on global allocators 2023-02-25 20:45:38 +08:00
.gitignore feat(benchmark): setup hyperfine benchmark 2023-02-25 18:58:31 +08:00
.gitmodules chore(tasks): update submodules 2023-02-24 13:08:22 +08:00
Cargo.lock feat(linter): linter prototype 2023-02-25 16:56:10 +08:00
Cargo.toml feat(rust): use mimalloc on windows 2023-02-25 11:58:57 +08:00
CONTRIBUTING.md chore: update contribution docs 2023-02-24 13:24:42 +08:00
LICENSE Initial commit 2023-02-09 13:46:52 +08:00
README.md chore: update contribution docs 2023-02-24 13:24:42 +08:00
rust-toolchain.toml chore: add rust-toolchain.toml and Cargo.toml 2023-02-11 13:03:40 +08:00
rustfmt.toml chore: add rustfmt.toml 2023-02-11 13:11:17 +08:00

The JavaScript Oxidation Compiler (oxc)

Why this project?

The goal of this project is to:

  • Create a blazingly fast JavaScript Compiler written in Rust.
  • Provide good documentation on learning Rust and compiler techniques.

And mostly importantly, an invitation for you to come and learn Rust with me. We will learn a lot from each other!

You can watch this project and also follow me on twitter if you don't have the time to Rust but would like to learn things.

Contributing

Contributions are welcome and highly appreciated. To get started, check out CONTRIBUTING.md.

Call for action

We now have a fully working parser as a baseline, it is not polished yet, so it would be much appreciated if I can invite you and review any of the code and point out for improvements. I welcome all nitpickings and bikesheddings.

I have also created some discussions for documenting my thought processes.

Milestone

The current objective is to improve the parser for real usage. Areas include:

  • API
  • Diagnostics reporting
  • Performance
  • Pass more conformance tests

You may start with https://github.com/Boshen/oxc/issues/36

Conformance

The cargo coverage command currently reports the following summary

Test262 Summary:
AST Parsed     : 43934/43934 (100.00%)

Babel Summary:
AST Parsed     : 2045/2057 (99.42%)

TypeScript Summary:
AST Parsed     : 4291/4861 (88.27%)

(The parser is failing some of the TypeScript recoverable parser tests.)

Learning Resources

Credits

This project is inspired by the following great mentors and projects:

License

MIT