Live data from Hacker News

WATaBoy: JIT-Ing Game Boy Instructions to WASM Beats a Native Interpreter

humphri.es

31–40 of 45 posts

Re: WATaBoy: JIT-Ing Game Boy Instructions to WASM Beats a Native Interpreter

#31

Earlier quoted context omitted.

Every company they apply to will be leveraging LLMs. Time to get over it. No need to be grumpy old man about such things. Every generation has faced such foes. The old always yields to the new. For the times they are a-changin'

You can’t vibe code a production capable C compiler if you’ve never written one. Sure, companies are asking for LLM experience. But whether they know it or not they are also hiring someone who knows what they’re doing with the output. Projects like this are still worth doing by hand. I’d dare say it’s even enjoyable.

I don't disagree with you. I just don't think it's particularly charitable for a presumably seasoned developer to not only go out of their way to accuse some junior of using LLMs but then declare that this obviously makes them unemployable.

Re: WATaBoy: JIT-Ing Game Boy Instructions to WASM Beats a Native Interpreter

#32
post #23

> Dolphin isn’t on iOS, because you can’t do JIT compilation on iOS....Well, Apple has one exception to its JIT restrictions: web browsers. JavaScriptCore, WebKit’s JS engine, uses JIT compilation for its higher-performance tiers. So, if a JS function is called enough times, eventually it’ll be optimised and compiled into native machine code. The same is true for WebAssembly. I was wondering about the why of the head…

Restrictions aside, many years ago I landed a self-hosted Array.sort implementation in Firefox's JS Engine that performed better than the native C++ implementation :] -- it's a recurring theme.

https://bugzilla.mozilla.org/show_bug.cgi?id=715181

Re: WATaBoy: JIT-Ing Game Boy Instructions to WASM Beats a Native Interpreter

#33
post #10
post #6

Earlier quoted context omitted.

[flagged]

I'd hire an undergraduate who can produce this level of work with Claude.

Likewise. When we talk about being able to use AI tooling to do cool things, this is the type of thing that comes to mind.

Re: WATaBoy: JIT-Ing Game Boy Instructions to WASM Beats a Native Interpreter

#34
Very cool! I did something similar using Dolphin and LLVM, 16 years ago during my masters, for a course on virtual machines. I compiled the interpreter to LLVM bitcode and then used it that to build basic blocks. It was super slow, but it worked, and I had lots of fun working on it.

Re: WATaBoy: JIT-Ing Game Boy Instructions to WASM Beats a Native Interpreter

#36
The absolutely easiest way to write a JIT is to use Javascript and eval() (or "new Function()", which is just eval in a Java-shaped tuxedo). You can quite easily speed up little matching functions, especially arithmetic heavy ones, by just filling in some templates at runtime!

Here's an example used in PuzzleScript: https://github.com/increpare/PuzzleScript/blob/dc1e0fc979365...

Re: WATaBoy: JIT-Ing Game Boy Instructions to WASM Beats a Native Interpreter

#37

The absolutely easiest way to write a JIT is to use Javascript and eval() (or "new Function()", which is just eval in a Java-shaped tuxedo). You can quite easily speed up little matching functions, especially arithmetic heavy ones, by just filling in some templates at runtime! Here's an example used in PuzzleScript: https://github.com/increpare/PuzzleScript/blob/dc1e0fc979365...

This is true, and is why I think Javascript is underrated for emulation.

For example, this PSX emulator: https://github.com/kootstra-rene/enge-js

It has decent compatibility and good speed. Furthermore, I challenge anyone to find a PSX emulator with fewer lines of code with competitive speed and accuracy. To my knowledge, this is by far the simplest such implementation, and is able to do this by taking advantage of Javascript JIT compilation.

Re: WATaBoy: JIT-Ing Game Boy Instructions to WASM Beats a Native Interpreter

#38

The author's base assumption, and stated motivation for doing this project, is wrong. https://github.com/StephenDev0/StikDebug For an undergrad project, I suppose it's fine to conveniently forget about the existence of this solution for the sake of getting a good grade.

In order to use this, you need another device to initiate a debugging session on the given process. This is fine for sideloading Dolphin using your developer credentials but is not an acceptable solution for other kinds of apps. Some people might not want their app to be debuggable by randos, and requiring a tether to kickstart the app - even if it's just another iPhone - is cumbersome and user-hostile.

In contrast, spinning up a WebView works everywhere and App Review probably won't even notice or care what you're doing.

Re: WATaBoy: JIT-Ing Game Boy Instructions to WASM Beats a Native Interpreter

#39

The author's base assumption, and stated motivation for doing this project, is wrong. https://github.com/StephenDev0/StikDebug For an undergrad project, I suppose it's fine to conveniently forget about the existence of this solution for the sake of getting a good grade.

I would not expect the average undergraduate to understand the intricacies of how iOS does dynamic codesigning enforcement. There are plenty of people who have graduated with advanced degrees and work at Apple who don't really understand how it works, either.

Ok
Post reply on HN