I have just made the repo of my C++ STL replacement lib public on github. It's called Bedrock. It's got the usual things, Vector, String, Atomic etc. but also a very good HashMap and few interesting allocators (details on blog: danglingpointers.com/post/bedrock...) github.com/jlaumon/Bedr...

GitHub - jlaumon/Bedrock: Mini...
The allocators of Bedrock, my own C++ STL alternative - Dangling Pointers

Bedrock is a C++ STL replacement library. It comes with several specialized allocators that are faster than using the heap, while still being convenient to use.

Asset Cooker (my previous pet project) has now switched to using it. github.com/jlaumon/Asse...

GitHub - jlaumon/AssetCooker: ...
GitHub - jlaumon/AssetCooker: Asset Cooker is a build system aimed at game assets, for custom engines. It's FAST! It leverages Windows' USN journals to robustly track which files change, and only cook what needs to be cooked.

Asset Cooker is a build system aimed at game assets, for custom engines. It's FAST! It leverages Windows' USN journals to robustly track which files change, and only cook what needs to be c...

GitHub

@jeremy.laumon.name Nice, from a quick look (e.g. Span, Vector) it's using int instead of size_t for operator[] and lengths.

Curious if that's to avoid unsigned types (unless working with bit-shifting logic), or mainly to save 4 bytes on the struct sizes?

@laurelkeys @jeremy.laumon.name yes, sizes/capacities are 4 bytes to save space and because I'm fairly confident I will never need more that 2 billion items 😄 (and if I do, I'll make a specific thing for that case). Memory block sizes use int64 because I might need to allocate more than 2GB 😉

And both are signed I want to be able to detect underflows and signed integers come with a built-in solution for that 😂

@jerem @laurelkeys @jeremy.laumon.name
Something I learner last year is that integer wrap around is still called overflow no matter which direction it goes.
Underflow is when something gets set to 0 because it cannot be represented.
But in this case I assume you mean going below 0.