Cam McHenry
@camchenry.com
馃摛 555
馃摜 312
馃摑 138
dad | software engineer
@github.com
| core team member of oxc.rs | 鉁濓笍 camchenry.com
Okay here's my bad idea
github.com/camchenry/ox...
add a skeleton here at some point
4 days ago
2
18
0
Against my better judgment, I have started a side project that is probably impossible to achieve practically. I'm gonna try anyway. Hopefully I will learn a lot 馃槄
15 days ago
1
4
1
reposted by
Cam McHenry
Marvin Hagemeister
21 days ago
Speeding up the JS ecosystem OXC edition 馃殌 We made both oxfmt and oxlint 50% faster on projects with >50k directories.
marvinh.dev/blog/speedin...
loading . . .
Speeding up the JavaScript ecosystem - oxlint and oxfmt
Future versions of oxlint and oxfmt will be ~50% faster on projecs with many (>=20k) directories.
https://marvinh.dev/blog/speeding-up-javascript-ecosystem-part-13/
7
181
29
we recently added rule timing support to oxlint to help triage performance issues. try running with `--debug=timings` to see the slowest built-in rules. support for type-aware/JS plugins will be supported in the future too.
22 days ago
1
45
1
oxlint now supports 100%* of the eslint-plugin-jsx-a11y rules! final rules will be in the next release.
github.com/oxc-project/...
loading . . .
鈽傦笍 eslint-plugin-jsx-a11y 路 Issue #1141 路 oxc-project/oxc
WarningThis comment is maintained by CI. Do not edit this comment directly. To update comment template, see https://github.com/oxc-project/oxc/tree/main/tasks/lint_rules This is the tracking issue ...
https://github.com/oxc-project/oxc/issues/1141
25 days ago
2
35
5
We are working on bulk suppressions support in oxlint! Next release will have CLI support and we are working on LSP support now.
loading . . .
about 1 month ago
1
8
1
reposted by
Cam McHenry
Connor Shea
about 1 month ago
I have now replaced ESLint with Oxlint in the DebtBook Rails/React codebase 馃 ESLint ran in 20s with full cache, 230s without cache. And somewhere in between very randomly depending on the changes made. Oxlint - with type-aware, a JS Plugin, and more than 250 rules - runs in around 8 seconds :)
3
35
5
Excited to see this! I want to make it work with oxlint as soon as possible 馃榾
add a skeleton here at some point
2 months ago
0
11
0
Really interesting research from auvred on type-aware linting:
github.com/auvred/hybri...
This is the next frontier for developer tooling: cross-language interoperability and finding the right tradeoffs to make for extensibility/performance.
loading . . .
GitHub - auvred/hybrid-type-aware-linting-performance: Performance evaluation of different approaches for bridging tsgo with JS
Performance evaluation of different approaches for bridging tsgo with JS - auvred/hybrid-type-aware-linting-performance
https://github.com/auvred/hybrid-type-aware-linting-performance
2 months ago
0
9
3
Thank you
@andrewbran.ch
for upstreaming some perf optimization from tsgolint!
github.com/microsoft/ty...
I guess this counts as my first typescript-go contribution? 馃槄
loading . . .
Add per-directory module resolution cache by andrewbranch 路 Pull Request #3070 路 microsoft/typescript-go
This upstreams oxc-project/tsgolint#764 from @camchenry. Thanks for the work there! This is a simpler than what we used to have, and avoids the lock contention that made caching worse than not cach...
https://github.com/microsoft/typescript-go/pull/3070
3 months ago
1
9
0
reposted by
Cam McHenry
Daniel Rosenwasser
5 months ago
Fun story from today. I'm currently trying to get `--strict` on by default in TypeScript 6.0. Our test suite has many tests which are written with `--strict false`, so I am updating them by adding a special comment our test suite recognizes for options // @strict: false However...
5
41
11
Try it out!
add a skeleton here at some point
6 months ago
0
5
0
reposted by
Cam McHenry
Boshen
6 months ago
Announcing Oxfmt: Oxc Formatter Alpha
oxc.rs/blog/2025-1...
loading . . .
Oxfmt: Oxc Formatter Alpha
A collection of high-performance JavaScript tools written in Rust
https://oxc.rs/blog/2025-12-01-oxfmt-alpha.html
1
111
14
It took a little while, but I feel like using `go tool pprof` is starting to grow on me.
7 months ago
0
1
0
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.
add a skeleton here at some point
7 months ago
1
27
1
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.
loading . . .
7 months ago
1
33
1
reposted by
Cam McHenry
Connor Shea
7 months ago
So I started working on it in the evenings when I had time, and last week while I was off work for a week (recovering from eye surgery), in between naps I worked through most of the rule updates. So now almost all of them have documentation for their config options :)
github.com/oxc-project/...
loading . . .
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...
https://github.com/oxc-project/oxc/issues/14743
1
6
1
reposted by
Cam McHenry
Connor Shea
7 months ago
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.
loading . . .
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...
https://github.com/oxc-project/oxc/issues/14743
2
13
2
reposted by
Cam McHenry
Chris Coyier
7 months ago
I love that this actually works. *Oh yeah, is your list actually UNordered? Prove it.*
add a skeleton here at some point
2
34
5
use no memo hear no memo speak no memo
7 months ago
0
5
0
reposted by
Cam McHenry
Josh Goldberg
7 months ago
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! 馃檪
10
213
88
Vite and Vitest imply the existence of Viter
7 months ago
2
18
1
Does anyone have experience with tools for benchmarking on every PR for Go projects? I'm looking to get a rough estimate of perf regressions/improvements in each PR for
github.com/oxc-project/...
. Looking into building something custom with `go tool pprof` currently.
loading . . .
GitHub - oxc-project/tsgolint: Type aware linting for oxlint
Type aware linting for oxlint. Contribute to oxc-project/tsgolint development by creating an account on GitHub.
https://github.com/oxc-project/tsgolint
7 months ago
1
3
0
On my laptop, oxlint 1.24 is 3% faster than 1.23 on the `vscode` repository, with even larger improvements for very large codebases. That means if you haven't updated to one of the latest versions in a few weeks, your linting step could be >10% slower than it should be!
add a skeleton here at some point
8 months ago
1
5
1
Making something 1% faster 20 times > making something 20% faster once But that doesn't stop me from trying to get that juicy big one 馃槄
8 months ago
0
7
0
reposted by
Cam McHenry
8 months ago
Big up to new
#oxc
contributor
@arsh.sh
, who showed up out of nowhere and is tearing through our issue list! He's just implemented support for all the comment-based APIs in Oxlint JS plugins.
github.com/oxc-project/...
loading . . .
feat(linter/plugins): comment-related APIs by lilnasy 路 Pull Request #14715 路 oxc-project/oxc
Part of #14564. Implement the remaining SourceCode APIs related to comments (getCommentsBefore, getCommentsAfter, getCommentsInside, commentsExistBetween).
https://github.com/oxc-project/oxc/pull/14715
0
34
5
Oxlint 1.23.0 just got released, which includes the latest in some of the performance optimization work I've been doing. Running on the vscode repository on my M1 laptop, 1.23.0 is ~7-9% faster than previous versions of oxlint with no changes other than just bumping the dependency.
8 months ago
2
39
3
Just finished writing up an auto-fix for this in Oxlint, in case this was a blocker for anyone:
github.com/oxc-project/...
add a skeleton here at some point
8 months ago
0
12
0
I'm finally starting to pick up Go and try to formally learn it. It's got a lot of wild features! First language I've used in quite a while that natively supports complex numbers, seems like an interesting choice. The swapped type declaration order is gonna take a while to get used to.
9 months ago
1
2
0
First of these optimizations rolled out in v1.15.0 with a reduced scope. Next version of oxlint will be even faster:
github.com/oxc-project/...
On my laptop: ~15% faster on `oven-sh/bun`, ~9% faster on `microsoft/vscode`, ~11% faster on `posthog/posthog`, and ~8% faster on `elastic/kibana`
add a skeleton here at some point
9 months ago
0
27
2
reposted by
Cam McHenry
VoidZero
9 months ago
VoidZero x SquiggleConf: Win a ticket! VoidZero is a proud sponsor of this year's
@squiggleconf.com
on September 18th and 19th in Boston. We've got an extra ticket for the event and want to give it away to one of you so you can join us there! Learn in this thread how you can enter the raffle 馃憞
2
24
6
Trying some new oxlint optimizations. This PR has gone over several iterations in the last few months and the core idea is simple: don't run rules for files if they don't apply (using an AST node bitset lookup). The result: linting is around 15% faster in practice.
10 months ago
5
39
4
reposted by
Cam McHenry
Boshen
10 months ago
Announcing Oxlint Type-Aware Preview
oxc.rs/blog/2025-08...
loading . . .
The JavaScript Oxidation Compiler
A collection of high-performance JavaScript tools written in Rust
https://oxc.rs/blog/2025-08-17-oxlint-type-aware.html
2
143
25
Cool to see more tsgo-based linters! I think best practices here are not known yet, so it is great to see more teams innovating on this.
add a skeleton here at some point
10 months ago
0
7
0
Great news for anyone linting large repositories! Hopefully this will be an easy performance win for teams using ESLint.
add a skeleton here at some point
10 months ago
0
5
0
Just had a listen to this, it's well worth listening to catch up on the current state of JS linting, as Josh has lots of experience from working on ts-eslint. Lots of innovation happening in linting currently Overall, I think right now is a great time to learn more about linting, parsing, and ASTs.
add a skeleton here at some point
10 months ago
1
9
1
First version is out! It's still pretty experimental, but we will keep improving performance and fixing bugs with each version. Most importantly though: you can use it now!
add a skeleton here at some point
10 months ago
0
9
1
reposted by
Cam McHenry
Boshen
10 months ago
`oxlint --type-aware`. Mic drop. It's incomplete and have numerous problems, including a noticeable performance issue. BUT, you can finally see your floating promises quickly! Example PR:
github.com/rolldown/rol...
Problems:
t.co/K7ZVnPjOPL
3
111
18
It's been great to work on prototyping this! I'm really excited by typescript-go and looking forward to getting this released as soon as we can. The future is fast 鈿★笍
add a skeleton here at some point
11 months ago
0
46
4
reposted by
Cam McHenry
Boshen
11 months ago
I am permitted to host tsgolint in Oxc and explore type aware linting! I am super excited! We reduced the original scope of tsgolint to be a backend for oxlint, taking the best out of both worlds!
github.com/oxc-project/...
loading . . .
GitHub - oxc-project/tsgolint: Type aware linting for oxlint
Type aware linting for oxlint. Contribute to oxc-project/tsgolint development by creating an account on GitHub.
https://github.com/oxc-project/tsgolint
1
101
11
reposted by
Cam McHenry
Arnaud Barr茅
11 months ago
Introducing tsl, an extension of tsc for type-aware linting! Want to speed up your ESLint time without losing the great type-aware rules from
@typescript-eslint.io
? Run `bunx tsl --migrate` to try it out!
github.com/ArnaudBarre/...
loading . . .
GitHub - ArnaudBarre/tsl: An extension of tsc for type-aware linting
An extension of tsc for type-aware linting. Contribute to ArnaudBarre/tsl development by creating an account on GitHub.
https://github.com/ArnaudBarre/tsl
10
82
21
This is the best explanation of ARIA that I've seen. There is so much practical advice in here as well!
add a skeleton here at some point
12 months ago
0
2
0
reposted by
Cam McHenry
VoidZero
12 months ago
We're thrilled to announce the first stable release of Oxlint - version 1.0! Our Rust-powered JavaScript/TypeScript linter delivers 50~100x faster performance than ESLint with 500+ rules and zero configuration required. Time to give it a try!
voidzero.dev/posts/announ...
loading . . .
Announcing Oxlint 1.0
The first stable version of Oxlint, a fast & easy-to-use Rust-powered linter for JavaScript and TypeScript, is out. Learn about its 50~100x speed advantage over ESLint, support for 500+ rules, real-wo...
https://voidzero.dev/posts/announcing-oxlint-1-stable
10
304
70
reposted by
Cam McHenry
VoidZero
about 1 year ago
Today we are excited to announce Rolldown-Vite: a technical preview of the version of
@vite.dev
entirely powered by the Rust stack we built over the past year (Oxc +
@rolldown.rs
)
voidzero.dev/posts/announ...
loading . . .
Announcing Rolldown-Vite
We are building the next generation of JavaScript tooling
https://voidzero.dev/posts/announcing-rolldown-vite
3
321
83
reposted by
Cam McHenry
Boshen
about 1 year ago
For the Oxlint 1.0 announcement, I'd like to show more real world performance numbers on large repos. If Oxlint has been satisfactory, would you be keen to send me the numbers Oxlint reports at the end? If you have never tried Oxlint but has a large repo: `npx oxlint@latest`.
9
53
8
I got involved with oxc because I just showed up, looked at the issues available and suggested solutions, and started making contributions. It was also nice to not have the pressure of being publicly assigned to it so I could take my time and learn as I went.
add a skeleton here at some point
about 1 year ago
1
28
3
reposted by
Cam McHenry
patak
about 1 year ago
If you find an OSS issue that calls your attention, go for it. You don't need to ask permission to start working or have it assigned to you. If someone else sends a PR before you, that's great. You can use your knowledge of the issue to help review the PR, add tests, and validate the approach.
3
103
20
reposted by
Cam McHenry
Alexander Lichter
about 1 year ago
Happy to see Mercedes Benz adopting modern tooling such as
@rolldown.rs
and Oxc in their workflow, as well as going the extra mile and sharing their results! Up to 64% CI pipeline time reduction is impressive 馃憖 And more per improvements are yet to come 馃く
www.mercedes-benz.io/blog/2025-05...
3
62
9
reposted by
Cam McHenry
Pooya Parsa
about 1 year ago
危 Experimental bundle analyzer in the last version of
obuild.unjs.io
@rolldown.rs
is fast enough that we can build a package, generate types, then bundle it again, minify it with OXC, and then bundle again!! (for side-effect check) and still takes <50ms for a small lib!
1
29
2
reposted by
Cam McHenry
Herrington Darkholme
about 1 year ago
A proof of concept to run ast-grep via OXC parser
1
9
1
Load more
feeds!
log in