-
Notifications
You must be signed in to change notification settings - Fork 42
Open
Description
We have observed this about Big Go services in production tests. Not all (Big) Go services crash, but most yield 500s.
Here are a few truths we know:
- Big Go doesn't export a
malloc()we can straightforwardly abuse as we do with TinyGo. - Big Go will not, in the forseeable future, support wasip2 directly, because of Google's lack of interest. Somebody may make a MediumGo that does and that doesn't make such space-constrained tradeoffs (lack of RTTI, etc.) as TinyGo does.
- Big Go implements its own linker and does not use wasm-ld.
- Big Go’s GC gets regularly rewritten, so poking its internals is frought. Similarly, glomming 2 Go programs together as in Remove restriction on
.wasmextension #2 in Empty TinyGo project crashes under component adapter #491 (comment) is frought. - It looks like Big Go claims the whole heap, like TinyGo does. Not totally proven yet.
Ideas:
- Maybe we can lie about the start of the heap, though, again, that's in a private Go-invented linker struct. Maybe it's stabler than GC free-ness data?
- Maybe we can use multiple memories somehow. Look into why adapters currently have no memories of their own and understand if that's vital.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels