I keep hearing V8 has its rudimentary event loop implementation but
- couldn't find it
- doesn't really make sense to me. Methinks, the simplest design of a JS engine would be to simply run synchronously and let the "embedder" write their own event loop - like nodejs got libuv.
Is there an event loop implementation in v8? If so, could you point me at it?
Your intuition is right that the event loop is something that embedders should have control over. However, it is also a fundamental abstract concept of the JavaScript programming model. V8's solution is to provide a default implementation that embedders can override; you can find it in the "libplatform" component: https://chromium.googlesource.com/v8/v8/+/master/src/libplatform/default-platform.cc#140
See also Relationship between event loop,libuv and v8 engine