program_whiz
2 days ago
My comment on Jai is that it is a language with some conveniences, but ultimately no strong reason to favor it. Similar to zig, odin, and others, its basically just C with some syntax conveniences.
It has some design choices that I appreciated at first, but are really strongly suited to a particular way of writing games, and I wouldn't call it general purpose (those same design choices are very limiting in other domains).
I do appreciate compiler speed, but ultimately I bounced off of it because the slight improvement in syntax doesn't justify losing massive tooling, libraries, docs, support, etc.
The language is also quite quirky in its conventions, which I think is due to Jon Blow's style, but which can feel quite odd to anyone who has a wider breadth of programming (than just custom game engines).
Also of course, any contributions or suggestions are met with the typical JB politeness and charm :)
All the flaws people mention here, are simply because you just don't get what a genius he is, those are actually features!
davemp
2 days ago
> Similar to zig, odin, and others, its basically just C with some syntax conveniences.
Extremely reductive and untrue. As someone who still writes/deals with C daily, there is room for a successor that still attempts to be a thin wrapper around an abstract CPU. The C type system and preprocessor has some glaring flaws that are not fixable in a backwards compatible way.
program_whiz
2 days ago
Yeah I'm sure there are some people who just want C with better syntax and faster compile times, for them I think it could be fine (assuming they don't need well tested 3rd party libs, an ecosystem, documentation, portability, or robust tooling).
I just meant as my general purpose goto language, I couldn't add to the roster. C++ is already filling that niche for me (except with all the aforementioned benefits), python for scripts, C# for a solid GC lang, there's just no place for a scrappy quirky lang with lots of sharp edges and no value propostion.
I'm just not sure why you would choose _this_ language for those needs. There are like 10 new langs that are all trying to be "the next C" and they all kinda suck (Jai included). I dunno, for me none of them had the same kind of feeling that you get from the really top-tier languages, they all felt like "we took C and solved these annoyances" not "we had a fundamentally new vision".
ccapitalK
2 days ago
Yeah, I find that a lack of a GC means that I don't reach for these languages unless I have a reason to think I really need that level of performance, you lose too many conveniences, the perf gains are usually not worth the investment of thinking through memory ownership. The only language of this class that I regularly use is D, in that lang I can remove all the GC parts for things that do have such perf reqs while reusing most of my GC code, but the things I can do with GC end up being really concise and easy to read, while still being faster than the equivalent python :shrug:.
To be fair to Jai, Odin and Zig, there are definitely software libraries/applications that the world would benefit from having, where this level of performance is basically required. The standard tends to be C++ these days (Rust is rapidly gaining ground, but it's still inconvenient in cases where you frequently need to abstract under the allocator), and I think everyone is looking for a way to not have to write c++ for this stuff.
elcritch
2 days ago
For me Nim hits the sweet spot since 2.0 moved to ARC/ORC. All the benefits of GC for programming but it's much easier to control allocations and memory when desired. Plus I can run it as a script or compile to JS. I'd put Swift in a similar category too. Not compiling to JS but that it gives good control over memory while being automated via its ARC.
satvikpendem
2 days ago
Interesting. I feel similarly but use Rust since I don't really have to think about GC or non GC, I use it more as a modern StandardML or OCaml but with much better performance.
npn
2 days ago
Disagreed. C with syntax conveniences is what most people need.
program_whiz
2 days ago
There is a contingent of people that truly believe this, and I feel like that is what is motivating a lot of these "better C" languages. For me, those languages always leave me realizing I need to implement my own v-tables in 2026.
God help you if you are doing multi-threaded with closures and callbacks, web programming, something high level like ML, etc. I feel like the thesis statement of Jai starts with "Ok, so lets assume most programmers are trying to program custom game engines...". True for a very limited set of people, but makes it very painful to use generally.
Its the same feeling you get trying to use Unreal for anything except 3D first person shooters. Its possible, it just doesn't feel very good, and you start to see all the quirky assumptions of the framework.
Jtarii
2 days ago
I think you are confused maybe, Jai is made by a game developer, to make video games. Whatever exists in the language is there primarily to help video game developers make video games.
At no point did Jon Blow make the claim that Jai would be a good language to do web development with. It is a low level system language, if you are making something that requires low level systems language features then you will probably like Jai.
program_whiz
2 days ago
Agreed, its just his idiosyncratic styled language for doing so. Like I said in another comment, using it for any other purpose feels like using Unreal Engine for anything but 3d first person shooters. You're going to have a bad time if you're making a 2d mobile-first puzzler. And that's why I don't see it gaining much traction (probably in the neighborhood of gdscript, haxe, or verse).
If you are making custom game engines, Jai has some conveniences (especially if you don't use any libraries or care about docs, ecosystem, community, etc). And if you really like "roll your own" with a dash of "everyone thinks I'm nuts but I'm just that much smarter", its perfect. Its one step above "I wrote my own scripting language".
creata
2 days ago
I don't want syntax conveniences, I want fewer footguns. C has so many ways to trip you up that aren't inherent to its domain. Are any of these new languages better in that regard?
program_whiz
2 days ago
Somewhat, in terms of macro munging vs actual templates and other conveniences yes, however its still very possible to have unsafe memory operations and to accidentally create unexpected behavior. They have their own footguns in some ways, for example Jai's use of arenas can be tricky in more complex programs (e.g. you stored a value with a reference or array, the arena expired). Great for games, bad for most normal code.
Hence why I say, if you are doing complex / multi-threaded code, good luck to you.
This is why the GC and memory safe languages have mostly taken over. They have even more ergonomic syntax, and none of the footguns. You can still do all the normal pointer casting / abuse type stuff in most of these languages too.
npn
2 days ago
please. think about it a little more.
it is true you dont want to trip you up by the language you use, but look what people actually use the languages, not by theory.
almost nobody writes the high performant code directly, usually they just call some libraries that do the job instead. if you are the library writers, then sure, that's a different matter (but people have been doing it forever using c/c++), but for people who use the libraries to write the code, they don't care about any of that.
many people rather pick python, lua, ruby to write applications, even games, despite the low performance of the scripting language, but they don't care. and if it is only the scripting aspect of the whole framework (implemented in C++) then the speed lost is even less.
heck, even for rust, the core libraries always need unsafe blocks, despite they do not recommend user code to use them. it is the same story everywhere. the hard part will be write by more experienced people (and with more effort), the typical users just write domain logic instead.
so, for most people, they indeed need simpler languages with lot of syntactic sugars for better developing experiences.
creata
2 days ago
We already have plenty of great languages for those use cases.
bigstrat2003
2 days ago
So what? Even if most people don't need to write low-ish level code, the fact remains that there are also many people who do (notably for this discussion, game devs). Should a language not exist to make their lives better just because it's not relevant to people doing a web service?
ale
2 days ago
You should look into Jai’s metaprogramming features, which are ahead of everything else out there. Zig is really the only language exploring some of the same concepts with comptime, but doesn’t even come close.
program_whiz
2 days ago
Yeah I wrote some metaprogramming stuff, but to me it felt like run a python script and use python AST to manip the program. Its basically just a program that runs and has hooks into the compiler steps and the code.
This left me feeling like "I wish I had decorators and annotations" from other languages, not a way to write arbitrary compile-time code. The use case for that is so rare, and kludgy, that I don't think its worth it.
Now it did shine with basic hygenic macros, which felt useful and solid. Its basically how C macros should have been done originally (a function that emits code at compile time). However conventions like $Code where a bit jank imo, again felt like using someone's home-spun scripting language, rather than a well thought out solid design, versus something like Rust's Syn.
I know Jon Blow hates "design by committee", as he is so much smarter than others, but honestly a lot of this felt like listening to any sane reviewers would catch this stuff. I mean really basic stuff like #cast which reads like a compile-time macro/pragma, but its actually a runtime cast? Or mixing casing conventions, underscores or not, etc. Names of modules are all over the place, it just feels like one dude trying to make a half-baked lang over a long period while being distracted doing 20 other things.
phplovesong
2 days ago
What can i do in Jai i cant in, say Zig? I have never use Jai so im curious. I really how Haxe does metaprogramming, its incredibly powerfull. But not sure how Jai compares.
In Haxe i can pretty much do anything, run code, generate code, i even built an openapi doc on compile time just from types.
z0ltan
2 days ago
[dead]