stefan-hoeck / idris2-pack

BSD 3-Clause "New" or "Revised" License
105 stars 27 forks source link

[ feature ] Automating Mid-Install Temporary Directory Cleanup #301

Open Matthew-Mosior opened 3 months ago

Matthew-Mosior commented 3 months ago

This PR enables the removal of temporary directories that used to linger after a mid-install Ctrl+C.

To accomplish this, the idris2-async library is utilized to race two threads within the withTmpDir function:

  1. SigINT listener thread.
  2. Runner via finally thread.

This PR closes #288.

stefan-hoeck commented 3 months ago

Thank you for taking the initiative here. I'll be happy to look into this once async becomes more stable. Right now, I'm still experimenting with different threadpool / runner implementations, and it is not yet clear how signal handling will work out.

On Linux, I'm planning to use epoll for timers, signal handlers, and asynchronous IO, but epoll only exists on Linux. For other Unix systems, there is kqueue but I have no experience with that.

tl,dr: It is too early to make async a dependency of a central tool such as pack. I'm currently spending a lot of my free time with async, but it is definitely a non-trivial library.

Matthew-Mosior commented 3 months ago

@stefan-hoeck Not a problem, excited to help out in this direction!

Looking forward to seeing where async goes, it looks really solid already. Will be excited to hop back on this when the time is right (idris2-async is in a more stable place).