[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)