#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
A Return to WebAssembly for the Java Geek - JVM Advent
WebAssembly Micro #Runtime (WAMR)
"#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:
Extending WebAssembly to the Cloud with .NET
JCO 0.14.0 has been released, https://github.com/bytecodealliance/jco/releases/tag/0.14.0.
I've made a couple of contributions to this release, of whom:
Basically, we can use JCO with non-async API, and even if `WebAssembly` is absent (it compiles Wasm to ASM.js).
Hello world! На днях я баловался с WebAssembly и получил довольно неожиданные результаты, которыми и хочу с вами поделиться в этой небольшой заметке. Хорошо, если вы знаете JS/ Node.js и хотя бы слышали о WASM и Rust .
Build your own WebAssembly Compiler (2019)
Build your own WebAssembly Compiler (2019)
Benchmark of WebAssembly runtimes in Go
“Onyx, A New Programming Language Powered By WebAssembly”, Wasmer Blog (https://wasmer.io/posts/onyxlang-powered-by-wasmer).
Onyx, a new programming language powered by WebAssembly
Onyx, a new programming language powered by WebAssembly
Also, this example allows implicit casts from
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.
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
Deep dive into CheerpJ 3.0: A WebAssembly Java Virtual Machine for the browser
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! 👏
"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."
"#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!
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.
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. 🤩
@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.
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?)
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 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... 🤩🙏
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
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.
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
#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.
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.”
Bring garbage collected programming languages efficiently to WebAssembly
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.
Looking forward to WasmGC support in Safari and WASI runtimes, as well as the upcoming arrival of repositories of #Wasm components.
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
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.
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