Video yükleniyor...

Video Yüklenemedi

Ana Sayfaya Dön

My WebAssembly debugger lets you time-travel with your scroll wheel. WebAssembly (and Ghostty) are so fast that a step back just reruns from scratch.

113,665 görüntüleme • 7 gün önce •via X (Twitter)

44 Yorum

Patrick Smith profil fotoğrafı
Patrick Smith7 gün önce

GitHub:

Adam Dymitruk profil fotoğrafı
Adam Dymitruk6 gün önce

Everything needs event sourcing by default.

Santiago Pablo Ortiz profil fotoğrafı
Santiago Pablo Ortiz6 gün önce

This is awesome man

👼🏿 profil fotoğrafı
👼🏿7 gün önce

so blinkenlights @jartine made but without its aesthetics?

Aarav Dayal profil fotoğrafı
Aarav Dayal5 gün önce

What is the optimization? Keeping the diff of the memory for each instruction stepping? Because how will you unexecute an instruction usually?

Patrick Smith profil fotoğrafı
Patrick Smith5 gün önce

The optimization is to make it fast enough that I just replay everything to “unexecute”.

Aarav Dayal profil fotoğrafı
Aarav Dayal5 gün önce

No I mean how do you capture all of it such that it does not take gigabytes of memory to record a program's execution?

Patrick Smith profil fotoğrafı
Patrick Smith5 gün önce

What do you need gigabytes for? There’s an interpreter. A step forward executes the next instruction. A step back executes all the instructions from the beginning up to the previous step. The speed is what allows that to feel instant. There’s no capturing and no caching.

Aarav Dayal profil fotoğrafı
Aarav Dayal5 gün önce

"A step back executes all the instructions from the beginning up to the previous step." Oh so this is the tradeoff. Thank you lmao. This is what I wanted to know.

RandomYang profil fotoğrafı
RandomYang6 gün önce

It’s fascinating that program execution accumulates state, so stepping back means replaying from the start up to step n-1.

TG profil fotoğrafı
TG6 gün önce

I have wanted this, so very many times. Also video like controls would be good with speed options to debug in real time. Play, Stop, SlowMo, Step.

Patrick Smith profil fotoğrafı
Patrick Smith5 gün önce

I’ve created a free Discord community for everything QIP, the wasm component system behind this:

ibuki profil fotoğrafı
ibuki5 gün önce

Wasmは純粋な計算だけだから再実行って手段が実現できるのか

LinuxVersion profil fotoğrafı
LinuxVersion7 gün önce

I assume you will make snapshots periodically to simulate forward from instead of time traveling from the start for long running programs (and diff the snapshots to only store changes)

Patrick Smith profil fotoğrafı
Patrick Smith7 gün önce

No snapshots in this demo. I expect for larger wasm components I’ll have to add some snapshotting but I’ll measure exactly where that line is.

ricochet profil fotoğrafı
ricochet7 gün önce

love this!

Preyforge profil fotoğrafı
Preyforge5 gün önce

time-travel debugging is such a good use of the interface. i keep runs interruptible so the human can take the mouse when the path gets weird; observability should make that handoff easier, not ceremonial.

Shang Yuzu profil fotoğrafı
Shang Yuzu7 gün önce

j’ai pas lu la notice.

Multiple Systems profil fotoğrafı
Multiple Systems6 gün önce

why is it important how fast ghostty is?

Francois Laberge profil fotoğrafı
Francois Laberge7 gün önce

I was surprised how well for shortish recordings of another app just replaying up to playhead sufficed. Wasn't even in webassembly. This looks great.

Mykhailo Kulak 🇺🇦 profil fotoğrafı
Mykhailo Kulak 🇺🇦6 gün önce

This is cool!

mfpaintr profil fotoğrafı
mfpaintr6 gün önce

Cool, but why a terminal? Debugging is about visualizing what is happening. A GUI can provide a much better experience.

deus profil fotoğrafı
deus7 gün önce

cool

Nilo Stolte, PhD 🍁⚙️ profil fotoğrafı
Nilo Stolte, PhD 🍁⚙️6 gün önce

This is petty cool! My question isn't directly related to WebAssembly, but to Ghostty. How is your overall experience with Ghostty going so far? How long you've been using it?

Patrick Smith profil fotoğrafı
Patrick Smith6 gün önce

Ghostty is really nice! I previously just used the built-in macOS Terminal so I want something simple. It’s the split panes and modern rendering that I really appreciate.

Nilo Stolte, PhD 🍁⚙️ profil fotoğrafı
Nilo Stolte, PhD 🍁⚙️6 gün önce

I've seen your demo for qip, a chronometer that uses canvas and fonts to render the numbers. I'm curious about the language that you used for this piece. I suppose you didn't write WebAssembly directly.

Patrick Smith profil fotoğrafı
Patrick Smith6 gün önce

Yes that example is in Zig. I’m using the Codex coding agent, first I’ve made an Inter font lib, then iteratively made this example. I’m sure the code could have many improvements, but it’s pretty vanilla imperative code.

Nilo Stolte, PhD 🍁⚙️ profil fotoğrafı
Nilo Stolte, PhD 🍁⚙️6 gün önce

I checked how you rendered the "glyphs" and I saw it's bitmap. I thought your were dealing with real vector glyphs. Also the program is quite long. Check my vector clock in Java. It's simpler:

Hi O'laverly profil fotoğrafı
Hi O'laverly5 gün önce

Oh, nice. I'm going to have to take a look at that.

Jarno profil fotoğrafı
Jarno6 gün önce

Debugging by rewinding time instead of adding print statements. Perfect.

allOS.dev - Creating Cross-Platform Apps profil fotoğrafı
allOS.dev - Creating Cross-Platform Apps6 gün önce

So cool! Following!

hardikxk profil fotoğrafı
hardikxk7 gün önce

Btw does also it work for WAT files or just anything that compiles to wasm?

Patrick Smith profil fotoğrafı
Patrick Smith6 gün önce

Is wat files something you’d be authoring? I’d suggest using wat2wasm

hardikxk profil fotoğrafı
hardikxk6 gün önce

Had been exploring wat as of late with wat2wasm but yes it is a pain to write wat files over simply using JS or c++ even

ø profil fotoğrafı
ø6 gün önce

This is the way...

William Selby profil fotoğrafı
William Selby6 gün önce

Okay this is so sick? Is it on Github?

Patrick Smith profil fotoğrafı
Patrick Smith6 gün önce

Thanks! Yes it is:

sshpie profil fotoğrafı
sshpie5 gün önce

That's cool

Dylanger Daly profil fotoğrafı
Dylanger Daly6 gün önce

Yummy

Yeab - engg / core was in Palo Alto🌴 profil fotoğrafı
Yeab - engg / core was in Palo Alto🌴7 gün önce

cool

Nawid profil fotoğrafı
Nawid7 gün önce

Fantastic

keshen profil fotoğrafı
keshen6 gün önce

what if your program did a side effect

kiby3x profil fotoğrafı
kiby3x6 gün önce

how does that work calling JS functions that aren't pure?

Valentyn Kit 🦀 | Rust · Solana profil fotoğrafı
Valentyn Kit 🦀 | Rust · Solana7 gün önce

"reruns from scratch" being fast enough to feel like a rewind is the whole trick.

Benzer Videolar