News for hackers. Stuff that matters.
Re:Julia 1.10 Released by chestertn on Wednesday December 27, 2023 @01:17PM (#38784788)
Im not sure if Julia will ever take off. Right now there are huge investments in the AI space and Julia has no presence in those.
Re:Julia 1.10 Released by notthemessiah on Wednesday December 27, 2023 @04:20PM (#38786884)
Julia was ahead of the game with automatic differentiation which took a few years for Python to get support. And it's still ahead of the game with integrating machine learning with scientific modeling. Macros and multiple dispatch are a game changer, and it allows people to hack and iterate on Julia far easier than on Python.

And don't get me started on how nice JuMP.jl is for mathematical optimization.

Re:Julia 1.10 Released by 6gvONxR4sf7o on Wednesday December 27, 2023 @04:55PM (#38787255)
> Julia was ahead of the game with automatic differentiation which took a few years for Python to get support.

In what way is this true? Looks like Julia didn't exist until 2012. If I remember correctly, theano was the big AD thing in python at that point.

Re:Julia 1.10 Released by notthemessiah on Wednesday December 27, 2023 @10:21PM (#38789630)
Theano existed, but it didn't use autodiff at the time, most loss functions had preprogrammed derivative functions. Python first had native autodiff in June of 2013 with the ad package, but previously had bindings to Fortran and C++ libraries that supported autodiff in different use cases. Julia first had native autodiff in April of 2013 with ForwardDiff.jl.
Re:Julia 1.10 Released by 6gvONxR4sf7o on Thursday December 28, 2023 @03:44PM (#38798355)
It seems overly nitpicky to differentiate (no pun intended) so much between forward mode AD with DiffRules and theano's specific flavor of symbolic differentiation, but I'm no expert there.
Re:Julia 1.10 Released by 7thaccount on Wednesday December 27, 2023 @04:58PM (#38787287)
JuMP is cool, but honestly...I find the native Python APIs from CPLEX & GUROBI to be best. The additional abstraction of JuMP or the Python equivalent frameworks always is a pain to me as I don't need to switch solvers often.
Re:Julia 1.10 Released by jakobnissen on Wednesday December 27, 2023 @01:32PM (#38784949)
As much as it pains me to say it, I don't think Julia will. It looks to me like the practical problems with Julia, while addressable, are being addressed too slowly.

There is simply too many rough edges and usability problems as it is now, and at the current pace it will take maybe 10 or 15 years to address them.

On the other hand, the major use case for Julia is to have a fast, dynamic language. And it seems to me the time horizon for Python to become fast, or Rust or C++ to become dynamic is indefinite, so Julia is still the best bet in that space.

Re:Julia 1.10 Released by ubj on Wednesday December 27, 2023 @02:29PM (#38785576)
Although I mostly agree with this sentiment and have deep concerns about Julia's flaws, I will say that Julia has a very high ceiling. If the right concerns were addressed in a timely manner, I wouldn't be surprised to see its adoption rate accelerate.
Re:Julia 1.10 Released by edgyquant on Wednesday December 27, 2023 @02:27PM (#38785549)
Python seems to be making rapid strides towards becoming fast
Re:Julia 1.10 Released by oivey on Wednesday December 27, 2023 @02:30PM (#38785587)
It’s getting faster but not C fast. Its semantics mean it basically never will. You’ll always need C extensions.
Re:Julia 1.10 Released by markkitti on Wednesday December 27, 2023 @03:36PM (#38786434)
Using Cython via pure Python mode seems pretty compelling if you all you need is compilation. Compilability is just the beginning though.
Re:Julia 1.10 Released by oivey on Wednesday December 27, 2023 @03:41PM (#38786481)
Cython is pretty nice, especially for wrappers around C. Julia’s ccall is honestly even better.

Numba is also really nice, and for just compiling against arrays I like it better than Cython. Neither help if you need data structures or abstractions, though.

Re:Julia 1.10 Released by mardifoufs on Wednesday December 27, 2023 @05:39PM (#38787724)
I don't think so, not the core language at least. In my tests I think I saw a 20-30% improvement at best compared to versions from 5 years ago. Not saying that that's still not a great job from the core maintainers, but I don't think Julia has to fear python getting fast. The issue is more that python is getting to the point where the ML ecosystem has already accepted using a slow language as long as everything around it is fast.

Though as I said before, sometimes no amount of c++/c escape hatches can improve performance since you have to use python objects at some point or another and that will be the bottleneck. But by then, you won't needing some of the stuff Julia offers like the REPL and notebooks etc.

I haven't used Julia a lot but to me it's in a weird spot where it would be ideal to start projects with in theory since you won't need to outgrow the language you are starting with, since it's fast enough and has a pretty good/maintainable/sane design. But then you are sacrificing so much and will need much more time to get started that you might not ever get to that point anyways.

Just as an example, debugging obscure problems or deploying pytorch models that are more custom in prod is already pretty daunting at times, and it's the "best" and most popular ML framework in the world. I can't imagine how much more time consuming it would be when using a much smaller/less used library/framework.

So yeah all of that to say that being way faster isn't how Julia will win. Maybe a push from an influent player/big tech might give it the momentum it needs.

Re:Julia 1.10 Released by __s on Wednesday December 27, 2023 @01:52PM (#38785184)
What's wrong with JS/TS or Lua as a fast dynamic language?
Re:Julia 1.10 Released by markkitti on Wednesday December 27, 2023 @02:53PM (#38785851)
One of my favorite things recently is using JS/TS with Julia, usually via a Pluto.jl notebook.

There are also some nice demonstrations showing Julia compiled to web assembly. https://tshort.github.io/WebAssemblyCompiler.jl/stable/examp...

Re:Julia 1.10 Released by jakobnissen on Wednesday December 27, 2023 @02:01PM (#38785280)
Javascript doesn't compile to native code, so isn't as fast. I've never tried LuaJIT, though, that's supposed to be on par with Julia.
Re:Julia 1.10 Released by ReleaseCandidat on Wednesday December 27, 2023 @02:08PM (#38785361)
> Javascript doesn't compile to native code, so isn't as fast.

There are AOT compilers for JS.

Re:Julia 1.10 Released by jakobnissen on Wednesday December 27, 2023 @02:25PM (#38785529)
So there is for Python, but it's still slow. JS has slow semantics. It can't be made in the same performance league as Julia.
Re:Julia 1.10 Released by yabbs on Wednesday December 27, 2023 @06:34PM (#38788198)
I think you mean Julia is on par with LuaJIT? ..maybe exceeds?
Re:Julia 1.10 Released by tonyarkles on Wednesday December 27, 2023 @06:46PM (#38788293)
I mean, JS, TS, and Python all have at least one major problem: threading. I don’t recall how Lua threads work but I have a feeling it too suffers.
Re:Julia 1.10 Released by __s on Thursday December 28, 2023 @10:41AM (#38794490)
There's threading in lua

https://github.com/torch/threads

Re:Julia 1.10 Released by tonyarkles on Thursday December 28, 2023 @02:16PM (#38797335)
Ahhh, interesting. That looks to me like it's more appropriate for "multiple threads working on independent problems" than "multiple threads working on the same problem" due to the potential serialization overhead and limitations.

    Each thread has its own lua_State. However, we provide a serialization scheme which allows automatic sharing for several Torch objects (storages, tensors and tds types). Sharing of vanilla lua objects is not possible, but instances of classes that support serialization (eg. classic objects with using require 'classic.torch' or those created with torch.class) can be shared, but remember that only the memory in tensor storages and tds objects will be shared by the instances, other fields will be copies. Also if synchronization is required that must be implemented by the user (ie. with mutex).
That's not general-purpose multi-processor threading, that's solving it for a very specific sub-problem.
Re:Julia 1.10 Released by pjmlp on Wednesday December 27, 2023 @02:54PM (#38785864)
Julia is flying for these folks already,

https://juliahub.com/case-studies/

Re:Julia 1.10 Released by chestertn on Wednesday December 27, 2023 @04:05PM (#38786730)
That page is a bit marketing
Re:Julia 1.10 Released by pjmlp on Wednesday December 27, 2023 @04:42PM (#38787103)
No different from the usual rewrite in Zig and Rust articles on HN, and more industry relevant.
Re:Julia 1.10 Released by ChrisRackauckas on Thursday December 28, 2023 @06:47AM (#38792504)
Any page like that which is industry relevant is going to have to be associated with a company because you need the marketing team to go through the effort to get the case studies approved by each and every company. It's not an easy process since for example something like the Instron case study (https://juliahub.com/case-studies/auto-crash-simulation/) has details of upcoming projects like the Catapult Light which are major cost improvements passed on to customers, but you then have to go through the whole process of "well should we share this and let our competitors know what we used to get this advantage?" and contracts have to be signed before such a page can ever be built. The JuliaHub website has a whole list of case studies which have undergone this process and I couldn't see how you would get such detailed industrial accounts otherwise.

For open source accounts, there's the SciML showcase page https://sciml.ai/showcase/. Thats very focused in just one domain though, and I tend to just update it with what I remember to put in there so it probably only has about 1/4 of the blogs and news articles that it should, and the "External Applications Libraries and Large Projects using SciML" part is woefully incomplete, but at least it gives a picture of what's going on. It's hard to keep those kinds of pages up to date because exponential growth means that page requires exponential work.

Re:Julia 1.10 Released by ReleaseCandidat on Wednesday December 27, 2023 @02:00PM (#38785278)
It has already taken off and found its not so small niche. I don't think it will ever be one of the "big 10" languages (by users), but it has already a _big_ user base.
Re:Julia 1.10 Released by kloch on Wednesday December 27, 2023 @03:14PM (#38786136)
I love Julia language for the seamless arbitrary precision math support and not much else. If we could get that in C I would be all set.
Re:Julia 1.10 Released by affinepplan on Wednesday December 27, 2023 @01:20PM (#38784810)
julia has already taken off for certain niches
Re:Julia 1.10 Released by spenczar5 on Wednesday December 27, 2023 @01:26PM (#38784894)
What is an example? Are there any where it is dominant?
Re:Julia 1.10 Released by affinepplan on Wednesday December 27, 2023 @01:31PM (#38784940)
scientific models and simulations can be and are made very successfully in julia. In particular the diffeq landscape is probably the languages largest comparative advantage
Re:Julia 1.10 Released by spenczar5 on Wednesday December 27, 2023 @01:48PM (#38785127)
That’s a broad area. I work in astrodynamic simulations, and don’t know anyone doing much work in Julia. Maybe a couple of grad students playing with it, but that’s it. 99% of the work is Python, Fortran, and C/C++.

Are there subdomains that use it a lot? I am not sure what the diffeq landscape is exactly although it sounds related to dynamical simulations?

Re:Julia 1.10 Released by lagrange77 on Wednesday December 27, 2023 @03:49PM (#38786576)
I recently found this:

https://github.com/JuliaSpace/

Out of curiosity, what Python, Fortran, and C/C++ packages do you use / can you recommend?

Re:Julia 1.10 Released by spenczar5 on Wednesday December 27, 2023 @04:27PM (#38786963)
Astropy [0] lives at the heart of most work. It has a Python interface, often backed by Fortran and C++ extension modules. If you use Astropy, you're indirectly using libraries like ERFA [6] and cfitsio [7] which are in C/Fortran.

I personally end up doing a lot of work that uses the HEALPix sky tesselation, so I use healpy [2] as well.

Openorb is perhaps a good example of a pure-Fortran package that I use quite frequently for orbit propagation [3].

In C, there's Rebound [4] (for N-body simulations) and ASSIST [5] (which extends Rebound to use JPL's pre-calculated positions of major perturbers, and expands the force model to account for general relativity).

There are many more, these are just ones that come to mind from frequent usage in the last few months.

----

[0] https://www.astropy.org/

[1] https://healpix.jpl.nasa.gov/

[2] https://healpy.readthedocs.io/en/latest/

[3] https://github.com/oorb/oorb

[4] https://rebound.readthedocs.io/en/latest/

[5] https://github.com/matthewholman/assist

[6] https://github.com/liberfa/erfa

[7] https://heasarc.gsfc.nasa.gov/fitsio/

Re:Julia 1.10 Released by lagrange77 on Wednesday December 27, 2023 @04:49PM (#38787192)
Thank you very much for the detailed answer!

Will look into those. I recently wrote a little n-body simulator to become familiar with Julia's DifferentialEquations.jl and that motivated me to learn more about astrodynamics.

Re:Julia 1.10 Released by affinepplan on Wednesday December 27, 2023 @02:04PM (#38785313)
I'm sure there are other subdomains that make use of Julia, but in particular I think if your problem involves writing an evolution-like or agent-based-model-like simulation you may find the strengths of Julia particularly compelling
Re:Julia 1.10 Released by edgyquant on Wednesday December 27, 2023 @02:33PM (#38785618)
“You may find” is not the same thing as “has taken off in” which was the claim
Re:Julia 1.10 Released by pjmlp on Wednesday December 27, 2023 @02:56PM (#38785884)
Re:Julia 1.10 Released by chestertn on Wednesday December 27, 2023 @04:01PM (#38786691)
One of the things I don't like about the Julia ecosystem is the monolithic libraries that have tons of dependencies. DiffEq is one of those. I think its fine to write a script but if you want to develop something more sophisticated, you want to keep your dependencies lean.
Re:Julia 1.10 Released by krull10 on Wednesday December 27, 2023 @04:20PM (#38786883)
You can always (slightly) reduce the DiffEq dependencies by adding OrdinaryDiffEq.jl instead of the meta DifferentialEquations.jl package. But lots of those dependencies arise from supporting modular functionality (changing BLAS, linear solvers, Jacobian calculation methods, in vs. out of place workflows, etc.). That said, the newer extension functionality may let more and more of the dependencies get factored out into optional extensions as time goes on.
Re:Julia 1.10 Released by ChrisRackauckas on Wednesday December 27, 2023 @04:48PM (#38787184)
And you can always use the "Simple" versions, SimpleDiffEq.jl, SimpleNonlinearSolve.jl. Those libraries were made so that users could use exactly the same syntax but with dumbed down solvers with essentially zero latency. But yes the complete solvers are doing lots of fancy things for fancy cases, but SimpleTsit5 is recommended in the docs for small cases where you don't need all of the extra bells and whistles.
Re:Julia 1.10 Released by chestertn on Wednesday December 27, 2023 @04:43PM (#38787118)
I think it’s also the design philosophy. JuMP and ForwardDiff are great success stories and are packages very light on dependencies. I like those.

The DiffEq library seems to pull you towards the SciML ecosystem and that might not be agreeable to everyone.

For instance a known Julia project that simulates diff equations seems to have implemented their own solver

https://github.com/CliMA/Oceananigans.jl

Re:Julia 1.10 Released by ChrisRackauckas on Wednesday December 27, 2023 @05:05PM (#38787379)
That's a bit different, and an interesting different. Certain types of partial differential equations like the one solved there generally use a form of step splitting (i.e. a finite volume method with a staggard grid). Those don't map cleanly into standard ODE solvers since you generally want to use a different method on one of the equations. It does map into the SplitODEProblem form as a not DynamicalODEProblem, and so there is a way to represent it, but we have not created optimized time stepping methods for that. But I work with those folks so I understand their needs and we'll be kicking off a new project in the MIT Julia Lab in the near future to start developing split step and multi-rate methods specifically for these kinds of PDEs.

It's an interesting space because:

-(a) there aren't really good benchmarks on the full set of options, so a benchmarking paper would be interesting to the field (which then gives a motivation to the software development)

-(b) none of the implementations I have seen used the detailed tricks from standard stiff ODE solvers and so there's some major room for performance improvements

-(c) there's some alternative ways to generate the stable steppers that haven't been explored, and we have some ideas for symbolic-numeric methods that extend the ideas of what people have traditionally done by hand here. That should.

so we do plan to do things in the future. And having Oceananigans is then great because it serves as a speed-of-light baseline: if you auto-generate an ocean model, do you actually get as fast as a real hand-optimized ocean model? That's the goal, and we'll see if we can get there.

We have tons of solvers, but you always need more!

Re:Julia 1.10 Released by pjmlp on Wednesday December 27, 2023 @02:55PM (#38785880)
Re:Julia 1.10 Released by systems on Wednesday December 27, 2023 @03:04PM (#38785998)
Julia need good a complete database connectivity libraries to do better they need to have full support for MS SQL and Oracle and other commercial dbs

All my data are in a database, Julia need to become more db oriented , that is it

Re:Julia 1.10 Released by markkitti on Wednesday December 27, 2023 @04:19PM (#38786872)
Are there solid C interfaces that can be used?

A large part of why I started using Julia is because calling into other languages through the C FFI is pretty easy and efficient. Most of the wrappers are a single line. If there is not existing driver support, I would pass the C headers through Clang.jl, which automatically wraps the C API in a C header.

https://github.com/JuliaInterop/Clang.jl

I most recently did this with libtiff. Here is the Clang.jl code to generate the bindings. It's less than 30 lines of sterotypical code.

https://github.com/mkitti/LibTIFF.jl/tree/main/gen

The generated bindings with a few tweaks is here:

https://github.com/mkitti/LibTIFF.jl/blob/main/src/LibTIFF.j...

Re:Julia 1.10 Released by pjmlp on Wednesday December 27, 2023 @04:50PM (#38787201)
Yes, both Oracle (OCI) and SQL Server (ODBC), although they are quite a bit low level.
Re:Julia 1.10 Released by passion__desire on Wednesday December 27, 2023 @01:25PM (#38784886)
You don't need Julia. Julia was trying to be a better python. We will have better python in form of Mojo.
Re:Julia 1.10 Released by ubj on Wednesday December 27, 2023 @02:24PM (#38785518)
It should be fairly clear from studying the structure of Julia that it was never meant to be simply a better Python.

Mojo also owes part of its design from the lessons it took from Julia (as per Chris Lattner [1]).

[1]: https://news.ycombinator.com/item?id=35791125

Re:Julia 1.10 Released by markkitti on Wednesday December 27, 2023 @05:09PM (#38787412)
After looking at Mojo, I appreciated all the paradigms that Julia was pushing forward even more than I did before. Mojo's greatest asset and curse is focusing on being a better Python. Julia's greatest asset and curse is trying to do a lot more.
Re:Julia 1.10 Released by froonly on Thursday December 28, 2023 @11:49AM (#38795367)
Julia was meant to be a better Fortran/C++
Re:Julia 1.10 Released by FridgeSeal on Wednesday December 27, 2023 @01:34PM (#38784974)
Mojo is vapourware from a private company (and we all know how those turn out re programming languages) until proven otherwise.
Re:Julia 1.10 Released by markkitti on Wednesday December 27, 2023 @03:42PM (#38786491)
I'm not sure that's a fair description at this point. They have distributed some SDKs at this point.

I really do wish it were open source already though. I know they have laid out a roadmap for opening the source.

Re:Julia 1.10 Released by FridgeSeal on Saturday December 30, 2023 @10:26AM (#38815938)
The person in charge of Mojo was previously in charge of a massive effort to give tensorflow a new backend, for which he conveniently picked Swift (a language he was also involved in), despite there being better options, only to abandon it halfway through because it was intractable and Swift wasn’t ready/willing to support the compiler changes needed, so he just abandoned it, and now works on Mojo.

It gives real “Jony Ive leaving Apple to go work somewhere where nobody can tell him ‘no’ “ vibes.

Re:Julia 1.10 Released by passion__desire on Sunday December 31, 2023 @08:25AM (#38823872)
You don't consider developing llvm as an accomplisment?
Re:Julia 1.10 Released by csjh on Wednesday December 27, 2023 @01:48PM (#38785132)
What other private company languages are there? Swift is the best example I can think of, which matches Mojo's situation down to the head of the project.
Re:Julia 1.10 Released by sinkwool on Wednesday December 27, 2023 @04:01PM (#38786686)
aren't most languages invented and initially developed within a private company? Go, Dart, Java, JavaScript, C#, F#, VBA, Kotlin, Erlang, C(at AT&T), Rust (at Mozilla). The list is probably very long
Re:Julia 1.10 Released by notthemessiah on Wednesday December 27, 2023 @04:36PM (#38787049)
Most of those are open source, and while initially developed at a private company, most are run by non-profits (such as the Rust Foundation for Rust). Also, the language itself is not usually the main product at those companies.
Re:Julia 1.10 Released by Conscat on Wednesday December 27, 2023 @03:09PM (#38786063)
K is one such language.
Re:Julia 1.10 Released by dist-epoch on Wednesday December 27, 2023 @03:44PM (#38786520)
Mathematica
Re:Julia 1.10 Released by ReleaseCandidat on Wednesday December 27, 2023 @02:05PM (#38785326)
IBM has some, ABAP, ...
Re:Julia 1.10 Released by akkad33 on Wednesday December 27, 2023 @05:54PM (#38787878)
Matlab
Re:Julia 1.10 Released by markkitti on Wednesday December 27, 2023 @06:06PM (#38787971)
MATLAB® by MathWorks