Comments (6)
As a general thought, there were DWARF 5 pieces added to the main Go tool chain a while back:
- https://go-review.googlesource.com/c/go/+/175137/
- https://go-review.googlesource.com/c/go/+/175138/2
So, things might not be completely from scratch. 😄
from wazero.
Hi @mathetake
Does this issue still relevant?
Looking to contribute and landed with it
from wazero.
@r8d8 I think this definitely is still relevant, and we'd want to start with backtrace enhancement. If I understand you correctly, you are interested in contributing this? If so, I'd recommend starting small as this may touch a few different spots and iterating small can give you less burden especially in an area that is not 100pct defined in spec.
@mathetake https://github.com/yurydelendik/webassembly-dwarf is abandoned and the author isn't replying to issues anymore. We should ask the actual spec about this and cite something with a future to avoid compatibility drift, possibly asking other implementers which "specs" they plan to use. We can tentatively use the dead one of course, but some time before 1.0 we need to firm this up. wdyt?
from wazero.
DWARF in Wasm is added in tool-conventions which says:
These conventions are not part of the WebAssembly standard, and are not required of WebAssembly-consuming implementations to execute WebAssembly code. Tools producing and working with WebAssembly in other ways also need not follow any of these conventions. They exist only to support tools that wish to interoperate with other tools at a higher abstraction level than just WebAssembly itself.
Meaning there won't be any formal specification, but instead we have to follow the (personally hosted) specification (https://yurydelendik.github.io/webassembly-dwarf/). So we’ll have to choose a way and possibly compare against another implementation. Fortunately the implementation is stable in the sense that major wasm runtimes and compilers implement it (clang/LLVM, wasmtime, V8).
As for contribution, I think this could be multiple weeks or even months of full-time work. This includes; implementing a binary parser for DWARF 5 (note that there's nothing we can reference or use in the exiting Go ecosystem meaning that we have to implement literally from scratch), refactor the JIT compiler and interpreter so they can track original Wasm instruction address to the our runtime representation), etc.
That said, I would recommend as @codefromthecrypt suggested to start small rather than an overwhelming one like this.
from wazero.
@codefromthecrypt @mathetake
Thanks for your reply.
Will take a look into WASI support direction.
from wazero.
Oh that's cool! Thank you for the info! @justinclift
from wazero.
Related Issues (20)
- `unreachable` error and stack trace if compiled and extra memory, not otherwise HOT 4
- Clarification on concurrency semantics for invocations HOT 2
- `path_open` with an empty path should fail
- `path_symlink` doesn't work HOT 1
- flaky test: TestEngine_sortedCompiledModules
- Should not be able to open a directory with write
- Path normalization causes more accepted file paths HOT 2
- [Question] How to resolve these imports required by wasm runtime HOT 4
- Panic when calling `ExportedFunction` with WASI function name HOT 1
- flaky test: BenchmarkLibsodium/box_seal HOT 9
- Representative benchmarks of wazero for Go compiler perf measurement HOT 9
- Data race in Memory.Grow with concurrency HOT 1
- Standard `os` package test for Go 1.23rc1 is failing on Windows HOT 3
- WASI Preview 2 support HOT 4
- How to use HostFunctionBuilder with multiple goroutines? HOT 11
- Clarify the scope of stdin/stdout for dynamically linked modules HOT 2
- Allow multiple instances of the same named import (e.g. javy_quickjs_provider_v2) HOT 5
- NewHostModuleBuilder throws error when name is not set HOT 1
- Add debugging support HOT 2
- Instantiate emscripten wasm failed HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from wazero.