Content deleted Content added
m changed license. see: https://github.com/modularml/mojo/blob/main/LICENSE |
Fixed broken reference names – You can help! |
||
Line 29:
}}
| operating system = [[Cross-platform software|Cross-platform]]: [[Linux]], [[macOS]]
| license = [[Apache License 2.0|Apache 2.0]] with LLVM Exceptions<ref name="opensource">{{Cite web |last=Modular Team |title=Modular: The Next Big Step in Mojo🔥 Open Source |date=28 March 2024 |url=https://www.modular.com/blog/the-next-big-step-in-mojo-open-source |access-date=2024-11-09 |publisher=Modular |language=en |archive-date=2024-10-09 |archive-url=https://web.archive.org/web/20241009144412/https://www.modular.com/blog/the-next-big-step-in-mojo-open-source |url-status=live}}</ref>
| year = {{Start date and age|2023}}
| file ext = {{Mono|.🔥}} (the fire [[emoji]]/U+1F525 [[Unicode]] character), alternatively {{Mono|.mojo}}
Line 39:
| influenced =
}}
'''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|2024}}, the Mojo [[compiler]] is [[opensource software]] (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
Mojo builds on the Multi-Level Intermediate Representation ([[MLIR (software)|MLIR]]) compiler [[software framework]] instead of directly on the lower level [[LLVM]] compiler framework, as do many languages such as [[Julia (programming language)|Julia]], [[Swift (programming language)|Swift]], [[Clang]], 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 no direct 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>https://llvm.org/devmtg/2023-10/slides/keynote/Mojo.pdf</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>
Line 55:
The language also provides a [[borrow checker]], an influence from [[Rust (programming language)|Rust]].<ref>{{Cite web |title=Modular Docs: Ownership and borrowing |url=https://docs.modular.com/mojo/manual/values/ownership.html |access-date=2024-02-29 |publisher=Modular}}</ref> Mojo {{Mono|def}} functions use value semantics by default (functions receive a copy of all arguments and any modifications are not visible outside the function), while [[Python (programming language)|Python]] functions use reference semantics (functions receive a reference on their arguments and any modification of a mutable argument inside the function is visible outside).<ref>{{Cite web |title=Mojo programming manual |url=https://docs.modular.com/mojo/programming-manual.html |access-date=2023-06-11 |publisher=Modular |archive-url=https://web.archive.org/web/20230611225929/https://docs.modular.com/mojo/programming-manual.html |archive-date=2023-06-11 |quote=All values passed into a Python def function use reference semantics. This means the function can modify mutable objects passed into it and those changes are visible outside the function. However, the behavior is sometimes surprising for the uninitiated, because you can change the object that an argument points to and that change is not visible outside the function. All values passed into a Mojo function use value semantics by default. Compared to Python, this is an important difference: A Mojo {{mono|def}} function receives a copy of all arguments: it can modify arguments inside the function, but the changes are not visible outside the function.}}</ref>
The language is not open source, but it is planned to be made open source in the future.<ref>{{Cite web |title=Open Source {{!}} Mojo🔥 FAQ {{!}} Modular Docs |url=https://docs.modular.com/mojo/faq#open-source |access-date=2024-11-09 |website=docs.modular.com |language=en}}</ref><ref
== Programming examples ==
|