I just spent a fair bit of time on the official site, and I still don't think I have a very good grasp of what problem this language aims to solve, or why I would select it over other similar languages
Very excited for Mojo once it's open sourced later this year.
Chris Lattner said in a Developer Voices podcast interview:
"Swift in a way was syntactic sugar for LLVM, at the very bottom of the stack it could talk directly to LLVM primitives. Mojo does basically that same trick, but it supercharges it by moving to this MLIR world."
Why? Because it uses MLIR? Rust has its own MIR, it's even more not-LLVM-wrapper.
https://mojolang.org is a lot better as a introduction to the language for a programmer, at least for me, compared to whatever I could find on the modular.com website.
I hope with 1.0 (havent fully read the article yet) they stop breaking language features / syntax because they did quite a few different changes over time, their overall goal is to be a fully native superset of Python.
I do see this one overtaking Nim over time, which kind of saddens me, because I like Nim for what it is, but Mojo trying to be a superset of Python is a no-brainer for most Python developers. Reminds me of how a lot of Go devs were former Python devs not C++.
Much better options out there. Python already has libraries like Pydantic that offload performance to functions written in Rust under the hood.
The alternatives would be stuff like CUDA
Hmm, I've been under the impression that at one point they said it'd be 100% FOSS by the time 1.0 hits, but maybe I misunderstand/misremember the details. But I remember they'd said it'd be FOSS in connection with 1.0, seems weird to do it this way instead of waiting until it's all FOSS then cut 1.0.
Clang actually has replaced most GCC forks exactly because vendors can keep the fork closed source.
It was just a different culture. There was no expectation that everything should be free.
AMD/NVIDIA/Intel now having first class support for Python DSLs or GPU JITs for their APIs, and Julia as well.
In fact, GCC was largely ignored until Sun decided to split SunOS into two SKUs.
Lastest OpenCV 5 release notes also had a lot of LLMisms.
I guess that's the new normal. Still, I am very hopeful for Mojo.
Hard to decide if the blog post is wild, or people's visceral reactions to it.
I've said it before: I believe the obsession in trying to figure out if something is AI generated will soon be classified as a mental disorder.
Yeah, that really made me triple-check if I visited a fake SEO spam website instead of the official OpenCV one. The fact that their blog looks exactly the same every single low-effort AI content farm doesn't help either.
Did they think that image would make them look fun or interesting? Because it's exactly the opposite.
So maybe an AI image isn't the worst.
Yes, so basing confidence on it is totally bogus. Such comments are cheap and add nothing to the discussion of Mojo reaching 1.0 status.
Not to worry though, if there’s nothing webshit accessible in the content there’s surely something wrong with the CSS to complain about!
I tried Mojo a bit early on and decided to come back to it when it was more complete, and in the interim I read some comments somewhere that the superset-of-Python part was being walked back from.
On https://mojolang.org/docs/roadmap/ it's stated (Phase 3) that "Mojo may or may not evolve into a full superset of Python, and it's okay if it doesn't."
I feel like that "full superset of Python" part was part of the appeal of Mojo.
Personally I'm kind of tired of 97% python-compatible this-and-that. Python itself has enough of a history of incompatibility and the cognitive overhead in switching might be easier with just moving to a totally different language. But maybe not — it depends on the details I guess.
Honestly reading through the documentation more and more I'm more and more confused about what the 1.0 release actually means.
It seems like a deliberate pivot towards creating an AI-era language which make GPU programming as easy as writing Python.
Why not now though? Why wait for 4 more months? What magic is there to hide in just making it source available at least.
That's the favorable interpretation, atleast.
At this point I find it deeply troubling that it isn't open source. I respect Chris I know folks who have worked with him and but at the end of the day I feel too weird about this entire closed source programming language thing.
If we complain to Nvidia about there weird closed source limitations, I think Mojo is just as bad. You don't even know what your compiler might be doing, and if it does something wrong you can't fix it, you now have to file a bug and wait until the gods from above come to your rescue.
I have had similar issues with drivers, I have faced soo many driver bugs in my work and the answer is always write more code that works around it somehow, this warp level is bad, this feature doesn't work with these values, etc. etc. Why can't I fix them, I have often on Linux just pinged the Mesa team about driver bugs with a rough draft of a patch and gotten it fixed, I can even patch and run it myself when I am in a hurry.
I feel like atleast making stuff, source available like Unreal should be the baseline for any "core" software where a bug could possibly be a major blocking issue for a developer. Windows and Mac are very bad with this.
Mac's CoreML has had soo many bugs over the last couple years I have had to email someone I know at the company to get them fixed or try to get into contact with someone.
Intel's drivers have had bugs too but I have had more contacts there which is a wash. AMD well it's AMD...
Either way closed software sucks I don't want to use fully closed stuff unless I don't have a choice people can make what they want of it. I don't really care.
I care much less about just foss.
Am I understanding the current state of things correct?
They should show some performance comparisions between PyTorch and Mojo, PyTorch+kernel compilation + Triton vs Mojo, ThunderKittens vs Mojo.
The fact that they release 1.0 without doing this, I think says a lot. I personally haven't even started looking into Mojo because of the closed source stuff, but usually you can tell what's going on by looking for what's obviously missing.
But I hope they succeed, it's a very interesting approach. Then I will jump on it later on. S
This gave me a chuckle. When I think of languages evolving their standards, I do think of C++. But not, you know, in a good way.
(And now in the age of LLMs, the barriers to get started with a new programming language are lower than ever)
Additionally, anyone who has seen how Swift evolved should be wary of Lattner saying "the language is mostly stable", or even "the language is released".
Nvidia is also a major contributor to MLIR, which they use for TileIR and ClangIR, so should a compatibility break occur it wouldn't be entirely up to Mojo to fix it.