236 pointsby avaliosdev3 months ago16 comments
  • rf153 months ago
    > due to the mlibc code using the char value from the format string, the values above 127 passed by OpenJDK would be handled as negative integers

    It's 2025 and I still don't get why Java needed signed chars and bytes. Why completely disregard the convenience of using them for array access/etc..

    • pjmlp3 months ago
      Easy,

      > Gosling: For me as a language designer, which I don't really count myself as these days, what "simple" really ended up meaning was could I expect J. Random Developer to hold the spec in his head. That definition says that, for instance, Java isn't -- and in fact a lot of these languages end up with a lot of corner cases, things that nobody really understands. Quiz any C developer about unsigned, and pretty soon you discover that almost no C developers actually understand what goes on with unsigned, what unsigned arithmetic is. Things like that made C complex. The language part of Java is, I think, pretty simple. The libraries you have to look up.

      From http://www.gotw.ca/publications/c_family_interview.htm

      Note that Java has unsigned support nowadays, only not as primitive types, although this is considered post Valhala.

      For example, https://docs.oracle.com/en/java/javase/25/docs/api/java.base...

    • toast03 months ago
      Java creators tried to avoid giving developers any sharp edges. Interactions between signed and unsigned integers can be surprising, so they disallowed unsigned integers.

      Of course, not having access to unsigned quantities makes interaction with other programs difficult :(

      • Hendrikto3 months ago
        > Java creators tried to avoid giving developers any sharp edges.

        They failed.

        • fhd23 months ago
          Well, I'd argue they created a straight jacket. That prevents a number of self harm tactics. It also makes a lot of easy things pretty hard to do.
      • astrange3 months ago
        The one that annoys me is that people think implicit type conversions are dangerous for some reason, so they also disallowed `char a = 10; short b = a;` without writing a cast even though this makes no sense.
        • resonious3 months ago
          It feels like "sharp edges" often means "I once had a horrible bug due to accidentally misusing this". But if you cut features based on that definition, you'd soon have an empty programming language.
          • lukan3 months ago
            Java was apparently quite successful, though. So maybe they got the balance right for their goal?
        • pdw3 months ago
          The signedness of `char` is implementation-defined, it is signed on x86 but unsigned on ARM. So assigning a plain char to a wider integer type is suspicious, did the programmer expect sign-extension or zero-extension?
          • astrange3 months ago
            It's not implementation-defined in Java because there aren't any unsigned types.

            Personally I think explicit typecasts are even more suspicious, because introducing explicit semantics is worse than implicit semantics if the explicit ones are wrong.

        • fooker3 months ago
          I'd like a 10pples please.
    • andrewmcwatters3 months ago
      [dead]
    • bji9jhff3 months ago
      [flagged]
      • kjs33 months ago
        Look up James Gosling and get back to us. I'd especially be interested in hearing how your undoubtedly superior experience would result in a more successful language. I'm sure you can vibe code something up.
  • whitehexagon3 months ago
    That's quite a milestone and achievement, well done! Your current Features list reads far beyond hobby level! It certainly puts my own hobby phone OS to shame. I'm still working out touch screen driver, and I only have IBM/437 bitmap fonts so far, which turned out to be far too small for these modern phone screens, for surely it cant be my tired old eyes...

    Can I ask how you keep yourself motivated on such a complex, large and difficult project? This week I have been bogged down in I2C support and find myself wondering if I'll ever reach the next level.

    Of course hard projects have their own special rewards, seeing that first pixel appear on screen was a magical moment, and felt like real programming again, especially compared to all these huge modern complex multi-layered software stacks.

    • avaliosdev3 months ago
      Sometimes I take long breaks but I always end up coming back. I find doing multiple things in my projects at the same time to help me not burn out as easily.
      • whitehexagon3 months ago
        Thanks. Well your post motivated me to knock off the rest of the I2C yesterday.

        Good luck with the rest of your project.

  • ZebusJesus3 months ago
    Well done and thanks for sharing, it's great to see people making a hobby OS and it's awesome that it plays Minecraft! How long have you been working on Astral?
    • avaliosdev3 months ago
      Hi, this iteration I have been working on since 2023, but it uses some code in some places from the old iteration which I was working on during 2022 and 2023
      • ZebusJesus2 months ago
        great job, bet you learned some really cool stuff along the way!
    • Cthulhu_3 months ago
      The initial commit on the Github page was on April 2023, so at least that long methinks.
  • phendrenad23 months ago
    Love the Motif-style window borders!
  • jakemanger3 months ago
    The “Astral from scratch guide“ idea really caught my eye.

    Gotta say that would be a pretty cool evolution of DIY electronics kits to OS kits

  • zamadatix3 months ago
    I love hobby OS projects, and it's good to see how many there continue to be posted here. I can never get enough! It looks like this one has some networking support as well.
  • coolcoder6133 months ago
    This is very impressive! When I saw the title, I thought it would be classicube, but no, it's actual minecraft.
    • avaliosdev3 months ago
      Indeed. Now modern minecraft (1.20) and even modded (GTNH) is working as well.
  • ivraatiems3 months ago
    Excellent work.

    Now all we need to do is run your OS on a redstone virtual machine inside of Minecraft, then run Minecraft on it. That way you'll have Minecraft inside your Minecraft.

  • kgwxd3 months ago
    Better than Windows 11 already. I can't run Bedrock or Java without first signing into the Microsoft Store on "my" PC.
    • zamadatix3 months ago
      Good news, you too can run Minecraft Alpha 1.2.0 single player offline without signing in. That's not what made this impressive :).
    • creatonez3 months ago
      Try the "Windows Legacy" launcher, or a 3rd party launcher like PrismLauncher. The legacy launcher is made for Windows 7 and is directly equivalent to the macOS/Linux launcher, so it doesn't have a hard dependency on the Microsoft Store. It will probably be a while before they stop maintaining it because it's such a trivial port.
  • urbandw311er3 months ago
    Excellent work! And very much in the spirit of the HM ethos.
  • burnt_toast3 months ago
    Congrats! Seeing an old version of MC makes me nostalgic.
  • charcircuit3 months ago
    I would be interested in a benchmark.
  • WhyOhWhyQ3 months ago
    Very inspiring!
  • John-Tony123 months ago
    [dead]
  • H1BCurryChef3 months ago
    [flagged]
  • Shelby-Thomas3 months ago
    [flagged]