freeone3000 3 days ago

Why is LLVM a bad choice for JIT? Are you concerned about the optimization versus speed of compilation trade-off they chose?

1
versteegen 2 days ago

-LLVM is huge. This rules it out for many usecases.

-LLVM's API is notoriously unstable. I've probably seen 10 different projects struggling with this problem. They're often tied to a specific version or version range, can't use the system install of LLVM, and bitrot fast. As one person put it, "I mean that there has been an insane amount of hours trying to make llvm as a dependency and that it doesn't break on other devices, one of zig's main complains about llvm." [in thread [1]]. In comparison, gccjit's API, while not as mature, is supposedly simpler, higher level/easier, and more stable [1].

-LLVM was never designed to be used as a JIT compiler. It's slow and the API doesn't sound good for that.

For example for the last couple of months I've been using Julia, and it seems to me that the biggest problem with the language is LLVM! It suffers significantly from all three points above. And that's despite the fact that Julia is probably the best place to use LLVM for JIT compiling, since it cares about performance so much. After all the pain I've seen, I would never use LLVM as a dependency.

[1] https://www.reddit.com/r/ProgrammingLanguages/comments/19etc...