@Softknobs thanks for sharing your experience! Red/System specification describes the language itself (i.e. syntax and semantics), which is totally unrelated to how toolchain functions (compilation flags and the like).
I think the best place to document your gotchas is our Github wiki, which already has a lot of R/S-related pages. Feel free to update any of them (this one seems like a good fit) or create a new one.
Red/System will likely stay at the C level, maybe with some features added in the future, but more "advanced" system level dialects may be done as experimental or permanent variants of R/S. e.g. there could be a Red/System/Safe version that adds memory safety features and compiles to R/S. It could probably even be done with macros.
One of the issues is that you have to give things up to get safety, even Rust does, so R/S will always be kept simple and unsafe, like C.
pointer! [integer!]as an alias to
pointer! [logic!], so strictly speaking a "logic! pointer is not needed". ;-)
So does anyone know if there are any plans to implement any safety features in Red/System sometime in the future?
R/S provides already type-safety, which is the most important one. For Rust-like "memory safety" features, they are a bad match for R/S as stated by Vladimir, as R/S aims to give full control over the hardware (going even further than C language). Once we add proper array support, you'll get bound-checking. A full-blown borrow-checker could be considered for experimentation, but not by copying the over-complicated approach from Rust.
If you really require a "system programming language" for your project, you are likely to interface with low-level hardware and/or system libraries, which means using unsafe mode in Rust. For thread-safety, we have a theoretical solution for that, if the prototype proves it viable, we should have it before 1.0.
can I find somewhere the list of Red/System functions?
Dig into R/S runtime, it shouldn't be very hard to follow, as it is kept relatively small.
if there are functions to work with series!
series! simply don't exist at Red/System level, they are a part of Red runtime (written in Red/System).
Is there some documentation or code I can look into to figure out if functions already exist?
Aside from the official spec? Not that I know of.
#callI get errors:
#callhas not ended when this happens.
waitfunction, though I only use it to keep the program running (