ed-precompiled_bootsnap 1.18.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: ec93482ad5f390bbf4d6e8de003fb1bb7809e10d6c7ec65f43fdee0bb823c56b
4
+ data.tar.gz: 355ae1a23555b4403fe122c71eb200b90536374459f83c5ea80e8a733c73f311
5
+ SHA512:
6
+ metadata.gz: fc898ca567a5da2496c5fb6c729cf2b13e2e8370f89d833ef1bfce5e21026fa3bd4c918e5c8e831ad995d6541648c2f31b74822e92ddd7ae1eabbb68140aac6e
7
+ data.tar.gz: f1a3b209ae11a54d6e5a2ef3f302b744694b09d075df46e5bbc257e09e85bf672fa95fd8ae33670dd0a60e88d368066eb3e8c1715cf8d6e1e38bd8b55926a9d2
data/CHANGELOG.md ADDED
@@ -0,0 +1,401 @@
1
+ # Unreleased
2
+
3
+ # 1.18.6
4
+
5
+ * Fix cgroup CPU limits detection in CLI.
6
+
7
+ # 1.18.5
8
+
9
+ * Attempt to detect a QEMU bug that can cause `bootsnap precompile` to hang forever when building ARM64 docker images
10
+ from x86_64 machines. See #495.
11
+ * Improve CLI to detect cgroup CPU limits and avoid spawning too many worker processes.
12
+
13
+ # 1.18.4
14
+
15
+ * Allow using bootsnap without bundler. See #488.
16
+ * Fix startup failure if the cache directory points to a broken symlink.
17
+
18
+ # 1.18.3
19
+
20
+ * Fix the cache corruption issue in the revalidation feature. See #474.
21
+ The cache revalidation feature remains opt-in for now, until it is more battle tested.
22
+
23
+ # 1.18.2
24
+
25
+ * Disable stale cache entries revalidation by default as it seems to cause cache corruption issues. See #471 and #474.
26
+ Will be re-enabled in a future version once the root cause is identified.
27
+ * Fix a potential compilation issue on some systems. See #470.
28
+
29
+ # 1.18.1
30
+
31
+ * Handle `EPERM` errors when opening files with `O_NOATIME`.
32
+
33
+ # 1.18.0
34
+
35
+ * `Bootsnap.instrumentation` now receive `:hit` events.
36
+ * Add `Bootsnap.log_stats!` to print hit rate statistics on process exit. Can also be enabled with `BOOTSNAP_STATS=1`.
37
+ * Revalidate stale cache entries by digesting the source content.
38
+ This should significantly improve performance in environments where `mtime` isn't preserved (e.g. CI systems doing a git clone, etc).
39
+ See #468.
40
+ * Open source files and cache entries with `O_NOATIME` when available to reduce disk accesses. See #469.
41
+ * `bootsnap precompile --gemfile` now look for `.rb` files in the whole gem and not just the `lib/` directory. See #466.
42
+
43
+ # 1.17.1
44
+
45
+ * Fix a compatibility issue with the `prism` library that ships with Ruby 3.3. See #463.
46
+ * Improved the `Kernel#require` decorator to not cause a method redefinition warning. See #461.
47
+
48
+ # 1.17.0
49
+
50
+ * Ensure `$LOAD_PATH.dup` is Ractor shareable to fix a conflict with `did_you_mean`.
51
+ * Allow to ignore directories using absolute paths.
52
+ * Support YAML and JSON CompileCache on TruffleRuby.
53
+ * Support LoadPathCache on TruffleRuby.
54
+
55
+ # 1.16.0
56
+
57
+ * Use `RbConfig::CONFIG["rubylibdir"]` instead of `RbConfig::CONFIG["libdir"]` to check for stdlib files. See #431.
58
+ * Fix the cached version of `YAML.load_file` being slightly more permissive than the default `Psych` one. See #434.
59
+ `Date` and `Time` values are now properly rejected, as well as aliases.
60
+ If this causes a regression in your application, it is recommended to load *trusted* YAML files with `YAML.unsafe_load_file`.
61
+
62
+ # 1.15.0
63
+
64
+ * Add a readonly mode, for environments in which the updated cache wouldn't be persisted. See #428 and #423.
65
+
66
+ # 1.14.0
67
+
68
+ * Require Ruby 2.6.
69
+ * Add a way to skip directories during load path scanning.
70
+ If you have large non-ruby directories in the middle of your load path, it can severely slow down scanning.
71
+ Typically this is a problem with `node_modules`. See #277.
72
+ * Fix `Bootsnap.unload_cache!`, it simply wouldn't work at all because of a merge mistake. See #421.
73
+
74
+ # 1.13.0
75
+
76
+ * Stop decorating `Kernel.load`. This used to be very useful in development because the Rails "classic" autoloader
77
+ was using `Kernel.load` in dev and `Kernel.require` in production. But Zeitwerk is now the default, and it doesn't
78
+ use `Kernel.load` at all.
79
+
80
+ People still using the classic autoloader might want to stick to `bootsnap 1.12`.
81
+
82
+ * Add `Bootsnap.unload_cache!`. Applications can call it at the end of their boot sequence when they know
83
+ no more code will be loaded to reclaim a bit of memory.
84
+
85
+ # 1.12.0
86
+
87
+ * `bootsnap precompile` CLI will now also precompile `Rakefile` and `.rake` files.
88
+
89
+ * Stop decorating `Module#autoload` as it was only useful for supporting Ruby 2.2 and older.
90
+
91
+ * Remove `uname` and other platform specific version from the cache keys. `RUBY_PLATFORM + RUBY_REVISION` should be
92
+ enough to ensure bytecode compatibility. This should improve caching for alpine based setups. See #409.
93
+
94
+ # 1.11.1
95
+
96
+ * Fix the `can't modify frozen Hash` error on load path cache mutation. See #411.
97
+
98
+ # 1.11.0
99
+
100
+ * Drop dependency on `fileutils`.
101
+
102
+ * Better respect `Kernel#require` duck typing. While it almost never comes up in practice, `Kernel#require`
103
+ follow a fairly intricate duck-typing protocol on its argument implemented as `rb_get_path(VALUE)` in MRI.
104
+ So when applicable we bind `rb_get_path` and use it for improved compatibility. See #396 and #406.
105
+
106
+ * Get rid of the `Kernel.require_relative` decorator by resolving `$LOAD_PATH` members to their real path.
107
+ This way we handle symlinks in `$LOAD_PATH` much more efficiently. See #402 for the detailed explanation.
108
+
109
+ * Drop support for Ruby 2.3 (to allow getting rid of the `Kernel.require_relative` decorator).
110
+
111
+ # 1.10.3
112
+
113
+ * Fix Regexp and Date type support in YAML compile cache. (#400)
114
+
115
+ * Improve the YAML compile cache to support `UTF-8` symbols. (#398, #399)
116
+ [The default `MessagePack` symbol serializer assumes all symbols are ASCII](https://github.com/msgpack/msgpack-ruby/pull/211),
117
+ because of this, non-ASCII compatible symbol would be restored with `ASCII_8BIT` encoding (AKA `BINARY`).
118
+ Bootsnap now properly cache them in `UTF-8`.
119
+
120
+ Note that the above only apply for actual YAML symbols (e..g `--- :foo`).
121
+ The issue is still present for string keys parsed with `YAML.load_file(..., symbolize_names: true)`, that is a bug
122
+ in `msgpack` that will hopefully be solved soon, see: https://github.com/msgpack/msgpack-ruby/pull/246
123
+
124
+ * Entirely disable the YAML compile cache if `Encoding.default_internal` is set to an encoding not supported by `msgpack`. (#398)
125
+ `Psych` coerce strings to `Encoding.default_internal`, but `MessagePack` doesn't. So in this scenario we can't provide
126
+ YAML caching at all without returning the strings in the wrong encoding.
127
+ This never came up in practice but might as well be safe.
128
+
129
+ # 1.10.2
130
+
131
+ * Reduce the `Kernel.require` extra stack frames some more. Now bootsnap should only add one extra frame per `require` call.
132
+
133
+ * Better check `freeze` option support in JSON compile cache.
134
+ Previously `JSON.load_file(..., freeze: true)` would be cached even when the msgpack version is missing support for it.
135
+
136
+ # 1.10.1
137
+
138
+ * Fix `Kernel#autoload`'s fallback path always being executed.
139
+
140
+ * Consider `unlink` failing with `ENOENT` as a success.
141
+
142
+ # 1.10.0
143
+
144
+ * Delay requiring `FileUtils`. (#285)
145
+ `FileUtils` can be installed as a gem, so it's best to wait for bundler to have setup the load path before requiring it.
146
+
147
+ * Improve support of Psych 4. (#392)
148
+ Since `1.8.0`, `YAML.load_file` was no longer cached when Psych 4 was used. This is because `load_file` loads
149
+ in safe mode by default, so the Bootsnap cache could defeat that safety.
150
+ Now when precompiling YAML files, Bootsnap first try to parse them in safe mode, and if it can't fallback to unsafe mode,
151
+ and the cache contains a flag that records whether it was generated in safe mode or not.
152
+ `YAML.unsafe_load_file` will use safe caches just fine, but `YAML.load_file` will fallback to uncached YAML parsing
153
+ if the cache was generated using unsafe parsing.
154
+
155
+ * Minimize the Kernel.require extra stack frames. (#393)
156
+ This should reduce the noise generated by bootsnap on `LoadError`.
157
+
158
+ # 1.9.4
159
+
160
+ * Ignore absolute paths in the loaded feature index. (#385)
161
+ This fixes a compatibility issue with Zeitwerk when Zeitwerk is loaded before bootsnap. It also should
162
+ reduce the memory usage and improve load performance of Zeitwerk managed files.
163
+
164
+ * Automatically invalidate the load path cache whenever the Ruby version change. (#387)
165
+ This is to avoid issues in case the same installation path is re-used for subsequent ruby patch releases.
166
+
167
+ # 1.9.3
168
+
169
+ * Only disable the compile cache for source files impacted by [Ruby 3.0.3 [Bug 18250]](https://bugs.ruby-lang.org/issues/18250).
170
+ This should keep the performance loss to a minimum.
171
+
172
+ # 1.9.2
173
+
174
+ * Disable compile cache if [Ruby 3.0.3's ISeq cache bug](https://bugs.ruby-lang.org/issues/18250) is detected.
175
+ AKA `iseq.rb:13 to_binary: wrong argument type false (expected Symbol)`
176
+ * Fix `Kernel.load` behavior: before `load 'a'` would load `a.rb` (and other tried extensions) and wouldn't load `a` unless `development_mode: true`, now only `a` would be loaded and files with extensions wouldn't be.
177
+
178
+ # 1.9.1
179
+
180
+ * Removed a forgotten debug statement in JSON precompilation.
181
+
182
+ # 1.9.0
183
+
184
+ * Added a compilation cache for `JSON.load_file`. (#370)
185
+
186
+ # 1.8.1
187
+
188
+ * Fixed support for older Psych. (#369)
189
+
190
+ # 1.8.0
191
+
192
+ * Improve support for Psych 4. (#368)
193
+
194
+ # 1.7.7
195
+
196
+ * Fix `require_relative` in evaled code on latest ruby 3.1.0-dev. (#366)
197
+
198
+ # 1.7.6
199
+
200
+ * Fix reliance on `set` to be required.
201
+ * Fix `Encoding::UndefinedConversionError` error for Rails applications when precompiling cache. (#364)
202
+
203
+ # 1.7.5
204
+
205
+ * Handle a regression of Ruby 2.7.3 causing Bootsnap to call the deprecated `untaint` method. (#360)
206
+ * Gracefully handle read-only file system as well as other errors preventing to persist the load path cache. (#358)
207
+
208
+ # 1.7.4
209
+
210
+ * Stop raising errors when encountering various file system errors. The cache is now best effort,
211
+ if somehow it can't be saved, bootsnap will gracefully fallback to the original operation (e.g. `Kernel.require`).
212
+ (#353, #177, #262)
213
+
214
+ # 1.7.3
215
+
216
+ * Disable YAML precompilation when encountering YAML tags. (#351)
217
+
218
+ # 1.7.2
219
+
220
+ * Fix compatibility with msgpack < 1. (#349)
221
+
222
+ # 1.7.1
223
+
224
+ * Warn Ruby 2.5 users if they turn ISeq caching on. (#327, #244)
225
+ * Disable ISeq caching for the whole 2.5.x series again.
226
+ * Better handle hashing of Ruby strings. (#318)
227
+
228
+ # 1.7.0
229
+
230
+ * Fix detection of YAML files in gems.
231
+ * Adds an instrumentation API to monitor cache misses.
232
+ * Allow to control the behavior of `require 'bootsnap/setup'` using environment variables.
233
+ * Deprecate the `disable_trace` option.
234
+ * Deprecate the `ActiveSupport::Dependencies` (AKA Classic autoloader) integration. (#344)
235
+
236
+ # 1.6.0
237
+
238
+ * Fix a Ruby 2.7/3.0 issue with `YAML.load_file` keyword arguments. (#342)
239
+ * `bootsnap precompile` CLI use multiple processes to complete faster. (#341)
240
+ * `bootsnap precompile` CLI also precompile YAML files. (#340)
241
+ * Changed the load path cache directory from `$BOOTSNAP_CACHE_DIR/bootsnap-load-path-cache` to `$BOOTSNAP_CACHE_DIR/bootsnap/load-path-cache` for ease of use. (#334)
242
+ * Changed the compile cache directory from `$BOOTSNAP_CACHE_DIR/bootsnap-compile-cache` to `$BOOTSNAP_CACHE_DIR/bootsnap/compile-cache` for ease of use. (#334)
243
+
244
+ # 1.5.1
245
+
246
+ * Workaround a Ruby bug in InstructionSequence.compile_file. (#332)
247
+
248
+ # 1.5.0
249
+
250
+ * Add a command line to statically precompile the ISeq cache. (#326)
251
+
252
+ # 1.4.9
253
+
254
+ * [Windows support](https://github.com/rails/bootsnap/pull/319)
255
+ * [Fix potential crash](https://github.com/rails/bootsnap/pull/322)
256
+
257
+ # 1.4.8
258
+
259
+ * [Prevent FallbackScan from polluting exception cause](https://github.com/rails/bootsnap/pull/314)
260
+
261
+ # 1.4.7
262
+
263
+ * Various performance enhancements
264
+ * Fix race condition in heavy concurrent load scenarios that would cause bootsnap to raise
265
+
266
+ # 1.4.6
267
+
268
+ * Fix bug that was erroneously considering that files containing `.` in the names were being
269
+ required if a different file with the same name was already being required
270
+
271
+ Example:
272
+
273
+ require 'foo'
274
+ require 'foo.en'
275
+
276
+ Before bootsnap was considering `foo.en` to be the same file as `foo`
277
+
278
+ * Use glibc as part of the ruby_platform cache key
279
+
280
+ # 1.4.5
281
+
282
+ * MRI 2.7 support
283
+ * Fixed concurrency bugs
284
+
285
+ # 1.4.4
286
+
287
+ * Disable ISeq cache in `bootsnap/setup` by default in Ruby 2.5
288
+
289
+ # 1.4.3
290
+
291
+ * Fix some cache permissions and umask issues after switch to mkstemp
292
+
293
+ # 1.4.2
294
+
295
+ * Fix bug when removing features loaded by relative path from `$LOADED_FEATURES`
296
+ * Fix bug with propagation of `NameError` up from nested calls to `require`
297
+
298
+ # 1.4.1
299
+
300
+ * Don't register change observers to frozen objects.
301
+
302
+ # 1.4.0
303
+
304
+ * When running in development mode, always fall back to a full path scan on LoadError, making
305
+ bootsnap more able to detect newly-created files. (#230)
306
+ * Respect `$LOADED_FEATURES.delete` in order to support code reloading, for integration with
307
+ Zeitwerk. (#230)
308
+ * Minor performance improvement: flow-control exceptions no longer generate backtraces.
309
+ * Better support for requiring from environments where some features are not supported (especially
310
+ JRuby). (#226)k
311
+ * More robust handling of OS errors when creating files. (#225)
312
+
313
+ # 1.3.2
314
+
315
+ * Fix Spring + Bootsnap incompatibility when there are files with similar names.
316
+ * Fix `YAML.load_file` monkey patch to keep accepting File objects as arguments.
317
+ * Fix the API for `ActiveSupport::Dependencies#autoloadable_module?`.
318
+ * Some performance improvements.
319
+
320
+ # 1.3.1
321
+
322
+ * Change load path scanning to more correctly follow symlinks.
323
+
324
+ # 1.3.0
325
+
326
+ * Handle cases where load path entries are symlinked (https://github.com/rails/bootsnap/pull/136)
327
+
328
+ # 1.2.1
329
+
330
+ * Fix method visibility of `Kernel#require`.
331
+
332
+ # 1.2.0
333
+
334
+ * Add `LoadedFeaturesIndex` to preserve fix a common bug related to `LOAD_PATH` modifications after
335
+ loading bootsnap.
336
+
337
+ # 1.1.8
338
+
339
+ * Don't cache YAML documents with `!ruby/object`
340
+ * Fix cache write mode on Windows
341
+
342
+ # 1.1.7
343
+
344
+ * Create cache entries as 0775/0664 instead of 0755/0644
345
+ * Better handling around cache updates in highly-parallel workloads
346
+
347
+ # 1.1.6
348
+
349
+ * Assortment of minor bugfixes
350
+
351
+ # 1.1.5
352
+
353
+ * bugfix re-release of 1.1.4
354
+
355
+ # 1.1.4 (yanked)
356
+
357
+ * Avoid loading a constant twice by checking if it is already defined
358
+
359
+ # 1.1.3
360
+
361
+ * Properly resolve symlinked path entries
362
+
363
+ # 1.1.2
364
+
365
+ * Minor fix: deprecation warning
366
+
367
+ # 1.1.1
368
+
369
+ * Fix crash in `Native.compile_option_crc32=` on 32-bit platforms.
370
+
371
+ # 1.1.0
372
+
373
+ * Add `bootsnap/setup`
374
+ * Support jruby (without compile caching features)
375
+ * Better deoptimization when Coverage is enabled
376
+ * Consider `Bundler.bundle_path` to be stable
377
+
378
+ # 1.0.0
379
+
380
+ * (none)
381
+
382
+ # 0.3.2
383
+
384
+ * Minor performance savings around checking validity of cache in the presence of relative paths.
385
+ * When coverage is enabled, skips optimization instead of exploding.
386
+
387
+ # 0.3.1
388
+
389
+ * Don't whitelist paths under `RbConfig::CONFIG['prefix']` as stable; instead use `['libdir']` (#41).
390
+ * Catch `EOFError` when reading load-path-cache and regenerate cache.
391
+ * Support relative paths in load-path-cache.
392
+
393
+ # 0.3.0
394
+
395
+ * Migrate CompileCache from xattr as a cache backend to a cache directory
396
+ * Adds support for Linux and FreeBSD
397
+
398
+ # 0.2.15
399
+
400
+ * Support more versions of ActiveSupport (`depend_on`'s signature varies; don't reiterate it)
401
+ * Fix bug in handling autoloaded modules that raise NoMethodError
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2017-2025 Shopify, Inc.
4
+ Copyright (c) 2025-present Rails Foundation
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in
14
+ all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
+ THE SOFTWARE.