Compiler Beta Q&A, March 4, 2023

Поделиться
HTML-код
  • Опубликовано: 1 окт 2024
  • Questions, and Answers.

Комментарии • 94

  • @user-tt4dy1ti5v
    @user-tt4dy1ti5v Год назад +15

    00:00 _(Introduction)_
    00:50 How exactly does Jai's 'memcpy' handle overlapped ranges?
    10:30 What are some cases when using compile-time execution instead of run-time (and vice-versa)?
    15:55 Are there advantages in placing #imports at the bottom of the source file instead of the top?
    20:50 When are you sharing the general language roadmap?
    23:45 Can you walkthrough how macros & functions calling macros are compiled?
    32:02 Why would you not make the 'z' variable in previous question's macro demo a function parameter?
    33:15 The way that 'for_expansion' builds an 'it_index' variable to insert in code is very difficult to replicate in my own macros.
    38:45 Does 'for_expansion' become less special as 'it_index' become available for regular macros?
    41:35 I was surprised that the following Jai code [involving address of address of variable] works: _b := 3; p := **b;_
    47:25 How come 'context.allocator' works as a default argument in functions even though it's not constant?
    49:20 Are closures/captures still on the roadmap?
    49:40 Is it legal to modify a compile-time string literal?
    51:25 Seems like more and more people require #poke_name mostly for data structures like Hash_Table to able to see custom == operators.
    01:08:50 Can you use scope directives to access file-scope stuff?
    01:10:05 Can you talk about linkers?
    01:10:55 Has Jai changed the way you build game tech?
    01:12:55 Are there benefits/drawbacks to include a small scripting language into Jai for games?
    01:16:19 _(Update about the drawbacks of scripting languages.)_
    01:18:13 Thoughts on exploring passing a bunch of code containing procedures & modules to another module to exposed declarations, checks implementations or generating stuff?
    01:19:10 Will there be a function added to simply read from console?
    01:20:30 Plans for SIMD data types such as s64x8 and using SSE for them in Jai?
    01:25:40 Have you tested/validated the 64-bit integer as the default 'int' type?
    01:32:40 How is the experiment with non-constant struct literals going?
    01:34:15 Where is the explicit license file for the compiler?
    01:34:45 Is there a 'how_to' that has info on printing a macro #expand a la Program_Print.jai?
    01:36:05 Could you do something where you can combine different scopes by labeling scopes?
    01:40:10 What are modules exactly? Am I able to use static polymorphism / static dispatch with several modules?
    01:41:40 _(There is an example of reading from console in modules/Process/examples/run_programs_in_parallel.jai )_
    01:41:55 Are there drawbacks to make 'float' type 64-bit by default?
    01:45:55 Did you also exclude LLD from the Win11 antivirus?
    01:47:00 How would you define entity structs to handle alot of types?
    01:49:55 Is it a good idea going forward to name procedures very generically? [i.e. add() instead of array_add()]
    01:51:45 What is the preferred to do virtual functions?
    01:57:05 Are you looking for more example programs?
    01:55:55 Is there a better way to catch up with compiler updates other than reading the CHANGELOG file?
    01:58:30 Do you generate a syntax tree for the entire program or separate for each function/file/etc?
    01:59:23 Plans to have inline assembly support arm64 and other architectures?
    01:59:45 _(Jon gets chai ice cream from the refrigerator.)_
    02:00:20 Can you give everyone in Twitch chat access to the closed beta?
    02:01:30 Is paid beta still in the works?
    02:02:00 Is there a way to make beta access paid so people can contribute money-wise?
    02:03:12 Why do you dislike smart pointers?
    02:04:35 Do you think SteamOS will lead to consoles becoming commodified?
    02:04:50 What is Sony's value-add when any Linux box can run any game?
    02:05:10 Can you explain how #import works?
    02:05:40 Are language server protocols (LSP's) important?
    02:06:10 How does calling OpenGL from compile-time execution work?
    02:08:15 Isn't bug-prone for GetRect & Hash_Table modules to always check if the module has already been initialized?
    02:08:45 When using LLVM backend with optimizations, do any of the undefined behavior (UB) nonsense need to be considered?
    02:10:05 Did the LLVM 15 update end successfully?
    02:11:25 Is x64 backend generated from a custom intermediate representation (IR)?
    02:11:47 Would you consider single static-assignment (SSA) a good idea on IR's?
    02:14:55 Could it be a language feature / metaprogram which makes these API's lees bug-prone to write?
    02:16:05 Which programming books did you learn from?
    02:16:45 Was the LSP talk you were referencing in the 'Preventing the Collapse of Civilization' talk?
    02:17:05 Why did the Jai compiler get slower?
    02:18:40 Will you write your own programming book?
    02:19:00 Can you create an immutable array of characters on the stack?

  • @sanjacobs6261
    @sanjacobs6261 Год назад +47

    "I don't wanna go on this rant again" Please do, the rants are what I'm here for, I always learn so much from them. Thank you for doing these.

  • @SeanStClair-cr9jl
    @SeanStClair-cr9jl Год назад +31

    Why is it just genuinely so delightful to watch something get made. Idk. I am way off my creative game but these streams are fun, gotta catch more of them

  • @darak2
    @darak2 Год назад +10

    The notion that a programming language should have holes that are filled by the hardware is as important as forgotten nowadays. When a simple operation in the programming language does not map to a simple operation in the underlying hardware (or, even worse, it maps properly *in some hardware* but not in others), performance becomes unpredictable and, often, unacceptable.

  • @gilbertfrausto
    @gilbertfrausto Год назад +46

    Is this the 10 year anniversary of the private compiler?

    • @Gameboygenius
      @Gameboygenius Год назад +8

      The Witness took, not quite 10 years, but it was sure worth the wait.

    • @gilbertfrausto
      @gilbertfrausto Год назад +9

      I mean has been working on this for almost 10 years and compiler still in closed beta

    • @iconelias508
      @iconelias508 Год назад +1

      10 years! 😲

    • @sporefergieboy10
      @sporefergieboy10 Год назад +3

      YEAR TEN
      GIVE IT UP FOR YEAR TEN

    • @junosoft
      @junosoft Год назад +1

      I thought he started in 2014;

  • @TankorSmash
    @TankorSmash Год назад +10

    Thanks for muting the mic when eating!

    • @sanjacobs6261
      @sanjacobs6261 Год назад +2

      Counter opinion: It removes some of the vibe of chillin' and having a snack

    • @TankorSmash
      @TankorSmash Год назад +2

      @@sanjacobs6261 I guess that's true! I listen with headphones and it drives me crazy to have someone's chewing fed directly to my ear but I can definitely imagine it being pleasant for someone!

  • @yezariaelll
    @yezariaelll Год назад +25

    Jai beta sounds like so much fun, damn I'm envious.

    • @TheGag96
      @TheGag96 Год назад +4

      Send an email and ask to get on! He is adding people - if you just send a request showing earnest interest in the language and helping out, I'm thinking he'll let you in. That's how it went for me.

    • @yezariaelll
      @yezariaelll Год назад +2

      @@TheGag96 Oh, I see. That sounds cool and I'll give it a shot, thanks for encouragement.

  • @u9vata
    @u9vata Год назад +4

    I highly agree to not try doing C++ OOP like virtual functions. Even in C++ I totaly coded a whole codebase without basically nearly none virtual functions at all - its generally a bad idea to be honest and painful to performance in most cases.
    I think 64 bit integer might really worth A/B testing - at least to measure how many of the bigger data structures size grow! I mean maybe you shouldn't even try to make it 32 bit, just add some measurement code around the compiler placing that down and measuring how many times bigger data structures grow (or whole memory use). I think its because of cache trashing for unnecessarily big values.
    FYI: On linux, there is possibility (a patch to the kernel or a config param if I remember) to make all pointers even 32 bit on 64 bit OS for the same reason - and its usually really a huge memory gain (and also in data cache it is a gain). So some people do 64 bit OS with 32 bit pointers just for this reason. But the point being however is that this being default okay.. but likely people who want performance would use 32 bits when needed. The size overhead only counts in the elements of the array having int elements - not for the arrays size hidden member though.
    Sad for relative pointers maybe leaving because they seem like awsome idea - actually I was thinking of something very similar for an embedded little OS for a project in C where I was thinking doing something similar for a very simplistic (simpler than malloc) memory management... So in there all pointers would be relative to be honest always, because I wanted to move whole applications address spaces around sometimes - without having complicated stuff like hardware supporting page translation like on PC and stuff... If I understand it correctly its mosly because LLVM handles the relative pointers too slow with its update for some reason???

  • @UncoveredTruths
    @UncoveredTruths Год назад +9

    when u finish sokobahn itd be cool to see like a demo of all the use cases of jai that you were really pleased with

    • @Muskar2
      @Muskar2 9 месяцев назад

      Late, but many of them are written into the 'how_to' and 'examples'

    • @UncoveredTruths
      @UncoveredTruths 9 месяцев назад

      @@Muskar2 sadly, i still don't have access :(

    • @Muskar2
      @Muskar2 9 месяцев назад +1

      @@UncoveredTruths I assume you've applied? I can relate, since I also had my fingers tingling with trying it out and couldn't wait - until eventually I got in. I'm sure you'll get access eventually.

  • @enzi_official
    @enzi_official Год назад +3

    What's the endgame for JAI? It's probably been answered but maybe someone can answer me here?
    Like, I'm not capable of writing a whole engine but find this whole thing very interesting when it comes to game dev. Will Jonathan release his engine?

    • @pearljamrules1
      @pearljamrules1 Год назад +2

      Yes he’s planning on releasing the source code for the game/engine with JAI. Whenever they’re both done.

  • @CasimiroBukayo
    @CasimiroBukayo Год назад +3

    Jeeez man! Just release the compiler to the public! I'm in my 40s now. Am I gonna wait till I hit 50? 😂

  • @SEOTADEO
    @SEOTADEO Год назад +2

    It would be great to have something like the Rust book for Jai

  • @timstevens3361
    @timstevens3361 Год назад

    is it me or is . . .
    Github VS Code n Visual Studio
    just scanning and scamming
    everybody's source code
    and stuffing it into GPT4 ?
    am i the Only person that thinks that ?

  • @deth3021
    @deth3021 Год назад

    Memory has just been an alias or wrapper dor memmove for at least a decade... AFAIK..

  • @dnkreative
    @dnkreative Год назад +2

    You're doing awesome work! Is there any chance to take a more closer look and take participation in beta testing? Or at least to have documentation and examples of the language use (even without a compiler). I saw some interesting thoughts on your screen during these streams which I'd like to study.

  • @mldy1
    @mldy1 9 месяцев назад

    5:00 actually memcpy is significantly faster than memmove (on modern hardware), the speed increase is from being better able to use SIMD instructions which u would not be able to use as well if the src and dst were overlapping

  • @keroppl86
    @keroppl86 Год назад

    Martin Richards solved the problem of exposing symbols across modules in BCPL via a global vector. Symbols could be inserted into it with a simple GLOBAL { label: index; ... } block. No need for a linker or anything fancy. Hardware constraints were much greater in 1968, but definitely worth considering.

  • @InfiniteQuest86
    @InfiniteQuest86 Год назад

    This code pretty clearly references x64 registers. So can it not work on others like AARCH64 or x86 or ARM?

  • @WIImotionmasher
    @WIImotionmasher Год назад

    The How To file has development philosophy suggestions lmao.
    It's incredibly on-brand. Not saying it's a bad thing.

  • @svaira
    @svaira Год назад

    Regarding the memcpy example, this might just be that the C library memcpy is better than necessary by the spec, or that it copies bigger blocks at once (usually whole mempages) so that the overlap may not have had an effect

  • @LogicEu
    @LogicEu Год назад

    I absolutely admire what you are doing with the jai language, would love to toy with it! Nice video!

  • @Supakills101
    @Supakills101 Год назад +7

    I will look forward to playing Jonathan's next game in 2050.

  • @anzhel3268
    @anzhel3268 Год назад +1

    thanks for uploading

  • @VACatholic
    @VACatholic Год назад +4

    I think the "every program needs a common style and has to look the same" really took off when every single new grad was coding in python. And python, while it's not javascript, is a really shit language, and incredibly annoying to collaborate in if you don't use the same style due to the fact that white space is important, which is just ridiculous. So it's good that one of the worst programming languages in the world, python, is responsible for ossifying programming language structure across the board because people are idiots.

  • @rationalcoder
    @rationalcoder Год назад

    Hoooolllddd. Hoooollld. Immediate precedence over anything I am currently watching.

  • @adicide9070
    @adicide9070 Год назад

    there's basically struct embedding, like in GO. you have a base entity and put that as an embed inside of your more specific-type entity. works fine there too.

  • @BlitzToon
    @BlitzToon Год назад

    Is the reason why you named the language Jai is because of chai ice cream?

  • @nexovec
    @nexovec Год назад

    Oh how great this is, Jon's really enjoying this language.

  • @MurtagBY
    @MurtagBY Год назад

    Is there any concept of asynchronous IO in the language?

  • @m4rt_
    @m4rt_ Год назад

    I hope that it isn't long until this Language becomes public, or that I somehow get beta access.

    • @RogerBarraud
      @RogerBarraud Год назад

      I'm guessing that "Somehow" involves asking Jonathan 🙂

  • @r4s3
    @r4s3 Год назад

    How is your brain so fast

  • @blenderpanzi
    @blenderpanzi Год назад +1

    Can macros have out parameters? Not just a single return value, but a bunch of things to which the macro can write.

  • @joshuaworman4022
    @joshuaworman4022 Год назад +1

    the one thing i really want from macros is to have tables of macros that compile to a switch statement or something.

    • @Muskar2
      @Muskar2 9 месяцев назад

      usage example?

  • @gordonabernathy3071
    @gordonabernathy3071 Год назад +3

    must be fun working with you, watching these rants all the time 😆

    • @RogerBarraud
      @RogerBarraud Год назад

      Sign me up 🙂
      If we can recruit Bryan Cantrill too, that'd make the perfect work environment 🙂

  • @machka6
    @machka6 Год назад +3

    hi

  • @brianmahoney4156
    @brianmahoney4156 Год назад +3

    Mr blow I’m very worried about AGI. Is this issue on your radar?

    • @krux02
      @krux02 Год назад +4

      My recommendation would be to learn about limitations of AI. Then it becomes less frightening.

    • @astroid-ws4py
      @astroid-ws4py Год назад +1

      It is just corporate nonsense, learn how those systems work. AI is basically a hype name for statistics and probability over huge amounts of data and in the case of robotics it is a hype name for trigonometry, But those names do not sell to the wider audience so the corporates choose to call that AI so they may sound cool.

    • @crasyguy74.63
      @crasyguy74.63 Год назад

      manchils

    • @crasyguy74.63
      @crasyguy74.63 Год назад

      manchild

    • @crasyguy74.63
      @crasyguy74.63 Год назад +1

      worried about markov chain

  • @jeanbonnot5446
    @jeanbonnot5446 Год назад +1

    Imagine, if you can, creating a new programming language with semicolon line endings in 2023...

  • @hannes5188
    @hannes5188 Год назад +3

    when will we see the compiler written in jai (as for example done by the creators of the wonderful jakt language) as ultimate proof of concept for the robustness & superiorty of this language over c++?

    • @henningsommer1257
      @henningsommer1257 Год назад

      @@cookednick I would agree if it was a AAA game with high requirements, but Sokoban? And just think about how much faster & less error-prone the compiler would get, unless it was all marketing buzzwords 😀

    • @Elrog3
      @Elrog3 Год назад +8

      @@henningsommer1257 Do you think his standards are not up to AAA standards? Do you think he's just making a generic, basic indie game? Have you seen The Witness?

    • @sanjacobs6261
      @sanjacobs6261 Год назад +1

      @@henningsommer1257 The speed issue is largely due to LLVM and the linker. Self hosting would not solve that. Getting rid of LLVM and the linker would solve it, even if they stay in C-land.

  • @snowballeffect7812
    @snowballeffect7812 Год назад +7

    I wonder why it's not open sourced. Very strange.

    • @sumofat4994
      @sumofat4994 Год назад +12

      So many good things are closed source. Why would you say that?

    • @snowballeffect7812
      @snowballeffect7812 Год назад +8

      @@sumofat4994 is this supposed to be a reason? lol wtf

    • @AlexanderThomasHaselton
      @AlexanderThomasHaselton Год назад

      so idiots like you keep their opinions to themselves

    • @snowballeffect7812
      @snowballeffect7812 Год назад +8

      @@danielmoore7105 thank you for a reasonable answer. I didn't realize there were so many weird sycophants in this community lol
      We'll see what happens when he's "done".

    • @snowballeffect7812
      @snowballeffect7812 Год назад +2

      @@AlexanderThomasHaselton you ok, kid?