Is there a moderately detailed comparison of SC(3) and Csound 5 or 6?

I’m mostly interested in architecture-level details rather than syntax. I know Csound has a (rather more) basic score feature (i.e. relies on score pre-processors to get some equivalent of Patterns) but this basic score is essentially interpreted by their “server”/engine too.

Also, Csound 5 has synth self-spawn ability (“recursive UDOs”) so its “server”/engine is more like SC 2 was in that respect. (The Csound “server”/engine can also [self-]generate score instructions.) And it supports a string type “server side” (although these can only be changed at i-time rather than a-time).

Csound 6 added arrays and “transnational compilation” making live coding possible (e.g.: moderately complex example --good exercise: [re]do [some of] that in SC; more basic hexplay tutorial). Since Csound 6.09 there’s a C++ API for writing its “ugens” (previously just C, I think), but that’s not as limiting as it sounds given that UDOs are basically synthdefs composing ugens.

This is roughly what I understand. Is there a more detailed comparison somewhere?