As the OOM-handling effort progresses, it has become clear that we probably shouldn't name our OOM-handling collections the same as their equivalent abort-on-OOM alloc/std types. This is because things get pretty confusing during this period of time where we haven't migrated everything over to the OOM-handling collections (and almost certainly won't have migrated 100% any time soon; we may never even bother migrating the stuff under wasmtime::compile::*) and so when you see a Vec you have to wonder "is this abort-on-OOM alloc::vec::Vec or OOM-handling wasmtime_core::alloc::Vec?" That is annoying and we shouldn't add the additional and unnecessary mental load on ourselves.
So that begs the question: what naming scheme should we use for our OOM-handling, fallible-allocation-only collections?
The following candidates will use Vec as an example, but to be clear this will naming scheme also apply to our OOM-handling String, HashMap, etc...
Some initial ideas from @Alex Crichton :
TryVec- perhaps accurate, but long.TryIndexMapis a lot.TVec- personally I kinda like the ring of "letter plus collection". It's short and clearly "notstd"WVec- wasmtime's vec?XVec- any other random letterOomVec- I don't like this b/c the container handles OOMs, it doesn't make OOMsVecT(orVecWor such) - subjectively not a fan
Some more ideas:
WtVec -- another riff on "wasmtime's vec", kinda fun to read as "what the vec"OomHandlingVecOhVec -- shortened version of "OOM-handling"FallibleVecFVec -- f for fallibleQVec -- q for "question mark" which you use to propagate OOM errorsXec/XashMap/Xtringetc -- very xtreme, also cool cyberpunk (or post-cyberpunk?) transhumanism vibesAfVec - allocation fallibility vec, cool afZVec -- z is a rare and cool letterI hate every one of these options, pls help
I hate every one of these options, pls help
honestly I agree with this take, but I'd also say that my dissatisfaction with these names isn't enough to overcome the desire to rename and avoid name clashes with the standard types
oh for sure, I think we are in the same boat here
OpVec - "oom propagating" or "overpowered"
the original pusher
I'd ever-so-slightly lean towards TVec still so far along the lines of "T for try" where the libstd methods are try_* so far
I don't know why by TVec just feels weird to me. maybe because T is so often a type param
I think the least-worst choices IMO rn are
TryVecQVecXec (it is so ridiculous, but also it is kinda growing on me and it is very concise)I also didn't recoil as much as I thought I would at Xec
lol we could also do Wec, WashMap, etc and if you use a polish pronunciation of "W" then it is the same as "vec"
I'm feeling like leaning towards something small to demarcate these collections insofar as I'd rule out TryVec
lol well the polish part doesn't work soo well for Wtring
it really doesn't
I think I might still lean more towards a prefix though
and Q* seems fine by me
QHashMap, QString, QVec, QIndexMap, ...
QHashSet
QPrimaryMap
shouldn't wec come before xec after vec? (sorry)
QEntitySet
XndexMap doesn't really work
looks like xanax
lol
okay so QVec et al?
my gut is _Vec, although I'm not wed to Q in particular there
Q is a p cool letter
Q sort of makes me think "qt vec"
hrm
Q feels not unreasonable to type though
"double yoo" is just too long
good point
gotta have a single-syllable-letter...
although that literally only rules out W
I'd say QVec
never thought about that before
okay lets go with Q
it has a nice ring to it
I'm late to this convo but I'd second the "Q_ looks like Qt types" that could lead to confusion (that's certainly where my mind went). very bikeshed comment of me (but that's the thread, sorry!) but ZVec maybe? reminiscent of "zero" and embedded stuff somehow
Having done my time with Qt, I had the same thought @Chris Fallin but I do think the form makes sense. I've seen S prefixes for "safe" variants but don't love that either as safe has a very defined meaning in Rust already.
BVec for "bikeshed vec"
BBTreeMap
BsVec -- bikeshed vec
I'd agree though "safe" wouldn't be right for this in that both variants (libstd and fallible) are safe Rust-wise
I'm also loathe to acknowledge that Qt has a monopoly on Q-prefixed things in code...
not that I've ever done anything with or in Qt myself heh
KVec - "kernel suitable"
that seems decent to me
my response is just... "K"
(seems fine!)
:thinking: K is fine, the easily pronounceable Wa prefix has not been mentioned, yet ... WaVec reminds me more of Wasmtime than KVec.
It sounds like KVec is already the winner here, but allow me to offer some more paint buckets:
CheckedVec/CzechedVec
FVec ("F" for fallible)
AllocVec/AVec
OFVec ("OF" for "OOM Free")
OomfVec (personal favorite)
I find the CzechedVechumorous, but would shorten it to CzVec,
Last updated: Feb 24 2026 at 04:36 UTC