Sigil 0.19.0

release

Sigil's core packages move back into the main repository. The toolchain was extracted into a dozen standalone repos a few months ago, each with its own version line, and every project carried a pin for each one. Now the core packages ship from one place on one version, and a project depends on Sigil rather than on a list of its parts. The language is unchanged; what changed is how you say which Sigil you want.

Download 0.19.0Get started

The minor bump is deliberate. A ^0.18 pin resolves anything below 0.19.0, so shipping this as 0.18.7 would have pulled the new layout into every project's next lockfile refresh unasked, and any project still pinning the standalone packages would have ended up with two copies of one module in a single build, chosen by load order. At 0.19.0 you meet the new layout in the same commit where you drop the old pins, and not before.

One dependency instead of twelve

sigil-args, sigil-format, sigil-git, sigil-help and sigil-repl now live in the monorepo alongside the packages already there. Where your package.sgl listed several from-git entries pointing at separate repositories, it now lists Sigil.

Builds behave the same, but pins need updating, because the repositories they name are no longer where the code is published from. The migration is one commit per project: drop the standalone entries, set sigil: "^0.19", relock.

Projects that are not ready stay on 0.18.x and keep working. There is no deadline in this release.

Six libraries are now part of the standard library

(sigil ansi), (sigil fp), (sigil hooks), (sigil match), (sigil socket) and (sigil version) ship inside sigil-stdlib. They were small, stable, and widely depended on, which made a separate repo and release cadence per library pure overhead: a project wanting pattern matching and ANSI colour carried two extra pins to get two files.

Module names are unchanged, so imports stay exactly as they are. Drop the from-git entry and the import keeps working.

Their standalone repositories are deprecated at their final releases: sigil-ansi v0.16.0, sigil-fp v0.9.3, sigil-hooks v0.16.1, sigil-match v0.9.1, sigil-socket v0.17.0, sigil-version v0.16.0.

Leaving a pin in place is the one thing to avoid. A standalone pin still in your dependency closure means two providers of the same module in one build, resolved by load order.

sigil-docs is now sigil-help, and it ships in the monorepo

The package that loads and searches Sigil's API metadata is renamed. It answers "what is this procedure, and what can I call" for tooling: the REPL, editor integrations, sigil help. It was never the documentation site, which is what the old name suggested to nearly everyone who met it.

The standalone sigil-docs repository is deprecated at v0.16.1 and there will not be another release. Module names and the API are unchanged, so switching is a manifest edit, not a code change.

The rename is free at exactly this moment: every project has to touch its pins for this release anyway. Doing it later would mean asking everyone to update twice.

Upgrading

  1. Update sigil: "^0.18.6" to sigil: "^0.19".
  2. Remove every from-git entry for a package that has moved: sigil-args, sigil-format, sigil-git, sigil-repl, and sigil-docs (now sigil-help, from the monorepo).
  3. Remove the entries for the six libraries now in stdlib: sigil-ansi, sigil-fp, sigil-hooks, sigil-match, sigil-socket, sigil-version. Leave your imports alone; the module names did not change.
  4. Run sigil deps update. deps install will not do it: a pin that still satisfies its declared range is left alone, which is correct for install and the wrong tool here.
  5. Build and run your tests.

A module reported from two places means a standalone pin is still somewhere in the dependency closure. Removing it resolves the conflict.