• 11 Posts
  • 977 Comments
Joined 4 years ago
cake
Cake day: May 31st, 2020

help-circle







  • So, uh, I have a colleague who studied linguistics, and when I explained to her that we write commit messages like that, her reaction was basically: What the fuck, why?

    My explanation wasn’t as sharp, as I didn’t call it “imperative” but rather just “infinitive”, which got me the immediate backlash that it’s not a sentence then, so why do you put a dot behind it?

    She did accept my descriptivist excuses explanation that we write it that way, because it’s terser, but I know it didn’t sit well with her.
    Will need to see what her reaction is to commanding the repo. 😅


  • Before the Unity suicide, I doubt it had 10% either. And you know, making games takes time, so in terms of released games, we might still not see an uptick.

    But I do think newly developed, particularly indie titles will go beyond those 10%, and maybe even quite easily so.
    There’s not many statistics out there, so here’s some horribly biased ones: https://gamefromscratch.com/godot-popularity-at-gmtk-jam-2024-explodes/

    This is from a gamejam held by a particular YouTube channel. That YouTube channel has an ongoing series about making a Unity game, nothing about Godot yet.
    But it is a gamejam, where people sit down for just a weekend to make a game, so people will be much more willing to try a new engine out. Although they’ll typically have some prior experience, since you don’t want to spend the whole gamejam learning an engine.

    But yeah, those caveats notwithstanding, that still is a significant growth for Godot.



  • Oof, I guess, you’re not wrong that we’ve defined data races to be the separate issue of thread safety, but I am really not a fan of that separation.

    IMHO you cannot cleanly solve thread safety without also extending that solution to the memory safety side.
    Having only one accessor for a portion of memory should just be the n=1 case of having n accessors. It should not be the other way around, i.e. that multiple accessors are the special case. That just leads you to building two different solutions, and to thread safety being opt-in.

    That’s also the major issue I have with Java’s solution.
    If you know what you’re doing, then it’s no problem. But if you’ve got a junior hacking away, or you’re not paying enough attention, or you just don’t realize that a function call will take your parameter across thread boundaries, then you’re fucked.
    Well, unless you make everything immutable and always clone it, which is what we generally end up doing.


  • I’m guessing, they did it this way, because there’s no persistent process to keep the decrypted files open. You’d need to ask the user for the password for every single command they run. With GPG, that persistent process is gpg-agent.

    Of course, encryption with a GPG key is also going to be more secure than the longest password you can come up with.

    I guess, many people will want access to GPG, too, if they want access to their passwords, so they’re not bothered by it.
    But yeah, I do also remember setting that up on Android, where you need a separate app to do the GPG, and it really stops feeling simple pretty quickly…







  • I mean, yeah, valid point. JVM languages also have GraalVM for that purpose.

    But I’m playing devil’s advocate here. 🙃

    Arguably these don’t count, because they’re not the normal way of using these languages. Reflection isn’t properly supported in them, for example, so you may not be able to use certain libraries that you’d normally use.

    These also still require a minimal runtime that’s baked into the binary, to handle garbage collection and such.
    Personally, I enjoy fully compiled languages, because they generally don’t lock you into an ecosystem, i.e. you can use them to create a library which can be called from virtually any programming language, via the C ABI.
    You cannot do that with a language that requires a (baked-in) runtime to run.

    But yeah, obviously someone just specifying “compiled” probably won’t have all these expectations…


  • Yeah, that is why I prefixed that whole comment with “arguably”.

    I feel like the definition of memory safety is currently evolving, because I do think data races should be considered a memory safety issue.
    You’ve got a portion of memory and access to it can be done wrongly, if the programmer isn’t careful. That’s what memory safety is supposed to prevent.

    Rust prevents that by blocking you from passing a pointer for the same section of memory into different threads, unless you use a mutex or similar.
    And because Rust sets a new safety standard, I feel like we’ll not refer to Java and such as “memory-safe” in twenty years, much like you wouldn’t call a car from the 90s particularly safe, even though it was at the time.


  • Hmm, yeah, I guess I’m wrong there.

    My interpretation was that since send/receive foots on snapshots, those would be related, but I guess, the incremental backup is actually a separate thing.
    Some articles online call them “incremental snapshots” as well, which is where I might’ve gotten that initially, but I agree that on a logical level, they’re not that, even if they’re similarly space-saving.