-
Notifications
You must be signed in to change notification settings - Fork 41
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.
Metadata
Metadata
Assignees
Labels
No labels