[HN Gopher] The Zig programming language has been ported to Sere...
       ___________________________________________________________________
        
       The Zig programming language has been ported to SerenityOS
        
       Author : eatonphil
       Score  : 221 points
       Date   : 2022-12-12 14:55 UTC (8 hours ago)
        
 (HTM) web link (twitter.com)
 (TXT) w3m dump (twitter.com)
        
       | jbirer wrote:
       | Awesome to see new technology being boldly adopted and tried, we
       | need variety in this space. Kudos.
        
       | trashburger wrote:
       | Thanks for the shout-out, Andreas!
        
       | keepquestioning wrote:
        
         | [deleted]
        
       | sigzero wrote:
       | Wow, excellent.
        
       | shp0ngle wrote:
       | From the look of the PR, does this mean they ported LLVM to
       | Serenity, so all languages that build to LLVM will work? Or am I
       | way off the mark?
        
         | tialaramex wrote:
         | Surely even for a language with a very light runtime, the
         | startup routines need to understand Serenity and so that's
         | actual porting work, and if your runtime has any heft to it, or
         | you supply standard libraries that do anything (e.g. an
         | allocator, file I/O, networking) that all needs porting to
         | Serenity as well.
         | 
         | So for example C freestanding or Rust "no-std" will "work" but
         | you can't do very much, freestanding doesn't have this idea of
         | you "running" a program since that implies the existence of
         | some supervisory agent, the resulting machine code generally
         | gets burned into a ROM, or whatever.
         | 
         | The full blown hosted C, or Rust's std needs a bunch of
         | porting, each is separate, the fact you made C's fopen() work
         | doesn't magically make Rust's File APIs work so the fact Zig
         | stuff works doesn't make Clang or rustc deliver their hosted/
         | std environments.
        
           | matheusmoreira wrote:
           | > freestanding doesn't have this idea of you "running" a
           | program since that implies the existence of some supervisory
           | agent
           | 
           | It's perfectly possible to build freestanding Linux programs.
           | The only thing you need is exactly one system call function
           | to get access to every single Linux kernel functionality. All
           | this function needs to do is move parameters to specific
           | registers, execute a system call instruction and return the
           | result. With this single function, a freestanding program can
           | do anything.
           | 
           | This is possible on Linux because it has a stable system call
           | ABI. Other systems don't have that, they make people link to
           | system libraries. Not sure what SerenityOS does but I assume
           | they provide C++ OS libraries.
        
           | TillE wrote:
           | This is where it helps to have a firm grasp of what running
           | on bare metal is, so you can better understand what an OS
           | really does. You have some code that runs on a CPU, but
           | beyond that how do you actually talk to anything else?
           | There's an address bus so you can use memory without much
           | trouble, but you have to know where the RAM is mapped.
           | 
           | So yeah, there's a big step from compiling machine code to
           | working correctly with a particular OS.
        
             | resuresu wrote:
             | All these "alternative" OSes are nothing more than toy's
             | because generally it seems the devs working on them have no
             | desire whatsoever to make them run on bare metal. Just a
             | toy that boots up in a VM completely dependent upon a host
             | OS.
        
               | simongr3dal wrote:
               | I just think that people generally have pretty high
               | expectations of OSes these days. So the job of getting it
               | to run on actual hardware, and getting it to run on lots
               | of hardware is just kicked down the road until the OS is
               | a lot more mature.
        
               | kristoff_it wrote:
               | There are plenty of examples of people running Serenity
               | on physical hardware. It probably doesn't support a
               | fraction of the HW that Linux supports, but still.
        
       | nerdponx wrote:
       | A totally new kernel and a totally new systems operating
       | language. Cool!
        
       | akling wrote:
       | Hello friends! For more details, here's a blog post that sin-ack
       | wrote about the porting work: https://sin-
       | ack.github.io/posts/sycl-talk-20221007/
       | 
       | He also gave an in-person talk about Zig on SerenityOS at
       | Software You Can Love 2022, there's a video of the talk here:
       | https://www.youtube.com/watch?v=Ug3p8vELJqQ
        
         | codetrotter wrote:
         | Y'all just keep crushing it! :100:
         | 
         | I remain hopeful that one day some company will acquire
         | Serenity and ship SerenityOS to millions and millions of
         | people. Idk if that is even aligned with what the people of
         | SerenityOS wish for, but I think it would be very cool if that
         | was to happen :D
        
           | ducktective wrote:
           | >some company will acquire Serenity
           | 
           | JS interpreter on Start Menu when?
        
             | codetrotter wrote:
             | I wasn't thinking of MSFT but sure if that's what's gonna
             | happen then that's what's gonna happen :)
        
         | AndyKelley wrote:
         | Can we have a stable syscall ABI yet for third party
         | applications? :P
        
           | akling wrote:
           | No but you can call our POSIX C library whenever you want :^)
        
             | AndyKelley wrote:
             | I had a chat with AK over on Mastodon and seems like
             | dynamic linking libc should work just fine for cross
             | compilation targeting SerenityOS!
        
         | mysterydip wrote:
         | Finally gave the build a go and really enjoyed playing around
         | with it! Hope to contribute back someday. Kudos for all the
         | progress.
        
       | [deleted]
        
       | euclaise wrote:
       | Nice! There's some work on porting it to Plan 9 too.
        
         | Conscat wrote:
         | That's being done by like one guy, too. It's pretty impressive
         | imo despite being incomplete.
        
       | celeritascelery wrote:
       | Is zig being considered for writing core modules?
        
         | kristoff_it wrote:
         | I hope not, having a consistent ecosystem where all parts of
         | the system share the same building blocks is one of the
         | beautiful aspects of SerenityOS.
         | 
         | For example in this video Andreas implements palette support
         | for commands (commands are usually shown in the menu bar or
         | contextual menus) and it has the nice side effect of
         | immediately enabling them on every GUI program, even the
         | desktop itself!
         | 
         | https://www.youtube.com/watch?v=LAqGLkRCFb8
         | 
         | I think Zig can be a polite guest in SerenityOS thanks to Zig's
         | general interest in supporting uncommon targets, but the hosts
         | are C++ and Jakt.
        
           | cies wrote:
           | I really like Jakt:
           | 
           | https://github.com/SerenityOS/jakt
        
         | asddubs wrote:
         | judging by past answers given, no. this is just so you can
         | develop on serenity using zig, but anything in-tree needs to be
         | C++ (or Jakt once that's ready)
        
       ___________________________________________________________________
       (page generated 2022-12-12 23:01 UTC)