#rstats I'm very happy to announce Jarl 0.5.0!

Jarl is a very fast R linter, written in Rust. This release brings many improvements and fixes:

- check R code chunks in R Markdown and Quarto docs
- check "@examples" and "@examplesIf" sections if you use roxygen2
- detect unused or duplicated functions in pkgs
- rules on specific pkgs, e.g. on `dplyr::filter()`, are now possible. Feel free to suggest more and in other pkgs too!

Post: https://www.etiennebacher.com/posts/2026-03-23-jarl-0.5.0/

Changelog: https://jarl.etiennebacher.com/changelog

Jarl 0.5.0

@etiennebacher oooo just gonna say that R-ers in our organization likes Jarl so much they are changing our pre-commit from using air to Jarl :)
@bentoh happy to read that! But Jarl is a replacement for lintr rather than Air, so you can pair Jarl and Air in precommit. See this page: https://jarl.etiennebacher.com/howto/precommit
Pre-commit tools – Jarl

@etiennebacher right correction here we using air and jarl and ditching lintr 😅
Rust is the right call for a linter. Fast enough to run on save without anyone noticing. How does Jarl handle tidyeval? That's where R linters usually break down, either flagging every rlang pattern or ignoring them completely.

@GillesColling no particular handling of tidyeval for now but I haven't come across false positives because of this. Feel free to open an issue if you have some examples, that would be very helpful.

There are several other packages that come with their own syntaxes (like box, igraph) so it's just a problem that is very hard to solve with static analysis