Regarding the semicolon rules, you won't like this observation, but in my 3 years of writing Rust the semicolon rule has literally has never led to a single bug.
However, I don't recall it being a problem in my experimentation with Rust either.
I'm a C++ developer and go so far as to make it harder. I map ; to <esc> in vim, and enter the actual char with a second ; (from from normal mode).
It's surprisingly logical and convenient. Everytime I `return null` (or just `null`) in CoffeeScript I wonder if Rust's way isn't beter.
However, I hate semi colons so I agree with you there. You should check out the nimrod programming language.
Revamping I/O is very high on the list. Brian Anderson et al are working on it as we speak.