• 4am@lemmy.zip
      link
      fedilink
      arrow-up
      7
      ·
      8 days ago

      In order to be able to reference times prior to the epoch. If you made the system clock unsigned, all that math would still break if you did calculations against it after the final bit flipped.

      At the time all this was standardized, no one knew we’d ever have gigabytes of RAM, terabytes of storage, etc. 32 bits for a clock was already expensive and they figured we wouldn’t be using any of this software by 2038.

    • Zarobi@aussie.zone
      link
      fedilink
      English
      arrow-up
      3
      ·
      8 days ago

      64bit wasn’t widely adopted when they had to fix the previous datetime crisis. The permanent solution is to upgrade your system to use x64 signed dates. Many systems are already starting to account for this

      As the article mentions, the biggest problem will be embedded systems that get forgotten about and never get updated… many many things will break at that time, unexpectedly, and in subtle ways. As a normal consumer, your up-to-date devices like mobile phone and laptop shouldTM be unaffected.

      • Venator@lemmy.nz
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        7 days ago

        Doesn’t need to be 64 bit to be unsigned… And the system clock only goes up, so no need to represent system time as earlier than 1970…

        • 9point6@lemmy.world
          link
          fedilink
          arrow-up
          3
          ·
          7 days ago

          If you want computers to not have an arbitrary line in the sand when referring to the past, you need to be able to do calculations with time from before the epoch, that’s why it needs to be signed.

          Off the top of my head, working out the age of someone born before 1970 is going to be a calculation that happens countless times a day

          • Venator@lemmy.nz
            link
            fedilink
            arrow-up
            1
            ·
            edit-2
            7 days ago

            You don’t need the precision of seconds for that sort of calculation however, so can use a signed int representing date rather than datetime for that.

            • 9point6@lemmy.world
              link
              fedilink
              arrow-up
              5
              ·
              edit-2
              7 days ago

              “Generally” is doing a lot of heavy lifting in your responses

              Unless it covers all use cases, it’s not good enough, because that’s what we basically already have today.

              We all settled on using seconds (and later smaller increments) since the 1970 epoch across systems because it makes moving data around easier.

              It’s better to have one source of truth value and then you derive everything else from that, keeping a 2nd counter of days (which would also need to be signed, there’s no first date of all time) rather than just doing some maths when you need it isn’t good system design

              Edit: and surreptitiously editing “generally” out of your comments, after I mentioned it, just makes the statement false, as well as both being kinda poor etiquette and missing the point a bit