stop all work on text regex, ngra text regex is now frozen

This commit is contained in:
Youmu Liu
2026-09-15 18:06:52 +08:00
parent 57587bec16
commit e04adf594a
33 changed files with 1008 additions and 49 deletions
@@ -0,0 +1,51 @@
# Frozen Text Regex implementation
Text Regex is archived following the [NGRA transformation plan](../../../future/NGRA_Transformation_Plan.md).
It is no longer NGRA's execution architecture or an active development target.
## Retained results and future string matching
Freezing development does not diminish the value of the work already completed. The project
produced reusable AST/token infrastructure, the five-link tree model and its normalization,
rotation, and merging techniques, as well as tested fixed-width COUNT retry logic. The archived
generator also records useful engineering lessons about continuations, group boundaries, label
ownership, and rollback. These are reference material for the new architecture, not a claim that
the old matcher is feature-complete.
Future string-regex functionality will use .NET `GeneratedRegex`. Further research into custom
`Span<char>` and SIMD optimizations for the Text Regex matcher is discontinued. This boundary
applies to the string-regex implementation, not to SIMD work elsewhere in Nitload.
## Contents
- `Text/`: the text tokenizer/parser, regex-specific AST and optimizers, matcher contract,
attribute, and all source-generator files.
- `GroupIndex.cs`: the former group index/name record.
- `SourceGenerate.cs`: the unused source-generation entry stub.
- [Archived debug routines](../../../test/StgSharpDebug/Legacy/TextRegex): the original
AST inspection and generated-source preview programs.
Source contents and namespaces are preserved. The generic infrastructure in `../Abstraction/`
remains active, including the five-link node interface, generic AST, token abstractions,
compilation stack, and sequence emitter. Text-specific tree transformations remain here
as source material for future Pattern-to-NFA lowering.
## Build boundary
The project excludes `Legacy/**/*.cs` from `Compile` and retains the files as `None` items.
They are not copied to build/publish output or packed. The active project no longer references
Roslyn or packages its assembly as a source generator. Debug routines have the same exclusion
in their own project and are not called from `Main`.
To investigate this implementation again, use a separate experimental project that explicitly
includes the archived files and supplies the former Roslyn dependencies:
`Microsoft.CodeAnalysis.CSharp` 4.13.0 and `Microsoft.CodeAnalysis.Analyzers` 3.11.0.
The debug preview also required Roslyn at runtime and the `StgSharpDebug` friend assembly.
Re-enabling files is not sufficient to make the unfinished matcher complete.
Historical notes remain in [IR_RETIRED.md](../IR_RETIRED.md) and
[regex_node_transaction.md](../regex_node_transaction.md). They describe earlier experiments,
not the new NFA execution contract. Older `.discard` material is unchanged.
The next runtime is planned around generic sequence input and Boolean ε-NFA execution;
weighted automata and NGRA-Tensor remain later development/research stages.