The situation with set vs. set_keyed vs. set_keyed_integer is pretty foul now. The last half of core.ops has a bunch of set() functions and, corresponding to (most of) them, set_keyed_integer() functions with the exact same arguments and bodies. From what I gather, the 3-argument set() functions are a relic from the old assembler syntax (before "Px[Ix]"), and should not be used. Unless anyone objects quickly, the three-arg sets will be gone. This will break older code (e.g. t/pmc/array.t). If someone wants to submit either a patch to the assembler to handle this, or patches upgrading old code to the new syntax... well, you know what to do.
/s