otto VS gc

Compare otto vs gc and see what are their differences.

otto

A JavaScript interpreter in Go (golang) (by robertkrimen)

gc

Branch of the spec repo scoped to discussion of GC integration in WebAssembly (by WebAssembly)
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
otto gc
9 43
7,856 929
- 1.7%
5.0 9.3
10 days ago 4 days ago
Go WebAssembly
MIT License GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
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.

otto

Posts with mentions or reviews of otto. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-01-20.
  • SSR React in Go
    9 projects | dev.to | 20 Jan 2024
    robertkrimen/otto
  • A very simple javascript type system in golang
    1 project | /r/golang | 19 Oct 2023
  • Jacobin: Minimal JVM written in Go and capable of running Java 17 classes
    15 projects | news.ycombinator.com | 24 Aug 2023
    Ummm, excuse me, but where the f&$k has this been hiding? I’ve been looking for ways to extend my go applications with scripting support. I started with Lua (worked ) then Python (worked but hacky) then javascript using otto [1]. However it lacks ES6 support so having pretty OOP js code is a non-starter. I would love to have Java as a runtime that can be executed from goroutines.

    [1] https://github.com/robertkrimen/otto

  • Running a Js file inside Go
    5 projects | /r/golang | 23 Mar 2023
    Either call a JavaScript interpreter like node with exec.Command and read its stdout, or use a pure Go JavaScript interpreter like goja or otto.
  • Suggestion for a dynamic Struct Validation Rules
    5 projects | /r/golang | 21 Dec 2022
    Otto https://github.com/robertkrimen/otto Seems interesting. It lets me call Go functions from inside JS as well as return results. The fncs pattern reminds me a bit of how the template engine works.
  • Wazero: The zero dependency WebAssembly runtime for Go developers
    13 projects | news.ycombinator.com | 16 May 2022
    > why host other languages

    Here's an example:

    I recently finished building https://subzo.com.au which allows customizing and ordering 3D models. The way the model's cost, volume and other attributes are calculated needs to be done both on the frontend (for speed) and on the backend (to validate). Backend is in Go and we can't practically run Go in the browser. So instead, I wrote the calculation snippets in JavaScript (which runs natively in the browser) and ran them on the backend on a JavaScript VM library written in Go [1].

    [1]: https://github.com/robertkrimen/otto

  • Choosing scripting extension - need advice
    14 projects | /r/golang | 20 Apr 2022
    Googling suggests https://github.com/robertkrimen/otto which allows scripting in javascript for golang projects. This would be definitely enough, but in some way it may be a bit overkill - and scripts supporter shall need some knowledge of javascript which is not always straightforward :)
  • I Need to Find an Apartment
    9 projects | news.ycombinator.com | 9 Apr 2022
  • I write my own web desktop OS for 3 years and this is what it looks like now
    2 projects | dev.to | 4 Apr 2021
    It doesn't make sense to ask the user (aka me) to change the code every time I want to modify any web apps right? So I decided to split the webapps into two parts. WebApps are those only require basic permissions and do not interact with the host OS. They will be run inside a sandbox created using ECMA5 VM called Otto. The other type is called Subservice, in which it will need extra permission to interact with the OS and require higher level of access to the backend file system.

gc

