The Jai programming language

7,680 views
Skip to first unread message

Olivier Henley

unread,
May 15, 2019, 4:26:09 PM5/15/19
to ParaSail Programming Language
Hey,

As you may know, a huge portion of the game industry is really tired of C++. (bread and butter there)

One of its main proponent, Jonathan Blow (creator of Braid, The Witness) is designing a programming language code named Jai.

He wants total control of the machine with most of the latest contemporary language features/ideas baked in Jai. 

In other words he is trying to capture the game industry and anyone obsessed with performance, flexibility and productivity ... by presenting arguments and results: e.g: His compiler can chunk 80k lines/second and he already produced a real game in full using Jai (3d, sound, HUD, controls etc)

He is designing the language on Twitch using a crowd of programmers to 'stress-test' his ideas since a couple of years now.

I though it was important to bring his effort to your attention because:

1) it has a lot of traction in the game programming community. (they make some of the most complex systems out there)
2) Jonathan Blow has very original ideas.
3) The guy is a 'brutally' strong programmer.
4) He exhibits a lot of pragmatism and common sense in his design.

You can get a proper overview here: https://www.youtube.com/watch?v=uZgbKrDEzAs (the game can be seen there... as the compile time)

If you want to dig more: https://www.mrphilgames.com/jai

olivier

Tucker Taft

unread,
May 15, 2019, 4:34:20 PM5/15/19
to ParaSail Programming Language
Thanks, I'll check it out.

Take care,
-Tuck

--
You received this message because you are subscribed to the Google Groups "ParaSail Programming Language" group.
To unsubscribe from this group and stop receiving emails from it, send an email to parasail-programming...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/parasail-programming-language/17c8824b-72f4-4e7d-8697-c2a74c4c47b9%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Tucker Taft

unread,
May 15, 2019, 9:06:23 PM5/15/19
to ParaSail Programming Language
Well he is certainly opinionated! ;-)

It is a bit hard to tease out from his presentations what is really interesting about Jai.  I guess we will see whether it starts to get some traction in the wider programming community.

Thanks again for the pointer.

Take care,
-Tuck

Olivier Henley

unread,
May 16, 2019, 8:51:58 AM5/16/19
to ParaSail Programming Language
From my superficial research this is probably the most up-to-date Jai primer: https://github.com/BSVino/JaiPrimer/blob/master/JaiPrimer.md

Quickly:
1. The language introspection looks really rich. He literally treats the compiler as a development 'companion'.
2. The CTFE is maybe too powerful/dangerous. (In one of the twitch session, he makes an invader 3d game only at compile time... and running. If you lose the game, the program will not finish compiling)
3. A lot of emphasis is put in 'enriching' the programming processes by integrating the 'time tested necessities' at the core of the language. eg. integrated versioning, integrated build process, etc.

That said, it is somehow more a 'supercharged hacker language' than a conceptually 'homogeneous/rigorous' application ... to the field of programming language semantics.

But yes we will see. Nevertheless, its interesting to see what a 'hardcore product shipper' thinks we need in our day to day professional activity.

Thanks,

olivier


Olivier Henley

unread,
May 16, 2019, 9:05:44 AM5/16/19
to ParaSail Programming Language
This one is recent, has some real meat, and last 15 mins: https://www.youtube.com/watch?v=roLD9-TA06Q

Ok, Im done.

Thanks,

olivier 

 

Tucker Taft

unread,
May 16, 2019, 9:44:14 AM5/16/19
to ParaSail Programming Language
ParaSail has the full power of the language available for doing compile-time computations.  In fact, it automatically computes at compile time any expression that doesn't have any external/run-time input.  So for example, you could build a parse table at compile time given a (large) string literal representing the grammar.  The full contract-based features of ParaSail, with pre- and postconditions, etc.,  are also available at compile-time, so that provides something that is effectively compile-time safety checking.  In any case, I think having compile-time computation capability is great, but I like the fact in ParaSail that is not a "meta" language, but is rather the base language itself, manipulating values that happen to be known at compile time.

-Tuck

