We can't use `std::sync::Mutex` without further unsafe code, and we
can't use `simple-mutex` since it is unmaintained. Therefore we use the
`async-lock` crate, since it has a good blocking mutex.
Closes#12
Signed-off-by: John Nunley <dev@notgull.net>
Remove the simple-mutex dependency
It appears that this was originally done when std::sync::Mutex used the
PThreads implementation, which was much slower than other
contemporary Mutex implementations (like parking_lot). Therefore it
made sense to use a custom Mutex implementation here. However std
Mutexes now use futexes, which are much faster than the previous
implementation.
In addition, the original git history for simple-mutex appears to be lost
to time. The only copy of the source code is on crates.io, and the crate
is not owned by anyone. So it is problematic to use it anyways, as
updating it would require us to go through the painstaking process of
reclaiming the name.
This commit removes the dependency on simple-mutex and replaces its
usages with std::sync::Mutex for the reasons listed above. The
performance impact of this change has not been measured, but I believe
it to be negligible.
Also bumps MSRV to 1.41.
Signed-off-by: John Nunley <dev@notgull.net>