I'm working my way though the Nim Days tutorial. My biggest questions are:
BTW, Nim looks like it would be really flexible at implementing things like ASN or EBNF grammars. Wouldn't it make sense to have a single abstract grammar just for protocols and use that for all of the network code? The closest thing to that I can find for Nim is this NPEG but it looks like it's a bit more tuned to text-based structures higher up the stack than, say, Ethernet frames, TCP packets, etc. Stop me if this is one of those ideas that sounds great in theory but wouldn't be as helpful as it sounds in actual fact.
Note that there are many tutorials available, the "Nim Days" is already advanced and for special topics. See https://nim-lang.org/learn.html. The official Tutorial part 1 and 2 are a good start.
For your first question: Some people coming from Python have not even a basic computer science background, for example they do not even know the basic terms stack vs heap, value vs reference type, purpose of references and pointers and such. These people would have to learn some basics before they can write efficient Nim code. For the transition from Python to Nim there is this wiki page: https://github.com/nim-lang/Nim/wiki/Nim-for-Python-Programmers
For your first question: Some people coming from Python have not even a basic computer science background...
I get you. I have gone out of my way to understand the basics of computer science plus algorithms and design patterns. I've also tinkered with assembly, too.
1. What are some of the common "gotchas" coming to Nim from Python?
Treating Nim like Python :) Nim has a similar syntax and library names, but it's not Python. The semantics are quite different and it takes time to get used to.
2. Are there any good libraries floating around for low-level work with binaries akin to the Bitstrings library in Python?
Maybe stdlib's bitops module suits some of your purpose?
3. I found the Stew project. Is that the correct way to attempt to contribute code to the standard library?
Nope. You can contribute there, but it's not managed by the Nim team. You can attempt to contribute to the stdlib in Nim's main repo. I say "attempt" because Nim's team tries to have a very lean stdlib, and only very useful additions with a good reason and implementation are taken.
If you have an idea for something to add, it's probably a good idea to file an RFC issue here: https://github.com/nim-lang/RFCs/issues
Are there any good libraries floating around for low-level work with binaries akin to the Bitstrings library in Python?
normally you would just use a seq[byte] for something like that.