--
You received this message because you are subscribed to the Google Groups "ParaSail Programming Language" group.
To unsubscribe from this group and stop receiving emails from it, send an email to parasail-programming...@googlegroups.com.

Edward De Jong

unread,
May 17, 2019, 4:38:53 AM5/17/19
to ParaSail Programming Language
The Jai programming language is the work of a single designer who is a long time game programmer. Because of this focus it is really designed as a C++ replacement. And he hasn’t bothered to document it very well because I don’t think he particularly care if a lot of people use it or not, and although I think he has done an excellent job in many areas it is not designed from fundamentals but is more of an empirical process. I don’t actually think it covers the same territory as parasail, which is very strong in the area of parallel competition. I do think there are some very good features Like trying not to create an external completely different syntax for the make/build process. With the addition of a few system functions you can do the make process in the language itself which is very helpful. When I look at some of the other languages and then study the make Systems a like leinigen, gradke, etc Start to despair because I don’t want to have to learn to languages to work in one. It’s annoying as hell that you can’t just program in JavaScript you will also have to know HTML and CSS, and then some people invent really complex frameworks or preprocessors so you end up with even more cognitive load just to get something done

I actually think that parasail competes with chapel and those two languages are really by themselves and what I call strongly parallel category.

You have to build into the core compiler and run time This parallel orientation You want to claim it. Elixir/erlang Are very good at concurrency but they don’t break loops down or tried to separate computation so I consider parasail very different then erlang. I am sad that the parallela project didn’t last long enough to Adopt parasail because that was the missing piece in there equation. They had this fantastic chip with a very clever design that was very low power and could’ve scale 2000s of cores, but had no programming language That would make it possible to coordinate and direct all those course profitably. The average programmer just cannot handle parallel computation, It is so full of traps and of course debugging is a nightmare because the supporting tooling is usually not there. The only other parallel language that I can remember is occam Which goes back to the inMos transputer, Which was a fascinating device but nobody could understand occam.

Zing Chen

unread,
May 17, 2019, 6:03:11 AM5/17/19
to ParaSail Programming Language
If there is a language that can replace C++ it must be ParaSail or something based upon it.

In order to replace C++, it ought to be faster than C++ on single-core. Being easier or safer is not enough. Targeting some specific parallel architectures is not enough.

How to get faster than C++ on single-core?

-- First we need proper hardware. Processors that support parallel computation on every single core must become popular. This was done 20 years ago, with the so called super-scalar architecture.

-- Second we need a language that enforces programmers thinking in parallelization and writing parallelizable code. This was done 10 years ago, with ParaSail.

-- Third we need a compiler with pervasive optimization, i.e. being smart enough to prove unnecessary all run-time checks and, of course, taking every clock cycle to parallelize computation, even on a single-core. This can happen every time in the near future. Maybe ParaSail v.9.

Once it becomes faster than C++, no programmer can resist learning and using it in new projects. Massive adoption would simply be unavoidable.

What makes other new languages less competitive to ParaSail? Well they're not simple enough to be both easy and fast. They didn't get rid of pointers, for example.

- Zing.

Olivier Henley

unread,
May 17, 2019, 11:03:32 AM5/17/19
to ParaSail Programming Language
Thank you for pointing out about Chapel and Parallella. I am looking into it and its very interesting.

Edward De Jong

unread,
May 18, 2019, 2:25:52 AM5/18/19
to ParaSail Programming Language
C++ is such an awful language for so many reasons, that a clean sheet approach is far preferable. Inertia being one of the most powerful forces in the universe, will delay/retard acceptance of improvements, and having worked on new languages the resistance is fierce indeed.

Being faster than C++ is not necessary at all; programming is mired in a low efficiency era at present, with huge costs of transferring the ownership of a program from one person to another. Raw speed of execution is of minor importance in 99% of all programs. After all, most computers are idle. So efficiency is near the bottom of the constraints outside of real-time systems which are few in quantity. What matters is ease of learning and use, and lowering maintenance costs.

Olivier Henley

unread,
May 21, 2019, 10:42:36 AM5/21/19
to ParaSail Programming Language

