Go to file T
Code

homebrew-wolf

Homebrew formulae for the wolf language, its reference interpreter, and the lobo web server.

brew trust wolffe-lang/wolf
brew tap   wolffe-lang/wolf
brew install wolf

The brew trust line is required, and skipping it produces a misleading error. Homebrew refuses to load formulae from an untrusted third-party tap, and reports it as:

Refusing to load formula wolffe-lang/wolf/wolf from untrusted tap wolffe-lang/wolf.
Error: Cannot tap wolffe-lang/wolf: invalid syntax in tap!

There is no syntax error — the formulae pass ruby -c. The second line is Homebrew's generic failure message for a tap it declined to read. Trust the tap first and it taps cleanly.

formula what it is upstream
wolf the compiler — a compiled systems language with tiered region memory, no lifetime annotations wolf-lang
lupin the reference interpreter, and the compiler's differential oracle wolf-interp
lobo web server with nginx-compatible configs and prefork workers lobo

Your first program

printf 'fn main() {\n  print("hello, wolf")\n}\n' > hello.lu
wolf run hello.lu

The version string means something

The wolf and lupin formulae build from a tagged git source, not a release tarball, and that is deliberate. wolf --version is stamped by the builder: it names the version and the commit it was built from.

wolf 0.2.35 (wolfgang, pin cf0c13d)
paired with lupin 0.1.56 (reference interpreter), pin 294d626

A build made any other way — a plain cargo build, or a build from an archive with no .git — carries a +dev suffix instead. Unverifiable is dev. If your wolf --version prints a bare version and a pin, the binary can tell you exactly what it is.

Each formula's test block asserts that, so a formula that would ship an unstamped binary fails before it reaches you.

Platform support

Native codegen (wolf build, wolf run) serves macOS arm64 and linux x86-64 today. On other hosts the native tier refuses by name — never silently — and the checked tier still runs your program:

wolf test hello.lu

The per-host ledger is docs/platforms.md.

What runs before a bump reaches you

Two workflows, and they answer different questions.

doors.yml runs on every push to trunk and every pull request that touches a formula: it installs each one on a macOS runner, prints its version line, and runs its test block. Wolf and lupin are source builds; lobo uses its published archive and is also checked on Linux. A formula whose tag: and revision: disagree, or whose build breaks at a new tag, goes red here instead of in your terminal.

doors-fresh.yml runs daily and asks the other question: whether each formula still names the current upstream release. A package does not break when a version is cut — it quietly keeps serving the old one.

Reporting

Formula problems here; language and compiler problems upstream at wolf-lang.