feat: router-based wasm bundle splitting (#3683)
* feat: wasm-split base implementation * kinda sorta works with the cli * okay great it actually works * fix: cache busting for chunks * cleaned up version * it works with the router * wip: migrate to a faster linear solution using id remapping * add a good harness * it works completely on the docsite * the super tight build works too * make parallelizable * works on the docsite but not the harness * light cleanups, fix for both harness and docsite * make codegen smaller by extract some shared functions to prevent monos * chunking works, but tbd on tuning heuristics * extract used module * wip: cleaning up module * wip: much better understanding of how imports work * fix the call graph * working again... * wip: thinking about ifuncs * ifunc approach works * yes the ifunc approach works!! * it all works completely even with chunks * small cleanups * comments * actually locate all of the symbols * clean up final implementation * clean up tomls, revert some mono changs * clean up, add some more comments / docs in places * hoist more packages * clean up impl a bit more * clean cli * move harness to playwright * update playwright * extract codgen * add lazy to components * Add docs to split loader * clippy * typos * clippy, don't generate splits if not on wasm * whoops, const * Typos and docs * enable optimizations in ci * add optimizations to ci * add wasm-split router feature * parallel playwright? * fix no case check * disable pre-compress... think that might be the issue * better logging, no default pre-compress, caching of shared symbols * Fix: compressing assets * fix non-interactive logging for serve * cache playwright even on failure, use the cli with optimizations * fix prebuild * fix playwright webserver
This commit is contained in:
1 parent
14eb7597df
commit
bdeedc13eb
59 files changed
+4249
-299
No files matched your search
@@ -19,7 +19,7 @@ pub(crate) struct WebConfig {
|
||||
pub(crate) https: WebHttpsConfig,
|
||||
|
||||
/// Whether to enable pre-compression of assets and wasm during a web build in release mode
|
||||
#[serde(default = "true_bool")]
|
||||
#[serde(default = "false_bool")]
|
||||
pub(crate) pre_compress: bool,
|
||||
|
||||
/// The wasm-opt configuration
|
||||
@@ -30,7 +30,7 @@ pub(crate) struct WebConfig {
|
||||
impl Default for WebConfig {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
pre_compress: true_bool(),
|
||||
pre_compress: false_bool(),
|
||||
app: Default::default(),
|
||||
https: Default::default(),
|
||||
wasm_opt: Default::default(),
|
||||
@@ -58,13 +58,18 @@ pub(crate) struct WasmOptConfig {
|
||||
/// Keep debug symbols in the wasm file
|
||||
#[serde(default = "false_bool")]
|
||||
pub(crate) debug: bool,
|
||||
|
||||
/// Enable memory packing
|
||||
#[serde(default = "false_bool")]
|
||||
pub(crate) memory_packing: bool,
|
||||
}
|
||||
|
||||
/// The wasm-opt level to use for release web builds [default: 4]
|
||||
/// The wasm-opt level to use for release web builds [default: Z]
|
||||
#[derive(Default, Debug, Copy, Clone, Serialize, Deserialize)]
|
||||
pub(crate) enum WasmOptLevel {
|
||||
/// Optimize aggressively for size
|
||||
#[serde(rename = "z")]
|
||||
#[default]
|
||||
Z,
|
||||
/// Optimize for size
|
||||
#[serde(rename = "s")]
|
||||
@@ -83,7 +88,6 @@ pub(crate) enum WasmOptLevel {
|
||||
Three,
|
||||
/// Optimize aggressively for speed
|
||||
#[serde(rename = "4")]
|
||||
#[default]
|
||||
Four,
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user