Repository navigation
Self-contained terminal #539
Description
Activity
- addedOpinions wantedWe are interested in your opinion about the topicWe are interested in your opinion about the topic
on Aug 11, 2026 Triage, 2026-08-11. Recommended for closure, and labelled
Opinions wantedrather than closed because declining a proposal is a maintainer's call.Terminal polish. The terminal has no measurable users — NuGet shows the library at 313k downloads against a terminal distributed as a handful of GitHub release artefacts — so this is effort against an audience that has not appeared.
This is one of thirteen dormant proposals swept in the same pass. If you disagree with any of them the label is the place to say so; if you agree, closing is the action. Nothing here is a defect report, so nothing is lost by closing except the record of the idea, which this comment preserves.
The terminal may be relevant together with AngouriMathMcp. Should the mcp server serve a dual-purpose as a terminal? Then the terminal would be more like a debug utility for the MCP server - utility even if no standalone users. Do some cross-repo analysis.
Self-contained already exists and has since 2022.
publish.shpublishes--self-containedfor
seven RIDs,pack-deb-linux.shbuilds.debs, andTerminalNightly.ymlreleases zips and debs to
AngouriMathLab.What is broken is the channel, not the capability: those releases stop at v1.0.0.6 (2022-09-28),
the workflow fires only on changes toSources/Terminal/VERSION, and its last three runs (2026-01-01)
failed at the workflow-file level. No pre-merge workflow builds the Terminal at all.Both remaining asks are dead, and for structural reasons
Single-file.
AssemblyLoadBuilder.fsloads the kernel viatypeInfo.Assembly.Location, checks
File.Exists, then#r "<path>"into FSI. UnderPublishSingleFile,Locationis empty for bundled
assemblies — so this fails by construction, not by configuration.Trimming. The Terminal hosts FSharp.Compiler.Service and compiles code typed at run time. There is
no static call graph to trim against.TrimMode=copyusedover dotnet-interactive plus FCS is not a
setting that can be got right.Correcting something worth correcting
The Terminal is not without users:
AngouriMath.Terminalon NuGet has 3,245 downloads against the
kernel's 320,987. Small, but not zero. Anddotnet tool installneeds the SDK, so the zips and debs
remain the only SDK-free channel — and they are four years stale, which is this issue's actual unmet
goal.Recommendation: reject single-file and trimming with the reasons above, and repoint the issue at
fixing or deletingTerminalNightly.yml. A release channel that last produced anything in 2022 and
now fails before it starts is the thing standing between this issue and its own objective.Easy issue, the agent can handle this
Sorry this sat for a week. #1496 fixes the release channel:
osx.12-arm64no longer publishes on .NET 8 and later, and the workflow can now be checked without releasing. A release still needsSources/Terminal/VERSIONbumped; the PR asks which version you want.- added a commit that references this issue
on Sep 27, 2026 The release version of the terminal should really just follow the package version. For example, if the upcoming release is 2.6 for the AngouriMath package just use that version for the terminal release alongside it.
#1541 does that. The Terminal's workflow now runs on
release: published, besideNuget.yml, and releases under the version from the release's tag, so 2.6.0 ships a 2.6.0 Terminal.Sources/Terminal/VERSIONis gone.- added a commit that references this issue
on Sep 28, 2026
The package I want to suggest the idea to: AngouriMath.Terminal
So that anyone could download it and use, without the need to use SDK and without installation. This means shipping a single executable file.
Problem 1: assemblies
The terminal relies on embedded kernel, to which we need to load assemblies of AngouriMath.Interactive. If we do single file, we need to keep those assemblies inside
Problem 2: trimming
Because of it, unused methods (almost all) will be removed. So we need to not trim only our packages, and let it trim everything else. To check DynamicDependency.