CopperSharp.Compiler.Cli 0.1.0-preview.1

This is a prerelease version of CopperSharp.Compiler.Cli.
dotnet tool install --global CopperSharp.Compiler.Cli --version 0.1.0-preview.1
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local CopperSharp.Compiler.Cli --version 0.1.0-preview.1
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=CopperSharp.Compiler.Cli&version=0.1.0-preview.1&prerelease
                    
nuke :add-package CopperSharp.Compiler.Cli --version 0.1.0-preview.1
                    

CopperSharp.Compiler.Cli

Command-line driver for the optional CopperSharp.Compiler CIL-to-Motorola 68k ahead-of-time compiler.

dotnet tool install --global CopperSharp.Compiler.Cli --version 0.1.0-preview.1
copper68kc Firmware.dll --entry Firmware.Boot::Main --cpu 68000 \
  --format hunk --output Firmware.hunk
copper68kc Application.dll --entry Application.Program::Main \
  --platform amiga --format hunk --output Application
copper68kc Firmware.dll --entry Firmware.Boot::Main \
  --format asm --runtime application --output Firmware.s
copper68kc Firmware.dll --entry Firmware.Boot::Main \
  --framework-report framework-compatibility.json

--framework-report <file|-> performs closed-world analysis without generating target code. It writes the exact reachable .NET framework members, shortest rooting paths, call sites, compatibility status, binding, effects, required runtime features, and pinned reference-pack contract as JSON. Use - for standard output. The command returns a non-zero exit code when the reachable graph contains a deferred or unsupported member.

--platform amiga enables Amiga SDK library-vector resolution and automatic library-base handling. The default generic platform remains freestanding. --managed-assemblies <file> adds resolved dependency assemblies from one UTF-8 path per line. @response-manifest accepts the versioned SDK key=value format, including repeated managed-assembly entries, so dependency paths and publish settings do not expand the shell command. --compatibility-report writes the exact framework analysis already produced by a successful compilation; it does not run a second reachability pass. Its schema-version 2 NativeCompatibility object also records the selected exception and effective memory modes, final exception-region and fatal-machine- fault-site counts, linked runtime features and helpers, every external native assembler target, and exact identities of the managed assemblies that contributed to the reachable graph. Fatal-machine-fault sites are decoded only from the final executable section ending at the first data boundary; read-only, writable, and BSS data words are excluded.

--framework-implementation-manifest <file> opts into compiler-approved bodies from an explicitly pinned framework implementation pack. The same setting is available as framework-implementation-manifest=<file> in a response manifest. The compiler does not inspect installed host runtimes: it verifies the assembly identity, MVID, and SHA-256 declared by the supplied manifest, and records that provenance in the map and compatibility JSON. Implementation assemblies remain separate from --managed-assembly dependency inputs.

For the supported Stopwatch instance slice, pinned CoreLib is preferred when a verified manifest is available: it provides the official implementation and currently beats the shadow implementation in image size, generated code size, and measured execution cycles. Omitting the option keeps ShadowStopwatch as the deterministic fallback; the CLI never discovers a host runtime on its own.

Run copper68kc --help for ROM layout and fixed-address import options. Use --fpu disabled|040|68882|soft to select floating-point generation. 040 requires --cpu 68040 or --cpu 68060; 68882 requires --cpu 68020. Floating point is disabled by default. --clr auto enables CLR for known-readable frame and stack slots and automatically for all memory on 68020/040/060 output; use --clr always to opt in for other 68000-compatible memory targets. --peephole fixed-point preserves historical whole-image convergence. --peephole bounded applies a deterministic rewrite budget for very large closed-world graphs; skipped optional rewrites affect code quality, not program semantics. --peephole disabled skips optional post-allocation condition-code and peephole rewrites while retaining lowering, allocation, verification, and linking. HUNK output defaults to the terminating application lifetime. Assembly output defaults to freestanding; pass --runtime application only when the entry is invoked once and private image storage becomes unobservable after it returns. ROM output is persistent and never receives terminal-store removal. HUNK output includes method symbols by default. Pass --symbols off to omit HUNK_SYMBOL records from release executables. The equivalent response manifest entry is symbols=off.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
0.1.0-preview.1 72 8/27/2026