Skip to content

[skip ci] Link technical resources in CONTRIBUTING.md #11155

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 5 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ had several contributions accepted, commit privileges are often quickly granted.
* [Pull requests](#pull-requests)
* [Filing bugs](#filing-bugs)
* [Feature requests](#feature-requests)
* [Technical resources](#technical-resources)
* [Writing tests](#writing-tests)
* [Writing documentation](#writing-documentation)
* [Getting help](#getting-help)
Expand Down Expand Up @@ -85,6 +86,29 @@ You may also want to read
[The Mysterious PHP RFC Process](https://blogs.oracle.com/opal/post/the-mysterious-php-rfc-process-and-how-you-can-change-the-web)
for additional notes on the best way to approach submitting an RFC.

## Technical resources

There are a number of technical resources on php-src. Unfortunately, they are
scattered across different websites, and often outdated. Nonetheless, they can
provide a good starting point for learning about the fundamentals of the code
base.

* https://www.phpinternalsbook.com/
* https://www.npopov.com/
* [Internal value representation](https://www.npopov.com/2015/05/05/Internal-value-representation-in-PHP-7-part-1.html), [part 2](https://www.npopov.com/2015/06/19/Internal-value-representation-in-PHP-7-part-2.html)
* [HashTable implementation](https://www.npopov.com/2014/12/22/PHPs-new-hashtable-implementation.html)
* [Zend Virtual Machine](https://www.npopov.com/2017/04/14/PHP-7-Virtual-machine.html)
* [How opcache works](https://www.npopov.com/2021/10/13/How-opcache-works.html), [opcache optimizer](https://www.npopov.com/2022/05/22/The-opcache-optimizer.html)
* https://wiki.php.net/internals
* [Objects](https://wiki.php.net/internals/engine/objects)
* https://qa.php.net/
* [Writing tests](https://qa.php.net/write-test.php), [running tests][https://qa.php.net/running-tests.php]
* [PHPT structure](https://qa.php.net/phpt_details.php)
* https://phpinternals.net/ - parser related articles
* [Implementing new operator](https://phpinternals.net/articles/implementing_a_range_operator_into_php), [part 2](https://phpinternals.net/articles/a_reimplementation_of_the_range_operator)
* [Opcode extending](https://phpinternals.net/articles/implementing_new_language_constructs_via_opcode_extending)
* https://blog.ircmaxell.com/categories/PHP/

## Writing tests

We love getting new tests! PHP is a huge project and improving test coverage is
Expand Down