Julia (programming language)

Julia
ParadigmMulti-paradigm: multiple dispatch (primary paradigm), functional, array, procedural (imperative), structured, reflective, meta, multistaged[1]
Designed byJeff Bezanson, Alan Edelman, Stefan Karpinski, Viral B. Shah
DeveloperJeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors[2][3]
First appeared2012 (2012)[4]
Stable release
1.10.5[5] Edit this on Wikidata (future LTS) / 27 August 2024 (27 August 2024) and
1.6.7 currently declared LTS (likely not for much longer)[7][8] / 19 July 2022 (2022-07-19)
Preview release
1.11.0-rc3[6] / 27 August 2024 (2024-08-27) and 1.10.5[9][10] in testing and 1.11.0-rc4/1.11.0[11] being worked on and 1.12.0-DEV with daily updates
Typing disciplineDynamic,[12] inferred, optional, nominative, parametric, strong[12]
Implementation languageJulia, C, C++, LLVM,[13] Scheme (mostly the parser; that one not used in current versions)
PlatformTier 1: x86-64, IA-32, Apple silicon 64-bit Arm Macs; Nvidia GPUs/CUDA (on Linux)[14]
Tier 2: FreeBSD, 64-bit Arm on Linux, Apple GPUs; Intel GPUs/OneAPI 6.2+ and Nvidia GPUs (on Windows)
Tier 3: 32-bit Arm, PowerPC and AMD GPUs/ROCm 5.3+.
OSLinux, macOS, Windows and FreeBSD
LicenseMIT
Filename extensions.jl
WebsiteJuliaLang.org
Influenced by

Julia is a high-level, general-purpose[20] dynamic programming language, most commonly used for numerical analysis and computational science.[21][22][23] Distinctive aspects of Julia's design include a type system with parametric polymorphism and the use of multiple dispatch as a core programming paradigm, efficient garbage collection,[24] and a just-in-time (JIT) compiler[20][25] (with support for ahead-of-time compilation[26][27][28]). Notably Julia does not support classes with encapsulated methods and instead it relies on structs with separate functions.

By default, Julia is run similarly to scripting languages, using its runtime, and allows for interactions,[26] 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.[citation needed] Julia programs can also be (separately) compiled to binary executables, even allowing no-source-code distribution. Such compilation is not needed for speed, 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 calling them, e.g. calling C or Rust libraries, and Julia (libraries) can also be called from other languages, e.g. Python and R, and several Julia packages have been made easily available from those languages, in the form of Python and R libraries for corresponding Julia packages. Calling in either direction has been implemented for many languages such as all of these.

