Hey @Pierre_Augier nice to see you here. This answer is more of a Pythran answer than a Julia answer.
Performances
On the performance side, I am not sure that there will be a benefit to using julia’s array library over the current Pythran numpy backend, mostly because you guys have done an incredible job at making pythonic++ fast. As a xtensor/xsimd developer I can say that pythran is already hard to beat.
For comparisons to Julia on simple broadcasting operations, Serge made a Pythran submission to the Julia challenge (which was not accepted because it used Pythran) that gave results that were 12 times faster than Julia. (The same performances were obtained with the pure C++ submission and the C++/xtensor submission).
For an example with a more “real world” example involving more operations, there was recently another set of benchmarks published with a ray-tracing problem: How Fast Is R with FastR? - Nextjournal. Wolf wrote the equivalent code with NumPy and the Pythran compiled code performed much faster than Julia.
More generally, in the benchmarks that we have been doing, Pythran has been producing amongst the fastest code amongst Julia, Numba, Julia and naive C++ implementations.
I think that this relative slowness of Julia on these array operations is going to be resolved eventually, but with the current state of things, Pythran is better off with pythonic++ and xsimd as it would be with a Julia backend.
Maintainance
Since a lot of pythran’s code involved re-implementing core Python features in pure C++ (list comprehensions etc), redoing all of this almost looks like restarting pythran from scratch to target Julia.
Then these is the question of NumPy API coverage, which is more tricky. Maintaining the NumPy backend of Pythran is certainly looking over a lot of code. We have been discussing working with Serge on converging on using xtensor
as a numpy backend in Pythran. Since we already funded the xsimd transition, this may be the way forward. Other projects than pythran depend on xtensor, and there are more eyes on the code base. A practical challenge is that xtensor has very different semantics from pythran in terms of lifetime of expressions, but on the API coverage side, coverring the largest possible portion of NumPy is one of the main goals for xtensor. (See the NumPy to xtensor cheat sheet). Getting the huge Pythran test suite and benchmark suite to run against xtensor would be like the ultimate unit test for xtensor, and a good way to track down performance bugs. On the other hand with a Julia backend to Pythran, it may be difficult to get upstream to make changes to support your use case.
In any case, Pythran is just fantastic and it allowed us to produce amazingly fast code from a few lines of NumPy operations.
Producing compiled Python extensions
Another common use case of Pythran is to produce binary extensions to Python. To my knowledge, it is not 100% supported by julia to produce compiled binaries that don’t depend on Julia’s runtime - but I may be wrong here as things may have changed since the last time I looked. In any case, just like Pythran does, we would need the resulting Julia-implemented extensions to operate on NumPy arrays inplace (by calling the numpy C API from julia, or using the Python buffer protocol).