bootsnap 1.4.2.rc2-java → 1.4.3-java
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 +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +4 -0
- data/ext/bootsnap/bootsnap.c +10 -1
- data/lib/bootsnap/load_path_cache.rb +2 -0
- data/lib/bootsnap/load_path_cache/cache.rb +2 -0
- data/lib/bootsnap/load_path_cache/core_ext/loaded_features.rb +10 -0
- data/lib/bootsnap/load_path_cache/loaded_features_index.rb +9 -0
- data/lib/bootsnap/load_path_cache/path_scanner.rb +3 -1
- data/lib/bootsnap/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1da2c9355b194f496d516037840a1853128f3e3b
|
4
|
+
data.tar.gz: 310e93db85d4dc71647ab155e5a25b0af265533f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 37ae91b0e6b0cc9fa79f6e3745888dde06b6d3d69f06fa9a6c41b551d9b5a914438475c2999da8e9812fdb665d580467d3659e86e5c3fe9570795cb2095df418
|
7
|
+
data.tar.gz: f7803683394dda64d2c68c9c3fc0d8868183f35fe0b56d8867c02bdbb597e86d843bd5c35de04730dc3f866afc77b9b5de376783582ac2515625bff08429cd3b
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -33,6 +33,10 @@ Note that bootsnap writes to `tmp/cache`, and that directory *must* be writable.
|
|
33
33
|
boot if it is not. If this is unacceptable (e.g. you are running in a read-only container and
|
34
34
|
unwilling to mount in a writable tmpdir), you should remove this line or wrap it in a conditional.
|
35
35
|
|
36
|
+
**Note also that bootsnap will never clean up its own cache: this is left up to you. Depending on your
|
37
|
+
deployment strategy, you may need to periodically purge `tmp/cache/bootsnap*`. If you notice deploys
|
38
|
+
getting progressively slower, this is almost certainly the cause.**
|
39
|
+
|
36
40
|
It's technically possible to simply specify `gem 'bootsnap', require: 'bootsnap/setup'`, but it's
|
37
41
|
important to load Bootsnap as early as possible to get maximum performance improvement.
|
38
42
|
|
data/ext/bootsnap/bootsnap.c
CHANGED
@@ -74,6 +74,8 @@ static uint32_t current_ruby_platform;
|
|
74
74
|
static uint32_t current_ruby_revision;
|
75
75
|
/* Invalidates cache when RubyVM::InstructionSequence.compile_option changes */
|
76
76
|
static uint32_t current_compile_option_crc32 = 0;
|
77
|
+
/* Current umask */
|
78
|
+
static mode_t current_umask;
|
77
79
|
|
78
80
|
/* Bootsnap::CompileCache::{Native, Uncompilable} */
|
79
81
|
static VALUE rb_mBootsnap;
|
@@ -142,6 +144,9 @@ Init_bootsnap(void)
|
|
142
144
|
rb_define_module_function(rb_mBootsnap_CompileCache_Native, "coverage_running?", bs_rb_coverage_running, 0);
|
143
145
|
rb_define_module_function(rb_mBootsnap_CompileCache_Native, "fetch", bs_rb_fetch, 3);
|
144
146
|
rb_define_module_function(rb_mBootsnap_CompileCache_Native, "compile_option_crc32=", bs_compile_option_crc32_set, 1);
|
147
|
+
|
148
|
+
current_umask = umask(0777);
|
149
|
+
umask(current_umask);
|
145
150
|
}
|
146
151
|
|
147
152
|
/*
|
@@ -482,7 +487,6 @@ atomic_write_cache_file(char * path, struct bs_cache_key * key, VALUE data, char
|
|
482
487
|
*errno_provenance = (char *)"bs_fetch:atomic_write_cache_file:mkpath";
|
483
488
|
return -1;
|
484
489
|
}
|
485
|
-
close(fd);
|
486
490
|
fd = open(tmp_path, O_WRONLY | O_CREAT, 0664);
|
487
491
|
if (fd < 0) {
|
488
492
|
*errno_provenance = (char *)"bs_fetch:atomic_write_cache_file:open";
|
@@ -517,6 +521,11 @@ atomic_write_cache_file(char * path, struct bs_cache_key * key, VALUE data, char
|
|
517
521
|
ret = rename(tmp_path, path);
|
518
522
|
if (ret < 0) {
|
519
523
|
*errno_provenance = (char *)"bs_fetch:atomic_write_cache_file:rename";
|
524
|
+
return -1;
|
525
|
+
}
|
526
|
+
ret = chmod(path, 0664 & ~current_umask);
|
527
|
+
if (ret < 0) {
|
528
|
+
*errno_provenance = (char *)"bs_fetch:atomic_write_cache_file:chmod";
|
520
529
|
}
|
521
530
|
return ret;
|
522
531
|
}
|
@@ -4,4 +4,14 @@ class << $LOADED_FEATURES
|
|
4
4
|
Bootsnap::LoadPathCache.loaded_features_index.purge(key)
|
5
5
|
delete_without_bootsnap(key)
|
6
6
|
end
|
7
|
+
|
8
|
+
alias_method(:reject_without_bootsnap!, :reject!)
|
9
|
+
def reject!(&block)
|
10
|
+
backup = dup
|
11
|
+
|
12
|
+
# FIXME: if no block is passed we'd need to return a decorated iterator
|
13
|
+
reject_without_bootsnap!(&block)
|
14
|
+
|
15
|
+
Bootsnap::LoadPathCache.loaded_features_index.purge_multi(backup - self)
|
16
|
+
end
|
7
17
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Bootsnap
|
2
4
|
module LoadPathCache
|
3
5
|
# LoadedFeaturesIndex partially mirrors an internal structure in ruby that
|
@@ -55,6 +57,13 @@ module Bootsnap
|
|
55
57
|
end
|
56
58
|
end
|
57
59
|
|
60
|
+
def purge_multi(features)
|
61
|
+
rejected_hashes = features.map(&:hash).to_set
|
62
|
+
@mutex.synchronize do
|
63
|
+
@lfi.reject! { |_, hash| rejected_hashes.include?(hash) }
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
58
67
|
def key?(feature)
|
59
68
|
@mutex.synchronize { @lfi.key?(feature) }
|
60
69
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative('../explicit_require')
|
2
4
|
|
3
5
|
module Bootsnap
|
@@ -11,7 +13,7 @@ module Bootsnap
|
|
11
13
|
BUNDLE_PATH = if Bootsnap.bundler?
|
12
14
|
(Bundler.bundle_path.cleanpath.to_s << LoadPathCache::SLASH).freeze
|
13
15
|
else
|
14
|
-
''
|
16
|
+
''
|
15
17
|
end
|
16
18
|
|
17
19
|
def self.call(path)
|
data/lib/bootsnap/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bootsnap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.3
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Burke Libbey
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-04-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -162,9 +162,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
162
162
|
version: 2.0.0
|
163
163
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
164
164
|
requirements:
|
165
|
-
- - "
|
165
|
+
- - ">="
|
166
166
|
- !ruby/object:Gem::Version
|
167
|
-
version:
|
167
|
+
version: '0'
|
168
168
|
requirements: []
|
169
169
|
rubyforge_project:
|
170
170
|
rubygems_version: 2.4.8
|