What lisps are there for "systems programming" where the system being programmed doesn't have a tagged architecture?
I guess one could say "a whole bunch of compiler intermediate languages" but I'm not sure that counts
I guess my point is that we should prefer terms that have clear unambiguous meanings. If you're asking about lisps that compile to machine code, talk about machine code.
My probably hypersnark there was being unimpressed with seeing blogposts where people say, "Wow, I spent five days being beat up by Rust's compiler... now I feel really accomplished!"
@craigmaloney @cwebber @technomancy @starbreaker With all the cool C++14 features I imagine these days it's driven more by a desire to repurpose the brain real estate taken up by all of C++'s dark cobwebby/sharp corners to some more useful purpose. Oh and garbage collection, since one hits the limits of unique pointers rather quickly, and shared pointers are... pointy.
book: Here's cout and cin
me: Oh, those are quite nice.
book: Here's hello world in C++
me: Oh, that's real nice.
book: Here's C++'s object syntax.
me: Well, that's not too
book: Here's a more complex example
me: *gibbers in the fetal position in a secluded corner*
@craigmaloney @technomancy @cwebber @starbreaker The way I would use it is, essentially, "has a facility for inline assembly & can have the entire standard library disabled" -- in other words, "straightforward to write an OS in". But, most people who do "systems programming" aren't actually concerned with avoiding OS dependencies, so their use is going to be very different, though I can't actually figure out what they mean! (Probably what @firstname.lastname@example.org suggested)
I think nanopass fits the notion of "whole bunch of compiler intermediate languages".
I feel like Kent Dybvig and Mark Feeley (and their students) will be your people on this topic...
@balrogboogie @cwebber Chicken Scheme would definitely be the first lisp-ish thing I would go to if I wanted to interface with C code or do low-level programming, because it's simple and I'm already familiar with it. Much nicer to interface with C libraries than Racket since you get to use the headers and the C compiler to make sure your types are correct.
SBCL is the first Common Lisp compiler that comes to mind. AIUI it is competitive with C for performance.
@apg pre-scheme definitely, and SBCL in the same way that Guile 3.0 will be. Unfortunately, since we aren't generally using tagged architectures, dynamic typing has a runtime cost that it wouldn't on a tagged architecture. JITs and type annotation (which SBCL does support iirc) may help though.