I need some help understanding how and what API’s exist out there to communicate to an OS. In my case I’m running Ubuntu 17 on the Linux Kernel 4.12. I have a electrical engineering background with a minor in embedded software so i’m not a guru when it comes to understanding OS’s. I assume this is a big question to ask so let me narrow it down to a few specifics to what I’m asking.
My understanding is that Rust is a systems programming language just like C/C++. In C/C++ we can use the POSIX standard API’s to communicate to the OS in Linux. This is very useful and convenient since the Linux kernel/OS is written in C. So
Is there a POSIX like API out there but specifically for Rust? If not, is there a wrapper to the POSIX API’s that Rust uses?
Which sources out there do I use. I did a search and found several results like the crate “nix” and a few others out there. I’m concerned that some of these are not supported or developed by random people. How do I know which ones are credible and maintained?
Is the term crate similar to a Library or API like POSIX?
My understanding is that there exists an ABI to provide this one to one translation from an API like POSIX to the Kernel upon compilation?! I read somewhere that Rust doesn’t have a ABI, is that true? Could someone perhaps point me to a resource that better explains how an API or ABI makes that communication possible between a systems programming language like C/C++ and the Kernel? I slightly confused in this area and it’s preventing me the ability to really understand the architecture of Rust from this perspective.