Racket and DrRacket communication

I hope you are well !
I have a question about DrRacket and Racket. I would like to know how the two communicate. Is it in the same process or separate processes? How does it work, is it synchronous like Tree-sitter or asynchronous like LSP? Are there requests sent by the IDE to the compiler so that the compiler returns information such as parenthesis errors for example? In short, I would like to understand a little how it works. I would like to have this information for educational reasons.
Thanks very much !


syncheck-annotations<%> is how DrRacket collects information and errors I think, and here is an example for how to use it.

I'm not sure what's your synchronous here since I'm not familiar with Tree-sitter, but I think racket-langserver uses compute on request, and sauron uses per file per thread to collect information. So I believe it didn't enforce how to use it, and I cannot conclude how DrRacket uses it here since I didn't dig into it XD.