#WebAssembly
Found couple more opportunities to optimise serde-wasm-bindgen's deserialization. Up to 24% in struct-heavy benchmarks!
Released as serde-wasm-bindgen 0.6.2. https://github.com/RReverser/serde-wasm-bindgen


Full house for @soyuka at #SymfonyCon! He is presenting how to compile PHP into #WebAssembly and how to run #Symfony or any other PHP project directly in the browser, without the need for a server.

#Kotlin for #WebAssembly goes alpha, that's a huge milestone! Kotlin/Wasm targeting WASI and Component model has the potential to be bigger than Kotlin/JVM for server and edge workloads in a few years. https://blog.jetbrains.com/kotlin/2023/12/kotlin-for-webassembly-goes-alpha/
I ranted a bit about WebAssembly on @sfoskett's On Premise IT podcast: https://gestaltit.com/podcast/stephen/webassembly-will-displace-containers-for-web-scale-applications/
- Containers suck
- Wasm is like "what if Java but good this time?"
- Wasm could be revolutionary… if certain things happen
(alas, there was a mic audio fail so the audio is from the cameras and is a bit echo-y)
A Return to WebAssembly for the Java Geek
Extending WebAssembly to the Cloud with .NET by Richard Lander.
#dotnet #webdev #wasm #webassembly #csharp
https://devblogs.microsoft.com/dotnet/extending-web-assembly-to-the-cloud/
The Onyx Programming Language
Discussions: https://discu.eu/q/https://onyxlang.io/
A Return to WebAssembly for the Java Geek - JVM Advent
https://www.javaadvent.com/2023/12/a-return-to-webassembly-for-the-java-geek.html
Discussions: https://discu.eu/q/https://www.javaadvent.com/2023/12/a-return-to-webassembly-for-the-java-geek.html
The Java Geek is back to revisit #Wasm! Check out my new article on @javaadvent ! There's a little bit of #golang and #wazero too! #webassembly https://www.javaadvent.com/2023/12/a-return-to-webassembly-for-the-java-geek.html
> Pyodide is a #Python distribution for the browser and Node.js based on #WebAssembly.
Nifty demo for the utility of WASM in running untrusted code. Anyone can upload a "bot" to compete in a rock paper scissors tournament.

Katie Bell up next on WebAssembly and untrusted code

WebAssembly Micro #Runtime (WAMR)
https://github.com/bytecodealliance/wasm-micro-runtime
"#WAMR is a lightweight standalone WebAssembly (Wasm) runtime with small footprint, high performance and highly configurable features for applications cross from embedded, IoT, edge to Trusted Execution Environment (TEE), [...], cloud native and so on."
Looks neat, especially the different running modes look useful:
https://bytecodealliance.github.io/wamr.dev/blog/introduction-to-wamr-running-modes/
Tomorrow check out @javaadvent for my new blog post! Here's a little teaser: the #java Geek is back! #wasm #webassembly

