Would it be possible to have an eagle view about how does the compiler work? I mean, a high-level workflow from having a bunch of files as source code, to the production of a native binary (but not below LLVM).
To give you some context, in this post I wrote something like that for Elixir (that is a summary of a talk of mine in a past ElixirConf EU).
Is the lexer/parser written by hand? How is execution of top-level code at compilation time solved? Who does the work when you pass
--release? When are macros expanded (do you use that verb)? Does Crystal generate LLVM IR and passes that down using some API? Who generates the actual machine code? (I have 0 knowledge of LLVM.)