dircue 0.9.0
Dircue 0.9.0
Dircue profiles source repositories and other directories of computer content.
This release hardens the current profiling line while 1.0 remains reserved for
the broader directory map described in issue #81.
Highlights
Linguist parity corrections
Language detection now follows the pinned GitHub Linguist 9.7.0 strategy chain
more closely. Filename and extension candidates narrow correctly, Linguist's 23
generic extensions defer to later strategies, and content heuristics inspect the
first 50 KiB. The classifier's separate 50 KiB window is covered by an
adversarial regression test.
These are intentional classification corrections and can change language labels
or totals. The affected cases include Perl scripts with ambiguous extensions and
headers whose distinguishing C++ syntax occurs after the Linguist heuristic
window. Metadata-only discovery keeps filename hints separate from confirmed
language detection.
Bounded Git reads
Git snapshots now use up to three independent object lanes as worker demand
increases. They bound retained pack readers and close storage on success,
failure, and cancellation. The maintained go-git fork avoids repeated replay
when resolving seekable delta bases and closes readers after object-size
lookups and failed pack-cache insertion. Its patch and source provenance are
checked before release.
On a case-sensitive APFS volume containing the same pinned 96,039-path Linux
kernel tree in Git and directory form, three final-source Git runs measured
these medians at 16 workers:
| Operation | Git source | Directory source | Git / directory |
|---|---|---|---|
| Code metrics | 10.07 s | 6.99 s | 1.44× |
| Languages | 8.13 s | 6.87 s | 1.18× |
Each Git command produced the same output bytes across runs. Observed peak
resident memory ranged from 789–816 MB (decimal) for metrics and 862–932 MB
for languages. A sampled descriptor check observed 13 open numeric descriptors,
including six pack descriptors. These are observations, not process-wide hard
limits; nested Git deltas can open transient readers beyond the retained-reader
cap. The direct final-binary one-to-16-worker metrics speedup was 4.05×,
compared with 4.69× for directory mode. See the performance receipt
for commands, samples, worker scaling, and a Docker bind-mount case. Docker
Desktop file sharing remains substantially slower than native access on the
tested bind mount; issue #93
tracks that separate bottleneck.
More reliable analysis and comparison
--on-error continuenow retains partial results for supported recoverable
manifest reads and per-file structural-worker failures. Cancellation,
startup failures, and protocol violations remain fatal.- Pattern-only
.gitattributeslines are silent no-ops, and supported Cargo
inheriteddefault-featuresforms receive edition-aware diagnostics. - Saved-report comparison can report added or removed languages when both
warning-free inputs prove that language classification ran. Text comparison
renders compound identities as readable quoted components while preserving
stable JSON IDs. .NETglobal.jsonselection is limited to modeled invocation contexts.
JSONC syntax is reported explicitly, and independently explained strict-JSON
gaps no longer make otherwise complete environment coverage partial.- Directory
--tree-sizeedge behavior remains compatible with Linguist, and
single-file inspection continues to ignore that directory-only limit.
Better offline guidance
The binary now includes an offline workflow guide, a machine-readable CLI
catalog, and exportable standalone JSON Schemas:
dircue capabilities --guide
dircue capabilities --cli --json
dircue capabilities --schema profileHelp and diagnostics now expose finite choices, suggest nearby supported values,
retain safe underlying error causes, and describe signal termination accurately.
The proposed 1.0 compatibility policy is explicitly a discussion draft: 0.9
keeps the legacy Linguist CLI and JSON as compatibility targets without deciding
whether every existing analyze report becomes a frozen 1.x profile.
Install
While the repository is private, use an authenticated GitHub CLI session to
download the archive for your platform and the attached SHA256SUMS file.
Linux amd64 is shown here:
gh release download v0.9.0 --repo war-and-code/dircue \
--pattern 'dircue_0.9.0_linux_amd64.tar.gz'
gh release download v0.9.0 --repo war-and-code/dircue --pattern SHA256SUMS
sha256sum -c SHA256SUMS --ignore-missing
tar -xzf dircue_0.9.0_linux_amd64.tar.gz
mkdir -p "$HOME/.local/bin"
install -m 755 dircue "$HOME/.local/bin/dircue"Core archives are attached for Linux and macOS on amd64 and arm64, plus Windows
amd64. Attached Python wheels contain the same Go executable bytes. Once the
repository is public, a compatible wheel can be installed from its Release URL:
uvx --from \
https://github.com/war-and-code/dircue/releases/download/v0.9.0/dircue-0.9.0-py3-none-manylinux_2_17_x86_64.whl \
dircue --breakdown --json /path/to/directoryWhile the repository remains private, download a compatible wheel with gh
and pass the local file to uvx:
gh release download v0.9.0 --repo war-and-code/dircue \
--pattern 'dircue-0.9.0-py3-none-manylinux_2_17_x86_64.whl' \
--dir ./dircue-0.9.0-assets
uvx --offline --no-index \
--from ./dircue-0.9.0-assets/dircue-0.9.0-py3-none-manylinux_2_17_x86_64.whl \
dircue --breakdown --json /path/to/directoryThe wheels require Python 3.10 or newer. This release does not publish a
package to PyPI. The optional structural worker remains a separate release
archive.
Validation
- The Linguist differential suite completed 600 cases with 582 passes, 18
documented expected differences, and no unexpected failures. - Dircue's maintained classifier matched the labels and ordered token
sequences of all 3,388 pinned Linguist samples; stock Enry is measured
separately in the conformance notes. - The source-bound corrected Linux kernel profile matched independent Linguist
parsed JSON values exactly across all 25 reported languages. - The 0.8 compatibility gates passed all 319 cases: 304 exact results, 12
reviewed diagnostic improvements, and three narrowly asserted correctness
fixes. - Maintained-fork manifests and regeneration checks passed, along with targeted
race tests andgo vet.
See the changelog
for the complete list of changes and the
capability guide
for supported inputs and current boundaries.