• Beto@lemmy.studio
    link
    fedilink
    English
    arrow-up
    6
    ·
    1 year ago

    To demonstrate the OS’s capability and relatively small size, in the late 1990s QNX released a demo image that included the POSIX-compliant QNX 4 OS, a full graphical user interface, graphical text editor, TCP/IP networking, web browser and web server that all fit on a bootable 1.44 MB floppy disk for the 386 PC. https://en.m.wikipedia.org/wiki/QNX

      • Thomas@lemmy.douwes.co.uk
        link
        fedilink
        English
        arrow-up
        0
        ·
        1 year ago

        You can get even lower! hello world in 512 bytes:

        f0VMRgIBAQAAAAAAAAAAAAIAPgABAAAAsABAAAAAAABAAAAAAAAAAAABAAAAAAAAAAAAAEAAOAAC
        AEAABAADAAEAAAAFAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAA1QAAAAAAAADVAAAAAAAAAAAQ
        AAAAAAAAAQAAAAYAAADYAAAAAAAAANgQQAAAAAAA2BBAAAAAAAAOAAAAAAAAAA4AAAAAAAAAABAA
        AAAAAAC4AQAAAL8BAAAASL7YEEAAAAAAALoOAAAADwW4PAAAAEgx/w8FAAAASGVsbG8sIFdvcmxk
        IQoALnNoc3RydGFiAC50ZXh0AC5kYXRhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAQAAAAYAAAAAAAAAsABAAAAA
        AACwAAAAAAAAACUAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEQAAAAEAAAADAAAAAAAA
        ANgQQAAAAAAA2AAAAAAAAAAOAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAEAAAADAAAA
        AAAAAAAAAAAAAAAAAAAAAOYAAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAA=
        

        And I’m sure even lower, look at all those zeros! and that stupid header

        • Thomas@lemmy.douwes.co.uk
          link
          fedilink
          English
          arrow-up
          1
          ·
          edit-2
          1 year ago

          or even better, hello world in also 512 bytes but without an OS!

          +r4QfLQOrAjAdATNEOv39EhlbGxvLCBXb3JsZCEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
          AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
          AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
          AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
          AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
          AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
          AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
          AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
          AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVao=
          

          So much empty space lol
          from https://blog.ghaiklor.com/2017/10/21/how-to-implement-your-own-hello-world-boot-loader/

    • elint@programming.dev
      link
      fedilink
      English
      arrow-up
      2
      ·
      1 year ago

      Every demoparty in the link you mentioned with a beginning date and a dash but no end date is still happening. The demoscene is still very much alive.

      • Marshell@feddit.de
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 year ago

        Oh yes! And I didn’t intend to say it is dead! I merely wanted to point to the fact that these guys did and do incredible things in the 64kb class.

    • Joph@programming.dev
      link
      fedilink
      English
      arrow-up
      4
      ·
      edit-2
      1 year ago

      I might be missing a joke? but they are referring to NativeAOT, aptly named as it compiles a .NET application into a native binary ahead of time (instead of using a JIT.) The benefit being no dependency on the .NET runtime, faster startup time (but slower runtime performance, due to lack of JIT), lower memory footprint, and any other advantage you’d find in Go.

        • Spyros@programming.dev
          link
          fedilink
          English
          arrow-up
          3
          ·
          edit-2
          1 year ago

          Does it effectively output a single binary?

          Yes, that’s one of the points of NativeAOT, a self-contained single binary, exactly as Go does it.

          Does it create some kind of clusterf*k and awkward packaging formats like other MS solutions such as UWP?

          No, you can create .exe files.

          Will it actually be deployable to a random fresh install of Debian 12 or Windows 10?

          Yes, NativeAOT supports Windows, Linux and MacOS, x64 and Arm64.

          What about compatibility with older systems?

          Not sure about that, I suppose it depends on the targets each .NET version support. For example, .NET 8 will drop RHEL 7 and only RHEL 8 and later.

          And to play devil’s advocate: this won’t work for all existing .NET applications. If you use reflection (which is AOT unfriendly), chances are that you will have to rework a ton of stuff in order to get to a point where NativeAOT works. There’s a middle solution though, called ReadyToRun, which has some advantages compared to running fully with the JIT compiler.

            • tcm@lemmy.world
              link
              fedilink
              English
              arrow-up
              4
              ·
              1 year ago

              I’m pretty sure that 70MB is including the entire .NET standard library, which is massive. Enabling NativeAOT or trimming reduces the size down to a few MB

            • PixxlMan@lemmy.world
              link
              fedilink
              English
              arrow-up
              2
              arrow-down
              1
              ·
              1 year ago

              I just don’t get the obsession with small executable file sizes. 100 MB here and there hasn’t mattered at all in desktop development for many years. Feels like arbitrary goals set up just to be able to say “look there are still uses for [unmanaged language]”. And of course there are, but a 60 MB smaller executables on a desktop with several terabytes of storage just isn’t one of them. And no, developer, about to comment about how you’ve only got 5 millibits of storage on your embedded system, we’re not talking about that.

  • nyan@lemmy.cafe
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    On the one hand, if it’s genuinely self-contained (that is, it doesn’t expect a .Net runtime to have been preinstalled on the OS), that may well constitute an improvement over previous iterations of C#.

    On the other hand, the smallest executable I can find on my system occupies 6K and actually does something useful.

    On the third hand (said the octopus), if all we cared about was executable size and efficiency, we’d still all be coding in assembler, or at least C or Forth.