After many iterations and bug-fixes, we (Status) are finally moving to Nim 1.6 
(where previously 1.2 was used for stability reasons) - in light of this, I've 
started thinking about reviewing 
[`Result`](https://github.com/arnetheduck/nim-result/) from the point of view 
of efficiency, ergonomics and API making it the best `Result` type it can 
possibly be given where the language is at - the review would be aimed at:

  * safely start introducing 1.6 features like lent (Zahary has a proposal here 
for example: <https://github.com/status-im/nim-stew/pull/88>) - this would mean 
that we keep supporting 1.2, but selectively start using 1.6 features as well 
where applicable (so 1.6 feature set may deviate from 1.2)
  * clean up / review API for inconsistencies around `Opt`/void etc - `valueOr` 
vs `get`, `template` vs `func` etc (`Result` via the `Opt` alias works more or 
less as a complete `Option` replacement with the difference that it allows 
`some(nil)` values)
  * see if there's anything that can / should be removed - ie features that 
receive little use (`Exception` integration for example)
  * review the options for `await` and `?` again and see if we can settle on one
  * consider what language improvements would make sense to make `Result` more 
ergonomic



Because of the "core vocabulary" status, I deliberately want `Result` to move 
slow - that said, this review would be a good opportunity for presenting any 
radical ideas as well - I do not promise they will be included, but I do 
promise to consider them seriously while trying to balance all the competing 
tradeoffs for the library itself :)

Once the review is done, it might also make sense to publish / tag 1.0 - 
thoughts on the value of this welcome (ie would it help or hinder usage of 
Result). 

Reply via email to