Posts with mentions or reviews of gc. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-11-03.
  • Bring garbage collected programming languages efficiently to WebAssembly
    16 projects | news.ycombinator.com | 3 Nov 2023
    It may take some time for WasmGC to be usable by .NET. Based on the discussions the first version of WasmGC does not have a good way to handle a few .NET specific scenarios, and said scenarios are "post-post-mvp". [0]

    My concern, of course, is that there is not much incentive for those features to be added if .NET is the only platform that needs them... at that point having a form of 'include' (to where a specific GC version can just be cached and loaded by another WASM assembly) would be more useful, despite the pain it would create.

    [0] - https://github.com/WebAssembly/gc/issues/77

  • WasmGC – Compile and run GC languages such as Kotlin, Java in Chrome browser
    4 projects | news.ycombinator.com | 2 Nov 2023
    Yes, that's definitely true: a single GC will not be optimal for everything, or even possible. Atm interior pointers are not supported at all, for example, but they are on the roadmap for later:

    https://github.com/WebAssembly/gc/blob/main/proposals/gc/Pos...

    What launched now is enough WasmGC to support a big and useful set of languages (Java, Kotlin, Dart, OCaml, Scheme), but a lot more work will be required here!

  • Learn WebAssembly by writing small programs
    7 projects | news.ycombinator.com | 5 Sep 2023
    GC proposal is from 2018: https://github.com/WebAssembly/proposals/issues/16 and there’s code: https://github.com/WebAssembly/gc/blob/master/proposals/gc/O...

    Seems like an awefully long time for progress to be made, given all the possibilities it would unlock.

  • The state of modern Web development and perspectives on improvements
    5 projects | dev.to | 24 Aug 2023
    First is the size. Writing a server-side and client-side program is possible with Rust, and the resulting WASM package will be small enough. At the same time, Microsoft Blazor converts C# code to WASM, but the client delivery has to include the reduced .NET runtime, taking several megabytes for a script. The same is true for GoLang, even with an attempt to reduce the runtime delivery in TinyGo WASM. Developers want to work with their favorite languages, whether it is Java, Kotlin, Dart, C#, F#, Swift, Ruby, Python, C, C++, GoLang, or Rust. These languages produce groups of runtimes. For example, JVM and .NET have many common parts, Ruby and Python are dynamically interpreted at runtime, and all mentioned depend on automatic garbage collection. For smaller WASM packages, browser vendors can include extended runtime implementations, for example, by delivering a general garbage collector as part of WASM. Garbage collection support by WASM is currently in progress: WASM GC, .NET WASM Notes.
  • Douglas Crockford: “We should stop using JavaScript”
    6 projects | news.ycombinator.com | 12 Jun 2023
    My understanding is that the main limitation is technical. WASM doens't do GC or the host system calling conventions and cannot interact directly with object from Javascript because of this. However, this is being worked[0] on and will be solved eventually. Even without this the performance overhead of bridging to JS is low enough that WASM frameworks can beat out React.

    0: https://github.com/WebAssembly/gc/blob/main/proposals/gc/Ove...

  • Question: WasmGC and state shared with JS with Kotlin/wasm or Multiplatform?
    1 project | /r/Kotlin | 12 May 2023
    I’ve just watched a video on YouTube from Google I/O 2023 on Flutter for the web. Kevin Moore explains that Flutter can compile to Wasm, but now that GC support has been added to the standard and WasmGC is supported in Chromium and Firefox, I’m quite intrigued.
  • Will implementing garbage collection in WebAssembly speed up Blazor?
    1 project | /r/Blazor | 5 Apr 2023
    I have found the main thread about using WebAssembly GC in C#: https://github.com/WebAssembly/gc/issues/77. If I understand it correctly, it is not possible to use the current prototype version of GC in C#.
  • GC Extension for WebAssembly
    1 project | news.ycombinator.com | 11 Mar 2023
  • Blazor United - When it ships it would be the most glorious way to do web with .NET
    5 projects | /r/programming | 25 Jan 2023
    The .net team has given their notes on it, the concern is more on the memory layout from what I remember. Though it may be possible still. The runtime would likely still ship some gc code, but only a subset for cases not supported by the wasm gc itself and a few more for interfacing with the gc service, which overall should still result on smaller payloads compared to current sizes.
  • Kernel-WASM: Sandboxed kernel mode WebAssembly runtime for Linux
    4 projects | news.ycombinator.com | 20 Jan 2023
    I assume that's one of the parts of the work done at https://github.com/WebAssembly/gc - not happening any soon yet, but it'll eventually be done.

What are some alternatives?

When comparing otto and gc you can also consider the following projects:

goja - ECMAScript/JavaScript engine in pure Go

dotnet-webgl-sample - .NET + WebAssembly + WebGL = 💖

go-duktape - [abandoned] Duktape JavaScript engine bindings for Go

ASP.NET Core - ASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.

gopher-lua - GopherLua: VM and compiler for Lua in Go

wasm3 - 🚀 A fast WebAssembly interpreter and the most universal WASM runtime

tengo - A fast script language for Go

simd - Branch of the spec repo scoped to discussion of SIMD in WebAssembly

go-php - PHP bindings for the Go programming language (Golang)

Mono - Mono open source ECMA CLI, C# and .NET implementation.

go-lua - A Lua VM in Go

v86 - x86 PC emulator and x86-to-wasm JIT, running in the browser