Twice as Fast, Better Tested - RefTrace v0.5.0
RefTrace is a linter for Nextflow pipelines.
RefTrace v0.5.0 is released. This release focuses on correctness.
Release Highlights
- Fewer parsing bugs. Passes 200 Groovy test cases.
- Linting is twice as fast.
- Better error reporting.
Parser Robustness
RefTrace's goal is to analyze Nextflow programs, not to be a general-purpose Groovy parser. Prior to this release, RefTrace worked in practice on open-source community core pipelines. However, some offline users were hitting edge cases in what the parser could handle.
That's a really frustrating experience!
RefTrace is now much more robust parsing Groovy. It successfully passes 200 of the core Groovy test cases. So even if you have (1+1).("a"+1)()
in your pipeline, it should parse.
Faster Linting
RefTrace linting rules are written in Python. However, the core parsing library is native. Prior to this release, RefTrace would find all Nextflow *.nf
files on the Python side and parse them sequentially. This release preserves that API (via reftrace slowlint
) but defaults to parsing concurrently via the native library. Here's a timing comparison using some popular open source repositories (M1 Mac):
Repo | Old API | New API |
---|---|---|
sarek | 13.63 seconds | 6.25 seconds |
rnaseq | 7.87 seconds | 3.69 seconds |
chipseq | 5.01 seconds | 2.23 seconds |
raredisease | 11.07 seconds | 3.92 seconds |
Across a sample of 32 repositories, the average linting time per repo was 4.33s
and is now 2.09s
. In some cases like raredisease
where there are many files to lint, this difference becomes more stark.
Better Error Reporting
RefTrace will now display multiple pipeline problems in one run. When there is a problem (either due to malformed input or a bug in the tool), RefTrace will display the offending file and line number if it can. RefTrace now provides instructions on submitting bug reports.
Other Changes
- Python 3.13 support
- Running
reftrace lint
will now generate a defaultrules.py
file if it does not exist.
Try It
As a reminder, RefTrace can be run via:
pip install reftrace
reftrace lint
More information can be found on the website at https://reftrace.com.