image_pack 0.2.5 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 12f5358f1b62d18b5f23c0022bf953ae6efab239645a94329774465b5ff4681a
4
- data.tar.gz: b0fd8d35a15c5e6ef157c925e0ed967a485755b32f310b5c49bdc10688b58ebf
3
+ metadata.gz: a35cbfc63db1f7d8b22ee78c12340ecfca68522706c12b90fe79103c4eee1ed5
4
+ data.tar.gz: 553e2fb895c181b8b8b399e343b44ae2f001f30c6a0e5e391824d148dec602bd
5
5
  SHA512:
6
- metadata.gz: a3cf71f03cedf98384331e74fdd47d3fa151b432d3af4e059032261a3f4a929d15b9329cbc57aace8f04fda9c73ac1cdad9d99a4b7e499fbda1f7242334c5c6e
7
- data.tar.gz: 99898ec78f08fe924e5447a514dd37dcd4b141cf6b619fe5713f1050c0ca1ded2e112eda18b407e75b39d3a9c2fe802e1294d02d46ed63a24960944f398603d4
6
+ metadata.gz: 9ed878b4dce88f44e0b2f4b6a4601cb3987051aafaa8128e6d932fd58a2067a351987ba979205904531c1e906b230e94264019a4b7e8e2d315c1a069b76bb471
7
+ data.tar.gz: 0abb8e15b559d1fba9362360d8f585d022f3bbc6f9bfece1cbc754c62f1fce131af0fffb828f2564a5faae939e8539a008345ee5ffcb817f008bbef2c8ba601b
data/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.6
4
+
5
+ - Lowered the supported Ruby floor to `>= 2.7.1`. The core JPEG API, vendored MozJPEG build, `:direct`, and `:nogvl` execution modes work on Ruby 2.7.1.
6
+ - Kept `execution: :offload` explicitly unavailable until Ruby `>= 3.4`; `:auto` falls back to existing direct/no-GVL execution on older Rubies.
7
+ - Moved Async, benchmark, and external-comparison tooling into an optional `modern_development` Bundler group so a Ruby 2.7.1 developer can install, compile, and run the core suite without resolving modern-only development gems.
8
+ - CI enables `modern_development` on supported modern Rubies, so Async and benchmark dependencies remain covered there.
9
+
3
10
  ## 0.2.5
4
11
 
5
12
  **Output and API changes (upgrade notes)**
data/README.md CHANGED
@@ -156,10 +156,24 @@ end
156
156
 
157
157
  ## Development
158
158
 
159
+ Core build and test dependencies work on Ruby 2.7.1+:
160
+
159
161
  ```bash
160
- bundle exec rake vendor
162
+ bundle install
161
163
  bundle exec rake compile
162
164
  bundle exec rake test
165
+ ```
166
+
167
+ Optional comparison benchmarks and Async tooling are kept out of Ruby 2.7 dependency resolution. Enable them on modern Ruby when needed:
168
+
169
+ ```bash
170
+ BUNDLE_WITH=modern_development bundle install
171
+ ```
172
+
173
+ Vendoring and release checks:
174
+
175
+ ```bash
176
+ bundle exec rake vendor
163
177
  bundle exec rake release:check
164
178
  ```
165
179
 
@@ -170,7 +184,7 @@ bundle exec rake release:check
170
184
  ## Limits
171
185
 
172
186
  - JPEG only.
173
- - Ruby `>= 3.1`; `execution: :offload` requires Ruby `>= 3.4`.
187
+ - Ruby `>= 2.7.1`; `execution: :offload` requires Ruby `>= 3.4`. On Ruby 2.7–3.3, `:auto` uses `:direct` or `:nogvl`; it never attempts scheduler offload.
174
188
  - Pixel-level `compress` rejects CMYK/YCCK JPEG input; use `optimize_jpeg` for existing CMYK/YCCK JPEGs.
175
189
  - Arithmetic-coded JPEG support is disabled in `0.2.5`.
176
190
  - Streaming output is not supported; file output uses atomic write-through-temp-file and rename.
@@ -4,8 +4,8 @@ require "mkmf"
4
4
  require "fileutils"
5
5
  require "rbconfig"
6
6
 
7
- if Gem::Version.new(RUBY_VERSION) < Gem::Version.new("3.1.0")
8
- abort "image_pack requires Ruby >= 3.1.0; got #{RUBY_VERSION}"
7
+ if Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.7.1")
8
+ abort "image_pack requires Ruby >= 2.7.1; got #{RUBY_VERSION}"
9
9
  end
10
10
 