C++ is such an awful language for so many reasons, that a clean sheet approach is far preferable.

Totally agree. They can add all the 'const' they want, you will always end up on moving sands.
 
Inertia being one of the most powerful forces in the universe, will delay/retard acceptance of improvements, and having worked on new languages the resistance is fierce indeed.

Very well said. The company I work for has invested so much in C++ ... the only thing they are doing, kind of moving out of C++, is an adapter API in Python 3. Inertia is really key. We have so many senior and talented engineers that are super acquainted to C++ that trying to steer them away is almost impossible. They do not have time/interest to 'start over' (production skills level) and they are very excited/satisfied by the new C++XY features.
 
Being faster than C++ is not necessary at all; programming is mired in a low efficiency era at present, with huge costs of transferring the ownership of a program from one person to another. Raw speed of execution is of minor importance in 99% of all programs. After all, most computers are idle. So efficiency is near the bottom of the constraints outside of real-time systems which are few in quantity. What matters is ease of learning and use, and lowering maintenance costs.

Again, IMO you are right. A good illustration of this is the pervasive popularity of Node.js. Under absolute standards, it is not efficient nor safe, nor well designed, but people think it is easy to learn and transfer because a) is has a package manager and tons of libs, b)  zillions blog posts explaining everything and nothing and c) JS is easy to learn, super flexible and staff by itself.

Martin Vahi

unread,
Jun 30, 2019, 7:26:50 PM6/30/19
to ParaSail Programming Language

Well, another good reason to hurry up with a proper, digitally signed(legally binding in Estonia),


statement about the ParaSail stdlib license, a kind of statement that would actually hold in an Estonian/European court. The ID-cards can be obtained from Estonian embassies around the world for about 100€ (10*10€=100€). Placing an explicit statement about the ParaSail stdlib into the ParaSail source distribution would be a minimum, what the AdaCore can do. As it seems from this forum thread, the race seems to be on and history has shown times and times again that it is NOT the technically best solution that necessarily wins. Part of the context of my current post is the

(archival copy: https://archive.is/hB3KS )

which demonstrates that unless there are multiple parties developing the "core tools"(compiler, interpreter, source-to-source-translator, whatever-needed/preferred) for the given programming language by using some non-proprietary-standard, the copyrights can end up at the hands of some extortionists and the more popular the language, the greater the extortion opportunities. Even the Micro$oft learned from the Java mess and tries to shove the "Micro$oft Java" == C# intellectual property to a nonprofit


That is to say, just fixing the ParaSail stdlib legal statement issue is not enough, it's just a first step. The next step might be that there are forks like there are forks of the Chrome browser and Mozilla Firebird/Firefox browser. Say what You/me/whoever will about the technical aspects of the C/C++, the C++ is a _godsend_ from legal certainty point of view, because there exists not just multiple core technology providers, even the Java has multiple VM vendors, but the core technology(compilers, frontents, etc.) providers are well financed and UNDERSTAND that their business heavily depends on the core technology(C/C++ compilers). The same with the web "standards". Quotes, because there are so many to choose from and because they tend to describe dirty hacks that lack systematic approach. Dirty hacks they may be, but they are certainly hassle free from legal point of view, because they are not maintained by any single company or even if there is only one company that uses them, that company has at least publicly declared in the form of the IETF/W3C/etc. standard that anybody can re-implement it without paying or getting any licenses.

etc.

I hope that I'm mistaken, but as of 2019_07_01 I can't recall any languages other than JavaScript or C/C++ that would be that safe to use from legal point of view. Once upon a time, not long ago, I suspected that Pascal


might compete with the C/C++/JavaScript on being legally hassle fee and having a proper, really long term, support, but in 2019_06 (about a month ago, may be) I realized that actually the FreePascal case is just another Java-lawsuit waiting to happen, because it aims to be at least partly compatible with the Delphi, which is a proprietary language. The C/C++ is, what it is, but one of the C++ syntactic sugar option is the


which just adds another layer of dependencies and complexity on top of C++, but it can be a nice option for some corner cases. What regards to C++ replacement for Game developers, then there's also the


that has a nonprofit, a lot like the C# and FreePascal have. Without saying anything about the technical side of the C# and Haxe, I can tell that what I definitely do not like about the C# and Haxe, and Rust for that matter, is that their development tends to depend "too much" on the availability of money. The main reason, why I see that as an issue is that such projects will not survive, what I call as "financial winters", inspired from the term "AI winter".

(archival copy: https://archive.is/uENIg )

Funding WILL run out at some point and then, unless there exist some set of fanatics that keep the project usable on modern hardware and operating system combinations, the project will not be usable. A very beautiful and positive example of a project that, in my 2019_07_01 very subjective opinion, will be able to survive financial winters, is the FreePascal/Lazarus project, because it really is maintained without any centralized funding or heavy monetary donations, but, as I described earlier, the FreePascal has that proprietary Delphi lawsuits dark shadow over it. I'm not totally sure, but I suspect that may be some extra primitive "poor man's ParaSail substitute" might be created by writing some C++ OpenMP code generator that uses some domain specific language that might be implemented by using the


("Lambda Jam 2015 - Robby Findler - Racket: A Programming-Language Programming Language ")
(It's basically about Racket macros, about how to create
source-to-source translators by applying text substitutions.)


SUMMARY_OF_MY_CURRENT_POST:

x) Projects that depend on large amounts of money probably won't survive _financial_winters_.

x) Intellectual property of for-profit companies tends to get sold during liquidation and as long as a programming language stdlib copyright (think of the Oracle and Java case) is owned by a for-profit company, there is a risk that the copyright ends up at the hands of extortionists even, if the stdlib is properly open-sourced.

