> I can run Javascript on an Arduino does that make it a systems level programming language?
Johnny-Five? It isn't running on the Arduino.
A systems programming language is one that is possible to write the whole stack all the way from the boot loader, with a very tiny help from Assembly in the process, like bootloader, interrupt handling, DMA.
The day I am able to write a JavaScript AOT and JIT, in JavaScript, maybe.
As for volatile semantics, many system programming languages in the early days didn't had them as well.
PIC, well. How would you make PIC banks work in a standards compliant ANSI C compiler without language extensions?
With Assembly of course, so can Go.
Also nothing prevents a Go compiler to provide extensions just like what many think of C features for systems programming are actually not part of ANSI C.
Go already has "pragmas" in the form of //go:...... And nothing prevents a Go compliant compiler to provide more.
The code for Xerox Star, ETHZ Oberon, ETHZ EthOs, ETHZ AOS are available for anyone that cares to read them and how it is possible to write a full stack workstation.
Or better yet, getting the 2013 edition of Project Oberon book and building the whole computer, including the motherboard.