Extending WebAssembly to the Cloud with .NET
https://devblogs.microsoft.com/dotnet/extending-web-assembly-to-the-cloud/
Web Development recap for week 48/2023
https://discu.eu/weekly/webdev/2023/48/
#css #javascript #nodejs #programming #typescript #webassembly #webdev
Get RSS feeds and support this bot with the premium plan: https://discu.eu/premium
JCO 0.14.0 has been released, https://github.com/bytecodealliance/jco/releases/tag/0.14.0.
JCO is a JavaScript tooling for working with WebAssembly Components.
I've made a couple of contributions to this release, of whom:
* Allow `--instantiation` to generate non-async code, https://github.com/bytecodealliance/jco/pull/254,
* Use `--js` with `--instantiation`, https://github.com/bytecodealliance/jco/pull/273.
Basically, we can use JCO with non-async API, and even if `WebAssembly` is absent (it compiles Wasm to ASM.js).
О JavaScript и WebAssembly
Hello world! На днях я баловался с WebAssembly и получил довольно неожиданные результаты, которыми и хочу с вами поделиться в этой небольшой заметке. Хорошо, если вы знаете JS/ Node.js и хотя бы слышали о WASM и Rust .
https://habr.com/ru/articles/778240/
#javascript #webassembly #wasm #wat #rust #производительность
Build your own WebAssembly Compiler (2019)
https://blog.scottlogic.com/2019/05/17/webassembly-compiler.html
Discussions: https://discu.eu/q/https://blog.scottlogic.com/2019/05/17/webassembly-compiler.html
Build your own WebAssembly Compiler (2019)
Link: https://blog.scottlogic.com/2019/05/17/webassembly-compiler.html
Discussion: https://news.ycombinator.com/item?id=38507594
Building a web assembly compiler.
https://blog.scottlogic.com/2019/05/17/webassembly-compiler.html
Building a web assembly compiler.
https://blog.scottlogic.com/2019/05/17/webassembly-compiler.html
Benchmark of WebAssembly runtimes in Go
https://github.com/Seb-C/go-wasm-runtime-benchmark
Discussions: https://discu.eu/q/https://github.com/Seb-C/go-wasm-runtime-benchmark
On #Onyx (https://onyxlang.io/) by Brendan Hansen:
“Onyx, A New Programming Language Powered By WebAssembly”, Wasmer Blog (https://wasmer.io/posts/onyxlang-powered-by-wasmer).
Via HN: https://wasmer.io/posts/onyxlang-powered-by-wasmer
#PLDI #ProgrammingLanguages #Programming #WASM #WebAssembly #Wasmer
Onyx, a new programming language powered by WebAssembly
https://wasmer.io/posts/onyxlang-powered-by-wasmer
Discussions: https://discu.eu/q/https://wasmer.io/posts/onyxlang-powered-by-wasmer
Onyx, a new programming language powered by WebAssembly
Link: https://wasmer.io/posts/onyxlang-powered-by-wasmer
Discussion: https://news.ycombinator.com/item?id=38489340
Something I found to be a useful #TypeScript hack when writing #WebAssembly / #WASM bindings: You can add metadata to a number, such that it remembers what data it points to!
Also, this example allows implicit casts from ScannerPointer
to Pointer
, but not the other way around. Also, compiler errors will be of the form Type 'Pointer<unknown>' is not assignable to type 'PointsTo<"Scanner">'.
which should be quite intuitive.
![Rust Code:
declare const marker: unique symbol;
interface PointsTo<Label = unknown> {
[marker]: Label;
}
export type Pointer<Target = unknown> = number & PointsTo<Target>;
export type ScannerPointer = Pointer<"Scanner">;
export type ScanResultPointer = Pointer<"ScanResult">;
export interface BarcodeScannerWasmExports {
alloc(size: number, align: number): Pointer;
free(ptr: Pointer, size: number, align: number): void;
drop_scanner(ptr: ScannerPointer): void;
drop_scan_result(ptr: ScanResultPointer): void;
create_scanner_rgba(
formats: number,
rgba_ptr: Pointer,
rgba_len: number,
width: number,
height: number
): ScannerPointer;
scan_next(scanner: ScannerPointer): ScanResultPointer;
get_scanned_format(result: ScanResultPointer): number;
get_scanned_text(result: ScanResultPointer): Pointer;
get_scanned_text_len(result: ScanResultPointer): number;
get_scanned_points(result: ScanResultPointer): Pointer;
get_scanned_points_len(result: ScanResultPointer): number;
}](https://files.mastodon.social/cache/media_attachments/files/111/504/277/053/450/360/small/2310f54613a742bc.png)
![Rust Code:
const NULL: Pointer = 0 as Pointer;
const scanner: ScannerPointer = NULL;
Error:
Type 'Pointer<unknown>' is not assignable to type 'ScannerPointer'.
Type 'Pointer<unknown>' is not assignable to type 'PointsTo<"Scanner">'.
Types of property '[marker]' are incompatible.
Type 'unknown' is not assignable to type '"Scanner"'.](https://files.mastodon.social/cache/media_attachments/files/111/504/277/120/426/043/small/9a79dbf231551088.png)
Spoke at the #GDG Santiago de Compostela 🎒🐚 #DevFest yesterday (in broken-ish Spanish, but the slides are in English) on going "From Web SQL to #SQLite implemented in #WebAssembly and backed by the Origin Private File System" (OPFS): https://goo.gle/devfest-santiago.
Even if you don't care about how we got there (that is, why Web SQL was deprecated), the SQLite and the OPFS parts are super exciting technologies well worth your attention—and they work in all modern browsers!
Building interactive web pages with Guile Hoot
https://spritely.institute/news/building-interactive-web-pages-with-guile-hoot.html
Discussions: https://discu.eu/q/https://spritely.institute/news/building-interactive-web-pages-with-guile-hoot.html
Deep dive into CheerpJ 3.0: A WebAssembly Java Virtual Machine for the browser
https://labs.leaningtech.com/blog/cheerpj-3-deep-dive
Discussions: https://discu.eu/q/https://labs.leaningtech.com/blog/cheerpj-3-deep-dive
One of the best SIMD intro articles I've ever come across thus far. Very nicely explains all the core concepts and operations, lots of sketches/diagrams... Noice! 👏
https://mcyoung.xyz/2023/11/27/simd-base64/
Btw. If you're using TypeScript/JavaScript, you can play with some of these concepts/ops directly from the REPL using https://thi.ng/simd. This package uses WASM behind the scenes, but doesn't expose the full set of available SIMD instructions (it's a lil' bit more highlevel...)
Also see recent #HowToThing post and practical example about it here:
https://mastodon.thi.ng/@toxi/111283262419126958
"The thing is that maximal tree-shaking for languages with a thicker run-time has not been a huge priority. Consider Go: according to the #golang wiki, the most trivial program compiled to #WebAssembly from Go is 2 megabytes, and adding imports can make this go to 10 megabytes or more. Or look at Pyodide, the Python WebAssembly port: the REPL example downloads about 20 megabytes of data. These are fine sizes for technology demos or, in the limit, very rich applications, but they aren't winners for web development.
[...]
I work on the #Hoot #Scheme compiler, which targets #Wasm with GC. We manage to get down to 70 kB or so right now, in the minimal "main" compilation unit, and are aiming for lower; auxiliary compilation units that import run-time facilities (the current exception handler and so on) from the main module can be sub-kilobyte. Getting here has been tricky though, and I think it would be even trickier for #Python."
https://wingolog.org/archives/2023/11/24/tree-shaking-the-horticulturally-misguided-algorithm
#guile #compilers
"#WebAssembly GC is now enabled by default, which allows new languages, such as #Dart or #Kotlin, to run on #Firefox. This makes it possible for reference cycles between the guest language and host browser to be collected."
Whoa, front-end web dev, slow down. 0.0 This is what you do while I do back end for a while? Neat!
I’m really excited about the impending release of support for #Wasi Preview 2 and the component model into the Rust toolchain. #WebAssembly is about to get even more exciting.
Web Development recap for week 47/2023
https://discu.eu/weekly/webdev/2023/47/
#css #javascript #nodejs #programming #typescript #webassembly #webdev
Get RSS feeds and support this bot with the premium plan: https://discu.eu/premium
Finished the #WebAssembly exercises for the #12in23 challenge with #exercism.
Still 4 languages to go.
With #Rlang next.
KDDockWidgets creator, Sérgio Martins, has released a full-scale manual on GitHub for the popular docking framework that enables you to implement advanced functionalities missing in Qt. #QtDev #QtWidgets #macOS #Linux #Windows #WebAssembly #Wayland
Heute mit einem Kollegen ein spannendes Interview zum Thema #WebAssembly geführt. Kannte ich bisher als Technologie für Games im Browser. Ist aber viel mehr. Also: wieder was gelernt. Der Podcast erscheint dann voraussichtlich am Montag.
New blog: "Client-Side Ruby with Web Assembly"
https://michaelchadwick.info/blog/2023/11/22/client-side-ruby-with-web-assembly
A complete novice writes #Wasm by hand: Parsing Numbers: https://burgers.io/complete-novice-wasm-parsing-numbers. @bryan writes #WebAssembly and shares his learnings! I still need to work through this, but it looks amazing. 🤩
Introducing Spin 2.0
@niklaskorz @jensimmons We pull in data from https://github.com/mdn/browser-compat-data, and I have just opened a PR about Firefox' #WebAssembly garbage collection support: https://github.com/mdn/browser-compat-data/pull/21310.
WebKit has an umbrella bug for #WasmGC work: https://bugs.webkit.org/show_bug.cgi?id=247394.
Now that #WebAssembly Garbage Collection ships in Firefox 120, can you update the support info in https://developer.chrome.com/blog/wasmgc/ @tomayac? 🙂
Also I'd be curious to know if Safari is working on it, I can't seem to find any info about that. 🤔 (maybe you can point me in the right direction @jensimmons?)
Oh yeah! Visually programming in Go and execution using integration with the TinyGo Playground! #wasm #webassembly #tinygo #golang #Golab
https://bugs.webkit.org/show_bug.cgi?id=265151 if anyone can help :-).
Web Development recap for week 46/2023
https://discu.eu/weekly/webdev/2023/46/
#css #javascript #nodejs #programming #typescript #webassembly #webdev
Get RSS feeds and support this bot with the premium plan: https://discu.eu/premium
💥 In this #InfoQ talk, Bailey Hayes unveils the unimaginable - a single app that combines libraries written in different languages, runnable on the web, on the server & at the edge.
Watch now to explore more: https://bit.ly/3ujEsGl
#transcript included

macOS Sonoma (14.1.1) seems to have disable WebAssembly from JavaScriptCore. Does anyone know something about this?
After a hiatus of >3 years, this week I've been starting to pick up again some pieces of my "Forthy" cooperative multitasking WASM VM idea[1] and did some new code sketching. Whilst trying to wrap my head around WASM branch tables (to route the different VM ops to their "microcode" impls), I found a great blog post whose author shared similar head scratching experiences and is explaining the correct (if somewhat counterintuitive) syntax very nicely! Now I'm unblocked and in the zone... 🤩🙏
https://musteresel.github.io/posts/2020/01/webassembly-text-br_table-example.html
Not sure yet how to deal with this crazy nested format (and keep the source manageable/readable) once I'll be adding the full set of planned instructions (currently ~25 op groups, each with multiple variations, so 80-100 in total). Already looks like it's gonna take a lot of discipline and/or extreme levels of indentation and scope folding... or actually authoring the VM in #Zig (as originally planned), though the WAT route is maybe more lightweight
[1] originally prototyped in 2015 using http://forth.thi.ng (aka https://thi.ng/charlie)
#Development #Showcases
The web can do what!? · A showcase of the incredible capabilities of the modern web https://ilo.im/15ha8z
_____
#WebDev #WebPerf #WebTechnologies #PassKeys #WebAssembly #WebGPU #API #Frontend #HTML #CSS #JavaScript
A week ago was the 1st anniversary of this solo instance & more generally of my fulltime move to Mastodon. A good time for a more detailed intro, partially intended as CV thread (pinned to my profile) which I will add to over time (also to compensate the ongoing lack of a proper website)... Always open to consulting offers, commissions and/or suitable remote positions...
Hi, I'm Karsten 👋 — indy software engineer, researcher, #OpenSource author of hundreds of projects (since ~1999), computational/generative artist/designer, landscape photographer, lecturer, outdoor enthusiast, on the ND spectrum. Main interest in transdisplinary research, tool making, exploring techniques, projects & roles amplifying the creative, educational, expressive and inspirational potential of (personal) computation, code as material, combining this with generative techniques of all forms (quite different to what is now called and implied by "generative AI").
Much of my own practice & philosophy is about #BottomUpDesign, interconnectedness, simplicity and composability as key enablers of emergent effects (also in terms of workflow & tool/system design). Been adopting a round-robin approach to cross-pollinate my work & learning, spending periods going deep into various fields to build up and combine experience in (A-Z order): API design, audio/DSP, baremetal (mainly STM32), computer vision/image processing, compiler/DSL/VM impl, databases/linked data/query engines, data structures impl, dataviz, fabrication (3DP, CNC, knit, lasercut), file formats & protocols (as connective tissue), "fullstack" webdev (front/back/AWS), generative & evolutionary algorithms/art/design/aesthetics/music, geometry/graphics, parsers, renderers, simulation (agents/CFD/particles/physics), shaders, typography, UI/UX/IxD...
Since 2018 my main endeavor has been https://thi.ng/umbrella, a "jurassic" (as it's been called) monorepo of ~185 code libraries, addressing many of the above topics (plus ~150 examples to illustrate usage). More generally, for the past decade my OSS work has been focused on #TypeScript, #C, #Zig, #WebAssembly, #Clojure, #ClojureScript, #GLSL, #OpenCL, #Forth, #Houdini/#VEX. Earlier on, mainly Java (~15 years, since 1996).
Formative years in the deep end of the #Atari 8bit demoscene (Chip Special Software) & game dev (eg. The Brundles, 1993), B&W dark room lab (since age 10), music production/studio (from 1993-2003), studied media informatics, moved to London initially as web dev, game dev (Shockwave 3D, ActionScript), interaction designer, information architect. Branched out, more varied clients/roles/community for my growing collection of computational design tools, which I've been continously expanding/updating for the past 20+ years, and which have been the backbone of 99% of my work since ~2006 (and which helped countless artists/designers/students/studios/startups). Creator of thi.ng (since 2011), toxiclibs (2006-2013), both large-scale, multi-faceted library collections. Early contributor to Processing (2003-2005, pieces of core graphics API).
Worked on dozens of interactive installations/exhibitions, public spaces & mediafacades (own projects and many collabs, several award winning), large-scale print on-demand projects (>250k unique outputs), was instrumental in creating some of the first generative brand identity systems (incl. cloud infrastructure & asset management pipelines), collaborated with architects, artists, agencies, hardware engineers, had my work shown at major galleries/museums worldwide, taught 60+ workshops at universities, institutions and companies (mainly in EMEA). Was algorithm design lead at Nike's research group for 5 years, working on novel internal design tools, workflows, methods of make, product design (footwear & apparel) and team training. After 23 years in London, my family decided on a lifestyle change and so currently based in the beautiful Allgäu region in Southern Germany.
Web Development recap for week 45/2023
https://discu.eu/weekly/webdev/2023/45/
#css #javascript #nodejs #programming #typescript #webassembly #webdev
Get RSS feeds and support this bot with the premium plan: https://discu.eu/premium
just found about about the Grain programming language, which does not seem to bring anything new to the table at all. Their whole deal is that it's compiled to web assembly, but so is: C, C++, Guile, Haskell, Rust, etc. Would love to know if any of you find it interesting
This is exciting! No need to learn to program #solidity anymore, #smartContracts can be written in any language that compiles to #WebAssembly!
> #Polygon Labs and #NEAR announce #ZeroKnowledge prover for #WASM integration
https://cointelegraph.com/news/polygon-labs-near-announce-zk-prover-wasm-integration
#defi #webDev #cryptocurrency #blockchain #ethereum #matic #zk
WasmFX: Effect Handlers for WebAssembly
Discussions: https://discu.eu/q/https://wasmfx.dev/
WasmFX—Continuing #WebAssembly with Effect Handlers: https://arxiv.org/abs/2308.08347.
#Wasm provides no direct support for non-local control flow features such as async/await, generators/iterators, lightweight threads, first-class continuations, etc. This means that compilers for source languages with such features must transform whole source programs to target Wasm. #WasmFX is an extension (of three main instructions) to Wasm that enables compilers to translate such features directly into Wasm.
Interested in how the #WebAssembly debugger works in #JetBrainsRider?
We just posted a good long-read about how IDE frontend for debugging #dotnet #Blazor #wasm is implemented:
WasmGC is WebAssembly’s built-in garbage collection. Benefits of using it (vs. implementing memory management yourself):
– Smaller code size
– Better web integration “on matters like cycle collection, memory use, developer tooling, and more”
– “WasmGC is also a more optimizable representation, which can provide significant speed benefits as well as opportunities to share more toolchain effort between languages.”
Blog post by @kripken: https://v8.dev/blog/wasm-gc-porting
Bring garbage collected programming languages efficiently to WebAssembly
https://v8.dev/blog/wasm-gc-porting
Discussions: https://discu.eu/q/https://v8.dev/blog/wasm-gc-porting
WasmGC support enabled by default in Chrome is a huge milestone! This makes it possible to have efficient #WebAssembly browser support for garbage-collected languages like Kotlin, Java, Dart, etc.
JavaScript is not the only garbage-collected client-side Web language anymore (but remains of course the major one).
Looking forward to WasmGC support in Safari and WASI runtimes, as well as the upcoming arrival of repositories of #Wasm components.
WebAssembly Garbage Collection (WasmGC) is now enabled by default in Chrome 119: https://developer.chrome.com/blog/wasmgc/ 🗑️.
Web Development recap for week 43/2023
https://discu.eu/weekly/webdev/2023/43/
#css #javascript #nodejs #programming #typescript #webassembly #webdev
Get RSS feeds and support this bot with the premium plan: https://discu.eu/premium
And no, #WebAssembly doesn't count.
Seriously though, imagine an entire web application packed into a single 1 MB #WASM package that just pops up as soon as you open it. And I mean no HTML, no CSS, just one package. Internet speeds are as fast as disk storage was a few decades ago. There is honestly no technical reason as to why applications need to be installed locally.
Well, except everything that makes up the corporate mess we call the modern web, and the fact that applications are hundreds of megabytes for no good reason other than lack of effort and expertise.
Newsletter #130: Running on WebAssembly
We are working on running Wikifunctions on server-side WebAssembly. Today we migrated JavaScript evaluation, and we are still working on moving Python.
https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Updates/2023-10-25
I’m excited to see more and more people get the potential of #WebAssembly. Its fingers are getting into everything, but we’ve only just begun to benefit from what it will allow.
https://thenewstack.io/why-webassembly-will-disrupt-the-operating-system/
I’ll be in Milan, Italy 🇮🇹 for #Codemotion tomorrow and (half of) the day after to talk about #SQLite, #WebAssembly (#Wasm), and the Origin Private File System (#OPFS). My talk is tomorrow, 16:30 🕟: https://conferences.codemotion.com/milan2023-live/agenda/. If you’re at the conference, be sure to say “ciao” 🤌!
Building a unikernel that runs WebAssembly – part 1
https://flavio.castelli.me/2023/02/07/building-a-unikernel-that-runs-webassembly---part-1/
Discussions: https://discu.eu/q/https://flavio.castelli.me/2023/02/07/building-a-unikernel-that-runs-webassembly---part-1/