Skip to content

Releases: marcelocantos/cv

v0.12.0

Choose a tag to compare

@github-actions github-actions released this 28 Oct 08:08
f58b3b5

What's Changed

  • Publish the Homebrew formula with tapper instead of homebrew-releaser by @marcelocantos in #9

Full Changelog: v0.11.0...v0.12.0

v0.11.0

Choose a tag to compare

@github-actions github-actions released this 20 Oct 19:42
e5f5490

What's Changed

Full Changelog: v0.10.0...v0.11.0

v0.10.0

Choose a tag to compare

@marcelocantos marcelocantos released this 01 Jun 08:55
e5f5219

Headline: the project formerly known as mk is now cv.

Pure rename release — no behaviour changes, no new features. The name cv (short for converge) reframes the tool around its core function: drive a project toward a declared state, with cv as the imperative verb. Pairs naturally with bullseye (the target system) and the /cv skill (which audits convergence) for a shared vocabulary across the convergence toolchain.

Why rename

Plan 9 mk (Andrew Hume & Bob Flandrena, 1989) is a build tool of the same category, using the same mkfile filename, with 35+ years of prior art. Disambiguating dissolves the PATH/discoverability conflict and lets us acknowledge Plan 9 mk explicitly as the predecessor — many of mk's design choices ($target style metavariables, parallel-by-default, oneshell-by-default, mkfile convention) were independent re-derivations of decisions Plan 9 mk made first. The lineage is preserved verbatim in DESIGN.md, docs/why-cv.md, and docs/discovered-dependencies.md.

Scope of the rename

  • Go package mk → cv; module github.com/marcelocantos/mk → github.com/marcelocantos/cv. (Old URL redirects.)
  • Binary cmd/mk → cmd/cv; output cv.
  • Conventional file mkfile → cvfile.
  • State directory .mk/ → .cv/.
  • Stdlib files std/*.mk → std/*.cv; embed directive updated.
  • Shell completions completions/cv.bash, completions/cv.zsh; functions renamed to _cv.
  • CI workflow: ldflags target, tarball naming, Homebrew formula install/test blocks, completion install paths.
  • Old Homebrew formula Formula/mk.rb deleted from marcelocantos/homebrew-tap. This release creates Formula/cv.rb.

For existing mk users (i.e., me)

brew uninstall mk
brew update
brew install marcelocantos/tap/cv

No on-disk state needs migration: .mk/ directories from prior builds are simply ignored by cv and can be deleted at leisure. Old mkfiles need to be renamed to cvfile (or you can run cv -f mkfile to keep the old filename per-project).

What's not changing

  • The DESIGN.md spec — the language, semantics, and engine are unchanged from v0.9.0.
  • The discovered-dependency model (DESIGN.md §11) shipped in v0.9.0 — still here, still working, still self-healing on deleted headers.
  • The release-tag history. v0.1.0–v0.9.0 of the project remain in this repo under their original names (the audit log preserves the mk name for those releases verbatim).

v0.9.0

Choose a tag to compare

@marcelocantos marcelocantos released this 31 May 02:45
ddcc5bd

Headline: include std/c.mk now tracks C/C++ headers correctly with no -include *.d, no -MP, no .d files in the source tree, and no deleted-header crashes. mk learns what each recipe actually read, records it in the content-hashed build database, and self-heals on deletion.

Added

  • Discovered-dependency model (DESIGN.md §11). Two edge kinds: hard (declared, ordering + staleness) and soft (discovered, staleness only). A vanished soft-dep counts as "changed," never as "missing input" — the stale edge triggers the very rebuild that erases it.
  • [deps: <format>] annotation. Recipe writes a depfile to $depfile; mk parses it and folds the reads into the DB. Formats: gcc, makefile, msvc, json, lines, trace.
  • [scan: <cmd>] + [scan-format: <fmt>]. Cheap pre-pass for two-phase analysis; in-graph paths it discovers are built before the heavy recipe runs.
  • [writes: manifest <path>] / [writes: trace]. Dynamic outputs not known statically; mk fingerprints them and tracks them for staleness.
  • [reads: <glob>…]. Declared read envelope; reads outside the envelope are flagged (warn / error under --verify).
  • $depfile recipe variable. Path mk allocates under .mk/deps/[<config>/]<target>.d.
  • --verify CLI flag. Errors on undeclared reads of in-graph targets (latent ordering races) and on envelope violations.
  • Linux trace mode. [deps: trace] / [writes: trace] runs the recipe under strace and records observed reads/writes from %file syscalls. macOS returns a clear "not yet implemented" error directing users to the depfile adapter.

Changed

  • std/c.mk and std/cxx.mk now carry [deps: gcc] and emit -MMD -MF $depfile. include std/c.mk Just Works for header tracking.
  • NewExecutor collapsed from three growing constructors into a single struct-arg NewExecutor(graph, state, vars, *ExecutorArgs).
  • BuildState.Record signature gains a discovered []string and a discoveredOutputs []string parameter.

Design

The full rationale, prior art (Ninja, tup, Shake, redo, Vesta, Build Systems à la Carte), and non-goals are in docs/discovered-dependencies.md.

v0.8.0

Choose a tag to compare

@marcelocantos marcelocantos released this 02 Mar 01:24

Added

  • Inline comments: target: dep # comment and var = value # comment are now supported on non-recipe lines
  • STABILITY.md for pre-1.0 surface tracking

Changed

  • Expanded test coverage for sibling cross-references, nested scoped includes, and nested pattern discovery

v0.7.0

Choose a tag to compare

@marcelocantos marcelocantos released this 22 Feb 13:54

Changed

  • --help-agent now prefixes the agents guide with CLI usage text (flags and descriptions)

v0.6.0

Choose a tag to compare

@marcelocantos marcelocantos released this 22 Feb 13:17

Added

  • -C DIR flag — change to the specified directory before doing anything (like make -C)

v0.5.0

Choose a tag to compare

@marcelocantos marcelocantos released this 22 Feb 10:26

Added

  • --version flag — prints version injected at build time; shows mk dev for local builds

Changed

  • Renamed --agents-guide to --help-agent

Fixed

  • Homebrew formula version detection (was showing "64" instead of the actual version)
  • Homebrew formula checksum upload no longer fails on scoped tokens

v0.4.0

Choose a tag to compare

@marcelocantos marcelocantos released this 22 Feb 09:08

Fixed

  • Recipe indentation is now preserved — only the common base indentation is stripped, keeping relative indentation intact. Previously all leading whitespace was stripped, breaking recipes where indentation is significant (e.g. inline Python scripts).

Changed

  • Homebrew formula switched from source build to pre-built binaries (no longer requires Go to install)
  • Release tarballs now include shell completion files

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 22 Feb 08:44

Full Changelog: v0.2.0...v0.3.0