2. .resi files
Private-by-default is maybe a thing we can tackle when the old build system is gone. Maybe. I still love to prototype without having to do all imports and generate the interface after the implementation is done.
One possibly dumb idea of mine is a hybrid solution where there is everything public by default still but adding the first pub would add the value to the interface behind the scenes and everything becomes private. Could be too confusing though.
3. Error messages
@zth is fixing them one by one. Some are harder to tackle but we try to add more and more context in order to make them more accurate. This is actually one of the most important issues and still needs to be improved (and it will) both for humans and AI.
4. .res file extension
We won’t change the file extension. The exception are technical issues like if we really want to differentiate between jsx files and pure rescript files (I don’t!) or legal issues.
It’s a bit unfortunate that resource files on GitHub are detected as ReScript now but it is also a kind of viral marketing so I would not bother to improve that.
5. Exports
I think you mean the public field in “sources”.
{
"sources": {
"dir": "src",
"public": ["MyMainModule"]
}
}
a quick check at the source code revealed that it’s not implemented in the new build system. I am not sure though if there is anything else in the works that supersedes it but will check it with the rewatch guys.
As a workaround maybe use rescript legacy build in CI and rescript build for development?
6. Stdlib
The goal is to only have one stdlib in the compiler that strikes a balance between being close to the JS runtime but extends it everywhere JS is still lacking. The (literal) Js namespace is deprecated and will be removed in a future release. The Belt namespace will become an external library at some point. We care about it not being too bloated. If you really think there are fundamental parts missing please submit a PR. Personally I recently added some async methods to Result. I am sure you can do that too 
7. Type inference
module M = {
type t = Foo
}
let test: M.t = Foo
This works but I think it is a bit of a hack. So I am unsure about this, but give it a try and open another issue?
Remark
Don’t worry, we’ll always take this as constructive criticism. You have good ideas and attention to detail, exactly the type of user that brings us all forward. So keep 'em coming! 