> bitsets - why are these even in the language and not a library?
Because they're **SUPER USEFUL** in game development, and from what I can tell
lots of people use Nim for game development.
You need resistances in you RPG?
type
Element* = enum
eFire, eWater, eEarth, eAir
var myCharacterResistances: set[Element]
myCharacterResistances.incl eFire
if enemyAttack.element notin myCharacterResistances:
echo "PREPARE YOUR ANUS"
You need to make a tile-based game?
type
OverworldTileProperty* = enum
otpWater, otpLava
if otpWater in tiles[playerPosition + playerMovement]:
echo "Dude, only Jesus can walk on water"
elif otpLava in tiles[playerPosition + playerMovement]:
echo "FEEL THE BURN!"
Some even use them for game options, intrinsics, key items, etc. etc. As a game
developer, this is actually one of the things that made me love Nim. Instead of
using macro voodoo to get bitarrays (like in C) or needing an external
dependency (like in most other languages), Nim's system.set is everywhere, it's
simple and extremely fast.
Also, Nim takes a lot of inspiration from Pascal and if I remember correctly
bitsets are a native type there too.
Regarding the other points, they're all very reasonable. I personally almost
never use exceptions, so if Araq wants to go the Rust/Go route is fine by me.