Found a safe&sound issue with lifetimes. If a task borrows something (having non-static lifetime), the original idea was that you could only run_attached it. However, if the IdleTask is dropped, the system was happy to defer its execution automatically for later. This is a part of the idea that IdleTask gets executed no matter what.
Unfortunately, we can't determine at run-time what the (compile!) lifetime is. The basic reasoning here is that the lifetimes are supposed to be compiler annotations, and be non-semantical. They can only prevent something from compiling, but do not actually affect the compiled code.
Worth noting that I wanted to have the borrowing tasks in order to support fork-join parallelism aka rayon. But it's not the main use case. So now this use case is dropped entirely, since it wasn't safe.
Found a safe&sound issue with lifetimes. If a task borrows something (having non-static lifetime), the original idea was that you could only
run_attached
it. However, if theIdleTask
is dropped, the system was happy to defer its execution automatically for later. This is a part of the idea thatIdleTask
gets executed no matter what.Unfortunately, we can't determine at run-time what the (compile!) lifetime is. The basic reasoning here is that the lifetimes are supposed to be compiler annotations, and be non-semantical. They can only prevent something from compiling, but do not actually affect the compiled code.
Worth noting that I wanted to have the borrowing tasks in order to support fork-join parallelism aka
rayon
. But it's not the main use case. So now this use case is dropped entirely, since it wasn't safe.Related to #26 and #27