Skip to content

2.0.0: PHP 8.5 minimum, files parsed in worker processes, faster builds - #15

Merged
hbenabdallah merged 1 commit into
mainfrom
php-8.5-parallel-extraction
Oct 30, 2026
Merged

hbenabdallah merged 1 commit into
mainfrom
php-8.5-parallel-extraction

Conversation

@hbenabdallah

Copy link
Copy Markdown
Owner

2.0.0: PHP 8.5 minimum and faster builds.

Breaking: phpgraph now needs PHP 8.5 to run from Composer or the PHAR. Binaries and the Docker image are unaffected.

  • PHP 8.5: Composer platform, CI matrix (8.5 only), binaries workflow, README; phpdoc-parser 2.4 (NameNode) handled in DocTypeResolver.
  • Files parsed by one worker process per processor (pcntl, Builder/ParallelExtraction, PHPGRAPH_WORKERS); sequential without pcntl (Windows). pcntl added to the Docker image and to bin/dev.
  • Vendor signatures read without method bodies (SignatureExtractor); chains typed once (typeOf, TypeExpr::map).
  • Extraction cache and worker results: one payload per file, positional __serialize/__unserialize on the hot classes (memory ×3.5 and 5.5 s of unserialize without them).

Checked: graph identical on all 11 corpus projects (node and edge hashes); composer check green (358 tests); build and serve run through the Docker image (stdout pure JSON-RPC). Docker image, 12-thread laptop: Sylius 28 → 10 s, Akeneo 26 → 17 s, warm cache Sylius 14 → 8 s.

Corpus baseline re-recorded with workers, counts unchanged; times measured on a busy machine: Sylius 12.7 → 9.2 s, Akeneo 18.7 → 14.3 s, PrestaShop 20.4 → 12.7 s, WordPress 9.7 → 5.1 s.

@hbenabdallah
hbenabdallah merged commit 77490b5 into main Oct 30, 2026
2 checks passed
@hbenabdallah
hbenabdallah deleted the php-8.5-parallel-extraction branch October 30, 2026 23:28
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