Julia (programming language): Difference between revisions

Content deleted Content added
m 1.12.0-beta3, as source. Not announced or tagged, and seemingly will not be, in favor of beta4. I'm not sure about including here since it's only in backports-release-1.12 (see VERSION file, and since then further PRs on that branch). Note the same beta3 backport PR is also at (though without the VERSION file updated): https://github.com/JuliaLang/julia/tree/release-1.12 Backports for 1.12.0-beta3 (#58270). Probably beta4 will be announced soon, if not and no beta3, then I may reconsider this.
beta3 has been tagged (not announced, so available as source, this time I feel confident putting on WP), and added to this branch (not just the backport branch): https://github.com/JuliaLang/julia/tree/release-1.12
Line 43:
| latest_release_version = {{wikidata|property|edit|reference|Q28974961 |P548=Q2804309|P348}}
| latest_release_date = {{nowrap|{{start date and age|{{wikidata|qualifier| Q28974961 |P348|P577}}|df=y}}}}<br /> and 1.10.9<ref>{{Cite web |title=GitHub - JuliaLang/julia at v1.10.9 |url=https://github.com/JuliaLang/julia/tree/v1.10.9 |access-date=2025-03-10 |website=GitHub |language=en}}</ref> ([[long-term support|LTS]]) / {{nowrap|{{start date and age|2025|03|10|df=y}}}}
| latest preview version = 1.12.0-beta3<ref>{{Cite web |title=GitHub - JuliaLang/julia at backports-release-1v1.12.0-beta3 |url=https://github.com/JuliaLang/julia/tree/backports-release-1v1.12.0-beta3 |access-date=2025-05-1112 |website=GitHub |language=en}}</ref>
| latest_preview_date = {{start date and age|2025|05|0912|df=y}}. Being worked on: 1.12.0-beta4<ref>{{Cite web |title=Backports for 1.12.0-beta4 by KristofferC · Pull Request #58369 · JuliaLang/julia |url=https://github.com/JuliaLang/julia/pull/58369 |access-date=2025-05-10 |website=GitHub |language=en}}</ref> and 1.13.0-DEV with daily updates
| typing = [[Dynamic programming language|Dynamic]],<ref name="Engheim">{{Cite web|last=Engheim|first=Erik|date=2017-11-17|title=Dynamically Typed Languages Are Not What You Think|url=https://erik-engheim.medium.com/dynamically-typed-languages-are-not-what-you-think-ac8d1392b803|access-date=2021-01-27|website=Medium|language=en|archive-date=5 March 2021|archive-url=https://web.archive.org/web/20210305194133/https://erik-engheim.medium.com/dynamically-typed-languages-are-not-what-you-think-ac8d1392b803|url-status=live}}</ref> [[type inference|inferred]], [[optional typing|optional]], [[nominal type system|nominative]], [[parametric polymorphism|parametric]], [[strong and weak typing|strong]]<ref name="Engheim" />
| implementations =
Line 109:
By default, Julia is run similarly to scripting languages, using its runtime, and allows for [[read–eval–print loop|interactions]],<ref name="PackageCompiler.jl" /> but Julia programs/[[source code]] can also optionally be sent to users in one ready-to-install/run file, which can be made quickly, not needing anything preinstalled.<ref name=AppBundler.jl /> <!-- controversial on Talk, page, for now commenting out, may move out of lead: Julia programs can also be (separately) compiled to [[binary executable]]s, even allowing no-source-code distribution, and the executables can get much smaller with Julia 1.12. Such compilation is not needed for speed, though it can decrease constant-factor startup cost, since Julia is also compiled when running interactively, but it can help with hiding source code. Features of the language can be separately compiled, so Julia can be used, for example, with its runtime or without it (which allows for smaller executables and libraries but is limited in capabilities). -->
 
Julia programs can reuse libraries from other languages by(or callingitself them,be reused from other); Julia has a special no-boilerplate keyword allowing calling e.g. calling [[C (programming language)|C]], Fortran or [[Rust (programming language)|Rust]] libraries, and e.g. PythonCall.jl uses it indirectly for you, and Julia (libraries) can also be called from other languages, e.g. [[Python (programming language)|Python]] and [[R (programming language)|R]], and several Julia packages have been made easily available from those languages, in the form of Python and R [[library (computing)|libraries]] for corresponding Julia packages. Calling in either direction has been implemented for many languages, not just those and [[C++]].
 
Julia is supported by programmer tools like IDEs (see below) and by notebooks like Pluto.jl, [[Project Jupyter|Jupyter]], and since 2025 [[Google Colab]] officially supports Julia natively.
<!--
For now also commented out (see Talk, and above shorter text):
Line 150:
-->
 
Julia 1.11 was released on 7 October 2024 (and 1.11.5 on 14 April 2025), and with it 1.10.5 became the next [[long-term support]] (LTS) version (i.e. those are the only two supported versions), since replaced by 1.10.8 released on 10 March, and 1.6 is no longer an LTS version. Julia 1.11 adds e.g. parallel garbage collection and athe new <code>public</code> keyword to signal safe public API (Julia users are advised to use such API, not internals, of Julia or packages, and package authors advised to use the keyword, generally indirectly, e.g. prefixed with the <code>@compat</code> macro, from ''Compat.jl'', to also support older Julia versions, at least the LTS version). Julia 1.11.1 has much improved startup (over 1.11.0 that had a regression), and over 1.10, and this can be important for some benchmarks.
 
<!-- I think this is now outdated: Some users may want to postpone upgrading to 1.11 (e.g. those calling Julia from R), because of known temporary package incompatibility.
-->
Much smaller binary executables are possible with <code>juliac</code> which is available in the upcoming Julia 1.12 (now in beta2beta3).
 
===JuliaCon===