this is the userland portion of a smol os called citrusos. the plan is to first develop a programming language called yuzu and write a bootstrap compiler. then I'm going to write userland stuff in yuzu. finally, i'll write the kernel in yuzu. this document is a roadmap of the things that need to be done.
- gcc
- nasm
- a 64 bit linux kernel
- assemble libpith with nasm. link with ld.
- compile byc with gcc and libpith with nasm. link with ld.
- compile zest with byc/nasm and libpith with nasm. link with ld.
- compile yuzu with byc/zest and libpith with zest
now we have a compiler frontend (yuzu), assembler (zest), library (libpith) that are togther capable of building themselves.
- byc: program to compile yuzu to assembly (nasm) - bootstrap yuzu compiler (C) DONE!
- zest: final compiler backend (assembler - produces object files) (yuzu)
- yuzu: final compiler frontend (yuzu)
- bergamot: shell (yuzu)
- various utilities (yuzu)
notes: zest will support multiple output formats. We will start with an elf64 object file output format and binary format for testing and ultimately move to a custom executable format for phase 2. bz only need support elf64 object file output.
- execv: needed for shell
- argv: needed for shell
- env: needed for shell
this is so far down the road i can't imagine getting here yet. it will be unix like and will basically support the syscalls used by pith.