...and I cut those runtimes in half by letting the math operators return doubles in the C++ side, which allows skipping extra nan-boxing and stack allocation steps from returning a variant Local type for intermediate results. Nice! Now about 4x slower than native nodejs for Mandelbrot calculator.
Ok, I can confirm that heap-boxing doubles makes a Mandelbrot set generator *really slow*. :D
Separated out startup time and measuring just the runtime, my WebAssembly target is at 8x slower than native Node at this with NaN-boxing (doubles can live on stack) versus 200x slower when boxing them on the heap (huge allocation & GC overhead).
Switched to another NaN-boxing format to avoid heap-boxing doubles (inspired by JSC's system). Hand-compiled Mandelbrot demo now runs only 2-3x slower than native Node, versus 20x slower with heap-boxing.
Got a Mandelbrot set example running in my JS-in-Wasm engine (hand ported to C++ wrapper calls, haven't done the compiler yet)! It's 20x slower than native node run of the source JS, probably in large part because I'm boxing doubles on the heap, so there's a ton of allocations and it has to GC periodically.
Might go back to NaN-boxing in 64-bit words, though that doesn't fit with the current Wasm GC proposal (would have to do fat pointers with a 64-bit NaN box *and* a reference, for total of 128 bits)
GNOME Shell squished my Firefox! :)
my life with Atom's C++ linter packages
Doing a little refactoring on this little JS-like runtime. Starting to get the hang of what makes sense in terms of smart pointer wrappers and making things look clean in C++ source while still making semantics clear-ish.
I've moved non-captured local variables to a stack and switched around how the GC'd variable bindings work. Instead of magic references, they're either explicit pointers (for captures) or smart pointers (for local stack allocations).
Eventually might get to the JS compiler part. ;)
Horrible C++ style but I think I'm preserving the JS garbage collection semantics in this proof of concept, even with closures. :D
Eventual goal is to have a JS-to-(either C++ or Rust or LLVM bitcode) compiler. Build as WebAssembly and given some kind of narrow API for the embedding web app, and you've got a user-provided "JS script" that can be safely used online or offline.
I spent a bit too much time last week working on it, will try to get back to other tasks this week. :) Will publish later...
woo the awesomeness
I was going to make fun of iOS for this, but Fedora wants to reboot for a Firefox upgrade too so... ;)
Approx dependency chart for the library module builds in ogv.js.
Each module compilation invokes 'make -j4' to compile C files in parallel, but a lot of time is spent serialized in 'configure' scripts so there's a big benefit to running the main build with 'make -j4' too.
Gimp 2.10 doesn't yet have full native HiDPI support, but does have the option to manually increase the icon size in settings. Yay!
This should tide me over until the gtk3 port lands in the next major ver.
Opened the Weather app on my Win10 PC and got a popup about upcoming ToS changes for Microsoft Services. There's actually nice details linked through the page they send you to, including a sort of 'diff' overview listing all the changed bits and approximately what the changes were.
However this dialog box is just awful:
"The folder contains items whose names are too long for the Recycle Bin." #ohwindows
"Other useful business software"... oh SourceForge you silly ad. :)
#emscripten hack: on IE 11, the Math.imul polyfill is a bottleneck for VP8/VP9 decoding in #ogvjs. Replacing it with direct multiplication results in a noticeable speedup, but assumes no overflows will happen and breaks asm.js validation. ;)
Of course users will get far bigger performance gains from using Edge or Firefox or Chrome or Safari or anything other than IE 11. ;)
You are in a maze of twisty passages , all alike
lol vmware... ok fine I won't tell people if your software is slow https://mastodon.technology/media/qbVH0q1nAzW0m-P0-pw
I like VLC update release notes and their directness. https://mastodon.technology/media/reOvYARIaxxploIcrTI