taskell-2.0
taskell-2.0 copied to clipboard
taskell 2.0
I'm going to be taking a break from development of Taskell for a while. Trying to do it alongside my day job was proving a bit much. Feel free to continue to submit issues, but I won't be able to work on any of them immediately. Pull requests also welcome. Thanks for understanding 🙂
Taskell 2.0
A complete rewrite of taskell focussing on application architecture and performance.
I wrote the original version of taskell when I was first learning Haskell. As a result I made many bad decisions that would be hard to re-engineer in place.
I'm taking a data first approach: creating the relevant data structures and parsers, then moving onto IO, and finally getting the UI in place once all of that is benchmarked and tested.
Improvements
- More tests: many more tests than the original version. Taking a largely TDD approach.
- Benchmarking: most functionality is benchmarked
- Better data structure: the original data structure was just a three level sequence. This makes things like adding tags/contributors/related tasks difficult to do efficiently.
- Serialisation: using a
Builder
for much fasterByteString
generation
Benchmarking
Setup
Install direnv and criterion-cmp:
brew install direnv
cabal install criterion-cmp
In the project directory:
direnv allow
Adds all scripts in .bin/
to your $PATH
(in this working directory only).
Running
All benchmarks:
bench
A specific group:
bench-group <group-name>