Skip to content

Binary patching rust hot-reloading, sub-second rebuilds, independent server/client hot-reload #3797

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 305 commits into from
May 7, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
305 commits
Select commit Hold shift + click to select a range
76ed47a
cleanup rustc
jkelleyrtp Apr 3, 2025
7b53382
wip
jkelleyrtp Apr 3, 2025
c92affd
wip: fix client/server
jkelleyrtp Apr 4, 2025
39cf07d
get the subsecond cli thing working again
jkelleyrtp Apr 4, 2025
1561063
back to list of builds but with accessors
jkelleyrtp Apr 4, 2025
206dce7
migrate some methods to workspace, clean up impl a bit
jkelleyrtp Apr 4, 2025
875f39a
pass mode through build context
jkelleyrtp Apr 4, 2025
16958d1
use a build context, similar to cargo/rustc
jkelleyrtp Apr 4, 2025
369124b
merge BuildUpdate and HandleUpdate into BuilderUpdate
jkelleyrtp Apr 4, 2025
b42b717
Move more resolution of args into runner
jkelleyrtp Apr 4, 2025
cc52901
migrate some methods to runner
jkelleyrtp Apr 4, 2025
4b78ea4
hoist out fullstack
jkelleyrtp Apr 4, 2025
8b7ee1b
fix build request resolver
jkelleyrtp Apr 4, 2025
0eb0f70
yay request is cleaned up
jkelleyrtp Apr 4, 2025
f2c4a07
fixup resolution a bit
jkelleyrtp Apr 4, 2025
2143684
spawn off the build!
jkelleyrtp Apr 4, 2025
24a8c80
re-wire android autodetection
jkelleyrtp Apr 4, 2025
6eafb3d
re-wire android autodetection
jkelleyrtp Apr 4, 2025
537d32c
wire back up a few more things
jkelleyrtp Apr 4, 2025
a04831d
re-wire tooling verification
jkelleyrtp Apr 4, 2025
8316b7f
I think it's mostly in the right condition for regular app
jkelleyrtp Apr 4, 2025
34089b5
add depinfo parser
jkelleyrtp Apr 5, 2025
6fe4540
yay okay works with regular apps again
jkelleyrtp Apr 5, 2025
5cd6c50
full rebuilds are back
jkelleyrtp Apr 5, 2025
5d1924a
rewire file wtcher
jkelleyrtp Apr 5, 2025
babd161
wire patch!
jkelleyrtp Apr 5, 2025
19c524a
yayyyyyy patching works and is really fast
jkelleyrtp Apr 5, 2025
2183d0c
yay android works
jkelleyrtp Apr 5, 2025
1acab9b
clean up stdout piping
jkelleyrtp Apr 5, 2025
b485dd4
yayyy memap on android so we don't need root
jkelleyrtp Apr 5, 2025
24d77c1
create a static wasm jump table
jkelleyrtp Apr 5, 2025
ec9b559
wip: global offset table for wasm
jkelleyrtp Apr 5, 2025
ae21b08
wip... thinking about making the patches relocatable
jkelleyrtp Apr 7, 2025
aa53cb2
wip: customized relocation
jkelleyrtp Apr 8, 2025
54aeae1
YESSSSSS RELOCATABLE WASM
jkelleyrtp Apr 9, 2025
f7ae0cb
clean up impl a bit
jkelleyrtp Apr 9, 2025
8942483
lil bit more cleanup
jkelleyrtp Apr 9, 2025
61b2fd1
lil bit more
jkelleyrtp Apr 9, 2025
6d0947e
lil bit more cleanup
jkelleyrtp Apr 9, 2025
5e9a228
lil bit more cleanup, support 32 bit platforms
jkelleyrtp Apr 9, 2025
228e96b
sick, wasm is completely pic
jkelleyrtp Apr 9, 2025
29d6b36
hmmmm not quite working yet
jkelleyrtp Apr 9, 2025
ef99fbf
woooo, patches loading from rust+wasm
jkelleyrtp Apr 9, 2025
6d62557
integrated into the cli 😎
jkelleyrtp Apr 9, 2025
61328f7
condense a bit
jkelleyrtp Apr 9, 2025
010e303
cleaned up request a bit
jkelleyrtp Apr 10, 2025
9721504
bust fingerprints
jkelleyrtp Apr 10, 2025
ec84f7b
Make the file diffing logic a bit more sensible
jkelleyrtp Apr 11, 2025
0c9ece3
still working through a few issues, server launches but is acting weird
jkelleyrtp Apr 12, 2025
d6ba61e
Merge remote-tracking branch 'origin/main' into jk/binary-patch
jkelleyrtp Apr 12, 2025
87baa8f
fix merge conflict
jkelleyrtp Apr 12, 2025
ec135cf
more merge issues
jkelleyrtp Apr 12, 2025
8171ec9
remove stuff we don't want anymore
jkelleyrtp Apr 12, 2025
429277f
revert name change
jkelleyrtp Apr 12, 2025
1628e69
wip: server not working anymore :(
jkelleyrtp Apr 12, 2025
f7f2ea6
split apart "dioxus fullstack" into "dioxus server" and "dioxus web"
jkelleyrtp Apr 14, 2025
64a25ab
fixup a few more compile errors
jkelleyrtp Apr 14, 2025
d510094
grrr opening server
jkelleyrtp Apr 14, 2025
a45d0c2
simultaneous frontend and backend patching
jkelleyrtp Apr 14, 2025
96dbe1e
use rustc wrapper
jkelleyrtp Apr 14, 2025
2ef30a2
wip: passing assets to jumptable
jkelleyrtp Apr 15, 2025
c919aa3
migrate project-like examples
jkelleyrtp Apr 15, 2025
ae577bb
patchy patchy server fns!
jkelleyrtp Apr 15, 2025
73dc824
rollback some random changes
jkelleyrtp Apr 16, 2025
a50a8d8
unwind the js files
jkelleyrtp Apr 16, 2025
bc6a17d
rollback hash
jkelleyrtp Apr 16, 2025
7643845
no need for patch
jkelleyrtp Apr 16, 2025
d27fb4f
more cleanups
jkelleyrtp Apr 16, 2025
e74e520
lil bit more cleanup, remove some old cruft
jkelleyrtp Apr 16, 2025
e8c3916
allow patching when wasm webpage is closed
jkelleyrtp Apr 16, 2025
67ec000
tiny bit more robust
jkelleyrtp Apr 16, 2025
ebf328b
lil bit of clean up
jkelleyrtp Apr 16, 2025
49cbae9
Merge remote-tracking branch 'origin/main' into jk/binary-patch
jkelleyrtp Apr 16, 2025
d709283
clean up ws code
jkelleyrtp Apr 16, 2025
d95192e
bit more clean ups
jkelleyrtp Apr 16, 2025
5cb22cb
condense
jkelleyrtp Apr 16, 2025
9ef6af4
undo file moves
jkelleyrtp Apr 16, 2025
6b73f23
move back other project
jkelleyrtp Apr 16, 2025
2e1ec20
move other project
jkelleyrtp Apr 16, 2025
66e7393
migrate out harness and janky CLI
jkelleyrtp Apr 16, 2025
55f277e
fix compile
jkelleyrtp Apr 16, 2025
073735c
anonymize some files, heavily document others
jkelleyrtp Apr 16, 2025
f7ddc59
lots more documentation, for posterity!
jkelleyrtp Apr 16, 2025
96d07ad
ton more docs
jkelleyrtp Apr 16, 2025
e6a84a8
clean up the cli a bit more
jkelleyrtp Apr 16, 2025
5067564
more ws cleanup
jkelleyrtp Apr 17, 2025
f4d29ac
more cleanup
jkelleyrtp Apr 17, 2025
6a232cd
migrate build id to cli-config
jkelleyrtp Apr 17, 2025
6b06ac4
add command file handling
jkelleyrtp Apr 17, 2025
984727e
random small cleanups
jkelleyrtp Apr 17, 2025
b2d14a5
wip....
jkelleyrtp Apr 17, 2025
8bebab9
wip....
jkelleyrtp Apr 17, 2025
27e58bc
fix: use workspace for krate discovery
jkelleyrtp Apr 18, 2025
cc2a214
fix panic logging on serve by placing it *after* the logs
jkelleyrtp Apr 18, 2025
c7f5543
reorder logging to be sensible on success
jkelleyrtp Apr 18, 2025
da73f69
bring back swc
jkelleyrtp Apr 18, 2025
0f36512
ws cruft
jkelleyrtp Apr 18, 2025
d150b47
small patches to relocs in loader
jkelleyrtp Apr 18, 2025
aa0ca3e
bump krates
jkelleyrtp Apr 18, 2025
6f3a71b
hoist main funcs into the ifunc table, fixing wasm
jkelleyrtp Apr 18, 2025
8cde9f2
fix tui output for long lines
jkelleyrtp Apr 18, 2025
ea1f077
add more linker logging
jkelleyrtp Apr 18, 2025
e589560
wow, incredible, we build fat binaries, holy heckkkkk
jkelleyrtp Apr 18, 2025
669a8db
fix args for frontend/backend
jkelleyrtp Apr 18, 2025
b363fb7
small cleanups
jkelleyrtp Apr 18, 2025
2abbafa
properly send along build IDs to clients
jkelleyrtp Apr 21, 2025
2fdbf23
fix workspace compiles
jkelleyrtp Apr 21, 2025
fbef948
clean up jump table work a bit
jkelleyrtp Apr 21, 2025
95de4e5
clean up logging a bit
jkelleyrtp Apr 21, 2025
7924248
open existing
jkelleyrtp Apr 21, 2025
601378c
fixup some commands
jkelleyrtp Apr 21, 2025
bafa5b8
open existing browser integration
jkelleyrtp Apr 21, 2025
7c7b267
wire up the new dx serve client/server syntax
jkelleyrtp Apr 22, 2025
3dad41c
fixup `dx run` command
jkelleyrtp Apr 22, 2025
0978a1b
bring back some old functionality
jkelleyrtp Apr 22, 2025
ebcb12d
fix serverfn feature sets
jkelleyrtp Apr 22, 2025
e7ce162
remove toast animation and simplify its code a bit
jkelleyrtp Apr 22, 2025
f1ebf2c
less intrusive toast
jkelleyrtp Apr 22, 2025
61cec5e
dont change build status when patching on web
jkelleyrtp Apr 22, 2025
6b523e6
add proper cache busting to vcomponent
jkelleyrtp Apr 23, 2025
835ae26
clean up the patch file a bit
jkelleyrtp Apr 23, 2025
5335a84
more lints/checks cleaned up
jkelleyrtp Apr 23, 2025
c4cdc7e
go back to TargetArgs but a BuildTargets resolved struct
jkelleyrtp Apr 23, 2025
de1d41a
clean up more nits
jkelleyrtp Apr 23, 2025
c147281
use an atomicptr for jumptable
jkelleyrtp Apr 23, 2025
2ab42f2
fix interaction with initial web load + suspense
jkelleyrtp Apr 24, 2025
c41d927
don't run asset system on wasm/bindgen js in dev
jkelleyrtp Apr 25, 2025
dfc8c01
reduce blast radius of PR
jkelleyrtp Apr 25, 2025
b2b9744
use profile to determine if we're in release
jkelleyrtp Apr 25, 2025
a3e020c
cleanup prod html template
jkelleyrtp Apr 25, 2025
7400546
cleanup profiles
jkelleyrtp Apr 25, 2025
babb5d5
fix feature resolution of fullstack
jkelleyrtp Apr 25, 2025
7dbd12f
if fullstack is explicitly false, don't use it
jkelleyrtp Apr 25, 2025
2aa5f15
light cleanups
jkelleyrtp Apr 25, 2025
d8d3bb1
drop carg config2
jkelleyrtp Apr 25, 2025
469c67a
pass along linker args properly
jkelleyrtp Apr 25, 2025
7f7da41
make workspace examples compile with dx again
jkelleyrtp Apr 25, 2025
c1344e0
fewer unwraps and better error loggign
jkelleyrtp Apr 26, 2025
af256ac
bit more error handlign
jkelleyrtp Apr 26, 2025
8989921
small cleanup
jkelleyrtp Apr 26, 2025
cc4e8be
drive-by cleanups
jkelleyrtp Apr 26, 2025
8c3ea6c
use queries instead of initialize for aslr stuff
jkelleyrtp Apr 26, 2025
f2b5334
fix hotpatch with higher opt level
jkelleyrtp Apr 26, 2025
2ed7432
fix aslr bug from multiple clients
jkelleyrtp Apr 28, 2025
9d75421
Merge remote-tracking branch 'origin/main' into jk/binary-patch
jkelleyrtp Apr 28, 2025
74480f2
fix merge conflict
jkelleyrtp Apr 28, 2025
bd9b072
fix typos
jkelleyrtp Apr 28, 2025
bd824c4
clippy
jkelleyrtp Apr 28, 2025
3d27218
fix miscompile
jkelleyrtp Apr 28, 2025
df92f48
fix doctest
jkelleyrtp Apr 28, 2025
e90dd3d
properly rollback wry to 0.45
jkelleyrtp Apr 28, 2025
034cacf
fix markdown path issues, other test issues
jkelleyrtp Apr 28, 2025
131bb95
fix test in router
jkelleyrtp Apr 28, 2025
18a740e
fix release mode test
jkelleyrtp Apr 28, 2025
79fd2d0
fix some more tests, clean up a few more items
jkelleyrtp Apr 28, 2025
3d14551
use fnptr instead of typeid
jkelleyrtp Apr 28, 2025
813c3e8
clean up memozation via subsecond in core
jkelleyrtp Apr 28, 2025
1fee33c
use "main" as sentinel
jkelleyrtp Apr 28, 2025
a837a9a
fix imports and re-exports
jkelleyrtp Apr 28, 2025
3703a18
get off __rust_alloc for aslr offset detection
jkelleyrtp Apr 28, 2025
cd5992d
wip
jkelleyrtp Apr 29, 2025
32064fa
wip... fixing unoptimized web
jkelleyrtp Apr 29, 2025
2b656e9
hmmmm mmmm
jkelleyrtp Apr 29, 2025
ebaf636
close,ish, still missing the wasmbindgen dynaimc imports
jkelleyrtp Apr 29, 2025
b3de4a0
aha! full wasm works now
jkelleyrtp Apr 29, 2025
0ded569
remove failing test
jkelleyrtp Apr 29, 2025
103ba11
hmmmm things aren't perfect
jkelleyrtp Apr 30, 2025
d246779
from what I can tell, relocatable wasm just doesn't work with wasm-bi…
jkelleyrtp May 1, 2025
b06c06c
AI IS LITERALLY THE WORST
jkelleyrtp May 1, 2025
ee9714e
preserve wasm snippets across compiles
jkelleyrtp May 1, 2025
008c36c
IT HOTPATCHES THE DOCSITE, WE ARE LIVING IN THE FUTURE
jkelleyrtp May 1, 2025
45c3091
remove the macos cfg-out
jkelleyrtp May 1, 2025
f457d6d
fix: need to allocate 1 more page
jkelleyrtp May 1, 2025
2c7b52b
fix url issue
jkelleyrtp May 1, 2025
c04d2f1
properly span props
jkelleyrtp May 1, 2025
bfe2170
properly fill in extra symbols
jkelleyrtp May 1, 2025
1d9050f
light cleanups and good docs
jkelleyrtp May 1, 2025
2d85d5a
delete cruft, better docs
jkelleyrtp May 1, 2025
7f21290
More cleanups and simplifications
jkelleyrtp May 1, 2025
8d22086
clippy, typos
jkelleyrtp May 1, 2025
852f272
remove harnesses
jkelleyrtp May 1, 2025
90f419e
wasm-bindgen error logging
jkelleyrtp May 2, 2025
5ab5739
clean up deps
jkelleyrtp May 2, 2025
b50df87
remove cruft
jkelleyrtp May 2, 2025
519b115
proper priv/pub
jkelleyrtp May 2, 2025
7419b98
use ifuncs for all env imports
jkelleyrtp May 2, 2025
b5c00f2
cruft
jkelleyrtp May 2, 2025
cac4a8e
use par_iter, better output
jkelleyrtp May 2, 2025
39394fa
implement a cache for the base module
jkelleyrtp May 2, 2025
6fe072c
delete custom sections
jkelleyrtp May 2, 2025
f0fa2a0
cache the main native module too
jkelleyrtp May 2, 2025
34da66f
add par iter in a few more places
jkelleyrtp May 2, 2025
b3fa7e9
clippy, map ident
jkelleyrtp May 2, 2025
5b6f3a5
better logging and status bars
jkelleyrtp May 2, 2025
90e47ae
wip: some small windows support
jkelleyrtp May 2, 2025
145686a
wip more windowss
jkelleyrtp May 4, 2025
7915188
fix weird regression
jkelleyrtp May 4, 2025
837a7d6
implement windows jump table
jkelleyrtp May 4, 2025
6ef6266
small fixes for windows
jkelleyrtp May 4, 2025
bc01ee2
better windows support
jkelleyrtp May 4, 2025
f6d5c84
windows support pt2
jkelleyrtp May 4, 2025
fd011b0
rust lld is not msvc
jkelleyrtp May 4, 2025
9567737
whole archive the rlibs
jkelleyrtp May 4, 2025
fafe9dc
ignore windows and sys crates
jkelleyrtp May 4, 2025
3e9983f
logging
jkelleyrtp May 4, 2025
2e177c9
ohhhhhh, pop out dlls
jkelleyrtp May 5, 2025
9d9b386
dedupe
jkelleyrtp May 5, 2025
c3f1116
thANK GOD FAT LINKING WORKS ON WINDOWS
jkelleyrtp May 5, 2025
ae32765
hoist caching
jkelleyrtp May 5, 2025
1dcedf2
implement patch based on cache
jkelleyrtp May 5, 2025
7e6c306
fix location for pdb
jkelleyrtp May 5, 2025
f8d107c
pass data symbols, correct object
jkelleyrtp May 5, 2025
bb6e732
add all symbol for windows
jkelleyrtp May 5, 2025
c4c8376
add log
jkelleyrtp May 5, 2025
d30de6e
treat none rva as undefined
jkelleyrtp May 5, 2025
c57bcfa
whoops
jkelleyrtp May 5, 2025
7511e71
handle windows calling convention
jkelleyrtp May 5, 2025
e35d10d
dont use relocated arm64 stub windows
jkelleyrtp May 5, 2025
12de4d2
not all are text?
jkelleyrtp May 5, 2025
bb4ce17
WINDOWS FUNCTION PATCHING WORKS
jkelleyrtp May 5, 2025
7003102
use our own entry
jkelleyrtp May 5, 2025
1a730b8
handle windows imp symbols
jkelleyrtp May 5, 2025
745b9c0
add log
jkelleyrtp May 5, 2025
bb6d833
jump to the real symbol not the layout
jkelleyrtp May 5, 2025
0066b56
whoops
jkelleyrtp May 5, 2025
b8abdf4
hotpatching windows works completely holy heck yay
jkelleyrtp May 5, 2025
01c012b
drop linker args crate
jkelleyrtp May 5, 2025
9fd29b7
disable ssg playwright for now
jkelleyrtp May 5, 2025
f290249
light cleanups
jkelleyrtp May 6, 2025
a24d3be
some cleanups / preps:
jkelleyrtp May 6, 2025
c906f15
use fix from #4042
jkelleyrtp May 6, 2025
1a77ca5
bring in other fix for liveview
jkelleyrtp May 6, 2025
85ab6f4
hoist some configuration
jkelleyrtp May 6, 2025
129e1ab
Merge remote-tracking branch 'origin/main' into jk/binary-patch
jkelleyrtp May 6, 2025
b35cbc9
use __aslr_reference instead of aslr_reference
jkelleyrtp May 6, 2025
6719794
add better errors to patcherror
jkelleyrtp May 6, 2025
385fe4f
fix android
jkelleyrtp May 6, 2025
d7b6b8d
panic if patching fails
jkelleyrtp May 6, 2025
9ecd1e1
clean up tomls
jkelleyrtp May 6, 2025
ae8e2ea
wip: fixing wasm compile for server
jkelleyrtp May 6, 2025
90041ce
fullstack wasm again
jkelleyrtp May 6, 2025
24815e9
fix cfg
jkelleyrtp May 7, 2025
ba3c5f8
fixup feature detection
jkelleyrtp May 7, 2025
b6ab624
fix issue with features
jkelleyrtp May 7, 2025
80ba4ac
fix playwright!
jkelleyrtp May 7, 2025
13e1db8
add barebones template test harness
jkelleyrtp May 7, 2025
6e05bf8
fix compatibility between the two hotreload engines
jkelleyrtp May 7, 2025
815bdc6
fix preldue of server
jkelleyrtp May 7, 2025
b637671
fix check for wasm-opt
jkelleyrtp May 7, 2025
6d2c10f
small fixes
jkelleyrtp May 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,6 @@ node_modules/
# ignore the output of tmps
tmp/
bundle/

# in debugging we frequently dump wasm to wat with `wasm-tools print`
*.wat
11 changes: 8 additions & 3 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,19 @@
"[handlebars]": {
"editor.formatOnSave": false
},
"[javascript]": {
"editor.formatOnSave": false
},
"dioxus.formatOnSave": "disabled",
// "rust-analyzer.check.workspace": true,
// "rust-analyzer.check.workspace": false,
// "rust-analyzer.check.features": "all",
// "rust-analyzer.cargo.buildScripts.rebuildOnSave": false,
// "rust-analyzer.check.workspace": false,
// "rust-analyzer.check.allTargets": true,
"rust-analyzer.cargo.features": "all",
"rust-analyzer.check.features": "all",
// "rust-analyzer.check.allTargets": true,
// we don't want the formatter to kick in while we're working on dioxus itself
"dioxus.formatOnSave": "disabled",
"rust-analyzer.cargo.extraArgs": [
"--tests"
],
}
Loading
Loading