I added a new function that returns a metadata node directly instead of wrapping it in a value, which IIRC is now the recommended approach.
This is especially useful for getting debug info metadata from global variables.
Note that this is a breaking change for the Go bindings. I think this is fine because having a metadata-wrapped-as-value wasn't really usable anyway from the API and the old API was inconsistent with SetMetadata (which accepts a Metadata instead of a Value object). Also, I couldn't find any uses of the Metadata() call in llgo and I can tell you that it is not used in TinyGo.
Shouldn't there be a setter too?
Maybe add a release note saying that LLVMGetMetadata is deprecated?
If this is now the advised way to do this, then porting the echo test to use that API instead of the previous one would definitively help.