Skip to content

Changelog

Please see the releases page on GitLab for the latest changelog.

6.0.0-alpha.6 — 2026-10-09

Custom functions get calculations and keyword arguments on every engine, GraalJS runs on Windows, and the Node engine leaves the JVM's working directory alone. SassValue gains SassCalculation, so an exhaustive switch over SassValue needs a new case.

Fixed

  • The Node engine no longer moves the JVM's process-wide working directory (#101). require() from a module still resolves against the module's own directory; process.cwd() in a module now reports the application's directory. See the working directory.

Changed

  • jsass will not ship the dart-sass binary for the embedded engine (#103, closed as won't fix). You bring dart-sass on every engine, as before.
  • The tests now run on dart-sass 1.104.0: the WebJar and the native release are pinned to it (previously 1.86.3), and the npm package is ^1.104.0 (previously 1.99.0). The minimum dart-sass for jsass is unchanged.

Added

  • The GraalJS engine runs on Windows (#102).
  • JavetNodeJsassCompiler.builder().followModuleWorkingDirectory(true) restores Javet's native working-directory behaviour, for modules that rely on process.cwd() being their own directory.
  • Custom functions receive and return calculations (#104): SassCalculation and CalculationOperation. Only calc (one argument), min, max and clamp (three arguments) can be returned. On the JavaScript engines, returning a calculation that contains an operation needs dart-sass 1.98.0 or newer.
  • $args... arrives as SassArgumentList, a SassList with the caller's keyword arguments in getKeywords() (#104). Keyword arguments the function never reads fail the compile with "No parameter named $x.", as in dart-sass.