Esolang.Funge.Processor
2.0.0
dotnet add package Esolang.Funge.Processor --version 2.0.0
NuGet\Install-Package Esolang.Funge.Processor -Version 2.0.0
<PackageReference Include="Esolang.Funge.Processor" Version="2.0.0" />
<PackageVersion Include="Esolang.Funge.Processor" Version="2.0.0" />
<PackageReference Include="Esolang.Funge.Processor" />
paket add Esolang.Funge.Processor --version 2.0.0
#r "nuget: Esolang.Funge.Processor, 2.0.0"
#:package Esolang.Funge.Processor@2.0.0
#addin nuget:?package=Esolang.Funge.Processor&version=2.0.0
#tool nuget:?package=Esolang.Funge.Processor&version=2.0.0
Esolang.Funge.Processor
Execution engine for Funge-98 programs.
Overview
FungeProcessor executes a FungeSpace loaded by Esolang.Funge.Parser.
It implements the full Funge-98 core instruction set including concurrent Instruction Pointers.
Supported instructions
| Category | Instructions |
|---|---|
| Stack | 0–9 a–f (push), : (dup), $ (pop), \ (swap), n (clear) |
| Arithmetic | + - * / % |
| Comparison | ` ! |
| Direction | > < ^ v h l ? [ ] r x m |
| Movement | # (trampoline), ; (jump over), j (jump forward) |
| String mode | " |
| Branching | _ | w |
| I/O | . , & ~ |
| Storage | p (put), g (get) |
| Reflection | k (iterate) |
| Concurrency | t (split IP) |
| Stack stack | { } u |
| Misc | z (no-op), q (quit) |
| Reflected | ( ) (fingerprints not implemented) |
Funge-98 Compliance
Targets Funge-98 with 3D navigation (h/l/m). Fingerprint extensions are intentionally out of scope.
| Category | Instructions | Status |
|---|---|---|
| Stack | 0–9 a–f : $ \ n |
✅ |
| Arithmetic | + - * / % |
✅ |
| Comparison | ` ! |
✅ |
| Direction (cardinal) | > < ^ v ? |
✅ |
| Direction (Funge-98) | [ ] r x w |
✅ |
| Branching | _ \| |
✅ |
| Movement | # ; j |
✅ |
| Iteration | k |
✅ |
| String / char | " ' s |
✅ |
| Storage (self-modifying) | g p (with storage offset) |
✅ |
| I/O | . , & ~ |
✅ |
| Concurrency | t |
✅ |
| Stack stack | { } u |
✅ |
| System info | y |
✅ |
| Misc | z @ q |
✅ |
| File I/O | i o |
✅ |
| System exec | = |
✅ |
| Fingerprints | ( ) A–Z |
❌ reflects (not implemented) |
| 3D (Trefunge) | h l m |
✅ |
Installation
dotnet add package Esolang.Funge.Processor
Usage
using Esolang.Funge.Parser;
using Esolang.Funge.Processor;
var space = FungeParser.ParseFile("hello.b98");
var proc = new FungeProcessor(space);
int exitCode = await proc.RunToEndAsync();
FungeProcessor executes programs via an event stream. You can run it to completion using RunToEndAsync() (or the synchronous Run()), which defaults to Console.In / Console.Out.
For fine-grained control, use RunAsyncEnumerable() to handle I/O events manually.
Run() and RunToEndAsync() accept optional TextReader and TextWriter arguments, and an optional CancellationToken. They return the exit code set by q (0 if not used).
References
- Funge-98 Specification — Chris Pressey, Cat's Eye Technologies
- Funge-98 — Esolangs Wiki
- Mycology — Funge-98 compliance test suite
Target Frameworks
net8.0 · net9.0 · net10.0
AOT / trimming compatible.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. 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. |
-
net10.0
- Esolang.Funge.Parser (>= 2.0.0)
- Esolang.Processor.Abstractions (>= 2.0.2)
-
net8.0
- Esolang.Funge.Parser (>= 2.0.0)
- Esolang.Processor.Abstractions (>= 2.0.2)
- System.IO.Pipelines (>= 10.0.6)
-
net9.0
- Esolang.Funge.Parser (>= 2.0.0)
- Esolang.Processor.Abstractions (>= 2.0.2)
- System.IO.Pipelines (>= 10.0.6)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.