Mojo (programming language): Difference between revisions

Content deleted Content added
m v2.05 - clean up
m Replaced 1 bare URLs by {{Cite web}}; Replaced "Archived copy" by actual titles
 
(One intermediate revision by one other user not shown)
Line 41:
'''Mojo''' is a [[programming language]] in the [[Python (programming language)|Python]] family that is currently under development.<ref name="MojoProgrammingManual_(2023)">{{cite web |url=https://docs.modular.com/mojo/programming-manual.html |title=Mojo programming manual |date=2023 |website=docs.modular.com |publisher=Modular |access-date=2023-09-26 |quote=Mojo is a programming language that is as easy to use as Python but with the performance of C++ and Rust. Furthermore, Mojo provides the ability to leverage the entire Python library ecosystem.}}</ref><ref name="Modular-WhyMojo_(2023)">{{cite web |url=https://docs.modular.com/mojo/why-mojo.html |title=Why Mojo - A language for next-generation compiler technology |date=2023 |website=docs.modular.com |publisher=Modular |access-date=2023-09-26 |quote=While many other projects now use MLIR, Mojo is the first major language designed expressly for MLIR, which makes Mojo uniquely powerful when writing systems-level code for AI workloads.}}</ref><ref name="InfoWorld">{{cite web |last1=Krill |first1=Paul |title=Mojo language marries Python and MLIR for AI development |url=https://www.infoworld.com/article/3695588/mojo-language-marries-python-and-mlir-for-ai-development.html |website=InfoWorld |language=en |date=4 May 2023}}</ref> It is available both in browsers via [[Project Jupyter#Jupyter Notebook|Jupyter notebooks]],<ref name="InfoWorld"/><ref name="IWFirst">{{cite news |last1=Yegulalp |first1=Serdar |title=A first look at the Mojo language |url=https://www.infoworld.com/article/3697739/a-first-look-at-the-mojo-language.html |work=InfoWorld |date=7 June 2023 |language=en}}</ref> and locally on [[Linux]] and [[macOS]].<ref>{{cite news |last1=Deutscher |first1=Maria |title=Modular makes its AI-optimized Mojo programming language generally available |url=https://siliconangle.com/2023/09/07/modular-makes-ai-optimized-mojo-programming-language-generally-available/ |work=Silicon Angle |date=7 September 2023 |access-date=2023-09-11 |language=en}}</ref><ref name="macOS_(2023)">{{cite web |url=https://x.com/Modular/status/1715024755093287042 |title=Mojo for Mac OS |publisher=Modular |access-date=2023-10-19}}</ref> Mojo aims to combine the usability of a [[high-level programming language]], specifically [[Python (programming language)|Python]], with the performance of a [[system programming language]] such as [[C++]], [[Rust (programming language)|Rust]], and [[Zig (programming language)|Zig]].<ref>{{Cite web |title=Mojo: Programming language for all of AI |url=https://www.modular.com/max/mojo |access-date=2024-02-28 |website=Modular.com |language=en}}</ref> {{As of|2025|02}}, the Mojo [[compiler]] is closed source with an [[open source]] [[standard library]]. Modular, the company behind Mojo, has stated an intent to eventually open source the Mojo language, as it matures.<ref name="opensource" />
 
Mojo builds on the Multi-Level Intermediate Representation ([[MLIR (software)|MLIR]]) compiler [[software framework]], instead of directly on the lower level [[LLVM]] compiler framework like many languages such as [[Julia (programming language)|Julia]], [[Swift (programming language)|Swift]], [[C++]], and Rust.<ref>{{Cite web |last1=Krill |first1=Paul |date=2023-05-04 |title=Mojo language marries Python and MLIR for AI development |url=https://www.infoworld.com/article/3695588/mojo-language-marries-python-and-mlir-for-ai-development.html |access-date=2024-05-28 |website=InfoWorld |language=en}}</ref><ref>{{Cite web |date=2024-02-20 |title=Should Julia use MLIR in the future? |url=https://discourse.julialang.org/t/should-julia-use-mlir-in-the-future/110459 |access-date=2024-05-28 |website=Julia Programming Language |language=en}}</ref> MLIR is a newer compiler framework that allows Mojo to exploit higher level compiler passes unavailable in LLVM alone, and allows Mojo to compile down and target more than only [[central processing unit]]s (CPUs), including producing code that can run on [[graphics processing unit]]s (GPUs), [[Tensor Processing Unit]]s (TPUs), [[application-specific integrated circuit]]s (ASICs) and other accelerators. It can also often more effectively use certain types of CPU optimizations directly, like [[single instruction, multiple data]] (SIMD) with minor intervention by a developer, as occurs in many other languages.<ref>{{Cite web |title=Modular Docs: Why Mojo |url=https://docs.modular.com/mojo/why-mojo |access-date=2024-05-28 |website=docs.modular.com |language=en}}</ref><ref>{{Cite web| title=Mojo - A system programming language for heterogenous computing | url=https://llvm.org/devmtg/2023-10/slides/keynote/Mojo.pdf | archive-url=https://web.archive.org/web/20240528174826/https://llvm.org/devmtg/2023-10/slides/keynote/Mojo.pdf | archive-date=2024-05-28}}</ref> According to [[Jeremy Howard (entrepreneur)|Jeremy Howard]] of fast.ai, Mojo can be seen as "[[Syntactic sugar|syntax sugar]] for MLIR" and for that reason Mojo is well optimized for applications like [[artificial intelligence]] (AI).<ref>{{Cite web |last1=Howard |first1=Jeremy |author1-link=Jeremy Howard (entrepreneur) |date=2023-05-04 |title=fast.ai - Mojo may be the biggest programming language advance in decades |url=https://www.fast.ai/posts/2023-05-03-mojo-launch.html?ref=blef.fr |access-date=2024-05-28 |website=fast.ai |language=en}}</ref>
 
== Origin and development history ==