|
| 1 | +--- |
| 2 | +title: Hipcheck 3.9.0 Release |
| 3 | +authors: |
| 4 | + - Andrew Lilley Brinker |
| 5 | +extra: |
| 6 | + author_img: "images/authors/andrew.jpg" |
| 7 | +--- |
| 8 | + |
| 9 | +Introducing Hipcheck 3.9.0, with bugfixes for plugin downloading and a new Git |
| 10 | +commit and diff parser. |
| 11 | + |
| 12 | +<!-- more --> |
| 13 | + |
| 14 | +--- |
| 15 | + |
| 16 | +## 💬 A New Git Commit and Diff Parser |
| 17 | + |
| 18 | +One of the key jobs that the `mitre/git` plugin for Hipcheck needs to do is |
| 19 | +parse Git commits and diffs. This plugin, which is a dependency of several |
| 20 | +other plugins we ship today, previously used a hand-rolled parser built using |
| 21 | +[`nom`], a popular Rust library for writing parser combinators. This had been |
| 22 | +tested against a wide array of open source Git repositories to identify and |
| 23 | +fix bugs, but of course for a parser working with something as flexible as the |
| 24 | +Git commit and diff format, there were still more to find. Over time, we'd |
| 25 | +identified this parser as a priority for replacement. It just didn't make sense |
| 26 | +to continue investing effort toward improving our own parser when others, more |
| 27 | +battle-tested, exist out in the world. |
| 28 | + |
| 29 | +In this release, we've transitioned from our hand-rolled parser to the one |
| 30 | +implemented by the [Gitoxide] project. Gitoxide is a project to reimplement Git |
| 31 | +in Rust, and their [`gix`] crate includes a Git commit and diff parser that |
| 32 | +works better than the one we'd written. In the short term, it's also slightly |
| 33 | +slower, though we believe in prioritizing correctness first, and we can work on |
| 34 | +improving its performance in the future. |
| 35 | + |
| 36 | +With this new parser in place, we expect fewer Git parsing bugs in the future, |
| 37 | +and therefore more successful analyses of Git repository histories! |
| 38 | + |
| 39 | +## 📦 Improved Plugin Downloading |
| 40 | + |
| 41 | +One of the key tasks Hipcheck does before it starts analyses is to resolve the |
| 42 | +set of plugins requested by the user in their policy file, and all the |
| 43 | +dependencies of those plugins. To do this, it downloads the plugin artifacts |
| 44 | +for the requested version and the current architecture based on each plugin's |
| 45 | +download manifest, placing them in a local plugin cache. |
| 46 | + |
| 47 | +In 3.9.0, we've made two improvements to this process. First, we ensure we |
| 48 | +delete unused materials after copying out the stuff we need to run a plugin. |
| 49 | +Second, we ensure that we skip downloading plugins which already exist in the |
| 50 | +cache. This means less work over the network, and a faster plugin execution |
| 51 | +time when you reuse a policy you've run before. |
| 52 | + |
| 53 | +## 👀 What's in the Release? |
| 54 | + |
| 55 | +| Package | What is it? | New Version | |
| 56 | +|:--------------------|:------------|:------------| |
| 57 | +| `hc` | Hipcheck | 3.9.0 | |
| 58 | +| `mitre/git` | Plugin | 0.2.0 | |
| 59 | +| `mitre/activity` | Plugin | 0.2.0 | |
| 60 | +| `mitre/affiliation` | Plugin | 0.2.0 | |
| 61 | +| `mitre/churn` | Plugin | 0.2.0 | |
| 62 | +| `mitre/entropy` | Plugin | 0.2.0 | |
| 63 | +| `mitre/identity` | Plugin | 0.2.0 | |
| 64 | + |
| 65 | +The non-`mitre/git` plugins were bumped because they depend on `mitre/git` and |
| 66 | +are now using the new version. |
| 67 | + |
| 68 | +## 🫸 Things Pushed to Later Releases |
| 69 | + |
| 70 | +We've hoped land the implementations for [RFD #9] and [RFD #10] in 3.9.0, but |
| 71 | +they're not ready yet, and so we're pushing them to the 3.10.0 release. |
| 72 | + |
| 73 | +We're also still working on integrating plugins into the `hc ready` command, to |
| 74 | +ensure it provides clearer and more accurate feedback indicating when Hipcheck |
| 75 | +is ready to run. |
| 76 | + |
| 77 | +## 🗺️ How to Get Involved |
| 78 | + |
| 79 | +We're always looking for new contributors! If you'd like to learn more about |
| 80 | +Hipcheck and get involved in contributing, please checkout our [Roadmap] and |
| 81 | +feel free to get in touch with us through our [Discussions] board! |
| 82 | + |
| 83 | +## ⭐️ Thank You to Our Contributors and Supporters |
| 84 | + |
| 85 | +As always, I want to say a big "Thank you!" to everyone who supports the |
| 86 | +project at MITRE, to CISA for [sponsoring our current work on it][cisa_hipcheck], |
| 87 | +to our prior government sponsors who have helped advance Hipcheck, and to |
| 88 | +everyone who has contributed, given feedback, or encouraged us in building it. |
| 89 | + |
| 90 | +Thank you especially to the contributors for this release: |
| 91 | + |
| 92 | +- [Julian Lanson], Hipcheck Development Team Lead at MITRE |
| 93 | +- [Patrick Casey], Hipcheck Developer at MITRE |
| 94 | +- [Michael Chernicoff], Hipcheck Developer at MITRE |
| 95 | +- [Devin Lake], Hipcheck Developer at MITRE |
| 96 | + |
| 97 | +[hc_3_6_2]: https://github.com/mitre/hipcheck/releases/tag/hipcheck-v3.6.2 |
| 98 | +[policy file]: @/docs/guide/config/policy-file.md |
| 99 | +[RFD #10]: @/docs/rfds/0010-submit-chunking.md |
| 100 | +[RFD #9]: @/docs/rfds/0009-batch-queries.md |
| 101 | +[`mitre/activity`]: @/docs/guide/plugins/mitre-activity.md |
| 102 | +[`mitre/affiliation`]: @/docs/guide/plugins/mitre-affiliation.md |
| 103 | +[`mitre/binary`]: @/docs/guide/plugins/mitre-binary.md |
| 104 | +[`mitre/churn`]: @/docs/guide/plugins/mitre-churn.md |
| 105 | +[`mitre/entropy`]: @/docs/guide/plugins/mitre-entropy.md |
| 106 | +[`mitre/fuzz`]: @/docs/guide/plugins/mitre-fuzz.md |
| 107 | +[`mitre/git`]: @/docs/guide/plugins/mitre-git.md |
| 108 | +[`mitre/github`]: @/docs/guide/plugins/mitre-github.md |
| 109 | +[`mitre/identity`]: @/docs/guide/plugins/mitre-identity.md |
| 110 | +[`mitre/linguist`]: @/docs/guide/plugins/mitre-linguist.md |
| 111 | +[`mitre/npm`]: @/docs/guide/plugins/mitre-npm.md |
| 112 | +[`mitre/review`]: @/docs/guide/plugins/mitre-review.md |
| 113 | +[`mitre/typo`]: @/docs/guide/plugins/mitre-typo.md |
| 114 | +[Julian Lanson]: https://github.com/j-lanson |
| 115 | +[Patrick Casey]: https://github.com/patrickjcasey |
| 116 | +[Michael Chernicoff]: https://github.com/mchernicoff |
| 117 | +[Devin Lake]: https://github.com/devin-b-lake |
| 118 | +[Cal Stepanian]: https://github.com/cstepanian |
| 119 | +[Nino Agrawal]: https://github.com/ninaagrawal |
| 120 | +[Aisha Mohammed]: https://github.com/aamohd |
| 121 | +[cisa_hipcheck]: https://www.cisa.gov/news-events/news/continued-progress-towards-secure-open-source-ecosystem |
| 122 | +[Roadmap]: https://github.com/orgs/mitre/projects/33/views/15 |
| 123 | +[Discussions]: https://github.com/mitre/hipcheck/discussions |
| 124 | +[Gitoxide]: https://github.com/GitoxideLabs/gitoxide |
| 125 | +[`gix`]: https://crates.io/crates/gix |
| 126 | +[`nom`]: https://crates.io/crates/nom |
0 commit comments