Bruno has raised an issue [1] with \cs_new:Npn: it's slow.

[1]: http://github.com/latex3/svn-mirror/issues/17

Around the time when the "\cs_" prefix was first introduced, Morten added a check to \cs_new:Npn to ensure you weren't trying to use it to define a command with a ":D" suffix, as they should be reserved for engine primitives.

This seemed like a good idea at the time, but considering how often \cs_new:Npn is used in expl3, it has a definite performance hit to performing this check each and every time it's used.

We'd like to propose dropping this check and moving it into the currently defunct l3chk module, which is designed to "switch on" these optional checks that are nice in theory but not efficient in practise. (l3chk hasn't been maintained so much but at some point I'd like to revive it.)

Any thoughts for or against this idea?

-- Will