@@ -74,12 +74,15 @@ The CLI uses various libraries to implement
74
74
* ** be the best performing implementation**
75
75
* use Rust's type system to optimize for work not done without being hard to use
76
76
* use multiple cores when available
77
+ * make it easy to control concurrency and parallelism
77
78
* ** assure on-disk consistency**
78
79
* assure reads never interfere with concurrent writes
79
80
* assure multiple concurrent writes don't cause trouble
80
81
* ** take shortcuts, but not in quality**
81
- * binaries my use ` anyhow::Error ` exhaustively, knowing that these errors are solely user-facing.
82
- * internationalization is nothing we are concerned with right now
82
+ * binaries may use ` anyhow::Error ` exhaustively, knowing these errors are solely user-facing.
83
+ * libraries use light-weight custom errors implemented using ` quick-error ` .
84
+ * internationalization is nothing we are concerned with right now.
85
+ * IO errors due to insufficient amount of open file handles don't always lead to operation failure
83
86
84
87
## Non-Goals
85
88
@@ -89,8 +92,7 @@ The CLI uses various libraries to implement
89
92
* ** be incompatible to git**
90
93
* the on-disk format must remain compatible, and we will never contend with it.
91
94
* ** use async IO everywhere**
92
- * it's too young and makes things so much more difficult right now.
93
- * (it's considered on option as upgrade when async is stabilized)
95
+ * but don't tie it to ` async-std ` or ` tokio `
94
96
95
97
## Roadmap to Future
96
98
@@ -110,13 +112,13 @@ Provide a CLI to for the most basic user journey:
110
112
* ** test-first development**
111
113
* protect against regression and make implementing features easy
112
114
* user docker to test more elaborate user interactions
113
- * keep it practical, knowing that the Rust compiler already has your back
115
+ * keep it practical, knowing the Rust compiler already has your back
114
116
for the mundane things, like unhappy code paths.
115
117
* * use git itself* as reference implementation, and use their test-cases and fixtures where
116
118
appropriate
117
119
* * use libgit2* test fixtures and cases where appropriate
118
120
* ** safety first**
119
- * handle all errors, never unwrap
121
+ * handle all errors, never unwrap.
120
122
* provide an error chain and make it easy to understand what went wrong.
121
123
* ** strive for an MVP and version 1.0 fast...**
122
124
* ...even if that includes only the most common usecases.
0 commit comments