I was wondering if there are any long term plans to create a Windows version.
Is Julia being developed with portability in mind (and the current
lack of Windows support is just because no one had the time to port it
yet), or is it specifically focused on Unix systems?
A this moment what are the biggest difficulties in porting it to
Windows? Does Julia have any hard dependencies that are problematic to
port?
I have been doing some investigation into that and I thought I'd give you an update on what I'm at.
The dependencies all work on windows. However THE BUILDSYSTEM DOES NOT. At least not out of the box, and If you're trying to do a complete native build, with MSVC, then you can't use existing the build system at all.
Therefore, I have been writing CMakeFiles, to at least properly generate Makefiles (or MSVC projects) that build on windows (the code of the dependencies itself is mostly windows compatible) and I've got most of it working already. I'll probably do a pull request of that today or tomorrow. So that should cover the dependencies.
Regarding the code itself, there is quite a lot of POSIX specific code that needs to be ported, specifically Julia's C Interface and the REPL. I'm looking into libuv to see if that can be abstracted, but I haven't done much investigation into that yet (I wanted to get the dependencies to work reliably first).
So, if you want to help with that, you're more than welcome to (I don't know if anybody else has been working on that, too).
--
Keno Fischer
So far we have *not* generally developed with portability to windows
in mind. Of course eventually we'd love to have it.
The REPL, j/multi.j, and j/process.j are very unixy. There is probably
a large amount of work hiding there.
I really appreciate your work on this; it is tedious stuff. It will be
hard for me to help since I haven't used windows in over 10 years and
don't have ready access to a windows machine.
-Jeff
Would the ccall interface just work as it is, since it is just using LLVM?
-viral
LLVM doesn't fully abstract away the C calling convention. Calls with
simple scalar types should work, but when you add support for structs
to the FFI, you'll need to borrow Clang's TargetInfo in order to
generate correct LLVM for C calls.
-Joe