Commit 1a29fbc
Binary patching rust hot-reloading, sub-second rebuilds, independent server/client hot-reload (DioxusLabs#3797)
Enable runtime rust hot patching.
* roll back wry to 0.45
* cleanup rustc
* wip
* wip: fix client/server
* get the subsecond cli thing working again
* back to list of builds but with accessors
* migrate some methods to workspace, clean up impl a bit
* pass mode through build context
* use a build context, similar to cargo/rustc
* merge BuildUpdate and HandleUpdate into BuilderUpdate
* Move more resolution of args into runner
* migrate some methods to runner
* hoist out fullstack
* fix build request resolver
* yay request is cleaned up
* fixup resolution a bit
* spawn off the build!
* re-wire android autodetection
* re-wire android autodetection
* wire back up a few more things
* re-wire tooling verification
* I think it's mostly in the right condition for regular app
* add depinfo parser
* yay okay works with regular apps again
* full rebuilds are back
* rewire file wtcher
* wire patch!
* yayyyyyy patching works and is really fast
* yay android works
* clean up stdout piping
* yayyy memap on android so we don't need root
* create a static wasm jump table
* wip: global offset table for wasm
* wip... thinking about making the patches relocatable
* wip: customized relocation
* YESSSSSS RELOCATABLE WASM
* clean up impl a bit
* lil bit more cleanup
* lil bit more
* lil bit more cleanup
* lil bit more cleanup, support 32 bit platforms
* sick, wasm is completely pic
* hmmmm not quite working yet
* woooo, patches loading from rust+wasm
* integrated into the cli 😎
* condense a bit
* cleaned up request a bit
* bust fingerprints
* Make the file diffing logic a bit more sensible
* still working through a few issues, server launches but is acting weird
* fix merge conflict
* more merge issues
* remove stuff we don't want anymore
* revert name change
* wip: server not working anymore :(
* split apart "dioxus fullstack" into "dioxus server" and "dioxus web"
* fixup a few more compile errors
* grrr opening server
* simultaneous frontend and backend patching
* use rustc wrapper
* wip: passing assets to jumptable
* migrate project-like examples
* patchy patchy server fns!
* rollback some random changes
* unwind the js files
* rollback hash
* no need for patch
* more cleanups
* lil bit more cleanup, remove some old cruft
* allow patching when wasm webpage is closed
* tiny bit more robust
* lil bit of clean up
* clean up ws code
* bit more clean ups
* condense
* undo file moves
* move back other project
* move other project
* migrate out harness and janky CLI
* fix compile
* anonymize some files, heavily document others
* lots more documentation, for posterity!
* ton more docs
* clean up the cli a bit more
* more ws cleanup
* more cleanup
* migrate build id to cli-config
* add command file handling
* random small cleanups
* wip....
* wip....
* fix: use workspace for krate discovery
* fix panic logging on serve by placing it *after* the logs
* reorder logging to be sensible on success
* bring back swc
* ws cruft
* small patches to relocs in loader
* bump krates
* hoist main funcs into the ifunc table, fixing wasm
* fix tui output for long lines
* add more linker logging
* wow, incredible, we build fat binaries, holy heckkkkk
* fix args for frontend/backend
* small cleanups
* properly send along build IDs to clients
* fix workspace compiles
* clean up jump table work a bit
* clean up logging a bit
* open existing
* fixup some commands
* open existing browser integration
* wire up the new dx serve client/server syntax
* fixup `dx run` command
* bring back some old functionality
* fix serverfn feature sets
* remove toast animation and simplify its code a bit
* less intrusive toast
* dont change build status when patching on web
* add proper cache busting to vcomponent
* clean up the patch file a bit
* more lints/checks cleaned up
* go back to TargetArgs but a BuildTargets resolved struct
* clean up more nits
* use an atomicptr for jumptable
* fix interaction with initial web load + suspense
* don't run asset system on wasm/bindgen js in dev
* reduce blast radius of PR
* use profile to determine if we're in release
* cleanup prod html template
* cleanup profiles
* fix feature resolution of fullstack
* if fullstack is explicitly false, don't use it
* light cleanups
* drop carg config2
* pass along linker args properly
* make workspace examples compile with dx again
* fewer unwraps and better error loggign
* bit more error handlign
* small cleanup
* drive-by cleanups
* use queries instead of initialize for aslr stuff
* fix hotpatch with higher opt level
* fix aslr bug from multiple clients
* fix merge conflict
* fix typos
* clippy
* fix miscompile
* fix doctest
* properly rollback wry to 0.45
* fix markdown path issues, other test issues
* fix test in router
* fix release mode test
* fix some more tests, clean up a few more items
* use fnptr instead of typeid
* clean up memozation via subsecond in core
* use "main" as sentinel
* fix imports and re-exports
* get off __rust_alloc for aslr offset detection
* wip
* wip... fixing unoptimized web
* hmmmm mmmm
* close,ish, still missing the wasmbindgen dynaimc imports
* aha! full wasm works now
- disable externref when compilng patch modules
- manually link wasm instrinsics
- displace the __wbindgen_placeholder__ table with the synthesized wbg imports
what an awful pain.
There might be a few items missing, so will test against the docsite shortly
* remove failing test
* hmmmm things aren't perfect
* from what I can tell, relocatable wasm just doesn't work with wasm-bindgen
sad
wasm-bindgen/wasm-bindgen#1420
* AI IS LITERALLY THE WORST
* preserve wasm snippets across compiles
* IT HOTPATCHES THE DOCSITE, WE ARE LIVING IN THE FUTURE
* remove the macos cfg-out
* fix: need to allocate 1 more page
* fix url issue
* properly span props
* properly fill in extra symbols
* light cleanups and good docs
* delete cruft, better docs
* More cleanups and simplifications
* clippy, typos
* remove harnesses
* wasm-bindgen error logging
* clean up deps
* remove cruft
* proper priv/pub
* use ifuncs for all env imports
* cruft
* use par_iter, better output
* implement a cache for the base module
* delete custom sections
* cache the main native module too
* add par iter in a few more places
* clippy, map ident
* better logging and status bars
* wip: some small windows support
* wip more windowss
* fix weird regression
* implement windows jump table
* small fixes for windows
* better windows support
* windows support pt2
* rust lld is not msvc
* whole archive the rlibs
* ignore windows and sys crates
* logging
* ohhhhhh, pop out dlls
* dedupe
* thANK GOD FAT LINKING WORKS ON WINDOWS
* hoist caching
* implement patch based on cache
* fix location for pdb
* pass data symbols, correct object
* add all symbol for windows
* add log
* treat none rva as undefined
* whoops
* handle windows calling convention
* dont use relocated arm64 stub windows
* not all are text?
* WINDOWS FUNCTION PATCHING WORKS
but issue with statics?
* use our own entry
* handle windows imp symbols
* add log
* jump to the real symbol not the layout
* whoops
* hotpatching windows works completely holy heck yay
* drop linker args crate
* disable ssg playwright for now
* light cleanups
* some cleanups / preps:
- bump to serverfn 0.8.2
- fix playwright test
- fix clippy
* use fix from DioxusLabs#4042
* bring in other fix for liveview
* hoist some configuration
* use __aslr_reference instead of aslr_reference
* add better errors to patcherror
* fix android
* panic if patching fails
* clean up tomls
* wip: fixing wasm compile for server
* fullstack wasm again
* fix cfg
* fixup feature detection
* fix issue with features
* fix playwright!
* add barebones template test harness
* fix compatibility between the two hotreload engines
* fix preldue of server
* fix check for wasm-opt
* small fixes1 parent ea94f17 commit 1a29fbc
142 files changed
Lines changed: 17969 additions & 7143 deletions
File tree
- .vscode
- examples/fullstack-auth
- packages
- cli-config/src
- cli-opt
- cli
- assets
- android/gen/app/src/main
- web
- src
- build
- cli
- config
- serve
- core
- src
- depinfo
- src
- desktop/src
- devtools-types
- src
- devtools
- src
- dioxus
- src
- document/docs
- dx-wire-format/src
- fullstack-hooks
- src
- fullstack-protocol/src
- fullstack
- src
- document
- server
- liveview/src
- adapters
- native/src
- playwright-tests
- barebones-template
- assets
- src
- cli-optimization
- default-features-disabled/src
- suspense-carousel
- test-results
- wasm-split-harness
- router-macro/src
- router/src/contexts
- rsx/src
- server-macro
- server
- docs
- src
- ssr
- src
- subsecond
- subsecond-types
- src
- subsecond
- src
- web
- src
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
9 | 13 | | |
10 | 14 | | |
11 | 15 | | |
12 | 16 | | |
13 | 17 | | |
| 18 | + | |
14 | 19 | | |
15 | 20 | | |
16 | | - | |
17 | | - | |
18 | | - | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
19 | 24 | | |
0 commit comments