`bitsets` \- I haven't used them but I know I will someday and I wouldn't 
remove them. If they can be moved to a nimble package, that's fine with me.

`exceptions` \- I'm 100% behind Araq that "bubble up" is the right default. 
Yet, I tend to favor having a Result type (similar to Rust) and having a set of 
macros to rewrite code to achieve this (both block-level and proc/method-level, 
along the lines of Rust's `try!` macro but better) . I think it would be 
simplify Nim's core and also simplify the job of many macros. It's always 
tricky to deal with exception paths in macros such as async, iterators, etc. 
Disclaimer: I have not used any C++ code with Nim and don't plan to do so. 
Perhaps exception-throwing C++ code can be wrapped at the FFI layer such that 
it catches exceptions returns Result types. I wouldn't change anything for v1, 
and I'd go towards `Result` \+ macros for v2.

`methods` \- I'd definitely remove them if we get concepts with vtrefs. Those 
who are suggesting the different nimble packages for interfaces (e.g. 
`interfaced`) have not tried them, I'm afraid. They work only for the really 
simple use-cases. At the very least, we would need to make them work with 
generics, which I expect will require some non-trivial work. Until that's done, 
and some project uses them extensively, it is not a reasonable alternative, 
IMO. I wouldn't change anything for v1 and I'd wish for concepts with vtrefs 
for v2 (if we're not getting them for v1).

`converters` \-- They've been useful to me so far, so I wouldn't remove them. I 
haven't run into issues with them either.

`do` \-- Very useful. I don't find the syntax/notation offensive. 

Reply via email to