frostney / frostney/GocciaScript

Extract interpreter call-paths from FunctionValue / GeneratorValue

Open
#874 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

engine
Dominant language
Pascal
Stars
20
Forks
3
Avg merge
3d 4h
Merged PRs (30d)
45

Description

Summary

Extract the interpreter call-path methods from FunctionValue / GeneratorValue so those shared units stop depending on the evaluator.

Why

Goccia.Values.FunctionValue.pas and Goccia.Values.GeneratorValue.pas uses Goccia.Evaluator and call EvaluateExpression on their interpreter call paths, while the VM uses its own TGocciaBytecodeFunctionValue.Call. Those references keep the evaluator linked into every binary.

Current behavior

The shared value units embed interpreter-only Call / ExecuteFunctionBody paths that call into the evaluator.

Expected behavior

  • The interpreter call paths are removed or relocated so FunctionValue / GeneratorValue no longer use the evaluator.

Scope notes

  • A coupling to sever before deletion (#875). Parent #825.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with Goccia.Values.FunctionValue.pas and Goccia.Values.GeneratorValue.pas, then trace their interpreter call paths and the EvaluateExpression references into Goccia.Evaluator. Confirm the coupling described by #875 before changing the shared units; done means those units no longer use the evaluator and the interpreter call paths have been removed or relocated.

Written by the indexing model from the issue text.

Assessment

Domain
compilers
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.