Wasmer 5.0

(wasmer.io)

177 points | by syrusakbary8 小时前

13 comments

  • skybrian2 小时前
    These performance graphs are confusing and possibly cursed. Sometimes they're log scale (confusing enough) and others, I have no idea what they're trying to say.

    For example, the first graph, labelled "Argon 2", nearly all the bars are the same length, labelled "100" (no units given, apparently log scale) and the individual bars are labelled with entirely different numbers in ms (presumably milliseconds).

  • ledgerdev7 小时前
    > having V8 as a backend also means supporting WebAssembly Exceptions and Garbage Collection under the hood. Stay tuned for more news on this front soon

    Looking forward to this and languages that can make use of wasm-gc.

    Does wasm-gc allow sharing of host data/strings across different modules in the same runtime, or is it contained to only single module with repeated calls/invocations? The scenario I am considering would invoke several different modules in a pipeline, pass data between each step in an efficient manner.

    • throw4950sh067 小时前
      That's what reference types (the Wasm proposal) are for, GC builds on top of that.
    • azakai4 小时前
      Sharing GC data between wasm modules is supported, yes. You just need to define the types identically on both sides, and things work.
  • OtomotO6 小时前
    Interesting.

    I am happy with wasmtime though.

    Hacking on a wasm component model and wasi based plugin system these days.

    Having loads of fun. (I am aware of extism, but I am doing it for the fun :))

    • bschwindHN5 小时前
      > Hacking on a wasm component model and wasi based plugin system these days.

      Same here! Can you share what you're working on? I'm (slowly) making a 3D CAD modeling API, so you write Rust code to define a model, and compile it to WASM so it can hot-reload and let you iterate faster.

      https://github.com/bschwind/opencascade-rs/tree/main/crates/...

      • 1oooqooq3 小时前
        shape.faces().farthest(Direction::PosZ)

        nice. is this original from openscad (if that even is your inspiration)?

        • bschwindHN57 分钟前
          OpenSCAD is of course the OG for code-based CAD, but this particular syntax came about from converting CadQuery-esque queries into Rust iterators with a bit more type-safety instead of something stringly-typed.

          Here's a snippet from a CadQuery example:

              # 3a. The top-most Z face is selected using the >Z selector.
              # 3b. The lower-left vertex of the faces is selected with the <XY selector.
              result = result.faces(">Z").vertices("<XY")
          
          Right now it just does a naive linear search but at some point I'd like to extend it to use more of OpenCascade's underlying geometric acceleration structures (which I assume exist), and add more and more iterator adapters.
  • DustinBrett6 小时前
    I wish they had a solution that didn't require Cross-Origin Isolated headers. I am still using an older version where that wasn't required.
  • enugu4 小时前
    Could this ever function as a less resource intensive substitute for Electron apps? WASM doesn't have DOM access, but could it be added in these extensions?

    Edit: Maybe this question doesn't make sense as the OS would need to have the runtime installed, and if that can be assumed, we would have lightweight apps already.

    • NitpickLawyer1 小时前
      Ha e a look at Tauri for a less resource intensive electron alternative. Written in rust and supports any framework on the frontend side, with strong access control & lightweight backend.
  • punkpeye6 小时前
    Would this allow to safely eval Node.js code in a sandbox?
    • samtheprogram2 小时前
      Not "Node.js code" specifically as Node.js itself can't be compiled to wasm. JavaScript can be compiled to wasm, but that won't include the whole Node.js standard library and doesn't seem to be what you are asking.

      Check out Deno for a sandbox that is getting there. Their new release does (aim to) support most Node.js code, where it previously and intentionally did not support node_modules nor CommonJS to the best of my knowledge.

      If you care more about wasm than sandboxing in general, one project called javy is interesting, but you'll quickly notice they bring their own IO library and not much else in terms of something that compares to Node.js' API.

  • 7 小时前
    undefined
  • MuffinFlavored7 小时前
    Cool release!

    I've yet to personally find a good use case for wasm in any project, kind of the same way I'm not quite sure what to do with a bunch of Raspberry Pis

    It fills a need, I just don't know who/what has that need.

    Example: Say I write a bunch of Rust async projects for fun. Scraping APIs, etc.

    How/why would I choose wasm/wasmer to do that instead? I'd do it in Rust (awkwardly/in some specific non-standard way) to compile to wasm to then run in wasmer? To what benefit? Ok, that's not a good usecase/example

    So what is?...

    • LSRegression7 小时前
      A toy project, but I'm working on a Scrabble clone for my mother to play. There's singleplayer against an AI, and then multiplayer against other people (myself, mostly). Multiplayer needs a server backend with all the game logic which I have programmed in Rust, but there's no reason I can't have the game logic for singleplayer running entirely in the browser.

      By compiling my backend code to WASM I basically do that - the client can use either a client-side 'server' or connect to a real server. The UI code itself is unchanged in either case.

      I suppose the need in this case is that I have code written in a language other than JS and I want to run it in a browser; inversely I could have written the entire project in JS and hosted my backend server on say Node.

      • globalnode2 小时前
        > Multiplayer needs a server backend

        Did you mean single player? Although perhaps I'm just old and thinking about this in a strange way.

        And can I clarify.. your scrabble app is web based already right? connecting to a rust web server for the game logic? And you want to embed that server by compiling to wasm? I probably should go read up on how this works.

    • 01HNNWZ0MV43FF7 小时前
      It probably makes sense if you're running untrusted code or handling untrusted data, or running code that was written after the rest of your app

      So for a solo dev it doesn't add much, but for a web browser or something that needs plugins it could make a lot of sense.

      • 1oooqooq3 小时前
        history tells us, that usecase will go out the window as soon as the usual suspects do their usual standards capture by implementation to support something or another related to advertising attribution.
      • MuffinFlavored7 小时前
        > It probably makes sense if you're running untrusted code or handling untrusted data

        I never understood this because... I feel like wasm (the standard) is an empty box and a lot of runtimes help you attach things to it / make it useful (able to read/write to filesystem, call the Internet, etc.)

    • Starlevel0047 小时前
      WASM has two primary usages:

      1) Making canvas webapps with unblockable ads built-in

      2) Downloading and running random blobs of other people's code in a sandbox

      • taberiand7 小时前
        To be fair, a rock-solid sandbox with extremely well defined and host controlled ingress/egress in a tiny package sounds absolutely fantastic
        • 1oooqooq3 小时前
          that would have been implement in something like forward only language like ebpf. wasm is just an outgrown hack that people are hopping will be that safe sandbox and solve all JavaScript problems.

          do not fool yourself with this temporary feature. wasm was first for js performance. secondly for portability. and third and accidentally for sandbox.

        • api7 小时前
          That’s what it is.
        • 7 小时前
          undefined
      • pjmlp29 分钟前
        I am happy with

        3) Bring back all the plugins that were taken away.

        See no other use for it.

      • peutetre4 小时前
        You can do both of those things in JavaScript.

        WebAssembly brings every language to the web and does it with higher performance than JavaScript.

        • enugu2 小时前
          For sandboxing in JS, we can use sandboxed iframes or webworkers. Both of those communicate to hosted code via postmessage which serializes an object and this can be used as a base for implementing function calls.

          Whereas if I understand correctly, WASM can be provided with host approved JS functions to call directly in importObject. This seems more convenient and fast.

          But for a plugin system, many people would prefer to write plugins in JS itself, so for WASM plugins, they might have to be compiled to WASM first. Dont know how if there is a mature implementation of JS->WASM.

    • simonask7 小时前
      I’m using WASM as the modding interface in my game. (I’m using wasmtime from Rust, but same principle.)

      Main benefits are isolation, binary portability, and hot reload.

    • crabmusket7 小时前
      Take that API scraping script example. Imagine next you want to build a platform where you run code written by your users who want to e.g. scrape APIs. Think ParseHub I guess? Zapier is another good example.

      You'd let them write in Rust or some other language that can target WASM, then you'd run the WASM blobs in a controlled sandboxed execution environment in your platform.

      • Groxx7 小时前
        So basically: what every single platform with plugins should be doing to protect their users. Or similar via some other language that allows sandboxing, e.g. Lua.
        • lll-o-lll6 小时前
          Yeah, but the plugins can be written in Rust!

          OK, OK, it’s a bad example. WASM is language agnostic though, so as more languages can target WASM, then the possible advantage is programming language agnosticism. If I have some code, I don’t have to re-write it in Lua.

    • sroussey7 小时前
      ONNX has a WASM backend for running models in a browser. It’s what transformer.js (from HuggingFace) uses behind the scenes.
    • csomar5 小时前
      I think the biggest company using wasm in production is figma (though there might be others). Otherwise, here is an example where wasm shines. Say you have an editor (rvim) and you want to support plugins. Usually, you’ll have a language interpreter and ask developers to develop in this language. With wasm, you can give them the freedom to use whatever stack they want. Then you expose an interface for their wasm artifacts. This abstract the host OS away. Another example is game mods/plugins.
    • xn7 小时前
      I've used wasm to write web applications in Go that run in the browser, both HTML applications (https://github.com/octoberswimmer/masc) and TUI apps using xterm.js (https://github.com/charmbracelet/bubbletea/pull/887).
    • dgfitz7 小时前
      I cross-compile a native qt app in windows, Mac, and Linux variants. It’s pretty neat to see it compile in wasm as well.
    • colordrops6 小时前
      Everyone else has answered about WASM, so I'll answer about raspberry pi. I've got 5 of them. One is running Home Assistant for all my home automation and camera recording. One is running a quadruped that I built. And three are connected to three sets of speakers around the house running a home-rolled Sonos-like setup so I can stream the same music all around the house from my phone.
  • 6 小时前
    undefined
  • int_19h6 小时前
    Is Wasmer still openly adversarial wrt the Bytecode Alliance?
    • 5 小时前
      undefined
  • wg06 小时前
    Sorry to be that guy but what's the business model for all these web assembly runtime companies?
    • jsheard6 小时前
      This one runs their own serverless platform that you can deploy your WASM apps to, but their pricing is... vague.
    • 5 小时前
      undefined
  • 7 小时前
    undefined
    • 7 小时前
      undefined
  • thrdbndndn5 小时前
    God, please stop using random AI-generated images in a release post..
    • spretzer5 小时前
      What is the issue with AI-generated images? Just being overdone in general? Or ethical concerns?
      • thrdbndndn5 小时前
        Makes your article looks cheap like a random blogspam. My personal opinion, obviously.
        • NitpickLawyer1 小时前
          What's the difference between this and a generic photo from one of the dozens stock photo catalogs? Is this somehow "cheaper" because it's "AI" generated? Using stock photos is also cheap (free or cents per)...

          Second, does anyone really care? Has anyone spent more than half a second looking at a generic picture on an unrelated article? Does the generic hoodie hacker look good on security articles? Or the earth with pretty links on a networking article? Or the overdone handshake on a deal article? They feel equally as cheap and more importantly equally unimportant. It's a placeholder that noone should really care about.

          Third, what's the value of having human beings spend time on an image that's just there to fill space? I kinda get the argument for company identity and things that matter, but filler for an article? Nah, that's exactly where we shouldn't be spending human resources, IMO.

          • thrdbndndn42 分钟前
            I think using a stock photo in this case is also bad but not as bad; because the photo itself usually looks fine.

            I hate AI-generated photo more simply because they're not good enough (yet) to not look fake immediately; it even has somewhat uncanny valley effect. If one day they're as good as stock photos, then my opinion with them would be on par with that, too.

            I care, hence the comment. Can't speak for others.

            > where we shouldn't be spending human resources

            I agree; which is why in general I don't see the need to include irrelevant pictures at all for a software release post.