Upgrade to libvips v8.16.0-rc1
@ -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.
|
||||||
|
@ -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"
|
||||||
|
@ -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"
|
||||||
|
@ -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"
|
||||||
|
@ -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"
|
||||||
|
@ -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"
|
||||||
|
@ -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"
|
||||||
|
@ -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"
|
||||||
|
@ -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"
|
||||||
|
@ -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"
|
||||||
|
28
package.json
@ -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"
|
||||||
|
@ -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': [
|
||||||
|
@ -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)))
|
||||||
|
BIN
test/fixtures/expected/gravity-center-width.webp
vendored
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 9.3 KiB |
BIN
test/fixtures/expected/tint-blue.jpg
vendored
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
BIN
test/fixtures/expected/tint-cmyk.jpg
vendored
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
BIN
test/fixtures/expected/tint-green.jpg
vendored
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
BIN
test/fixtures/expected/tint-red.jpg
vendored
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
BIN
test/fixtures/expected/tint-sepia.jpg
vendored
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
BIN
test/fixtures/expected/webp-alpha-80.webp
vendored
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 152 KiB |
@ -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;
|
||||||
|
@ -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 () {
|
||||||
|
@ -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));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|