exception-handling
awesome-wasm-langs
exception-handling | awesome-wasm-langs | |
---|---|---|
7 | 28 | |
145 | 4,040 | |
2.8% | - | |
6.8 | 6.7 | |
10 days ago | 20 days ago | |
WebAssembly | ||
GNU General Public License v3.0 or later | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
exception-handling
-
Bring garbage collected programming languages efficiently to WebAssembly
Interesting article, thanks!
Notes on the issues mentioned there:
* The need for a manual shadow stack: This is fixed in WasmGC (in the same way it works in JS, as the link mentions).
* Lack of try-catch: This is fixed by the Wasm exception handling proposal, which has already shipped in browsers, https://github.com/WebAssembly/exception-handling/blob/main/...
* Null checks: Mostly fixed by WasmGC. The spec defines non-nullable local types, and VMs can use the techniques the article mentions to optimize them using signals (Wizard does, for example).
* Class initialization: This is a difficult problem, as the article says. J2Wasm and Binaryen are working to optimize it through static analysis at the toolchain level. Here is a recent PR I wrote that makes progress there: https://github.com/WebAssembly/binaryen/pull/6061
* The vtable overhead issue the article mentions may be a problem. I'm not aware of good measurements on it, through. There are some ideas on post-MVP solutions for method dispatch that might help, but nothing concrete yet.
* Checks for null and trapping: There has been discussion of variants on the GC instructions that throw instead of trap. Measurements, however, have not shown it to be a big problem atm, so it is low priority.
The author is right that stack walking, signals, and memory control are important areas that could help here.
Overall with WasmGC and exceptions we are in a pretty good place for Java as emitted by J2Wasm today: it is usually faster than J2CL which compiles Java to JavaScript. But there is definitely room for improvement.
-
In the latest demo with Dart, WebAssembly and GC in Chrome how was the Exception Handling solved?
It uses https://github.com/WebAssembly/exception-handling/blob/master/proposals/exception-handling/Exceptions.md which is actually supported by all major browsers already.
-
'The best thing we can do today to JavaScript is to retire it,' says JSON creator Douglas Crockford
Yep, you're right. It's also more than just the DOM, it's web APIs in general, such as fetch, audio, webgl/webgpu, etc. WASM still needs GC, exceptions, and WASI to be able to fully interop with any host without any of the current limitations. This'll take a few years. I'm looking forward to the future in which I will be shipping WASM-only web apps to my users.
-
WebAssembly Everywhere
Its a part of the wasm plan to support gc https://github.com/WebAssembly/gc exceptions https://github.com/WebAssembly/exception-handling
-
What's New in Node.js 17
As of Node.js 17, the v8 JavaScript engine has been updated to v9.5. The changes in this release are primarily aimed at expanding internationalization for dates and calendars as well as for the output of time zones. It also implements the WebAssembly Exception Handling proposal, designed to reduce overhead compared to current JavaScript-based workarounds.
- WebContainers: Run Node.js natively in the browser
-
Google admits Kubernetes container tech is too complex
Agreed, although at some point in a not very far feature most of those missing features will resolved. So in my mind is just a matter of time. The Wasm Community group is doing an awesome work on that :)
Here are a few examples of what needs move forward in Wasm:
* [1] Wasm Exceptions Handling: Right now Wasm is missing a way to handle exceptions natively (C++ programs can only compile to Wasm using the asyncify or longjmp/setjmp tricks via Js try/catch)
* [2] Wasm GC: Wasm Binary files are quite big (specially in interpreted languages). This is partially caused by the GC being included in the Binary itself. The GC proposal will solve this while also providing faster execution.
* [3] Wasm 64-bit Memory: currently Wasm can only operate with 32-bit data. In some contexts you may want you operate with more than 4GB of memory (for example, when operating over terabytes of data). The 64-bit memory proposal will solve that.
[1]: https://github.com/WebAssembly/exception-handling
awesome-wasm-langs
-
Wasm-bpf: Build and run eBPF programs in WebAssembly
Cross-language support for over 30 programming languages for eBPF user space programs
-
I think [...] the "future of computing" is going to be [...] CISC. I’ve read of IBM mainframes that have [hardware instructions for] parsing XML [...]; if you had garbage collection, bounds checking, and type checking in hardware, you’d have fewer and smaller instructions that achieved just as much.
wot
- Why are there no or very few Blazor jobs?
-
Nvidia Security Team: “What if we just stopped using C?”
Just about every language can compile or transpile to WASM:
https://github.com/appcypher/awesome-wasm-langs
-
Build a Shopify Function using AssemblyScript
There are also curated lists of languages that compile down to Wasm available on Github, so there is a ton of opportunity to choose your own adventure.
-
We're working on a new WASM/Rust scripting system. Here I'm playing around with a script that changes the day/night cycle.
My current plans are to investigate TinyGo / C# NativeAOT-LLVM / other languages that can compile to Wasm once our host side stabilises a little bit (lots of churn right now!)
-
'The best thing we can do today to JavaScript is to retire it,' says JSON creator Douglas Crockford
Yeah, it's pretty cool. Here's a nice list of all the repositories and stuff like that
-
helix - A post-modern modal text editor
It’s planned to use WASM, which would allow to use basically any language you’d want (ok, any lang having a WASM compiler or VM), including Lua.
-
Fun with Rust
While waiting for placement at Andela, I started something. I wanted to create a community of developers who had already worked on WebAssembly projects in the past. A bit of a back story is in order now. During my exploratory phase before I settled for web development, Web Assembly was announced. So on a whim, I created a Repo to keep track of languages that compile to web assembly. The repo ended up getting over three thousand stars. I honestly didn’t expect it to blow up as much as it did, but it did. That feat fueled my interest in Web Assembly. As I was saying, I wanted to gather Web Assembly developers together for a purpose - to create a common web assembly runtime, a canonical runtime. My attempt at community building didn’t go so well. I sent a couple of emails, and DMs to no avail, or so I thought. It was during this time that Syrus Akbary reached out to me, he pitched the idea he had to build an awesome web assembly runtime, Wasmer, and that he would want me to be involved. He was really excited, and so was I. The only thing was that he said he had to lay down some of the groundwork first. So he worked on it for about a month. Now that I think about it, I should have stuck to him while he laid down the work because when he showed me the progress he had made, I was awe-stricken, but also disadvantaged. A lot of work had been done. Here we were trying to build the web assembly runtime that would take the world by storm, but my knowledge of Rust was meager. Keeping up was hard. Eventually, I had to leave the project, he was incorporating Wasmer as a company, so relocation was being discussed but I wasn’t interested in going to the US. But I think the major deciding factor for me was that I didn’t really align with the management of the project.
- GNO airdrop, what's your thoughts and opinion on it?
What are some alternatives?
Uno Platform - Build Mobile, Desktop and WebAssembly apps with C# and XAML. Today. Open source and professionally supported.
solidity - Solidity, the Smart Contract Programming Language
Flutter - Flutter makes it easy and fast to build beautiful apps for mobile and beyond
Scala.js - Scala.js, the Scala to JavaScript compiler
simd - Branch of the spec repo scoped to discussion of SIMD in WebAssembly
schism - A self-hosting Scheme to WebAssembly compiler
metamask-extension - :globe_with_meridians: :electric_plug: The MetaMask browser extension enables browsing Ethereum blockchain enabled websites
Dokku - A docker-powered PaaS that helps you build and manage the lifecycle of applications
bsc - A BNB Smart Chain client based on the go-ethereum fork
webcontainer-core - Dev environments. In your web app.
biowasm - WebAssembly modules for genomics