11
11
  require_relative "mozjpeg_sources"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ImagePack
4
- VERSION = "0.2.5"
4
+ VERSION = "0.2.6"
5
5
  end
data/lib/image_pack.rb CHANGED
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- required = Gem::Version.new("3.1.0")
3
+ required = Gem::Version.new("2.7.1")
4
4
  current = Gem::Version.new(RUBY_VERSION)
5
5
 
6
6
  if current < required
7
7
  raise LoadError,
8
- "image_pack requires Ruby >= 3.1.0, got #{RUBY_VERSION}. " \
8
+ "image_pack requires Ruby >= 2.7.1, got #{RUBY_VERSION}. " \
9
9
  "Ruby >= 3.4.0 is required only for execution: :offload."
10
10
  end
11
11
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: image_pack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roman Haydarov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-06-19 00:00:00.000000000 Z
11
+ date: 2026-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -52,36 +52,8 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '5.0'
55
- - !ruby/object:Gem::Dependency
56
- name: benchmark-ips
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '2.13'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '2.13'
69
- - !ruby/object:Gem::Dependency
70
- name: async
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '2.21'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '2.21'
83
55
  description: Single API, vendored pure-C MozJPEG/libjpeg codec, in-memory compression
84
- and atomic file output, Ruby 3.1+ native JPEG execution; Ruby 3.4+ enables Fiber::Scheduler-aware
56
+ and atomic file output, Ruby 2.7.1+ native JPEG execution; Ruby 3.4+ enables Fiber::Scheduler-aware
85
57
  offload. Ships vendored C sources — no system libjpeg, git, or CMake required.
86
58
  email:
87
59
  - romnhajdarov@gmail.com
@@ -217,7 +189,6 @@ files:
217
189
  - ext/image_pack/vendor/mozjpeg/simd/arm/jidctint-neon.c
218
190
  - ext/image_pack/vendor/mozjpeg/simd/arm/jidctred-neon.c
219
191
  - ext/image_pack/vendor/mozjpeg/simd/arm/jquanti-neon.c
220
- - ext/image_pack/vendor/mozjpeg/simd/arm/neon-compat.h
221
192
  - ext/image_pack/vendor/mozjpeg/simd/arm/neon-compat.h.in
222
193
  - ext/image_pack/vendor/mozjpeg/simd/i386/jccolext-avx2.asm
223
194
  - ext/image_pack/vendor/mozjpeg/simd/i386/jccolext-mmx.asm
@@ -353,14 +324,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
353
324
  requirements:
354
325
  - - ">="
355
326
  - !ruby/object:Gem::Version
356
- version: 3.1.0
327
+ version: 2.7.1
357
328
  required_rubygems_version: !ruby/object:Gem::Requirement
358
329
  requirements:
359
330
  - - ">="
360
331
  - !ruby/object:Gem::Version
361
332
  version: '0'
362
333
  requirements: []
363
- rubygems_version: 3.3.27
334
+ rubygems_version: 3.4.22
364
335
  signing_key:
365
336
  specification_version: 4
366
337
  summary: 'Ruby-native pure-C JPEG runtime: MozJPEG/libjpeg'
@@ -1,26 +0,0 @@
1
- /*
2
- * Generated by image_pack extconf.rb (replaces simd/arm/neon-compat.h.in
3
- * which CMake would otherwise process). All three intrinsic feature flags
4
- * are unconditionally enabled — every AArch64 toolchain image_pack supports
5
- * provides them.
6
- */
7
- #ifndef IMAGE_PACK_NEON_COMPAT_H
8
- #define IMAGE_PACK_NEON_COMPAT_H
9
-
10
- #define HAVE_VLD1_S16_X3
11
- #define HAVE_VLD1_U16_X2
12
- #define HAVE_VLD1Q_U8_X4
13
-
14
- #if defined(_MSC_VER) && !defined(__clang__)
15
- #define BUILTIN_CLZ(x) _CountLeadingZeros(x)
16
- #define BUILTIN_CLZLL(x) _CountLeadingZeros64(x)
17
- #define BUILTIN_BSWAP64(x) _byteswap_uint64(x)
18
- #elif defined(__clang__) || defined(__GNUC__)
19
- #define BUILTIN_CLZ(x) __builtin_clz(x)
20
- #define BUILTIN_CLZLL(x) __builtin_clzll(x)
21
- #define BUILTIN_BSWAP64(x) __builtin_bswap64(x)
22
- #else
23
- #error "Unknown compiler"
24
- #endif
25
-
26
- #endif /* IMAGE_PACK_NEON_COMPAT_H */