Upgrade to libvips v8.16.0-rc1

This commit is contained in:
Lovell Fuller 2024-10-14 14:21:23 +01:00
parent 1533bf995a
commit 9582b5036f
23 changed files with 45 additions and 43 deletions

View File

@ -1,13 +1,11 @@
# Changelog # Changelog
## v0.33 - *gauge* ## v0.34 - *hat*
Requires libvips v8.15.5-rc1 Requires libvips v8.16.0-rc1
### v0.33.6 - TBD ### v0.33.6 - TBD
* Upgrade to libvips v8.15.5-rc1 for upstream bug fixes.
* TypeScript: Ensure channel counts use the correct range. * TypeScript: Ensure channel counts use the correct range.
[#4197](https://github.com/lovell/sharp/pull/4197) [#4197](https://github.com/lovell/sharp/pull/4197)
[@DavidVaness](https://github.com/DavidVaness) [@DavidVaness](https://github.com/DavidVaness)
@ -20,6 +18,10 @@ Requires libvips v8.15.5-rc1
[#4207](https://github.com/lovell/sharp/pull/4207) [#4207](https://github.com/lovell/sharp/pull/4207)
[@calebmer](https://github.com/calebmer) [@calebmer](https://github.com/calebmer)
## v0.33 - *gauge*
Requires libvips v8.15.3
### v0.33.5 - 16th August 2024 ### v0.33.5 - 16th August 2024
* Upgrade to libvips v8.15.3 for upstream bug fixes. * Upgrade to libvips v8.15.3 for upstream bug fixes.

View File

@ -15,7 +15,7 @@
}, },
"preferUnplugged": true, "preferUnplugged": true,
"optionalDependencies": { "optionalDependencies": {
"@img/sharp-libvips-darwin-arm64": "1.0.6" "@img/sharp-libvips-darwin-arm64": "1.1.0-rc1"
}, },
"files": [ "files": [
"lib" "lib"

View File

@ -15,7 +15,7 @@
}, },
"preferUnplugged": true, "preferUnplugged": true,
"optionalDependencies": { "optionalDependencies": {
"@img/sharp-libvips-darwin-x64": "1.0.6" "@img/sharp-libvips-darwin-x64": "1.1.0-rc1"
}, },
"files": [ "files": [
"lib" "lib"

View File

@ -15,7 +15,7 @@
}, },
"preferUnplugged": true, "preferUnplugged": true,
"optionalDependencies": { "optionalDependencies": {
"@img/sharp-libvips-linux-arm": "1.0.6" "@img/sharp-libvips-linux-arm": "1.1.0-rc1"
}, },
"files": [ "files": [
"lib" "lib"

View File

@ -15,7 +15,7 @@
}, },
"preferUnplugged": true, "preferUnplugged": true,
"optionalDependencies": { "optionalDependencies": {
"@img/sharp-libvips-linux-arm64": "1.0.6" "@img/sharp-libvips-linux-arm64": "1.1.0-rc1"
}, },
"files": [ "files": [
"lib" "lib"

View File

@ -15,7 +15,7 @@
}, },
"preferUnplugged": true, "preferUnplugged": true,
"optionalDependencies": { "optionalDependencies": {
"@img/sharp-libvips-linux-ppc64": "1.0.6" "@img/sharp-libvips-linux-ppc64": "1.1.0-rc1"
}, },
"files": [ "files": [
"lib" "lib"

View File

@ -15,7 +15,7 @@
}, },
"preferUnplugged": true, "preferUnplugged": true,
"optionalDependencies": { "optionalDependencies": {
"@img/sharp-libvips-linux-s390x": "1.0.6" "@img/sharp-libvips-linux-s390x": "1.1.0-rc1"
}, },
"files": [ "files": [
"lib" "lib"

View File

@ -15,7 +15,7 @@
}, },
"preferUnplugged": true, "preferUnplugged": true,
"optionalDependencies": { "optionalDependencies": {
"@img/sharp-libvips-linux-x64": "1.0.6" "@img/sharp-libvips-linux-x64": "1.1.0-rc1"
}, },
"files": [ "files": [
"lib" "lib"

View File

@ -15,7 +15,7 @@
}, },
"preferUnplugged": true, "preferUnplugged": true,
"optionalDependencies": { "optionalDependencies": {
"@img/sharp-libvips-linuxmusl-arm64": "1.0.6" "@img/sharp-libvips-linuxmusl-arm64": "1.1.0-rc1"
}, },
"files": [ "files": [
"lib" "lib"

View File

@ -15,7 +15,7 @@
}, },
"preferUnplugged": true, "preferUnplugged": true,
"optionalDependencies": { "optionalDependencies": {
"@img/sharp-libvips-linuxmusl-x64": "1.0.6" "@img/sharp-libvips-linuxmusl-x64": "1.1.0-rc1"
}, },
"files": [ "files": [
"lib" "lib"

View File

@ -144,15 +144,15 @@
"optionalDependencies": { "optionalDependencies": {
"@img/sharp-darwin-arm64": "0.33.5", "@img/sharp-darwin-arm64": "0.33.5",
"@img/sharp-darwin-x64": "0.33.5", "@img/sharp-darwin-x64": "0.33.5",
"@img/sharp-libvips-darwin-arm64": "1.0.6", "@img/sharp-libvips-darwin-arm64": "1.1.0-rc1",
"@img/sharp-libvips-darwin-x64": "1.0.6", "@img/sharp-libvips-darwin-x64": "1.1.0-rc1",
"@img/sharp-libvips-linux-arm": "1.0.6", "@img/sharp-libvips-linux-arm": "1.1.0-rc1",
"@img/sharp-libvips-linux-arm64": "1.0.6", "@img/sharp-libvips-linux-arm64": "1.1.0-rc1",
"@img/sharp-libvips-linux-ppc64": "1.0.6", "@img/sharp-libvips-linux-ppc64": "1.1.0-rc1",
"@img/sharp-libvips-linux-s390x": "1.0.6", "@img/sharp-libvips-linux-s390x": "1.1.0-rc1",
"@img/sharp-libvips-linux-x64": "1.0.6", "@img/sharp-libvips-linux-x64": "1.1.0-rc1",
"@img/sharp-libvips-linuxmusl-arm64": "1.0.6", "@img/sharp-libvips-linuxmusl-arm64": "1.1.0-rc1",
"@img/sharp-libvips-linuxmusl-x64": "1.0.6", "@img/sharp-libvips-linuxmusl-x64": "1.1.0-rc1",
"@img/sharp-linux-arm": "0.33.5", "@img/sharp-linux-arm": "0.33.5",
"@img/sharp-linux-arm64": "0.33.5", "@img/sharp-linux-arm64": "0.33.5",
"@img/sharp-linux-s390x": "0.33.5", "@img/sharp-linux-s390x": "0.33.5",
@ -165,10 +165,10 @@
}, },
"devDependencies": { "devDependencies": {
"@emnapi/runtime": "^1.2.0", "@emnapi/runtime": "^1.2.0",
"@img/sharp-libvips-dev": "1.0.6", "@img/sharp-libvips-dev": "1.1.0-rc1",
"@img/sharp-libvips-dev-wasm32": "1.0.6", "@img/sharp-libvips-dev-wasm32": "1.1.0-rc1",
"@img/sharp-libvips-win32-ia32": "1.0.6", "@img/sharp-libvips-win32-ia32": "1.1.0-rc1",
"@img/sharp-libvips-win32-x64": "1.0.6", "@img/sharp-libvips-win32-x64": "1.1.0-rc1",
"@types/node": "*", "@types/node": "*",
"cc": "^3.0.1", "cc": "^3.0.1",
"emnapi": "^1.2.0", "emnapi": "^1.2.0",
@ -190,7 +190,7 @@
"node": "^18.17.0 || ^20.3.0 || >=21.0.0" "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
}, },
"config": { "config": {
"libvips": ">=8.15.5" "libvips": ">=8.16.0"
}, },
"funding": { "funding": {
"url": "https://opencollective.com/libvips" "url": "https://opencollective.com/libvips"

View File

@ -18,7 +18,7 @@
# Build libvips C++ binding for Windows due to MSVC std library ABI changes # Build libvips C++ binding for Windows due to MSVC std library ABI changes
'type': 'shared_library', 'type': 'shared_library',
'defines': [ 'defines': [
'VIPS_CPLUSPLUS_EXPORTS', '_VIPS_PUBLIC=__declspec(dllexport)',
'_ALLOW_KEYWORD_MACROS' '_ALLOW_KEYWORD_MACROS'
], ],
'sources': [ 'sources': [

View File

@ -15,9 +15,9 @@
// Verify platform and compiler compatibility // Verify platform and compiler compatibility
#if (VIPS_MAJOR_VERSION < 8) || \ #if (VIPS_MAJOR_VERSION < 8) || \
(VIPS_MAJOR_VERSION == 8 && VIPS_MINOR_VERSION < 15) || \ (VIPS_MAJOR_VERSION == 8 && VIPS_MINOR_VERSION < 16) || \
(VIPS_MAJOR_VERSION == 8 && VIPS_MINOR_VERSION == 15 && VIPS_MICRO_VERSION < 5) (VIPS_MAJOR_VERSION == 8 && VIPS_MINOR_VERSION == 16 && VIPS_MICRO_VERSION < 0)
#error "libvips version 8.15.5+ is required - please see https://sharp.pixelplumbing.com/install" #error "libvips version 8.16.0+ is required - please see https://sharp.pixelplumbing.com/install"
#endif #endif
#if ((!defined(__clang__)) && defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6))) #if ((!defined(__clang__)) && defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6)))

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 152 KiB

View File

@ -179,7 +179,7 @@ describe('libvips binaries', function () {
process.env.npm_config_arch = 's390x'; process.env.npm_config_arch = 's390x';
process.env.npm_config_libc = ''; process.env.npm_config_libc = '';
const locatorHash = libvips.yarnLocator(); const locatorHash = libvips.yarnLocator();
assert.strictEqual(locatorHash, 'b9c917c310'); assert.strictEqual(locatorHash, '9b2ea457de');
delete process.env.npm_config_platform; delete process.env.npm_config_platform;
delete process.env.npm_config_arch; delete process.env.npm_config_arch;
delete process.env.npm_config_libc; delete process.env.npm_config_libc;

View File

@ -15,8 +15,8 @@ const assertNormalized = function (data) {
min = Math.min(min, data[i]); min = Math.min(min, data[i]);
max = Math.max(max, data[i]); max = Math.max(max, data[i]);
} }
assert.strictEqual(0, min); assert.strictEqual(0, min, 'min too high');
assert.ok([254, 255].includes(max)); assert.ok(max > 248, 'max too low');
}; };
describe('Normalization', function () { describe('Normalization', function () {

View File

@ -27,7 +27,7 @@ describe('Image Stats', function () {
if (err) throw err; if (err) throw err;
assert.strictEqual(true, stats.isOpaque); assert.strictEqual(true, stats.isOpaque);
assert.strictEqual(true, isInAcceptableRange(stats.entropy, 7.319914765248541)); assert.strictEqual(true, isInAcceptableRange(stats.entropy, 7.332915340666659));
assert.strictEqual(true, isInAcceptableRange(stats.sharpness, 0.7883011147075762)); assert.strictEqual(true, isInAcceptableRange(stats.sharpness, 0.7883011147075762));
const { r, g, b } = stats.dominant; const { r, g, b } = stats.dominant;
@ -272,7 +272,7 @@ describe('Image Stats', function () {
assert.strictEqual(true, stats.isOpaque); assert.strictEqual(true, stats.isOpaque);
assert.strictEqual(true, isInAcceptableRange(stats.entropy, 7.51758075132966)); assert.strictEqual(true, isInAcceptableRange(stats.entropy, 7.51758075132966));
assert.strictEqual(true, isInAcceptableRange(stats.sharpness, 9.959951636662941)); assert.strictEqual(true, isInAcceptableRange(stats.sharpness, 9.971384105278734));
const { r, g, b } = stats.dominant; const { r, g, b } = stats.dominant;
assert.strictEqual(40, r); assert.strictEqual(40, r);
@ -336,8 +336,8 @@ describe('Image Stats', function () {
if (err) throw err; if (err) throw err;
assert.strictEqual(true, stats.isOpaque); assert.strictEqual(true, stats.isOpaque);
assert.strictEqual(true, isInAcceptableRange(stats.entropy, 6.087309412541799)); assert.strictEqual(true, isInAcceptableRange(stats.entropy, 6.08118048729375));
assert.strictEqual(true, isInAcceptableRange(stats.sharpness, 2.9250574456255682)); assert.strictEqual(true, isInAcceptableRange(stats.sharpness, 2.936767879098001));
const { r, g, b } = stats.dominant; const { r, g, b } = stats.dominant;
assert.strictEqual(120, r); assert.strictEqual(120, r);
@ -484,7 +484,7 @@ describe('Image Stats', function () {
if (err) throw err; if (err) throw err;
assert.strictEqual(true, stats.isOpaque); assert.strictEqual(true, stats.isOpaque);
assert.strictEqual(true, isInAcceptableRange(stats.entropy, 7.319914765248541)); assert.strictEqual(true, isInAcceptableRange(stats.entropy, 7.332915340666659));
assert.strictEqual(true, isInAcceptableRange(stats.sharpness, 0.788301114707569)); assert.strictEqual(true, isInAcceptableRange(stats.sharpness, 0.788301114707569));
const { r, g, b } = stats.dominant; const { r, g, b } = stats.dominant;
@ -552,7 +552,7 @@ describe('Image Stats', function () {
return pipeline.stats().then(function (stats) { return pipeline.stats().then(function (stats) {
assert.strictEqual(true, stats.isOpaque); assert.strictEqual(true, stats.isOpaque);
assert.strictEqual(true, isInAcceptableRange(stats.entropy, 7.319914765248541)); assert.strictEqual(true, isInAcceptableRange(stats.entropy, 7.332915340666659));
assert.strictEqual(true, isInAcceptableRange(stats.sharpness, 0.788301114707569)); assert.strictEqual(true, isInAcceptableRange(stats.sharpness, 0.788301114707569));
const { r, g, b } = stats.dominant; const { r, g, b } = stats.dominant;
@ -615,7 +615,7 @@ describe('Image Stats', function () {
it('File in, Promise out', function () { it('File in, Promise out', function () {
return sharp(fixtures.inputJpg).stats().then(function (stats) { return sharp(fixtures.inputJpg).stats().then(function (stats) {
assert.strictEqual(true, stats.isOpaque); assert.strictEqual(true, stats.isOpaque);
assert.strictEqual(true, isInAcceptableRange(stats.entropy, 7.319914765248541)); assert.strictEqual(true, isInAcceptableRange(stats.entropy, 7.332915340666659));
assert.strictEqual(true, isInAcceptableRange(stats.sharpness, 0.788301114707569)); assert.strictEqual(true, isInAcceptableRange(stats.sharpness, 0.788301114707569));
const { r, g, b } = stats.dominant; const { r, g, b } = stats.dominant;
@ -682,8 +682,8 @@ describe('Image Stats', function () {
return Promise return Promise
.all([original, blurred]) .all([original, blurred])
.then(([original, blurred]) => { .then(([original, blurred]) => {
assert.strictEqual(true, isInAcceptableRange(original.sharpness, 0.7883011147075476)); assert.strictEqual(true, isInAcceptableRange(original.sharpness, 0.789046400439488));
assert.strictEqual(true, isInAcceptableRange(blurred.sharpness, 0.4791559805997398)); assert.strictEqual(true, isInAcceptableRange(blurred.sharpness, 0.47985138441709047));
}); });
}); });