Hi all,

I suggest to replace libjpeg[1] with libjpeg-turbo[2] for future PHP
releases on Windows, starting with PHP 8.1.  The main reason is that
libjpeg-turbo offers better performance, because it uses SIMD
instructions on supported platforms (Windows x86 and x64 are supported).
 Note that many (all?) Linux distributions also support libjpeg-turbo.

To my knowlege libjpeg-turbo can be used as compatible drop-in
replacement for libjpeg.  However, Windows builds are currently using
libjeg 9c, for which there is no compat layer in libjpeg-turbo due to
the controversial new color transform for the "Lossless SmartScale"
format introduced in libjpeg 9.  Besides that SmartScale is a non
standard format, the chosen implementation introduces an ABI break.
Anyhow, SmartScale is not used by ext/gd which is the most important
client of libjpeg (I'm not sure if there other extensions which use
libjpeg directly).

I've pushed libjpeg-turbo to a feature branch in the winlibs repo[3],
including the usual winlibs.mak.  To build it, NASM or YASM is required.
 I did not test the latter, though.  I also uploaded packages to
windows.php.net[4] (libjpeg-turbo-2.1.0-vs16-x(64|86).zip).  Whether you
build yourself or use the prebuilt packages, you can just unzip into the
deps/ folder of your build tree.

I've got the same test results for ext/gd/tests with libjpeg-9c and
libjpeg-turbo-2.1.0.

Thoughts?  Objections?

[1] <http://ijg.org/>
[2] <https://libjpeg-turbo.org/>
[3] <https://github.com/winlibs/libjpeg/tree/libjpeg-turbo>
[4] <https://windows.php.net/downloads/pecl/deps/>

--
Christoph M. Becker

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php

Reply via email to