Boshen
banner
boshen.github.io
Boshen
@boshen.github.io
Building http://oxc.rs and https://rolldown.rs at https://voidzero.dev. TC39 invited expert.
cargo-shear now runs 1.3x faster and accepts nightly syntax features, after switching parser from `syn` to `ra_ap_syntax` (rust-analyzer's parser).

github.com/Boshen/carg...
Release v1.6.6 · Boshen/cargo-shear
Features Fix detection of redundant workspace ignores (#324) Switch from syn to ra_ap_syntax for parsing (#322) Fixed fix incorrect --version output (#326) At least 1.3x performance improvemen...
github.com
November 26, 2025 at 4:39 AM
Detailed our security policy

oxc.rs/docs/contri...
Security Policy
A collection of high-performance JavaScript tools written in Rust
oxc.rs
November 24, 2025 at 3:13 PM
cargo-shear (detect and remove unused deps from Cargo.toml) recent improvements:

• Detect and fix misplaced dev dependencies
• --fix on platform specific dependencies and feature gates
• Detection in doc comments
• Warn about unused ignores

github.com/Boshen/carg...
GitHub - Boshen/cargo-shear: Detect and remove unused dependencies from Cargo.toml
Detect and remove unused dependencies from Cargo.toml - Boshen/cargo-shear
github.com
November 24, 2025 at 5:45 AM
I feel like an archaeologist every time I’m working on the oxc resolver.

compiler options paths baseUrl include exclude extends files references tsconfig-paths tsconfig-paths-webpack-plugin vite-tsconfig-paths

🧐 ⛏️🔍
November 23, 2025 at 3:34 PM
Reposted by Boshen
I had been exploring ESLint alternatives and was bothered by the lack of consistent documentation for rule configs in oxlint. So I opened an issue about it and talked with the maintainers about the right way to solve it, and found out there was a system for auto-generating documentation with types.
linter: various rules are missing `options` documentation on the Rules pages of the website · Issue #14743 · oxc-project/oxc
I think this was covered slightly by #6050, but may have been missed as being within scope of the problem. no-unused-vars, for example, has various options available. But the page for the rule make...
github.com
November 2, 2025 at 7:16 PM
Reposted by Boshen
I'm using tsgo + oxlint + oxfmt for the first time.

It's all *so fast*. Small project (~1k loc, ~10 files), but type checking in 90ms, building in 60ms, linting in 70ms, and formatting in 80ms is fantastic.

🚀 The future of web dev tooling is bright. Nice work @typescriptlang.org and @voidzero.dev!
November 10, 2025 at 5:37 PM
Reposted by Boshen
Vitest 4.0.11 adds an experimental `fsModuleCache` flag to cache module transforms between reruns. Learn more: vitest.dev/config/exper...

This is an opt-in feature, please let us know how it works for you!

And example of a single test file that imports a lot of files (~1500). Almost a 50% boost!
November 20, 2025 at 12:04 PM
Oxlint enabling type checking straight out of tsgo!

This should speed up the slow `tsc --noEmit` step in large repos.

PR: github.com/oxc-project/...
November 20, 2025 at 3:47 PM
Oxfmt alpha release in two weeks! But pre-release 18k weekly downloads!

(jackie chan confused meme)
November 20, 2025 at 10:29 AM
Oxc isolated declarations -> Canva 66x faster.

Video: www.youtube.com/watch?v=26C...
November 15, 2025 at 3:25 AM
Reposted by Boshen
This has been in the works for a few months now! Excited for more people to try this out when it supports config options.

A special thanks to the @typescript-eslint.io team who have set the standard for typed lint rules here. Much of this work is based on what has come before and on their rules.
November 13, 2025 at 3:38 AM
Thank you @camchenry.com for the long development of configuring type-aware rules!

tsgolint alpha soon!

github.com/oxc-project/...
feat(linter): allow configuring tsgolint rules by camchenry · Pull Request #15286 · oxc-project/oxc
This depends on the next version of tsgolint (after 0.6.0) to be released in order to work, otherwise not all options will not be accepted. This implements rule configuration for rules that run in ...
github.com
November 13, 2025 at 3:12 AM
Leveled up our release pipeline for oxlint and oxfmt:

• Single GitHub release with unified changelog
• Binaries uploaded to GitHub immutable release
• Implemented all zizmor GitHub actions security advices
• Triggers auto doc update to oxc.rs

Result: github.com/oxc-project...
November 10, 2025 at 5:08 PM
Missing libc field from abbreviated package metadata causes huge traffic to npm registry and unnecessary downloads for linux machines.

We found the root cause, wants to help npm, now waiting for reply.

github.com/orgs/commun...
Return libc field in npm registry API with `Accept: application/vnd.npm.install-v1+json` header · community · Discussion #179180
Select Topic Area General Body Ref: pnpm/pnpm#9871 (comment) npm/cli#8514 npm/cli#7126 Currently, in order to build the correct dependencies tree, package managers either abandon checking the libc ...
github.com
November 10, 2025 at 7:56 AM
Oxc parser gets 2 - 7% faster.

github.com/oxc-project...
November 10, 2025 at 5:29 AM
I'm curious, why oxfmt instead of dprint or biome when it's not even alpha yet.

But, alpha will be in ~2 weeks!
Ha, I've been using it + oxfmt for a week now, works fine! Why needs alphas when you can just read instructions from commit messages.
November 9, 2025 at 11:23 AM
Very close to a oxlint type-aware alpha.
Finally had time to put more effort into implementing oxlint<->tsgolint configuration for rules. Very soon, you'll be able to configure type-aware rules like any other rules. Should be as easy as just upgrading to the latest versions once it is available.
November 8, 2025 at 3:20 AM
Thank you @Brooooook_lyn for solving one of the most frustrating issues with napi-rs: having to add random linker args just to get things to compile. We can now remove these random linkers args.

I made the initial PR with AI to provide context.
November 6, 2025 at 11:20 AM
Oxc Resolver has been using simd-json for the past three weeks without any errors. It has delivered a slight performance improvement and reduced memory usage for Rolldown 🚀

github.com/oxc-project...
perf: use simd-json for package.json parsing by Boshen · Pull Request #761 · oxc-project/oxc-resolver
Summary Replace serde_json with simd-json using BorrowedValue for zero-copy JSON parsing. Uses self_cell to manage the self-referential structure where the parsed JSON borrows from the original str...
github.com
November 6, 2025 at 8:54 AM
AI is too good at solving complex problems where I don’t have the slightest clue how any of these things work.

github.com/napi-rs/nap...
feat: Add NAPI stub functions for testing without Node.js runtime by Boshen · Pull Request #2996 · napi-rs/napi-rs
fixes #2968 oxc PR: oxc-project/oxc#15323 - [target.&amp;#39;cfg(target_vendor = &amp;quot;apple&amp;quot;)&amp;#39;] - rustflags = [&amp;quot;-C&amp;quot;, &amp;quot;link-args=-Wl,-undefined,dynam...
github.com
November 5, 2025 at 12:56 PM
Rolldown is getting more stable! We’d really appreciate it if you can break it with your existing Vite configuration.

Make this one-line change or read the guide: vite.dev/guide/rolld...
November 3, 2025 at 8:27 AM
What have I become?
October 31, 2025 at 2:39 PM
Reposted by Boshen
I am looking for a full-time job.

Being independent in open source for 3.5+ years has been wonderful. I've gotten done most of the high-level goals I wanted to, and miss having people & structure around me.

If you know of a role for a staff-level TypeScript+web developer, let me know! 🙂
October 30, 2025 at 2:40 PM