On 4/21/11, Joseph Wright <[log in to unmask]> wrote: > On 21/04/2011 09:27, Will Robertson wrote: >> Hi, >> >> 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? > > I am in favour of this: checking for 'free' functions should really just > do that (after all, there are _lots_ of other mistakes that could be > made that are not checked). > > On the l3chk module, I think it is clear we need to overhaul the > 'checking' guards and so forth for a 'slower but more careful' version > of expl3 for debugging. This check would fit in there, I guess. Additionnal check that l3chk could perform (but should be disablable): that the module only defines functions which belongs to it (i.e. the part before the first "_" is good), with perhaps something to declare what namespace the programmer wants to use. Regards, Bruno