kvark / choir

Task Orchestration Framework
MIT License
52 stars 3 forks source link

Disable task lifetimes #37

Closed kvark closed 1 year ago

kvark commented 1 year ago

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.

Related to #26 and #27