Advertisement · 728 × 90

Posts by Cam McHenry

Excited to see this! I want to make it work with oxlint as soon as possible 😀

1 week ago 11 0 0 0
Preview
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

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.

1 week ago 9 2 0 1
Preview
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...

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? 😅

3 weeks ago 9 0 1 0

Replied in the PR, thanks for contributing :)

1 month ago 3 0 1 0
Preview
GitHub - rolldown/rolldown: Fast Rust bundler for JavaScript/TypeScript with Rollup-compatible API. Fast Rust bundler for JavaScript/TypeScript with Rollup-compatible API. - rolldown/rolldown

What about Rolldown? It will be the default bundler in Vite 8, so it's well supported. I don't know how the performance compares to Farm, but Rolldown is also written in Rust and quite fast.

github.com/rolldown/rol...

2 months ago 4 0 0 0
Test where `// @strict: false` has been added to the beginning of the file.

Test where `// @strict: false` has been added to the beginning of the file.

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...

2 months ago 41 10 5 1

I like it! Red squiggly is overused anyway.

3 months ago 4 0 0 0

Try it out!

4 months ago 5 0 0 0
Advertisement
Preview
Oxfmt: Oxc Formatter Alpha A collection of high-performance JavaScript tools written in Rust

Announcing Oxfmt: Oxc Formatter Alpha

oxc.rs/blog/2025-1...

4 months ago 111 11 1 3

It took a little while, but I feel like using `go tool pprof` is starting to grow on me.

4 months ago 1 0 0 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.

4 months ago 27 1 1 0
Video

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.

5 months ago 33 0 1 1

It's only a subset of crates, but it's some of the most useful crates! Such a great feature ❤️

5 months ago 1 0 1 0

Thank you so much for your help on this! It's a tremendous improvement and I hope it inspires more people to contribute 🙏

5 months ago 1 0 0 0
Preview
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...

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/...

5 months ago 6 1 1 0
Preview
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...

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.

5 months ago 13 2 2 0
Preview
Configuring Oxlint A collection of high-performance JavaScript tools written in Rust

Despite the warning, comments should be supported!
I believe they get stripped out so it doesn't affect the parsing, even if it's not named JSONC.

oxc.rs/docs/guide/u...

5 months ago 3 0 1 0
Advertisement

I love that this actually works.

*Oh yeah, is your list actually UNordered? Prove it.*

5 months ago 34 5 2 0

use no memo
hear no memo
speak no memo

5 months ago 5 0 0 0

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! 🙂

5 months ago 214 79 10 10

Vite and Vitest imply the existence of Viter

5 months ago 18 1 2 0

Thanks! Maybe I will give Go benchmarks another try. I have tried codspeed, but it only supports walltime benchmarks for now. Although the CPU simulation benchmarks are not accurate to the real-world, it has been useful for getting some consistent numbers. Have you used this successfully in CI?

5 months ago 0 0 1 0
Preview
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.

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.

5 months ago 3 0 1 0

If you'd like to reproduce these results:

Benchmark command: `hyperfine --ignore-failure --warmup 10 --runs 20 'pnpx oxlint@1.24 --silent' 'pnpx oxlint@1.23 --silent' 'pnpx oxlint@1.22 --silent' 'pnpx oxlint@1.21 --silent'`

elastic/kibana@2169baef
microsoft/vscode@fa994275

5 months ago 2 0 0 0
Hyperfine benchmark showing that oxlint 1.24 is 1.11 times faster than v1.23, 1.26 times faster than v1.22, and 1.27 times faster than v1.21.

Hyperfine benchmark showing that oxlint 1.24 is 1.11 times faster than v1.23, 1.26 times faster than v1.22, and 1.27 times faster than v1.21.

On the Kibana repository, oxlint 1.24 is 11% faster than v1.23, and up to 26% faster than v1.22 and below!

5 months ago 3 0 2 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!

5 months ago 4 1 1 0

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 😅

5 months ago 7 0 0 0
Advertisement
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).

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/...

5 months ago 34 4 0 1

Benchmark command, if you'd like to reproduce this (microsoft/vscode@fa99427534301606eb84c30cd8f7701ac2c35f90):

hyperfine --ignore-failure --warmup 5 --runs 20 'pnpx oxlint@1.23 --silent' 'pnpx oxlint@1.22 --silent' 'pnpx oxlint@1.21 --silent' 'pnpx oxlint@1.20 --silent' 'pnpx oxlint@1.19 --silent'

5 months ago 2 0 0 0
A benchmark of oxlint runs against the vscode repository. The final summary shows 'pnpx oxlint@1.23 --silent' ran 7% faster than 1.21, 8% faster than 1.22, 9% faster than 1.20, and 9% faster than 1.19. The average time for 1.23 was 844.8ms.

A benchmark of oxlint runs against the vscode repository. The final summary shows 'pnpx oxlint@1.23 --silent' ran 7% faster than 1.21, 8% faster than 1.22, 9% faster than 1.20, and 9% faster than 1.19. The average time for 1.23 was 844.8ms.

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.

5 months ago 39 1 2 2