Загрузка видео...

Не удалось загрузить видео

На главную

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 просмотров • 9 дней назад •via X (Twitter)

Комментарии: 44

Фото профиля Patrick Smith
Patrick Smith9 дней назад

GitHub:

Фото профиля Adam Dymitruk
Adam Dymitruk8 дней назад

Everything needs event sourcing by default.

Фото профиля Santiago Pablo Ortiz
Santiago Pablo Ortiz7 дней назад

This is awesome man

Фото профиля 👼🏿
👼🏿9 дней назад

so blinkenlights @jartine made but without its aesthetics?

Фото профиля Aarav Dayal
Aarav Dayal7 дней назад

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

Фото профиля Patrick Smith
Patrick Smith7 дней назад

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

Фото профиля Aarav Dayal
Aarav Dayal7 дней назад

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
Patrick Smith7 дней назад

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
Aarav Dayal6 дней назад

"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
RandomYang8 дней назад

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

Фото профиля TG
TG8 дней назад

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
Patrick Smith7 дней назад

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

Фото профиля ibuki
ibuki7 дней назад

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

Фото профиля LinuxVersion
LinuxVersion9 дней назад

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
Patrick Smith8 дней назад

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
ricochet8 дней назад

love this!

Фото профиля Preyforge
Preyforge7 дней назад

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
Shang Yuzu8 дней назад

j’ai pas lu la notice.

Фото профиля Multiple Systems
Multiple Systems8 дней назад

why is it important how fast ghostty is?

Фото профиля Francois Laberge
Francois Laberge8 дней назад

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 🇺🇦
Mykhailo Kulak 🇺🇦8 дней назад

This is cool!

Фото профиля mfpaintr
mfpaintr7 дней назад

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

Фото профиля deus
deus8 дней назад

cool

Фото профиля Nilo Stolte, PhD 🍁⚙️
Nilo Stolte, PhD 🍁⚙️8 дней назад

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
Patrick Smith8 дней назад

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 🍁⚙️
Nilo Stolte, PhD 🍁⚙️8 дней назад

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
Patrick Smith8 дней назад

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 🍁⚙️
Nilo Stolte, PhD 🍁⚙️7 дней назад

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
Hi O'laverly7 дней назад

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

Фото профиля Jarno
Jarno7 дней назад

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

Фото профиля allOS.dev - Creating Cross-Platform Apps
allOS.dev - Creating Cross-Platform Apps8 дней назад

So cool! Following!

Фото профиля hardikxk
hardikxk8 дней назад

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

Фото профиля Patrick Smith
Patrick Smith8 дней назад

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

Фото профиля hardikxk
hardikxk8 дней назад

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

Фото профиля ø
ø8 дней назад

This is the way...

Фото профиля William Selby
William Selby8 дней назад

Okay this is so sick? Is it on Github?

Фото профиля Patrick Smith
Patrick Smith8 дней назад

Thanks! Yes it is:

Фото профиля sshpie
sshpie7 дней назад

That's cool

Фото профиля Dylanger Daly
Dylanger Daly8 дней назад

Yummy

Фото профиля Yeab - engg / core was in Palo Alto🌴
Yeab - engg / core was in Palo Alto🌴8 дней назад

cool

Фото профиля Nawid
Nawid8 дней назад

Fantastic

Фото профиля keshen
keshen7 дней назад

what if your program did a side effect

Фото профиля kiby3x
kiby3x8 дней назад

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

Фото профиля Valentyn Kit 🦀 | Rust · Solana
Valentyn Kit 🦀 | Rust · Solana8 дней назад

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

Похожие видео