Skip to content

Tag an 8.4.1 release so tag-based consumers get the debugger primitives #141

Description

@lisachenko

Correction to the original report: I first claimed Packagist does not publish 8.4.x-dev. That was wrong — my parsing of the Packagist metadata crashed partway and I drew a conclusion from a truncated listing. Packagist does publish 8.4.x-dev at ref c54079c (branch 8.4 HEAD, which contains #138), and it resolves fine:

$ composer update --dry-run          # on PHP 8.4
  - Locking lisachenko/z-engine (8.4.x-dev c54079c)

So there is no blocker here, and downstream lisachenko/zdebug is not blocked by this repo. Sorry for the noise. The request below is what actually remains, at much lower priority.

What remains: the 8.4 line has no tag containing the debugger primitives

The newest tag on the 8.4 line is 8.4.0, which predates #138:

$ git show 8.4.0:src/System/ExecutionData.php | grep -c getLocalVariables
0
$ git log --oneline 8.4.0..origin/8.4 | head -5
c54079c Merge pull request #138 from lisachenko/claude/xdebug-z-engine-php-heop18
2012702 docs: self-debugging feasibility research (Xdebug equivalent in pure PHP)
bcb8cfe fix(system): guard ExecutionData::getSymbolTable() with the call_info flag
3f9786a feat(system): engine error and VM interrupt hooks for debugger tooling
7a58c2b feat(reflection): named local variable access for stack frames

APIs added in #138 that are only reachable from the branch, not from any tag:

  • ExecutionData::getLocalVariables() / getLocalVariable()
  • FunctionLikeTrait::getVariableNames()
  • ExecutionData::getSymbolTable() — nullable, ZEND_CALL_HAS_SYMBOL_TABLE-guarded (previously a segfault)
  • Core::setErrorCallbackHandler() / ErrorCallbackHook
  • Core::setInterruptHandler() / InterruptHook + Executor::requestInterrupt()

Why it matters

Consumers that prefer stable tags cannot get these APIs. For example the sibling project php-shared-data-extension uses:

"lisachenko/z-engine": "dev-master || ^8.4"

On a PHP 8.4 runner that resolves to the tag 8.4.0, because dev-master requires ~8.5.0 and is excluded — i.e. tag-based consumers on 8.4 silently sit on a pre-#138 z-engine.

Requested

Cut a 8.4.1 tag from branch 8.4 (currently c54079c) so the 8.4 line has a release carrying the #138 primitives. Purely a convenience for tag-based consumers; branch-tracking consumers (8.4.x-dev) are already fine.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions