Showing off the strengths of Julia packages



Concerning the special issue for Julia in Advances in Engineering Software ([ANN] Special issue on the Julia programming language):

If you were to suggest the packages that best show of the strength of Julia and the contributions from the community at large, which ones would you list?

Let us say in the categories listed on the Julia Pro website. But if you think another category should be included, please do.

If you have some idea, please respond in this topic thread.



Two come to mind immediately for me, the ecosystem that grew up around Plots.jl and the whole ChrisVerse™️ :nerd_face: differential equations ecosystem.

Both exemplify a kind of “build it, and they will come” philosophy IMO. @tbreloff created a nice framework that allowed other people to continue to build upon it, and @ChrisRackauckas took Tom’s example and flew with it, getting a lot of other people to contribute to extending the ecosystem, including lots of GSoC projects last summer and this summer as well.

(Of course, Julia itself has been improving by leaps and bounds over the last 3 years since I first learned about it, I think Jeff was genius, he managed to crowd source some of the research for his Ph.D. thesis (with a very smart crowd), and the crowd of contributors just keeps getting larger :nerd_face:)


I agree with what @ScottPJones said.

JuMP is and the surrounding set of solvers is another excellent set of packages.
For constrained optimisation.


Autodiff packages, StaticArrays.jl and Unitful.jl come to mind.


More than a particular package, I think I would highlight the composability and genericity of the packages. If I want to minimize u(1,2)^2 with respect to alpha, where u(x,t) is the solution of du/dt = alpha*d2u/dx2, I can use JuAFEM to discretize the system in x, solve the system with DiffEq, use ForwardDiff to differentiate the solution, and pass that to Optim. If I want u to be a unitful offset array of quaternions stored in single precision on all the GPUs in my cluster, I can just switch the type of the input array, and everything will work automatically (well, in theory :p)


Good suggestions! Thank you all who responded.