Yes and no. In the past NimMain was very important to call because it is what set up the garbage collector. With ARC however that is no longer the case. But NimMain does another quite important thing, namely initializing (some) global variables. Some libraries might have global state that needs to be initialized, so even if you don't use them it might still be required. Typically in a dynamic library situation there would be some calls to initialize and tear-down whatever the dynamic library does, this is where you want to run NimMain.