ChrisPenner / rasa

Extremely modular text editor built in Haskell
GNU General Public License v3.0
616 stars 42 forks source link

Use pipes for async handling #14

Closed ChrisPenner closed 7 years ago

ChrisPenner commented 7 years ago

Use concurrent Action () pipes which feed into the same mailbox for async actions; the main event loop keeps pulling events from the mailbox and runs them synchronously.

A little less clean, not sure how I feel about carrying the Output along in the state monad (technically it should be in a ReaderT, but that just complicates the monad stack) but it should cut it down to one persistent thread per event provider/async action.

Let me know what you all think!

ChrisPenner commented 7 years ago

Still working on Circle-CI, just ignore it for now