Hacker News new | ask | show | jobs
by luke_wagner 3232 days ago
Agreed, there was active discussion about this at the last WebAssembly CG meeting even: https://github.com/WebAssembly/meetings/blob/master/2017/CG-...
1 comments

The biggest issue that I see and mentioned before is that the APIs are not versioned and instead rely on 'feature detection' which seems to be due to poor support for/understanding of modern style versioned modules in C++.
> understanding of modern style versioned modules in C++.

Could you enlighten us about this? Is this something to do with the eternal C++ modules proposal that never seems to make it into a standard?

The thing that comes to my mind when I hear "versioned modules" and "C++" is the way you can use "versioned" namespace re-exports to avoid ABI breakage, like so:

    // header for version 1 of library
    namespace mylib {
    namespace v1 {
      struct Foo {
        int num_apples;
      };
    }
    using namespace v1;
    }
    
    // header for version 2 of library
    namespace mylib {
    namespace v1 {
      class Foo {
        int num_apples;
      };
    }
    namespace v2 {
      class Foo {
        int num_apples;
        int num_bananas;
      };
    }
    using namespace v2;
    }
But I don't think that's what you mean.