When you are developing a pure Rust GUI using let's say Iced, you have to recompile the app everytime you do some changes in the code, and if the app is so big, the recompiling may take a long time. Same thing i think for Qt using C++. I read that Hot reloading in compiled languages is not possible to achieve.
On the other hand you have Dart, which uses the JIT compiler for development to enable fast development and Hot Reloading. When you are ready to compile your app for release, you use the AOT compiler to have a native high performance binary.
Is it possible to achieve hot reloading in Rust without JIT compiler for Rust ?
Is it even possible to write a JIT interpreter for Rust, does the language design allows that ?
If you know how to use Iced/Rust and you don't know how to use Flutter/Dart, you'll be more productive with Iced/Rust, and vice versa. Of course, that's not a particularly useful answer, but I think it's still worth noting that familiarity is a significant portion of how productive someone is, and shouldn't be overlooked.
Yes, with a bunch of huge caveats. Live++ is used a lot in gamedev for hot reloading of C++ components, and the techniques it uses would theoretically work for Rust as well, but there are further complications which make it not so simple. The C++ world mostly just says “don't do that then” to the complications, but the Rust world doesn't like that as a “solution,” and furthermore the C++ object compilation model lends itself significantly better to reloading than the Rust incremental model.
Yes, depending on what you mean when you say JIT. The steps done by cargo check should need to be done AOT, but once you have done name resolution, it's no longer a hard problem. In fact, we already have an interpreter for MIR capable of running most code and which is used for const evaluation.