x) Placing all of the programming language related intellectual property to a proper non-profit is the minimum smart thing to do in 2019. Even Micro$oft does it.

x) C/C++/JavaScript are old had have their baggage, but they are safe to use from legal point of view and their baggage assures that there exists enough motive/incentive to port them to all possible hardware and operating system combinations that are meant to run general purpose non-real-time applications in non-safety-critical manner. Very roughly speaking, the Ruby and Python interpreters can be seen as syntactic sugar for C/C++ for cases, where speed and memory consumption is not that critical. It's the C/C++ that keeps the Ruby/Python usable and if ParaSail/whatever_else will be used as a dependency of such huge investments like writing Ruby/Python/PHP/JavaScript/etc. interpreter and stdlib, then it better be legally safe to use for at least 30 years, with written assurances that stand in both, U.S. courts and EU courts, alike.

Thank You for reading my post.


Luke Guest

unread,
Sep 15, 2019, 10:42:16 AM9/15/19
to ParaSail Programming Language
Hi,

I want to add my 2p ;)


On Wednesday, 15 May 2019 21:26:09 UTC+1, Olivier Henley wrote:
Hey,

As you may know, a huge portion of the game industry is really tired of C++. (bread and butter there)

When I worked in the games industry 14 years ago, I was told by the "boss" that "we use C++ because Microsoft does." Then later we changed to C, both are crap.

One of its main proponent, Jonathan Blow (creator of Braid, The Witness) is designing a programming language code named Jai.

He wants total control of the machine with most of the latest contemporary language features/ideas baked in Jai.

There are 2 main points to Jai:

1) The compiler is also a build tool, using meta programming.
2) The language has to reduce cache misses.

2 is handled by AoS or SoA so that accesses to structs/arrays use cache locality and don't produce as many misses, this is the case in arrays you pass to GL/Vulkan with vertices and texture data.

 
In other words he is trying to capture the game industry and anyone obsessed with performance, flexibility and productivity ... by presenting arguments and results: e.g: His compiler can chunk 80k lines/second and he already produced a real game in full using Jai (3d, sound, HUD, controls etc)

He says in one of his early videos that he wanted a proper module system and not include files, then implemented include files. Any respect I may have had was lost.

I saw a good point about Jai recently, that it is vapourware until it's released.

He is designing the language on Twitch using a crowd of programmers to 'stress-test' his ideas since a couple of years now.

I though it was important to bring his effort to your attention because:

1) it has a lot of traction in the game programming community. (they make some of the most complex systems out there)

