Changelog 16
🔥 Batched Lint Actions
One of the biggest wins of this release is a massive improvement in our ability to parallelize and batch linter executions. Previously, the linting of every file ran in an isolated process, this meant that linters with high startup costs would drag when executing on a large number of files. We solved that by coalescing work into batches and the results are amazing. For example, previously running rubocop on the rubocop repo took over 10 minutes. We shaved that down to 38s - a nearly 20x speed improvement.
📦 System Runtime Support
We’ve always aimed to deliver a completely hermetic toolchain because it leads to highly reproducible results, but some repos already manage some of their runtimes (Ruby is a popular one) and want to leverage/reuse their existing runtime deployments. Now you can! In the root of your trunk.yaml file you can now specify the runtimes you want to explicitly enable and the versions to deploy. When you use a range expression >=3.1.0 we will first check if your machine has a matching instance of ruby available. If the system already has it - we won’t bother installing a hermetic version of ruby. If you don’t have ruby - don’t worry - we’ll take care of installing a version that matches that requirement. Lot’s of other knobs to tinker with here (see docs for full story)
Screen Shot 2022-03-30 at 12
📣 Feature Requests
We love hearing from our users about all the ways we can make trunk better. In order to allow us to better prioritize asks and let people know when the new feature they asked for landed we've started gathering feedback here - features.trunk.io
🎁 New Tools
🔧 Improvements
  • Support for running detekt under gradle
  • check now uses a DAG to more efficiently execute your actions - no more waiting for one tool to download before others can execute
  • Linters can now be configured to run only in certain workflows using the 'run_when' field. This allows you to take greater control of your check runs - if you want to run some tools only in CI - now you have the power to do tha
  • Caching of linter output is now enabled by default
  • trunk print-config now pretty prints enums and uses intelligent field ordering so your trunk configuration is more legible and makes more logical sense to read
  • Trunk launcher is now available for install via npm as as @trunkio/launcher
  • Golang managed linters now use 'install' instead of 'get' for installation