On Wednesday, 7 May 2014 at 14:57:36 UTC, Chris wrote:
On Wednesday, 7 May 2014 at 12:05:10 UTC, bachmeier wrote:
On Wednesday, 7 May 2014 at 09:16:01 UTC, Chris wrote:
On Tuesday, 6 May 2014 at 23:19:47 UTC, Mason McGill wrote:
On Tuesday, 6 May 2014 at 11:28:21 UTC, Chris wrote:
Maybe it's time to think about a D interface to Julia. If
Julia catches on within the scientific community, it would
be good to have a foot in the door. Science quickly creates
large code bases, unfortunately, so far it's mostly Python
and Matlab which makes it hard to use the algorithms in
real world applications.
I've actually been working on just that, on and off for a
few months now. Such a thing is kind of "anti-Julian",
though, since one of Julia's main goals is to reduce or
eliminate the need for mixed-language projects.
However, with D, you can compile small shared libraries that
can be automatically bound to your users' favorite dynamic
runtimes (via compile-time reflection). I'm hoping this will
be good for both D and Julia, allowing library developers to
reach a broader audience, and library consumers greater
flexibility.
I'll post on the D "announce" thread when I have something
working, and I'd definitely appreciate tests/bug-reports at
that time!
I was also thinking in the direction of enabling D to use
existing Julia code seamlessly, so you can just call it from
D (extern(J)), and maybe even efficiently compile it into
binaries along with D code, as you would with extern(C) calls
now.
It's really easy to do that with R. There is a package RInside
that makes it trivial to embed R in a C++ program, and it's
not difficult to use with D.
Would be cool if we had something like this for Julia (if it
really catches on).
I guess you can call D from Julia very easily via the C API and
would just need to declare C calling convention in your D code.
It may be that with a combination of Julia and D one has the best
of both worlds - no compromise with speed and efficient resource
use on the number crunching with a nice shell / Ipython notebook
that is still pretty fast on the front end.
Nicer would be a wrapper a la PyD that seamlessly translates
between types.
Then the other thing is to translate julia.h into D so that you
can embed Julia. That's a little work but not so hard. More
about how this works with C here:
http://docs.julialang.org/en/release-0.3/manual/embedding/