Skip to content

[SUGGESTION] cppfront transpiler parameter to generate interoperability with C #612

Description

@raffaeler

My suggestion does not touch cppfront at all, but is a transpiler parameter to automatically generate extern C functions to overcome the binary compatibility issues in C++.

The goal is to allow consuming C++ pure libraries from other languages without messing with the mangled names and risking breaking changes with future versions of the C++ libraries and/or compilers.

The generation should be restricted to:

  • global or public member functions tagged by the user so that the generation is limited
  • global or public member functions taking and returning basic types
  • mapping the ctor/dtor to create/close functions taking care of allocating/freeing objects

If I understood correctly, cppfront makes the parameter direction clear using in and out. This metadata can be used to apply the patterns to correctly allocate/deallocate the memory for the parameters.

It could be also useful to define a "type transformer" that can be used by the transpiler to extend the types that can be used in the generation. For example, a std::vector<T> could be mapped to T* and length.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions