Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ABI compatibility tool #18159

Open
hashseed opened this issue Jan 15, 2018 · 3 comments
Open

ABI compatibility tool #18159

hashseed opened this issue Jan 15, 2018 · 3 comments
Labels
help wanted Issues that need assistance from volunteers or PRs that need help to proceed. tools Issues and PRs related to the tools directory. v8 engine Issues and PRs related to the V8 dependency.

Comments

@hashseed
Copy link
Member

ABI stability is a hard requirement when upgrading V8 within the same Node branch. This is so that native modules that uses V8 APIs and built for a particular Node branch do not need to be rebuilt.

So far, we've been mostly ensured ABI stability through intensive eyeballing of changes to deps/v8/include/*.h and by running CITGM. This is tedious and could yield false positives.

I have played around a bit with this ABI compliance checker, requiring some tweaking of V8's build files and an additional GN arg (use_debug_fission = false).

Using that tool is fairly inconvenient, very slow (took me like some 20 minutes), and the result is not all that useful. It is a good start, but

  • does not find differences in the constants in v8.h.
  • includes changes to all header files in v8, not just ones in v8/include.

I'm neither an expert on DWARF nor on binary compatibility, so some contribution and help here would be greatly appreciated. Alternative here is to wait until every native module has migrated to n-api, but in the meantime...

@hashseed hashseed added help wanted Issues that need assistance from volunteers or PRs that need help to proceed. v8 engine Issues and PRs related to the V8 dependency. tools Issues and PRs related to the tools directory. labels Jan 15, 2018
@vsnehil92
Copy link
Contributor

I would like to work on this issue. Please @hashseed can you give me guidance on this

@hashseed
Copy link
Member Author

hashseed commented Apr 5, 2018

Thanks for the interest!

There is not a lot of guidance that I can offer besides the small set of rules described here for ABI compatibility.

I was imagining something either based on the ABI compliance checker mentioned above, or something based on nm or objdump.

@bmsdave
Copy link
Contributor

bmsdave commented Feb 5, 2019

@vsnehil92 do you need help with this task? I can't imagine how to approach it) but the problem seems interesting)
If you want, I can try to help.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Issues that need assistance from volunteers or PRs that need help to proceed. tools Issues and PRs related to the tools directory. v8 engine Issues and PRs related to the V8 dependency.
Projects
None yet
Development

No branches or pull requests

3 participants