Julia's Visual Studio Code extension provides a fully-featured integrated development environment with support for debugging, linting, and profiling.[29][30][31][32]

  1. ^ "Smoothing data with Julia's @generated functions". 5 November 2015. Archived from the original on 4 March 2016. Retrieved 9 December 2015. Julia's generated functions are closely related to the multistaged programming (MSP) paradigm popularized by Taha and Sheard, which generalizes the compile time/run time stages of program execution by allowing for multiple stages of delayed code execution.
  2. ^ "LICENSE.md". GitHub. September 2017. Archived from the original on 23 January 2021. Retrieved 20 October 2014.
  3. ^ "Contributors to JuliaLang/julia". GitHub. Archived from the original on 23 January 2021. Retrieved 20 October 2014.
  4. ^ a b c d "Why We Created Julia". Julia website. February 2012. Archived from the original on 2 May 2020. Retrieved 7 February 2013.
  5. ^ https://github.com/JuliaLang/julia/pull/55526. {{cite web}}: Missing or empty |title= (help)
  6. ^ "Julia v1.11.0-rc3 is now available". Julia Programming Language. 27 August 2024. Archived from the original on 27 August 2024. Retrieved 27 August 2024.
  7. ^ "GitHub - JuliaLang/julia at release-1.6". GitHub. Archived from the original on 19 July 2022. Retrieved 19 July 2022.
  8. ^ "release-1.6: Backports for 1.6.7 by KristofferC · Pull Request #45319 · JuliaLang/julia". GitHub. Archived from the original on 16 May 2022. Retrieved 16 May 2022.
  9. ^ "Julia 1.10.5 testing period". Julia Programming Language. 13 August 2024. Archived from the original on 13 August 2024. Retrieved 13 August 2024.
  10. ^ "Backports release 1.10.5 by KristofferC · Pull Request #54851 · JuliaLang/julia". GitHub. Archived from the original on 27 June 2024. Retrieved 27 June 2024.
  11. ^ "Backports for 1.11.0-rc4/1.11.0 by KristofferC · Pull Request #55586 · JuliaLang/julia". GitHub. Archived from the original on 26 August 2024. Retrieved 26 August 2024.
  12. ^ a b Engheim, Erik (17 November 2017). "Dynamically Typed Languages Are Not What You Think". Medium. Archived from the original on 5 March 2021. Retrieved 27 January 2021.
  13. ^ "Building Julia (Detailed)". GitHub. September 2017. Archived from the original on 16 May 2022. Retrieved 16 May 2022.
  14. ^ "NVIDIA CUDA ⋅ JuliaGPU". juliagpu.org. Archived from the original on 29 January 2022. Retrieved 17 January 2022. we have shown the performance to approach and even sometimes exceed that of CUDA C on a selection of applications from the Rodinia benchmark suite
  15. ^ Stokel-Walker, Chris. "Julia: The Goldilocks language". Increment. Stripe. Archived from the original on 9 November 2020. Retrieved 23 August 2020.
  16. ^ "JuliaCon 2016". JuliaCon. Archived from the original on 4 March 2017. Retrieved 6 December 2016. He has co-designed the programming language Scheme, which has greatly influenced the design of Julia
  17. ^ a b c d "Home · The Julia Language". docs.julialang.org. Archived from the original on 11 January 2021. Retrieved 15 August 2018.
  18. ^ "Programming Language Network". GitHub. Archived from the original on 20 December 2020. Retrieved 6 December 2016.
  19. ^ "What Should We Call the Language of Mathematica?—Stephen Wolfram Writings". writings.stephenwolfram.com. Archived from the original on 4 September 2024. Retrieved 24 June 2021.
  20. ^ a b Fischer, Keno; Nash, Jameson. "Growing a Compiler - Getting to Machine Learning from a General Purpose Compiler - JuliaHub". juliahub.com. Retrieved 16 November 2022.
  21. ^ Bryant, Avi (15 October 2012). "Matlab, R, and Julia: Languages for data analysis". O'Reilly Strata. Archived from the original on 26 April 2014.
  22. ^ Krill, Paul (18 April 2012). "New Julia language seeks to be the C for scientists". InfoWorld. Archived from the original on 13 September 2014. Retrieved 4 July 2021.
  23. ^ Finley, Klint (3 February 2014). "Out in the Open: Man Creates One Programming Language to Rule Them All". Wired. Archived from the original on 20 December 2016. Retrieved 8 March 2017.
  24. ^ "Suspending Garbage Collection for Performance...good idea or bad idea?". Groups.google.com. Archived from the original on 14 February 2012. Retrieved 31 May 2017.
  25. ^ "Sysimages · PackageCompiler". julialang.github.io. Archived from the original on 10 April 2023. Retrieved 10 April 2023.
  26. ^ a b Cite error: The named reference PackageCompiler.jl was invoked but never defined (see the help page).
  27. ^ "julia/doc/src/devdocs/aot.md at master · JuliaLang/julia". GitHub. Archived from the original on 3 October 2023. Retrieved 3 October 2023.
  28. ^ "System Image Building · The Julia Language". docs.julialang.org. Retrieved 3 October 2023.
  29. ^ Holy, Tim (13 September 2019). "GitHub - timholy/ProfileView.jl: Visualization of Julia profiling data". GitHub. Archived from the original on 31 January 2020. Retrieved 22 September 2019.
  30. ^ Gregg, Brendan (20 September 2019). "GitHub - brendangregg/FlameGraph: Stack trace visualizer". GitHub. Archived from the original on 26 September 2019. Retrieved 22 September 2019.
  31. ^ "A Julia interpreter and debugger". julialang.org. Retrieved 10 April 2019.
  32. ^ "Home · Rebugger.jl". timholy.github.io. Archived from the original on 31 March 2019. Retrieved 10 April 2019.

Developed by StudentB