NumFOCUS congratulates the Julia community on their achievement of the much-anticipated 1.0 release—the culmination of nearly a decade of work to build a language for “greedy programmers.” JuliaCon2018 celebrated the event with a reception where the community officially set the version to 1.0.0 together.
Julia was first publicly announced with a number of strong demands on the language:
“We want a language that’s open source, with a liberal license. We want the speed of C with the dynamism of Ruby. We want a language that’s homoiconic, with true macros like Lisp, but with obvious, familiar mathematical notation like Matlab. We want something as usable for general programming as Python, as easy for statistics as R, as natural for string processing as Perl, as powerful for linear algebra as Matlab, as good at gluing programs together as the shell. Something that is dirt simple to learn, yet keeps the most serious hackers happy. We want it interactive and we want it compiled.”
Since then, Julia has been downloaded over two million times and has cultivated a large, vibrant and thriving community around that goal. Over 700 people have contributed to Julia itself and even more have made thousands of amazing open source Julia packages. (Check out new NumFOCUS sponsored project, JuMP, for one example!) In 2017, the Julia application called Celeste achieved the rare milestone of peak performance of 1.54 petaflops per second, joining the “Petaflop Club.”
“It is this community that made Julia what it is today.”
Julia creators Jeff Bezanson, Stefan Karpinski, Viral Shah, and Alan Edelman shared their reflections: “When we first started writing Julia in August 2009, we never imagined it will come this far. Our 2012 blog post ‘Why we created Julia’ resonated with the community, and it is this community that made Julia what it is today. Merging the 1.0 Pull Request at JuliaCon, with over 500 people in person and on the live stream, was an emotional experience and something that we will all cherish forever. It has been an amazing 9 years and we have enjoyed every little bit of it – every line of code, every argument, every JuliaCon, the relationships we formed and the knowledge we gained.”
All told, the community has built a language that is:
- Fast: Julia was designed from the beginning for high performance. Julia programs compile to efficient native code for multiple platforms via LLVM.
- General: It uses multiple dispatch as a paradigm, making it easy to express many object-oriented and functional programming patterns. The standard library provides asynchronous I/O, process control, logging, profiling, a package manager, and more.
- Dynamic: Julia is dynamically-typed, feels like a scripting language, and has good support for interactive use.
- Technical: It excels at numerical computing with a syntax that is great for math, many supported numeric data types, and parallelism out of the box. Julia’s multiple dispatch is a natural fit for defining number and array-like data types.
- Optionally typed: Julia has a rich language of descriptive data types, and type declarations can be used to clarify and solidify programs.
- Composable: Julia’s packages naturally work well together. Matrices of unit quantities, or data table columns of currencies and colors, just work — and