Skip to content

flame 0.4.0

Choose a tag to compare

@github-actions github-actions released this 28 Sep 12:26
· 15 commits to main since this release
0.4.0
e678f13

flame 0.4.0 — the flame command for Linux, macOS and Windows, its installer, and
flame-client, flame-core and flame-web, the libraries it is built from.

Installing

curl -fsSL https://propensive.dev/flame | sh

Or, without trusting the redirect, from this release alone — a 106-byte POSIX-shell bootstrap
which downloads the flame script below, checks it against the digest given here, and runs it:

openssl base64 -d <<EOF | sh -s -- https://github.com/propensive/flame/releases/download/0.4.0/flame 0b64f69628bf9d45d78a12d04c99cf566fee1cef423b914a4e9fbdd264e1ad95
Zj1gbWt0ZW1wYDtjdXJsIC1zTG8gJGYgJDF8fHdnZXQgLXFPICRmICQxO2Nhc2UgYG9wZW5zc2wg
ZGdzdCAtc2hhMjU2ICRmYCBpbiAqJDIpY2htb2QgK3ggJGY7ZXhlYyAkZjtlc2Fj
EOF

Changes

Release 0.4.0 against Soundness 0.69.0 and Pyrocosm 0.4.0 (#20)

Pins Soundness 0.69.0 and Pyrocosm 0.4.0, bumps flameVersion to 0.4.0, and moves etc/xeq.tsv from xeq-0.6 to xeq-0.9, the runner Soundness 0.69.0 packages with. The sources follow four 0.69.0 changes, with no behaviour change: the UTF-8 codec givens are renamed (charEncoders.utf8Encoder → codepages.utf8Codepage); highlighting.typecheckedScala moved out of harlequin-core into harlequin-typed, which is now a dependency; the removed stratiform-binary module is dropped, BinTEL now living in stratiform-core; and the removed delicious.semantic extension on Notice is replaced by its own definition, notice.markup.let(SemanticMessage.parse(_)). Pyrocosm 0.4.0 exhibits a thrown exception as a Block.Trace, which the test suite's text helpers now read.
The tests run under fume 0.5.0 (with flair 0.4.0 alongside in etc/tools): fume 0.4.1 reads Soundness 0.68.0's test-event schema, so a suite built against 0.69.0 would fall back to its legacy run. The suite passes on CI, 163 of 163 (plus one aspiration).

Locally on macOS, the three scope-inspection tests and the stack-trace exhibit exceed their time budgets: the released 0.69.0 jars record /home/runner/… source paths in their TASTy, and every stat under /home goes through the automounter on macOS (~10 ms each), which the compiler's source lookups multiply into tens of seconds. Snapshot jars built on this machine never had that, and Linux CI does not either.

Update the tool pins, and configure fume, flair and flame (#19)

Brings the tool pins up to the current releases and adds the per-project configuration each tool looks for, so that fume, flair and flame all run in this repository with no arguments.

Tool pins

etc/tools moves to fume 0.4.1 and flair 0.3.0, and gains flame 0.3.0. A tool is always a release and never gates one, so this is free of the release graph.

Adding flame is what makes make tools install the REPL alongside the other two.

Configuration

.pyrocosm/flame/config.tel is new. Flame resolves it upwards from the invocation directory exactly as .git is found, so flame works from any subdirectory, and it puts this project on the REPL classpath — the jar make test builds, which is the widest classpath the project has. Note that flame resolves a relative classpath entry against the project root (the directory holding .pyrocosm), where fume resolves its own against the invocation directory; the two tools genuinely differ, and the file says so.

The presence of .pyrocosm/flame/ is also how a project opts into persistent prompt history, so .pyrocosm/flame/history is gitignored.

A gitignore bug worth knowing about

The ignore patterns here were unanchored — a bare out, dist/ and the name of the built executable. A bare pattern matches a path component at any depth, not just the repository root, so .pyrocosm/flame/ was ignored wholesale and its config.tel could not be committed at all. They are now anchored (/out, /dist/, …), matching what fume already did.

Assets

flame-client, flame-core and flame-web, each attached as <artifactId>-0.4.0.jar, with
its POM and ivy.xml embedded under META-INF/maven/ — the jar alone is enough for a consumer
to resolve it. Depend on this release by pinning it in etc/refs:

propensive/flame	0.4.0

make sync-deps installs the set into a local ivy repository, transitively; see
propensive/.github for the scheme.

Also attached: one flame executable per platform (flame-linux-x64, flame-linux-arm64,
flame-macos-x64, flame-macos-arm64 and flame-windows-x64.exe); flame, the polyglot
bootstrap — a small any-shell script, to be renamed flame.bat or flame.ps1 on Windows, which
downloads the right executable, verifies its checksum, replaces itself and re-invokes; and
install.sh, which https://propensive.dev/flame redirects to. Each executable externalizes
the libraries above, resolving further dependencies from the Soundness and proscala releases and
from Maven Central on first run.