xomboverlord / xomb

An exokernel operating system written in D
xomb.org
Other
342 stars 81 forks source link

Support for ldc2 #8

Open perlun opened 10 years ago

perlun commented 10 years ago

Hi,

I stumbled upon your project the other day, seems interesting. :smile: I'm playing around with D and thought it would be interesting to take a look at a real-world example of a system implemented using it. Anyway, I wonder if it would be feasible to build it with the current version of LDC, i.e. https://github.com/ldc-developers/ldc/releases? It seems to only provide the D2 compiler, i.e. ldc2. Do you reckon it could be used?

It seems like there's a lot of stuff which is more-or-less hardwired to use ldc, so it might be a bit of work to get it done. Perhaps no-one has experimented with this?

wolfwood commented 10 years ago

sorry, I 've been a bit distracted since the holidays. Yes the kernel, and userspace, is written in D1. ldc has dropped support for this but a working D1 compiler is still hidden in their git repo. I will fork and create a branch with the version of the repo I use to build xomb. As far as porting to D2 it is certainly possible, but I have not investigated it.

The porting process will require a D2 runtime to be created (we can't use the ones for linux or windows as they make direct use of the OS, and/or libc).

If you are interested in helping with this, I would suggest getting a D2 app running on the current xomb codebase as a first step. Currently C and D1 applications are supported. Fortran apps used to work and I haven't checked C++ in some time now. Point is, this is a reasonably manageable task :)

I should note that while a rewrite is inevitable, D2 as a choice of language is not. Many of the other contributors favored Rust in the past. That being said, I think at this point D2 is less of a moving target.

lonnietc commented 2 years ago

Hello,

Hope that you are doing well and I was wondering if there was ever any progress in this since I have also just now come across the project and would like to see it in action even if it is using D1 for now.

Maybe, I could also start digging into helping to make it up to D2 or possibly even Rust from what I am reading here.

Is there, by chance any ISO that could be downloaded and booted up just to see something run?

wolfwood commented 2 years ago

@lonnietc hello! unfortunately the D1 compiler I was most familiar with (ldc) would likely take quite some work to get running on a modern system, as it depends on very outdated versions of other packages, such as llvm. I honestly can't remember if it was ever possible to build the project with dmd or gdc in its current state.

Its possible that I have a 'known-good' bootable ISO in cold storage, but it will take some digging. XoMB boots to a simple shell (xsh) and has a few posix-style filesystem commands provided busybox-style.

I think that at this point reviving the code would look more like a rewrite. Since the XoMB kernel does no memory allocation, it would seem to me that the effort of producing a stubbed out runtime for D2 would be wasted (although its possible that one already exists from other hobby OSes). I think that there were enough changes to the language that the XoMB D1 code won't 'just compile' as D2 code.

switching to a language like Zig or Rust might be a better starting place, imo. both have runtimes and standard libraries designed to support running without a host OS. Zig has not yet stabilized, but the language is relatively small, so it is easy to learn. Rust has a bigger ecosystem of libraries and related projects to draw on.

is there something specific you are interested in trying to do?

lonnietc commented 2 years ago

Hello and thanks for getting back to me on this.

My background is namely coming from C/C++ (asm, and some others) and I am namely interested in developing a net type of small-footprint secure RAM-based and cutting-edge hypervisor that might be based upon an exokernel design rather than a microkernel or monolithic kernel design. Of course those designs are standard in many modern hypervisors like Xen, VMware, ACRN, and others, but based upon a lot of review and research, I feel that an exokernel might be a diamond-in-the-rough when it comes to being able to be used as a foundation for a new design.

In the past I had been set on using the NOVA Microhypervisor (https://hypervisor.org/) design which is more of a microkernel but still better than other existing solutions, and have been working along these lines with that kernel but felt that it might be still missing something so I set out to see what other solutions might be available which led me to exokernels and then XOmB.

There may be other exokernels out there and I am actively seeking them out to see their status as well as it seems like Rust is an extremely popular language to use for this purpose as well.

I would be very happy to discuss the project over all with you if interested as it is MUCH more than just a new type of hypervisor, but a whole topology change in that it will also have extremely lightweight VMM's and heavily use Unikernels for applications with a LibOS paradigm. The goal is a shift from an OS-centric approach to an Application-centric approach, but we can chat more on this later.

Right now, I am researching exokernels and have also just come across what is termed a "parakernel" (https://manticoreos.io/) and found it to be extremely interesting after reading their publication which in inline with exokernels as well.

Best Regards and have a great day, my friend.

wolfwood commented 2 years ago

Hi, we made a discord, why don't you join us there to talk some more https://discord.gg/2BeSJ4fz

lonnietc commented 2 years ago

Thanks for the invite on Discord and I have just joined.