| While all the points are valid what scares me most about Julia is what is covered under the section "The core language is unstable".
Recently I tried the latest beta version and came across an issue - I just could not add packages. (`] add JSON` or
). No matter what package I tried to add, it failed with a stacktrace pointing to libuv.
I tried downgrading to lower versions of Julia but no luck. Turns out it is a regression introduced by a commit dated Sep 23 2020. In libuv. As I tried to fix it, I realized Julia uses a version of libuv that is significantly diverged from libuv main branch ("123 commits ahead, 144 commits behind libuv:v1.x"
as I write this comment) and the bug was in the code. Using the code from the corresponding function from libuv upstream fixed the problem. To summarize 1. There's a bug introduced close to a year ago that breaks basic functionality on a mainstream operating system.
2. Julia has its own version of, of all things, libuv, that is significantly diverged from the original.
3. The bug is in one of the changes introduced. While each of the above is defensible on its own. Taken together, they do scare me away from considering Julia for production use. I am hoping am wrong somewhere.
I think it is a lovely language. |
Several Julia core devs are also libuv maintainers or contributors. The main reason for the divergence is that Julia’s libuv fork has a significantly more flexible event loop model that allows using libuv from multiple threads efficiently. The main libuv project has been reluctant to accept that change since it’s a quite advanced capability that Node doesn’t need.