Like almost always, there are chapters about that in PAIP:<p>22 Scheme: An Uncommon Lisp[what a pun!]
<a href="https://github.com/norvig/paip-lisp/blob/main/docs/chapter22.md">https://github.com/norvig/paip-lisp/blob/main/docs/chapter22...</a><p>23 Compiling Lisp [Scheme] <a href="https://github.com/norvig/paip-lisp/blob/main/docs/chapter23.md">https://github.com/norvig/paip-lisp/blob/main/docs/chapter23...</a>
I feel like one of the major benefits of using Scheme is how easy it is to interoperate with just about any environment. Want to embed Scheme in your C application? Take your pick from GNU Guile, Chibi, Gambit, or Chicken. How about the JVM? Kawa is solid, option. .NET? IronScheme has got you covered. Javascript? There is LIPS or BiwaScheme.
I've sometimes done the opposite - when working in scheme/racket, searched for implementations of things like loop, defmacro or tagbody. (They have their quirks, but when they're a good fit for a problem they can save a lot of typing.)
I'm curious how it handles call/cc. I at least <i>think</i> you would have to make your own continuation stack, unless there's some way to get at the internals of unwind-protect that would make doing it natively possible.