The Carcinization of Go Programs

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

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • go

    Trealla Prolog embedded in Go using WASM (by trealla-prolog)

  • Nice article! I think this is an exciting approach to cross-platform support. I took a similar approach for Trealla Prolog's Go library: https://github.com/trealla-prolog/go

    The biggest roadblock at the moment is that Go WASM libraries are not in a very good state, except wazero. My assumption is that wazero will be slower than the cranelift-optimized wasmtime, etc. but I have not seen any benchmarks anywhere.

    My impressions of the Go WASM libraries:

    wazero: great Go-friendly API, not sure about performance, works on all OS (what the author chose)

    wasmer: provides bare-minimum input and output for WASI, fast (it's what I chose for trealla-go). Doesn't work on Windows without significant pain, doesn't static compile the wasmer libraries so distribution is a pain. Seems essentially abandoned as its main contributor left the company.

    wasmtime: basically impossible to get input and output in any reasonable way (unable to set stdin or read stdout; it can only inherit the FDs from the host), but might finally get buffers for I/O soon.

    wasmedge: haven't investigated this yet, but it seems like it solves many of the problems above, promising

    If anyone knows of a benchmark between these, I'd love to see it. I can try to run Trealla's against them if it doesn't take too much work.

  • wazero

    wazero: the zero dependency WebAssembly runtime for Go developers

  • (wazero contributor) thanks for the analysis. certainly dependency pain is something we hear about, as well as lack of maintenance on alternatives. Some don't release at all or rarely, and many break api constantly. We also break api, but then again we aren't 1.0 yet.

    wrt performance, we do watch it closely, but we've not done benchmarks vs non-default settings in other runtimes. It is the case that the tradeoff of avoiding dependencies means any optimizing JIT would have to be written to make long running things faster over time... no one has contributed this, yet, and more folks are looking at short lived despite it being the case interpreters are a great example of long lived.

    Concretely, we do keep track of relative performance (literally each commit in fact), and it isn't uncommon to find PRs including perf before/after.

    here are some pointers if interested in digging in! there are certainly some things we'd lose at.

    https://github.com/tetratelabs/wazero/actions/runs/352306986...

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • Mastodon

    Your self-hosted, globally interconnected microblogging community

  • > Of course, I'm really hoping the HTML is added at runtime, and not stored in the DB.

    Looks to me like HTML statuses are part of the federation protocol.

    In fact, there's an issue[0] indicating that the sanitizer of the reference implementation doesn't allow Markdown to federate. There is also an old status indicating that even if more elements are added, the reference CSS basically strips everything (I assume visually)[1].

    [0] https://github.com/mastodon/mastodon/issues/8474

    [1] https://is.a.qute.dog/@KS/872334

  • wasmer-go

    🐹🕸️ WebAssembly runtime for Go

  • Thank you Syrus, appreciate your work with Wasmer. Congrats on the 3.0 release and Windows support! I just fixed guregu/trealla on WAPM to work with the latest changes. I think WAPM is very cool and I hope more people start doing releases on it.

    These are the two issues I'm referring to:

    https://github.com/wasmerio/wasmer-go/pull/200

    https://github.com/wasmerio/wasmer-go/pull/286

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