Raphael Luba on jai compiler internals!

preview_player
Показать описание
This time I'm joined by Raphael Luba, who is working on jai compiler (upcoming language by Jonathan Blow). This is highly technical and incredibly interesting talk! Raphael is highly experienced programmer, shipped production software in many languages and has a lot of wisdom to offer! Enjoy!

0:00 - Coming up
0:32 - Introduction
1:00 - Raphael’s Programming Background
8:05 - Founding a Maker Space Management Company
13:07 - Discovering Jonathan Blow & the Jai Language
19:02 - What Makes Jai So Different
21:00 - Compile-Time Execution & Metaprogramming
28:23 - Challenges Using LLVM
34:40 - Raphael’s Work on the Jai Compiler
50:03 - Inlined Code & Macro Debugging
55:53 - Cross-Compilation & Console Support
1:00:05 - Working with Jonathan Blow & the Joy of Jai
1:03:40 - The Road to an Open Beta
1:30:22* - Advice for Aspiring Programmers
1:40:58 - Conclusion & Sign-Off

Game Engineering Podcast

Рекомендации по теме
Комментарии
Автор

Anticipating "How to get my hands on jai?" comments:

1. Jonathan Blow is handling beta requests personally. If you want to get access you should get in touch with him. There is an old school method of "applying" which should be self-evident if you followed jai development through streams ( <- a hint )

2. The purpose of the beta is for experienced programmers to try out the language, especially the advanced features. The tooling for the language is sparse, and you need to know your way around your tools to make it work. If this excites you, instead of turning you away, that you might be fit for the job!

3. Apply if you have serious interest in spending tens if not hundreds of hours with the language, to try out its features and prototype tools. The language syntax changes, so you won't be able to use it in production yet.

4. Treat the beta access request as a job application. Show Jonathan why you're good fit for the job, what have you done in the past and what you intend to use jai for!

WookashPodcast
Автор

Man, you really get all the best interviewees. I wonder how you get these guests!

villaindepot
Автор

I miss Raphael's streams. Good to see he's well!

james-s-smith
Автор

1:33:40 what you said here might be the most useful thing I’ve ever heard. I just graduated and I’m trying to get my first full time coding job and I’ve noticed a bunch of the advice online from “experts” hasn’t matched up. Now i understand why. Thanks for the tip this will save me so much time and headaches down the road.

samuelmagilocusts
Автор

fantastic! I appreciate you having the best people on, and really giving them a chance to share what they're passionate about :)

scrubmunch
Автор

Raphael's excitement and enthusiasm for and in Jai is palpable through-screen, it's really a pity he stopped streaming; IIRC he said in his last stream that he will be back at some point.

ThatManFromGermany
Автор

I'm sad this is not 3 or 4 hours long, it's so entertaining to listen to him explain what he does on Jai

maxrinehart
Автор

1:38:34 I am in fact the senior Java engineer using Spring Boot in an enterprise environment that you are talking about.
I'm devouring Casey's and Jon's content to become a more sane developer.

Patrick_Bard
Автор

Jai beats other langs by not releasing publicly and thereby bypassing any mass public criticism - genius 😌

pookiepats
Автор

Raphael quoting from Thomas Sowell is awesome. Jai has me more excited about programming than anything else.

nathanchapman
Автор

I had no idea the one who helps making Jai lives so close to me. Appreciate the interview!

raxneff
Автор

0:00 - Jai’s Out-of-Order Compilation & LLVM
0:32 - Podcast Introduction
1:00 - Raphael’s Early Programming Journey
3:00 - Laptops in School & First Contract Work
5:03 - Diverse Tech Projects (Web, Embedded, and More)
8:05 - Founding a Maker Space Management Company
13:07 - Discovering Jonathan Blow & the Jai Language
19:02 - What Makes Jai So Different
21:00 - Compile-Time Execution & Metaprogramming
28:23 - Challenges Using LLVM
34:40 - Raphael’s Work on the Jai Compiler
42:32 - Generating Debug Info & Reverse-Engineering CodeView
50:03 - Inlined Code & Macro Debugging
55:53 - Cross-Compilation & Console Support
1:00:05 - Working with Jonathan Blow & the Joy of Jai
1:03:40 - The Road to an Open Beta
1:30:22* - Advice for Aspiring Programmers
1:40:58 - Conclusion & Sign-Off

(Generated with o1 based on transcript, might contain errors)
Edit: Change timestamp

pablo-vkyt
Автор

Part of the resason l was excited for Jai is for its simplicity. From the code samples I've seen, it's super encouraging to see code and understand what it says. The meta programming stuff has me worried. I hope it doesn't end up being a complex language at the end of all of this. *fingers crossed*

Whatthetrash
Автор

1:13:40 verifying code to be memory safe is not easy, and it is also really important if you wanna build low-level software can scale without having to manually verify everything

klasus
Автор

back to back to back to back to back to back to back to back great fucking guests and questions

LuizMoraes-xbqj
Автор

Looks like the chapter timestamps are off at the end. Very interesting conversation. Keep it up!

fille.imgnry
Автор

Jai not being released is an issue. im tryina get people into jai, and its like, i cant turn anyone on to it, given that theres nothing for them to do yet... Raphael, or someone, please tell jon to get this thing on board now. Its time, c'mon.

nikblk
Автор

34:50 yep, LLVM is much slower.
I use the X64 backend for my debug builds, and LLVM for my optimized release builds, as the X64 backend doesn't have optimization iirc.
When I first tried doing this split, I thought the metaprogram got stuck when I tried a release build (on the X64 backend it took less than a second to compile) but it turned out to not be an infinite loop... LLVM just took a few extra seconds to compile my program.

mrt_
Автор

@ Jonathan Blow & Raphael Luba: if you fancy on trying to use another compiler back end for JAI, have a look at the DMD/DMC++ compiler from Digital Mars. It's another good open source compiler made by the inventor of the D language & another long-term C/C++ compiler writer Walter Bright. It's open source but not free software, meaning you wouldn't be able to randomly distribute modified versions of it (for e.g. using it with A JAI frontend) out of the box. However, I'm fairly sure that Walter Bright & DMD would give you an unrestricted license gratis if you just explained your project to him, I mean he's been in the same shoes then you years ago having to deal with having to use obtuse & crufty compiler back ends while inventing his own language.
(unfortunately the DMD back end still only work for i386 & amd64).

FrankHarwald
Автор

I'm very excited about these extensive meta programming abilities. I am currently writing a music tracker in c++ that very heavily relies on meta programming. From a pretty high-level specification, a major part of the program is generated, mostly related to UI. However, I often run into limitations (a major pain point is the lack of reflection) and thus am transitioning more and more to generating the c++ source from python code templates.
To me it seems clear that this kind of "generative" programming is the future, however current tooling is pretty awful for it. I'd love to get my hands on Jai to play around with it.

HerrShield