@@ -35,26 +35,18 @@ compile_error!(
35
35
/// however it is not gauranteed to be compatible across wasmer's
36
36
/// internal changes.
37
37
/// https://github.com/wasmerio/wasmer/issues/2781
38
- const MODULE_SERIALIZATION_VERSION : & str = "v5 " ;
38
+ const MODULE_SERIALIZATION_VERSION : & str = "v6 " ;
39
39
40
40
/// A shared instance to plugin's module bytecode cache.
41
41
pub static PLUGIN_MODULE_CACHE : Lazy < PluginModuleCache > = Lazy :: new ( Default :: default) ;
42
42
43
- #[ cfg( feature = "filesystem_cache" ) ]
44
43
#[ derive( Default ) ]
45
44
pub struct CacheInner {
45
+ #[ cfg( feature = "filesystem_cache" ) ]
46
46
fs_cache : Option < FileSystemCache > ,
47
47
// A naive hashmap to the compiled plugin modules.
48
48
// Current it doesn't have any invalidation or expiration logics like lru,
49
49
// having a lot of plugins may create some memory pressure.
50
- loaded_module_bytes : AHashMap < PathBuf , Module > ,
51
- }
52
-
53
- #[ cfg( feature = "memory_cache" ) ]
54
- #[ derive( Default ) ]
55
- pub struct CacheInner {
56
- // Unlike sys::Module, we'll keep raw bytes from the module instead of js::Module which
57
- // implies bindgen's JsValue
58
50
loaded_module_bytes : AHashMap < PathBuf , Vec < u8 > > ,
59
51
}
60
52
@@ -81,9 +73,11 @@ fn create_filesystem_cache(filesystem_cache_root: &Option<String>) -> Option<Fil
81
73
if let Some ( root_path) = & mut root_path {
82
74
root_path. push ( "plugins" ) ;
83
75
root_path. push ( format ! (
84
- "{}_{}" ,
76
+ "{}_{}_{}_{} " ,
85
77
MODULE_SERIALIZATION_VERSION ,
86
- option_env!( "CARGO_PKG_RUST_VERSION" ) . unwrap_or( "default" )
78
+ std:: env:: consts:: OS ,
79
+ std:: env:: consts:: ARCH ,
80
+ option_env!( "CARGO_PKG_VERSION" ) . unwrap_or( "plugin_runner_unknown" )
87
81
) ) ;
88
82
89
83
return FileSystemCache :: new ( & root_path) . ok ( ) ;
@@ -146,21 +140,18 @@ impl PluginModuleCache {
146
140
let binary_path = binary_path. to_path_buf ( ) ;
147
141
let mut inner_cache = self . inner . get ( ) . expect ( "Cache should be available" ) . lock ( ) ;
148
142
149
- // if constructed Module is available in-memory, directly return it.
150
- // Note we do not invalidate in-memory cache currently: if wasm binary is
151
- // replaced in-process lifecycle (i.e devserver) it won't be reflected.
152
-
143
+ // if constructed module bytes for the given plugin path is available in-memory,
144
+ // directly return it. Note we do not invalidate in-memory cache
145
+ // currently: if wasm binary is replaced in-process lifecycle (i.e
146
+ // devserver) it won't be reflected.
153
147
/*
154
- [TODO]: This is currently disabled, since on the latest wasmer@3 subsequent
155
- plugin load via in memory module causes intermittent heap_get_oob when
148
+ [NOTE]: Unlike wasmer@2, in wasmer@3 subsequent plugin load via in memory module causes intermittent heap_get_oob when
156
149
host tries to allocate memory inside of the guest.
157
-
158
- Current guess is memory instance is being corrupted by the previous run, but
159
- until figure out root cause & fix will only use fs_cache directly.
150
+ */
160
151
let in_memory_module = inner_cache. loaded_module_bytes . get ( & binary_path) ;
161
- if let Some(module ) = in_memory_module {
162
- return Ok(module.clone() );
163
- }*/
152
+ if let Some ( module_bytes ) = in_memory_module {
153
+ return Module :: new ( wasmer_store , module_bytes ) . context ( "Cannot compile plugin binary" ) ;
154
+ }
164
155
165
156
let module_bytes =
166
157
std:: fs:: read ( & binary_path) . context ( "Cannot read plugin from specified path" ) ?;
@@ -174,8 +165,8 @@ impl PluginModuleCache {
174
165
) ;
175
166
let span_guard = span. enter ( ) ;
176
167
let _lock = self . instantiation_lock . lock ( ) ;
177
- let ret =
178
- Module :: new ( wasmer_store , module_bytes ) . context ( "Cannot compile plugin binary" ) ;
168
+ let ret = Module :: new ( wasmer_store , module_bytes . clone ( ) )
169
+ . context ( "Cannot compile plugin binary" ) ;
179
170
drop ( span_guard) ;
180
171
ret
181
172
} ;
@@ -197,7 +188,7 @@ impl PluginModuleCache {
197
188
198
189
inner_cache
199
190
. loaded_module_bytes
200
- . insert ( binary_path, module . clone ( ) ) ;
191
+ . insert ( binary_path, module_bytes ) ;
201
192
202
193
Ok ( module)
203
194
}
2 commit comments
kdy1 commentedon Apr 29, 2023
@kwonoj Seems like this made CI extremely slow. I'll revert it for now.
github-actions[bot] commentedon Apr 29, 2023
Benchmark
es/full/bugs-1
310103
ns/iter (± 11444
)294659
ns/iter (± 11053
)1.05
es/full/minify/libraries/antd
1646399252
ns/iter (± 29100294
)1547627418
ns/iter (± 22354566
)1.06
es/full/minify/libraries/d3
300887880
ns/iter (± 7950457
)298192659
ns/iter (± 6532753
)1.01
es/full/minify/libraries/echarts
1263891673
ns/iter (± 19628587
)1213258498
ns/iter (± 23039184
)1.04
es/full/minify/libraries/jquery
91183684
ns/iter (± 810394
)89707662
ns/iter (± 727822
)1.02
es/full/minify/libraries/lodash
105688558
ns/iter (± 828096
)104876826
ns/iter (± 1078380
)1.01
es/full/minify/libraries/moment
52620321
ns/iter (± 395972
)51814927
ns/iter (± 256237
)1.02
es/full/minify/libraries/react
19167535
ns/iter (± 127342
)18938329
ns/iter (± 158945
)1.01
es/full/minify/libraries/terser
254587125
ns/iter (± 2816961
)245247548
ns/iter (± 6071585
)1.04
es/full/minify/libraries/three
445068093
ns/iter (± 4069788
)427379338
ns/iter (± 10456027
)1.04
es/full/minify/libraries/typescript
3119948708
ns/iter (± 22398317
)2945392246
ns/iter (± 26988522
)1.06
es/full/minify/libraries/victory
699016954
ns/iter (± 10143566
)670418919
ns/iter (± 14888486
)1.04
es/full/minify/libraries/vue
131672281
ns/iter (± 1399875
)129421216
ns/iter (± 1203824
)1.02
es/full/codegen/es3
28077
ns/iter (± 47
)29070
ns/iter (± 65
)0.97
es/full/codegen/es5
28154
ns/iter (± 87
)29187
ns/iter (± 33
)0.96
es/full/codegen/es2015
28152
ns/iter (± 44
)29186
ns/iter (± 50
)0.96
es/full/codegen/es2016
28169
ns/iter (± 64
)29147
ns/iter (± 42
)0.97
es/full/codegen/es2017
28122
ns/iter (± 63
)29171
ns/iter (± 51
)0.96
es/full/codegen/es2018
28216
ns/iter (± 44
)29141
ns/iter (± 87
)0.97
es/full/codegen/es2019
28175
ns/iter (± 47
)29132
ns/iter (± 67
)0.97
es/full/codegen/es2020
28179
ns/iter (± 64
)29191
ns/iter (± 59
)0.97
es/full/all/es3
181165986
ns/iter (± 2684849
)182389345
ns/iter (± 2542891
)0.99
es/full/all/es5
174521393
ns/iter (± 1577440
)172641713
ns/iter (± 1900408
)1.01
es/full/all/es2015
137268539
ns/iter (± 3660590
)136109823
ns/iter (± 2859605
)1.01
es/full/all/es2016
134553676
ns/iter (± 1810802
)133073942
ns/iter (± 1333514
)1.01
es/full/all/es2017
132704403
ns/iter (± 1574724
)131931391
ns/iter (± 1742905
)1.01
es/full/all/es2018
128028842
ns/iter (± 2202081
)128106972
ns/iter (± 1647189
)1.00
es/full/all/es2019
129108473
ns/iter (± 1725288
)123999029
ns/iter (± 1804503
)1.04
es/full/all/es2020
119856623
ns/iter (± 1755672
)118578107
ns/iter (± 994106
)1.01
es/full/parser
510240
ns/iter (± 7870
)518752
ns/iter (± 5574
)0.98
es/full/base/fixer
22506
ns/iter (± 22
)22451
ns/iter (± 37
)1.00
es/full/base/resolver_and_hygiene
86087
ns/iter (± 56
)85754
ns/iter (± 94
)1.00
serialization of serde
121
ns/iter (± 1
)121
ns/iter (± 0
)1
css/minify/libraries/bootstrap
27701945
ns/iter (± 89946
)27482579
ns/iter (± 141603
)1.01
css/visitor/compare/clone
2099977
ns/iter (± 24464
)2113761
ns/iter (± 3902
)0.99
css/visitor/compare/visit_mut_span
2324171
ns/iter (± 5633
)2315860
ns/iter (± 6820
)1.00
css/visitor/compare/visit_mut_span_panic
2378493
ns/iter (± 7265
)2358400
ns/iter (± 5160
)1.01
css/visitor/compare/fold_span
3084058
ns/iter (± 15607
)3059035
ns/iter (± 14966
)1.01
css/visitor/compare/fold_span_panic
3229204
ns/iter (± 9224
)3229248
ns/iter (± 14383
)1.00
css/lexer/bootstrap_5_1_3
5171464
ns/iter (± 10565
)5124674
ns/iter (± 19499
)1.01
css/lexer/foundation_6_7_4
4341703
ns/iter (± 2255
)4315915
ns/iter (± 3904
)1.01
css/lexer/tailwind_3_1_1
830003
ns/iter (± 254
)822790
ns/iter (± 516
)1.01
css/parser/bootstrap_5_1_3
21211606
ns/iter (± 92073
)21264720
ns/iter (± 136496
)1.00
css/parser/foundation_6_7_4
16832998
ns/iter (± 98800
)16732350
ns/iter (± 30144
)1.01
css/parser/tailwind_3_1_1
3231229
ns/iter (± 2342
)3236724
ns/iter (± 2374
)1.00
es/codegen/colors
327523
ns/iter (± 185009
)319068
ns/iter (± 180033
)1.03
es/codegen/large
1248309
ns/iter (± 642144
)1247338
ns/iter (± 651732
)1.00
es/codegen/with-parser/colors
47542
ns/iter (± 629
)47650
ns/iter (± 332
)1.00
es/codegen/with-parser/large
514544
ns/iter (± 1505
)511059
ns/iter (± 1190
)1.01
es/minify/libraries/antd
1439761707
ns/iter (± 18848500
)1350125954
ns/iter (± 16134220
)1.07
es/minify/libraries/d3
257993432
ns/iter (± 2209931
)255062762
ns/iter (± 7352350
)1.01
es/minify/libraries/echarts
1096503882
ns/iter (± 5823742
)1033015734
ns/iter (± 17725590
)1.06
es/minify/libraries/jquery
79688218
ns/iter (± 598520
)79015888
ns/iter (± 832158
)1.01
es/minify/libraries/lodash
95121719
ns/iter (± 912872
)94013570
ns/iter (± 1071722
)1.01
es/minify/libraries/moment
46037744
ns/iter (± 308838
)45399938
ns/iter (± 256638
)1.01
es/minify/libraries/react
17192488
ns/iter (± 161087
)16874200
ns/iter (± 193108
)1.02
es/minify/libraries/terser
210451658
ns/iter (± 939310
)206485863
ns/iter (± 3092509
)1.02
es/minify/libraries/three
384237684
ns/iter (± 7678752
)359274279
ns/iter (± 13157576
)1.07
es/minify/libraries/typescript
2686926342
ns/iter (± 15027011
)2490388810
ns/iter (± 21837261
)1.08
es/minify/libraries/victory
598567604
ns/iter (± 10975213
)548186384
ns/iter (± 14924705
)1.09
es/minify/libraries/vue
116614379
ns/iter (± 800894
)116375910
ns/iter (± 1605645
)1.00
es/visitor/compare/clone
2336926
ns/iter (± 11417
)2335573
ns/iter (± 6007
)1.00
es/visitor/compare/visit_mut_span
2713419
ns/iter (± 10085
)2707883
ns/iter (± 3445
)1.00
es/visitor/compare/visit_mut_span_panic
2747834
ns/iter (± 7100
)2740064
ns/iter (± 3057
)1.00
es/visitor/compare/fold_span
3828896
ns/iter (± 5230
)3811114
ns/iter (± 10111
)1.00
es/visitor/compare/fold_span_panic
3958351
ns/iter (± 6524
)3937220
ns/iter (± 9731
)1.01
es/lexer/colors
13076
ns/iter (± 11
)13184
ns/iter (± 27
)0.99
es/lexer/angular
6409893
ns/iter (± 6095
)6440041
ns/iter (± 4621
)1.00
es/lexer/backbone
788965
ns/iter (± 197
)794506
ns/iter (± 795
)0.99
es/lexer/jquery
4426596
ns/iter (± 2535
)4441917
ns/iter (± 3352
)1.00
es/lexer/jquery mobile
6926380
ns/iter (± 3327
)6937051
ns/iter (± 4192
)1.00
es/lexer/mootools
3477663
ns/iter (± 1736
)3490081
ns/iter (± 6156
)1.00
es/lexer/underscore
651146
ns/iter (± 258
)657109
ns/iter (± 417
)0.99
es/lexer/three
20981739
ns/iter (± 10025
)21121620
ns/iter (± 44008
)0.99
es/lexer/yui
3871491
ns/iter (± 1512
)3901410
ns/iter (± 6068
)0.99
es/parser/colors
29391
ns/iter (± 58
)29018
ns/iter (± 116
)1.01
es/parser/angular
15075433
ns/iter (± 123449
)15014175
ns/iter (± 176603
)1.00
es/parser/backbone
2152638
ns/iter (± 10296
)2151703
ns/iter (± 11248
)1.00
es/parser/jquery
11751667
ns/iter (± 124189
)11785592
ns/iter (± 131618
)1.00
es/parser/jquery mobile
18434636
ns/iter (± 227585
)18271253
ns/iter (± 191535
)1.01
es/parser/mootools
8949994
ns/iter (± 24638
)8908870
ns/iter (± 19667
)1.00
es/parser/underscore
1816924
ns/iter (± 11822
)1807584
ns/iter (± 11062
)1.01
es/parser/three
54835465
ns/iter (± 477180
)53894128
ns/iter (± 498672
)1.02
es/parser/yui
9145797
ns/iter (± 79527
)9002033
ns/iter (± 55596
)1.02
es/preset-env/usage/builtin_type
140528
ns/iter (± 33824
)142614
ns/iter (± 35233
)0.99
es/preset-env/usage/property
20185
ns/iter (± 46
)19958
ns/iter (± 106
)1.01
es/resolver/typescript
120221707
ns/iter (± 2027795
)110535010
ns/iter (± 2008833
)1.09
es/fixer/typescript
89444306
ns/iter (± 900566
)80073336
ns/iter (± 671667
)1.12
es/hygiene/typescript
194937558
ns/iter (± 1748634
)169048492
ns/iter (± 1124492
)1.15
es/resolver_with_hygiene/typescript
336629299
ns/iter (± 2092917
)313359245
ns/iter (± 3197298
)1.07
es/visitor/base-perf/module_clone
80409
ns/iter (± 368
)81092
ns/iter (± 362
)0.99
es/visitor/base-perf/fold_empty
90696
ns/iter (± 429
)90878
ns/iter (± 300
)1.00
es/visitor/base-perf/fold_noop_impl_all
90892
ns/iter (± 196
)90828
ns/iter (± 219
)1.00
es/visitor/base-perf/fold_noop_impl_vec
91577
ns/iter (± 546
)91097
ns/iter (± 232
)1.01
es/visitor/base-perf/boxing_boxed_clone
56
ns/iter (± 0
)56
ns/iter (± 0
)1
es/visitor/base-perf/boxing_unboxed_clone
42
ns/iter (± 0
)42
ns/iter (± 0
)1
es/visitor/base-perf/boxing_boxed
105
ns/iter (± 0
)102
ns/iter (± 0
)1.03
es/visitor/base-perf/boxing_unboxed
78
ns/iter (± 0
)78
ns/iter (± 0
)1
es/visitor/base-perf/visit_contains_this
3420
ns/iter (± 44
)3525
ns/iter (± 73
)0.97
es/base/parallel/resolver/typescript
6161216154
ns/iter (± 498526189
)5912710018
ns/iter (± 499249616
)1.04
es/base/parallel/hygiene/typescript
2189448050
ns/iter (± 15204389
)2001417120
ns/iter (± 19687774
)1.09
misc/visitors/time-complexity/time 5
98
ns/iter (± 0
)106
ns/iter (± 0
)0.92
misc/visitors/time-complexity/time 10
330
ns/iter (± 1
)351
ns/iter (± 5
)0.94
misc/visitors/time-complexity/time 15
647
ns/iter (± 9
)665
ns/iter (± 2
)0.97
misc/visitors/time-complexity/time 20
1201
ns/iter (± 1
)1227
ns/iter (± 1
)0.98
misc/visitors/time-complexity/time 40
6167
ns/iter (± 1
)6209
ns/iter (± 5
)0.99
misc/visitors/time-complexity/time 60
15554
ns/iter (± 47
)15629
ns/iter (± 45
)1.00
es/full-target/es2016
252584
ns/iter (± 387
)256778
ns/iter (± 392
)0.98
es/full-target/es2017
245811
ns/iter (± 279
)247090
ns/iter (± 333
)0.99
es/full-target/es2018
235017
ns/iter (± 170
)236200
ns/iter (± 643
)0.99
es2020_nullish_coalescing
92966
ns/iter (± 316
)93143
ns/iter (± 237
)1.00
es2020_optional_chaining
124438
ns/iter (± 376
)125230
ns/iter (± 305
)0.99
es2022_class_properties
149224
ns/iter (± 292
)149543
ns/iter (± 462
)1.00
es2018_object_rest_spread
96328
ns/iter (± 196
)96458
ns/iter (± 281
)1.00
es2019_optional_catch_binding
85603
ns/iter (± 354
)85399
ns/iter (± 157
)1.00
es2017_async_to_generator
86252
ns/iter (± 181
)86139
ns/iter (± 204
)1.00
es2016_exponentiation
90238
ns/iter (± 180
)91308
ns/iter (± 280
)0.99
es2015_arrow
94029
ns/iter (± 313
)94870
ns/iter (± 241
)0.99
es2015_block_scoped_fn
92044
ns/iter (± 198
)92693
ns/iter (± 296
)0.99
es2015_block_scoping
170208
ns/iter (± 346
)170234
ns/iter (± 307
)1.00
This comment was automatically generated by workflow using github-action-benchmark.