• 0xDEADBEEFCAFE@programming.dev
    link
    fedilink
    English
    arrow-up
    6
    ·
    1 year ago

    How is the quality of the generated bindings?

    I have previously used PyO3 for Python bindings and it doesn’t seem to correctly generate type hints.

    • Walnut356@programming.dev
      link
      fedilink
      arrow-up
      3
      ·
      edit-2
      1 year ago

      Pyo3 doesnt generate type hints at all iirc. There’s some more info here

      The gist, as i recall, is that you’re supposed to maintain a .pyi file in the rust project folder that gets automatically added in by maturin when building. I’m no regex wizard, but i was able to whip together a small script that generates simple function and class stubs that also have the rust docstring. Iirc they’re planning on adding some official support for generating type hints, but i have no idea how far along it is or where it is on the priority list

      • 0xDEADBEEFCAFE@programming.dev
        link
        fedilink
        English
        arrow-up
        2
        ·
        1 year ago

        That’s a bummer. I guess what I though was PyO3 type hints was actually just PyCharm guessing at the types.

        I tried creating a .pyi file and it seems to be a pretty big improvement over no type hints, but I don’t know how to add type hints for modules added with PyModule::add_module and adding the .pyi file seems to make the type checker not know about my other modules.

        Would you mind sharing the script for auto generating type hints? Keeping them in sync manually would be pretty annoying.

        • Walnut356@programming.dev
          link
          fedilink
          arrow-up
          3
          ·
          1 year ago

          Here’s the script. It’s nothing fancy, and iirc it only works for top level functions/classes. That means you still have to take care of attributes and methods which is a little annoying, but for simple stuff it should save a bit of time.

  • Vorpal@programming.dev
    link
    fedilink
    arrow-up
    2
    ·
    1 year ago

    Seems rather limited: only targeting some high level languages. Now, if this could also generate C++ bindings i would be very interested.

    • Knusper@feddit.de
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      Hmm, but Rust has native generation of C bindings. Is there a big difference with C+±specific bindings?

      • snaggen@programming.dev
        link
        fedilink
        English
        arrow-up
        4
        ·
        1 year ago

        If you refer to bindgen it also supports C++, and since Mozilla who was the main driver of rust uses C++ I assume the bindgen for that is pretty good.

        • Knusper@feddit.de
          link
          fedilink
          arrow-up
          2
          ·
          1 year ago

          Ah, thanks. I did not know that, but I figured, if C+±specific bindings make sense, then Mozilla would have built something for that, before working on UniFFI.