Making size_t signed would have consequences that are largely unknown.Why .length cannot return a signed integer (not size_t) by default?
What if you're working in 32-bit mode and want to open a 3GB memory-mapped file? Then you will also need an unsignedLength property.