The field of machine learning is highly dependent on some popular data science libraries written in Python, and interoperability with these libraries is a high priority for the Swift for TensorFlow project. You can read more background about this in our Python interoperability whitepaper.
This work originally motivated SE-0195 - Introduce User-defined “Dynamic Member
Lookup” Types which was accepted, implemented, and shipped in Swift 4.2. OTOH, its sister proposal has been sitting idle since then. It introduces a
@dynamicCallable attribute to further improve the bindings.
I still haven’t had time to implement it, but I just posted an updated version of the proposal and I’d be curious to get any feedback on the new design. Recent changes make it align with the SE-0195 design, incorporated feedback from the last pitch cycle (notably, support for Smalltalk derived languages), and shortened up some of the discussion.
If you are curious, you can see our current Python interop code, which should work with Swift 4.2. After @dynamicCallable is settled, we’ll open discussion on formalizing and standardizing the Python binding itself - our ideal end game is for it (or something like it) to replace the existing Python module.
In any case, I’d really love feedback on the new proposal!