as / a

A graphical text editor
BSD 3-Clause "New" or "Revised" License
345 stars 25 forks source link

a: race conditions: concurrency model notes #116

Open as opened 6 years ago

as commented 6 years ago

This program operates under the assumption that its graphical primitives would eventually replaced by a CSP-like UI and that this change occurs before version 1.0.0.

Until then, it is primarily used to avoid distasteful text editors in the treacherous waters of Windows, Linux, and OSX (which doesn't even build at the time of writing). On most of these systems, the invariant of serialized interaction between windows is upheld by mutexes and other unfortunate things. This editor currently assumes, very incorrectly, that no device will mutate the state of two windows in such a way that non-concurrency safe structures in col.go and grid.go will not have race conditions.

This issue acknowledges and tracks the concurrency safety between these data structures, which, in theory, will fail in spectacular cases such as a mouse event set being buffered and causing two 'Del' commands to be processed from the same column, etc.