Skip to content

Add fingerprint support and related documentation#7

Merged
juner merged 12 commits into
mainfrom
agents/add-fingerprint-support-table
Jun 4, 2026
Merged

Add fingerprint support and related documentation#7
juner merged 12 commits into
mainfrom
agents/add-fingerprint-support-table

Conversation

@juner

@juner juner commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Introduce fingerprint support across the Abstractions, Generator, and Processor components. Enhance documentation with detailed tables on fingerprint support status and instructions. Add tests for fingerprint dispatch in both Processor and Generator. Implement CLI options for NULL and FILE fingerprints, ensuring compatibility with multiple target frameworks. Update project references and configurations accordingly.

juner and others added 12 commits June 4, 2026 21:59
- Split fingerprint row into two: ( ) (stub) and A-Z (always reflects)
- Add Fingerprint support detail subsection with per-instruction table
- Covers root README, Generator/README.md, and Processor/README.md

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add Processor.Tests/FingerprintTests.cs with 7 tests covering:
  - Load ( with unknown handprint reflects
  - Load ( with known handprint pushes success flag (1)
  - Load ( dispatches A-Z instructions via fingerprint
  - Unload ) with known handprint pushes success flag
  - Unload ) reverts semantics so A-Z reflects again
  - A-Z without load reflects
  - NullFingerprint reflects for all letters
  - Stacked fingerprints: top wins; unload restores prior

- Add Generator.Tests FingerprintsProvider tests:
  - Instance property provider generates 'this.PropName' argument
  - Instance method provider generates 'this.Method()' argument
  - Static method provider generates global::-qualified expression
  - Unknown member name emits FG0012 diagnostic
  - FingerprintsProvider triggers RuntimeFungeExecutionContext emission
  - Full functional test: fingerprint load + dispatch in generated code

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…nd Processor

- Add Esolang.Funge.Abstractions package with IFingerprint, IFungeExecutionContext,
  FingerprintInstruction, FingerprintHandprint, FingerprintBuilder, NullFingerprint
- Wire fingerprint provider support in Generator (FingerprintsProviderAttribute,
  ResolveFingerprintsProvider, FG0012 diagnostic, runtime context generation)
- Implement ( / ) fingerprint load/unload and A–Z dispatch in Processor
- Add FungeExecutionContext and update InstructionPointer with Semantics stacks
- Fix CS1009 escape sequence bug in generated runtime code (\x interpolation)
- Remove unused ExtractFingerprint local function from generated runtime (CS8321)
- Remove outdated stub tests replaced by FingerprintTests.cs

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…EADME

- Update Funge-98 Support Status: fingerprint rows now ✅
- Add Fingerprint Support section with NULL fingerprint table and link to Abstractions
- Add Esolang.Funge.Abstractions to Choose Package, NuGet, and Framework Support tables
- Create Abstractions/README.md with package overview, built-in fingerprint list, and usage examples

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…10.0)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Introduces the FILE fingerprint (handprint 0x46494C45) as a separate
package to confirm the IFingerprint interface is sufficient for
real-world fingerprint implementations.

Supported instructions: C D G M O P R S W
Targets: netstandard2.0, netstandard2.1, net10.0 (AOT-compatible)
Uses #if NETSTANDARD2_0 to guard Index operator (^1) usage.

Also updates root README with FILE in Fingerprint Support, Choose
Package, NuGet, and Framework Support tables.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add FileFingerprintTests with 40 tests covering all FILE instructions (C,D,G,M,O,P,R,S,W)
- Add TestContext mock implementing IFungeContext for isolated unit tests
- Multi-target: net48;net8.0;net9.0;net10.0 on Windows, net8.0;net9.0;net10.0 elsewhere
- Fix FileFingerprint.cs Push0gnirts push order (forward order so last char on top)
- Fix push order for W (byte before handle) and P (0gnirts before handle) tests
- Add project to Esolang.Funge.slnx

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…Unreleased]

- Add Esolang.Funge.Fingerprints.File row to Framework Support table in README.md
- Add [Unreleased] CHANGELOG entries for Abstractions, Fingerprints.File, Generator [FingerprintsProvider], and Processor fingerprint dispatch

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…options

- Add --fingerprint-null option to enable the NULL fingerprint (0x4E554C4C)
- Add --fingerprint-file option to enable the FILE fingerprint (0x46494C45)
- Add ProjectReference to Esolang.Funge.Fingerprints.File in Interpreter csproj
- FileFingerprint is IDisposable and is properly scoped with using

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@juner juner merged commit f909d52 into main Jun 4, 2026
11 checks passed
@juner juner deleted the agents/add-fingerprint-support-table branch June 4, 2026 20:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant