Extensible WASM Applications with Go

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

CodeRabbit: AI Code Reviews for Developers
Revolutionize your code reviews with AI. CodeRabbit offers PR summaries, code walkthroughs, 1-click suggestions, and AST-based analysis. Boost productivity and code quality across all major languages with each PR.
coderabbit.ai
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  1. go

    The Go programming language

    This is awesome. Something to keep in mind[0]:

    > Remember that all the webassembly work in Go has been designed and implemented by volunteers, not the Go team, so timelines are dependent on availability of volunteers.

    [0]: https://github.com/golang/go/issues/65333#issuecomment-22336...

  2. CodeRabbit

    CodeRabbit: AI Code Reviews for Developers. Revolutionize your code reviews with AI. CodeRabbit offers PR summaries, code walkthroughs, 1-click suggestions, and AST-based analysis. Boost productivity and code quality across all major languages with each PR.

    CodeRabbit logo
  3. wasi-libc

    WASI libc implementation for WebAssembly

    From the wasi.dev[0] front page:

    > WASI can be implemented by both core Wasm modules and applications built according to the Component Model, a specification for Wasm applications that are interoperable and composable. You can learn more about components in the Bytecode Alliance's WebAssembly Component Model documentation[1].

    [0]: https://wasi.dev/

  4. component-model

    Repository for design and specification of the Component Model

    I am kind of worried that the eagerness for more WASM features may irremediably harm the young ecosystem. Most of what Go added to WASM could be done natively if the component model proposal [1] was merged already.

    The standard evolves slowly and as adoption rises we risk having to support more and more non-standard features forever, like WASI and now this.

    [1] https://github.com/WebAssembly/component-model

  5. xtp-bindgen

    A typescript library for parsing and using the XTP Schema https://docs.xtp.dylibso.com/docs/concepts/xtp-schema/

    its fine, I prefer ours more oriented around a familiar format like OpenAPI

    https://github.com/dylibso/xtp-bindgen

  6. awesome-wasm-langs

    😎 A curated list of languages that compile directly to or have their VMs in WebAssembly

    "why is Go compelling as a source language for WASM?"

    As near as I can tell, the answer is that it is supported, and has been working now for many versions.

    See the short list of "production" languages here: https://github.com/appcypher/awesome-wasm-langs And read the sections carefully; you might think your $FAVORITE_LANG must be in the "stable for production usage" section given how big it is but it's full of a lot of languages with small communities. The really big names are mostly in the "unstable" category.

    I can verify that I've toyed with some WASM support in a few languages now, and it is often not even functional, or takes vast effort to set up far above and beyond the official tutorials. You'll see a steady stream of stories on HN over the years about how this language or that language supports it, but in many cases those should be understood not so much as a commitment of support, but as a snapshot, that in that moment, it worked, but it may not work next week.

    It's still true that Go produces big binaries. Official WASM garbage collection support may shrink that at some point though it'll still be larger than other languages for the goroutine runtime support.

    So, to summarize, I'd say that it's not that Go is awesome and amazing, but that vast swathes of the competition are still quite bad.

  7. esbuild

    An extremely fast bundler for the web

    ESBuild is a bundler. The subtitle on the website is literally “An extremely fast bundler for the web”. To bundle, pass —-bundle flag.

    https://esbuild.github.io/

  8. binaryen

    Optimizer and compiler/toolchain library for WebAssembly

    You can run the Go compiled wasm binary through wasm-opt (https://github.com/WebAssembly/binaryen) and it will decrease the size and give back some of the performance lost by using the standard go compiler over TinyGo. Fair warning it's pretty slow, and fun fact tinygo passes it's wasm files through wasm-opt which is why the tinygo compilation feels especially slow, I believe this can possibly be disabled via flag.

  9. SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Announcing TypeScript 5.0

    3 projects | /r/programming | 16 Mar 2023
  • Show HN: We are trying to (finally) get tail-calls into the WebAssembly standard

    11 projects | news.ycombinator.com | 12 Jul 2022
  • What’s the worst programming language for beginners?

    4 projects | /r/ProgrammerHumor | 10 Mar 2022
  • Why are you building a programming language?

    16 projects | /r/ProgrammingLanguages | 5 Sep 2021
  • Typescript for .NET Ever?

    3 projects | /r/typescript | 25 Jun 2021