Skip to content

v2.3.0

Latest

Choose a tag to compare

@dangmai dangmai released this 23 Jun 03:12
· 3 commits to main since this release

Formatting Changes

  • Support Apex multiline string literals ('''...'''), preserving their content verbatim (release notes).
  • Support the SOQL FORMULA('...') function in WHERE clauses (release notes). The formula expression is printed verbatim from the source.
  • Support the SOQL WITH tuple/key-value form (WITH Identifier(key = value, ...)), which previously threw No handler found (issue).
  • Fix trailing empty line not printed after ignored nodes in class declaration blocks (issue).
  • Fix standalone comments before SOQL WITH SECURITY_ENFORCED / WITH USER_MODE / WITH SYSTEM_MODE clauses migrating between WITH and the identifier across format passes.
  • Fix trailing comments on the last field of a SOSL RETURNING X(...) clause migrating outside the closing paren across format passes.

Dependency Changes

  • Drop support for NodeJS < 22.
  • Drop support for Java < 17.

Internal Changes

  • Improve AST post-processing performance by ~1.7X, thanks to @lukecotter.
  • Replace runtime XStream reflection with a build-time code-generated serializer, substantially improving serialization performance.
  • Initialize the jorje parser stack at native-image build time, cutting per-file process startup (~4x faster cold start in spawn-per-file native mode) - thanks to @lukecotter for the technique in #2405.
  • Replace eslint with biome for linting purpose.
  • Add a performance benchmark harness for profiling where time goes during formatting.
  • Add a CI workflow that benchmarks a labeled PR against its base branch, and can also be run manually on any branch or against a contributor's PR.
  • Tighten the plugin to strict TypeScript (strict: true, no any), including a typed @class -> handler dispatch in the printer. Type-safety only, no change to formatted output.