A lot of sheep there.

2) Jonathan Blow has very original ideas.

Does he?

3) The guy is a 'brutally' strong programmer.

Is he really?

4) He exhibits a lot of pragmatism and common sense in his design.

Hmmm...

You can get a proper overview here: https://www.youtube.com/watch?v=uZgbKrDEzAs (the game can be seen there... as the compile time)

If you want to dig more: https://www.mrphilgames.com/jai


I think he's pretty arrogant, but not at the same league as Dave Acton who has a very punchable face, there is video talk he did about data oriented design talking about caches and all that, yet chooses to use C/C++ for this, but keeps pulling a weird face at the camera, very annoying. Anyways...


I think you'll have a hard time convincing game programmers to use Parasail because of where it's coming out of, just like you can't convince them to use Ada, even though it's clearly a better choice, ask John Carmack. But, if you can implement AoS / SoA in ParaSail, that'd be a start.

Luke.


Luke Guest

unread,
Sep 15, 2019, 10:46:00 AM9/15/19
to ParaSail Programming Language
Also, there is Odin by Ginger Bill, which is similar in design and scope to Jai.

Conrad Steenberg

unread,
Sep 16, 2019, 5:29:38 PM9/16/19
to ParaSail Programming Language
Hi Luke,

I personally think any new systems programming language that is not sufficiently different from go and Rust will have a very hard time gaining any traction, especially if it's a personal project. Jai and Odin look like they are fun to play with though!

Parasail is attractive to me because I write server code in Elixir by day and appreciate the way that the former combines multi-core concurrency with strong type checking and native compilation. It's a higher level language that's not really a great fit for game programming as is.

Hoping to see a more open development model in future so an active community can coalesce around it.

Best,
Conrad

Luke Guest

unread,
Jun 17, 2020, 11:58:03 AM6/17/20
to ParaSail Programming Language
Sorry for the late reply, I've literally just seen this as I don't come here much.


On Monday, 16 September 2019 22:29:38 UTC+1, Conrad Steenberg wrote:
Hi Luke,

I personally think any new systems programming language that is not sufficiently different from go and Rust will have a very hard time gaining any traction, especially if it's a personal project. Jai and Odin look like they are fun to play with though!

Any new programming language needs to get rid of pointers, but still be able to do low-level work at a higher level. That alone can usurp Odin, Jai, Go and Rust.

Implementing features like AoS and SoA (which he didn't invent, ACM has papers on this from at least 2015 that I've found so far, might even be earlier ones) would also be useful, especially for performance. TBF, any of the performance related features Blow and Ginger Bill want to have are worth investing in.
 
Parasail is attractive to me because I write server code in Elixir by day and appreciate the way that the former combines multi-core concurrency with strong type checking and native compilation. It's a higher level language that's not really a great fit for game programming as is.


Yes, multi-core is important, especially in a new language.
 
Hoping to see a more open development model in future so an active community can coalesce around it.

I'm sure AdaCore has it locked down :D


Tucker Taft

unread,
Jun 17, 2020, 2:52:01 PM6/17/20
to ParaSail Programming Language
On Wed, Jun 17, 2020 at 11:58 AM 'Luke Guest' via ParaSail Programming Language <parasail-progr...@googlegroups.com> wrote:
....

On Monday, 16 September 2019 22:29:38 UTC+1, Conrad Steenberg wrote:...
Yes, multi-core is important, especially in a new language.
 
Hoping to see a more open development model in future so an active community can coalesce around it.

I'm sure AdaCore has it locked down :D

Don't be so sure...  Goal is definitely to open ParaSail up.  I am freeing up significantly more of my time starting in July, and plan to open up development of ParaSail, along with getting serious about several other projects, including a distributed, incremental version of ParaSail, tentatively dubbed "ParaDISO" (Parallel, Distributed, Incremental, Streamable Objects ;-).

Take care,
-Tuck


--
You received this message because you are subscribed to the Google Groups "ParaSail Programming Language" group.
To unsubscribe from this group and stop receiving emails from it, send an email to parasail-programming...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages