v0.13.0
What's Changed
It has been more than two months since the last update to Harper. A lot has changed, and we're excited to see how it helps you write better-documented code, faster.
Automattic Acquires Harper
Until now, Harper has been a side project. I would work on it in my spare time or during lecture if I was feeling particularly bored. As of last week, that has changed.
As reported by TechCrunch and announced on their blog, moving forward I will be working for Automattic full-time to make Harper the most useful and portable grammar checker out there. I will continue to support harper-ls
and continue to accept pull requests for the various other Harper integrations, but much of my effort will be focused on initiatives to bring Harper to Automattic's products.
Harper Gets Faster
With the latest release, Harper is getting even faster, particularly on initial and uncached document load. Until now, Harper has been using a homegrown spell-checking algorithm that, while naive, has been quite effective at delivering quality corrections. Over the last several months, Grant Lemons has been working on a significant improvement to this algorithm, leveraging finite-state-transducers to more quickly search for valid words of minimum edit distance to your misspelled ones. You can read more about that work on Grant's site.
This also comes to the benefit of our more high-level analysis and pattern-matching engines, which are the main reasons we couldn't use an off-the-shelf spellchecking library.
harper.js
With Harper 0.13.0
, we're releasing a new JavaScript library for using Harper anywhere on the web or on Node.js. We're calling it harper.js
, and you can find it on NPM. Documentation is more than a little sparse at the moment. We'll be adding to the public documentation in the coming days, so keep an eye on it.
Feedback
As per usual, don't be afraid to file an issue if you have any feedback, feature requests or problems. A lot has changed, so we'd be worried if there weren't a couple issues.
- build(deps): bump wasm-bindgen from 0.2.92 to 0.2.95 by @dependabot in #220
- build(deps): bump once_cell from 1.19.0 to 1.20.2 by @dependabot in #219
- Minor updates by @mcecode in #224
- build(deps): bump pulldown-cmark from 0.11.0 to 0.12.2 by @dependabot in #237
- build(deps): bump ordered-float from 4.2.2 to 4.4.0 by @dependabot in #236
- build(deps): bump anyhow from 1.0.83 to 1.0.90 by @dependabot in #235
- Use standard "python" language id, add support for missing
.py
extension by @jfly in #241 - Add support for nix by @jfly in #244
- build(deps): bump clap from 4.5.18 to 4.5.20 by @dependabot in #246
- build(deps): bump thiserror from 1.0.60 to 1.0.65 by @dependabot in #247
- build(deps): bump serde_json from 1.0.128 to 1.0.132 by @dependabot in #245
- build(deps): bump tokio from 1.40.0 to 1.41.0 by @dependabot in #249
- build(deps): bump anyhow from 1.0.90 to 1.0.91 by @dependabot in #248
- build(deps): bump thiserror from 1.0.65 to 1.0.67 by @dependabot in #264
- build(deps): bump anyhow from 1.0.91 to 1.0.92 by @dependabot in #261
- build(deps): bump ordered-float from 4.4.0 to 4.5.0 by @dependabot in #260
- build(deps): bump serde from 1.0.209 to 1.0.214 by @dependabot in #263
- Language ID Fixes by @mcecode in #266
- build(deps): bump anyhow from 1.0.92 to 1.0.93 by @dependabot in #272
- build(deps): bump thiserror from 1.0.67 to 2.0.3 by @dependabot in #273
- build(deps): bump hashbrown from 0.15.0 to 0.15.1 by @dependabot in #274
- build(deps): bump cross-spawn from 7.0.3 to 7.0.5 in /packages by @dependabot in #279
- build(deps): bump tokio from 1.41.0 to 1.41.1 by @dependabot in #275
- feat: Create lint for 'that that' -> 'that which' by @grantlemons in #278
- build(deps): bump clap from 4.5.20 to 4.5.21 by @dependabot in #283
- build(deps): bump serde_json from 1.0.132 to 1.0.133 by @dependabot in #281
- feat: FST-based Curated Dictionary Spellchecking by @grantlemons in #258
- feat(#253): remove requirement that word be in list for repetition by @grantlemons in #277
- build(deps): bump hashbrown from 0.15.1 to 0.15.2 by @dependabot in #285
- Improve config change handling by @mcecode in #292
- fix: correct readme workflows by @grantlemons in #295
- ci: disable packaging and building workflows on draft PRs by @grantlemons in #294
- fix(#287): add minimum as a correction from min by @grantlemons in #291
- build(deps): bump tokio from 1.41.1 to 1.42.0 by @dependabot in #301
- build(deps): bump thiserror from 2.0.3 to 2.0.4 by @dependabot in #300
- build(deps): bump wasm-bindgen from 0.2.95 to 0.2.97 by @dependabot in #297
- build(deps): bump tracing from 0.1.40 to 0.1.41 by @dependabot in #299
- build(deps): bump tracing-subscriber from 0.3.18 to 0.3.19 by @dependabot in #298
- docs: update a link to point to github.com/Automattic/harper by @macbre in #311
- fix(core): updates to SpelledNumbers by @grantlemons in #325
- feat: Span visualization command by @grantlemons in #303
- build(deps): bump thiserror from 2.0.4 to 2.0.9 by @dependabot in #328
- build(deps): bump anyhow from 1.0.93 to 1.0.95 by @dependabot in #327
- build(deps): bump nanoid from 3.3.7 to 3.3.8 in /packages by @dependabot in #316
- build(deps): bump ordered-float from 4.5.0 to 4.6.0 by @dependabot in #326
- build(deps): bump clap from 4.5.21 to 4.5.23 by @dependabot in #309
- Support using a different
harper-ls
executable than the one bundled in the VSCode extension by @mcecode in #330 - feat(vscode-plugin): Add Haskell Support by @mcecode in #336
- feat(#331): Haskell Comment Support by @grantlemons in #332
New Contributors
Full Changelog: v0.12.0...v0.13.0