Repository navigation
miso is a dependency, locked like the others: not on every project's path - #22
Merged
Merged
Conversation
…path The release took miso among the tool's packages, so every project used the miso of the tool it was built with, which miso.lock did not record: a new release of the tool changed the miso of every project. miso is now a dependency (miso new writes dependencies: [miso]), locked as a git dependency at a commit of dmjio/miso. - miso, with no source of its own, is the miso of the release: the commit of flake.lock it was built from (mhs-VERSION/miso-default, with its version and flags), locked at that commit. miso install copies the package the release built (mhs-VERSION/miso-prebuilt) when that is the one locked and built against the tool's packages, and builds it from the source the release ships otherwise (without a download). A project keeps the commit of its miso.lock with a new release; miso update moves it to the new release's. scripts/prebuilt-miso.sh takes miso out of the tool's package database (build-release.sh and flake.nix run it). A project whose code imports Miso without depending on miso gets the release's, with a warning; with a release from before, miso is among the tool's packages as it was.
dmjio
force-pushed
the
miso-locked-dep
branch
from
October 21, 2026 02:50
e906532 to
a1fc8ec
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #21; the base is
project-local-deps. Merge #21 first, then retarget this PR tomain.Why
miso shipped among the tool's packages, so every project used whatever miso the tool came with, and
miso.lockdidn't record it. A new release of the tool silently changed the miso of every existing project.What changes
miso new(andmiso init) writedependencies: [miso], andmiso.locklocks it as a git dependency at a commit ofdmjio/miso.- misomeans "the miso of this release". That's theflake.lockcommit the release was built from;mhs-VERSION/miso-defaultrecords the repository, commit, version and flags. It's locked at that commit with no network access.miso installcopies the prebuilt package frommhs-VERSION/miso-prebuilt/when the locked commit and flags match and nothing it was built against has been replaced. Otherwise it builds miso from the source the release ships, without downloading.miso updatemoves it to the new release's commit. A project can also use another miso withgit:,path:(with the release's flags) or a Hackageversion:.scripts/prebuilt-miso.shtakes miso out of the tool's package database, so it's no longer on mhs's path.build-release.shandflake.nixboth run it.Misowithout depending on it gets the release's miso, with a warning that says how to add the dependency.miso-default), miso is among the tool's packages as before.miso doctorchecks for the prebuilt miso.Testing
Run against a local release of this branch (MicroHs 0.16.10.0, x86_64 macOS):
Installing miso at a3e6937 (1.14.0.0) (built already, as it came with this miso); buildsmiso locka3e6937, version 1.14.0.0dependencies: []that importsMisoa3e6937(one-time clone ofdmjio/miso, since the new tool doesn't ship that source)scripts/smoke-test.shNot tested:
transformers. By design, miso is rebuilt from the shipped source against the replacement, because its store key includes the replacement's ID.flake.nixchange (CI builds it).