For comparison, things like WiFi are definitely async [2]
[1] https://docs.rs/esp32s2-hal/latest/esp32s2_hal/i2c/index.htm...
[2] https://github.com/esp-rs/esp-wifi/blob/main/examples-esp32s...
Async implementation: https://github.com/esp-rs/esp-hal/blob/main/esp-hal-common/s...
You can also see the async feature mentioned here: https://docs.rs/crate/esp32s2-hal/latest/features
There is a very brief example of using async i2c here: https://github.com/esp-rs/esp-hal/blob/main/esp32s3-hal/exam... (you can see that it is using `lis3dh_async`, which requires async i2c)
Not specific to the ESP platforms, but Embassy offers a more useful example of async i2c here: https://github.com/embassy-rs/embassy/blob/main/examples/rp/... (and it would work the same on ESP)
I like the idea of using a more standard architecture, which should have better toolchain support. The C3 “leads” in that aspect. So, I would probably choose the C3 in most cases... but depending on the specific application, the Xtensa cores still seem to have advantages for now.
As it was explained RISC v has better support because it's open and can be emulated with qemi/llvm/wasm whereas xtensa cannot. Espressif has tried to address this as a licensee, but they don't own xtensa is owned by Tensilica Inc which is owned by cadence.
Cadence has not allowed details of the JTAG to be published. Because details of xtensa aren't open source licensed. This makes things such as the openocd debugger, probe rs etc aren't as good, and this situation is unlikely to change.
Debuggers are nice.
I'm working on the esp32 c3 embassy-rs support this weekend. I personally prefer the RISCv because I think it is easier to emulate and not need to flash a physical device , this means Dev work can move faster with better tests.
Just my opinion.
Long term RISCv might cost less, and I think it will get new features faster.
I think it is cheaper to develop for RISCv. RISCv thanks to its outstanding qemu support means it is quickly becoming the reference standard for nascent "brand new" embedded capabilities.