Nuevo motor JIT para PHP-8.4/9

by tiempoantenacom

PHP-8.4/9 to Introduce New JIT Engine for Improved Performance

PHP, one of the world’s most popular web programming languages, is set to take a major ‌leap forward with the introduction of⁣ a new Just-In-Time (JIT) engine ​in its upcoming major release,⁤ PHP-8.4/9. This‌ innovation promises to deliver enhanced performance and wider optimization possibilities.

The next major version of PHP will ⁣make use of a new JIT engine. It is now a truly optimized compiler that is based on ⁣an intermediate representation, taking inspiration from the Java HotSpot Server Compiler and sharing notable similarities with ⁣the​ IR and compilation pipeline used by V8 TurboFan JavaScript Compiler.

Since the current compiler is difficult to modify, this change lays the groundwork for future improvements and abstracts​ many of the⁤ low-level details that were present in the previous version of PHP’s JIT.

In‍ this article, we will explore in detail the pros‌ and cons of this significant engine update, PHP’s JIT.

Comparison with PHP 8.* JIT Approach – The New ​Paradigm

Just-in-Time (JIT) is a technique used in computer language compilation. It helps improve performance by compiling certain parts of ‌the ⁣source code at runtime.

Unlike the previous approach in PHP 8.*, which generated native code‌ directly from PHP bytecode, the PHP-8.4/9​ version introduces a revolutionary approach based on Intermediate Representation (IR) – a lightweight JIT compilation framework.

With the current approach, PHP 8.* JIT only compiles certain parts of the source code at runtime. This helps ‌improve performance but⁤ is limited in terms of overall optimization. On the other hand, the new JIT based on the IR framework offers ⁤a more advanced approach by compiling the entire source code into an intermediate representation. This representation ‍then allows for more optimizations to be applied before​ execution.

Key ⁣Benefits of the New JIT Compilation

First and foremost, thanks to this new approach, it is possible to further enhance the⁤ performance of applications developed with PHP. In fact, the complete compilation of the source code allows for global optimization that can lead to much faster executions.

  • The use of IR opens the door to greater‍ optimization and more⁤ efficient register allocation, resulting in higher⁤ performance of native code.
  • This ‍new approach frees PHP from low-level details such as different processor architectures, calling conventions, TLS details, etc.
  • It also makes it much easier to support new targets, such as the ⁢RISCV architecture.

Another​ notable advantage is ​the separation of the IR framework from PHP’s own development. This means that the IR framework can accept⁤ contributions from⁤ other projects, whether it be for new‌ optimizations, improvements, or bug fixes. (IR: Lightweight JIT Compilation​ Framework)

The new JIT engine based on the IR framework is a significant⁤ advancement that promises to ‍greatly improve the performance‍ and possibilities offered by PHP.

Drawbacks and Impacts to Note

However, it is important to note‍ that this new JIT compilation method can cause a slowdown in the compilation process. Although this is‍ almost ⁢imperceptible for JIT tracing, JIT compilation of WordPress can be up to 4‍ times slower.

Another point to consider is that the IR framework is integrated into PHP as a secondary GIT module. To obtain​ it, you must use the following command:

git submodule update --init --recursive

It is also worth noting that, although this new JIT ⁢implementation ⁣has successfully completed all CI workflows, including nightly, it is still not considered fully mature ‍and may potentially cause failures.

Smooth Transition and Maintenance of Previous Implementation in PHP​ 8.3

Despite the introduction⁤ of the new ​JIT implementation based on the IR framework​ for PHP, the development team has ⁣not completely removed the previous implementation present in PHP 8.3.

In order to reduce risks associated with this major update, the patch does not ⁢remove the old​ JIT implementation, which is identical to that of PHP-8.3. Thus, it is still possible to build ‌PHP ‍with the old JIT by configuring⁣ it with the option –disable-opcache-jit-ir.

By maintaining the previous implementation, the⁢ developers also​ took into account that some projects may not be compatible with the new approach or may require ​additional adjustments​ before migrating them.

However, it is important to note that although it ⁢is maintained in‌ PHP 8.3, the old ‌JIT implementation will no longer benefit from ⁤the updates and ​improvements made in the ‍new IR framework-based model. In the future, there are plans to completely remove the previous implementation.

Future Integration of the IR Framework into the php-src Repository

Work is currently underway to integrate the IR⁤ framework⁢ into the php-src repository. This integration aims to make this new Just-In-Time approach more seamless.

In fact, the ‍git submodules have a terrible user experience and relying on Dmitry Stogov’s‌ personal GitHub account repository is problematic.

This will also facilitate the integration of these changes into future PHP versions,

You may also like

Leave a Comment