The :D
specifier is used exclusively for primitives (all primitives are initial \<engine>_<name>:D
), and ideas none should appear outside of the core team code. (Broadly that means outside of l3kernel
but there are some special cases where we expect :D
names to be used in limited places in other kernel-level code.)
However, it's clear that there are areas that the team have not yet covered in expl3
or where interaction with LaTeX2e requires direct access to primitives. For interim work on modules where there are currently no official interfaces, the team recommend that code addressing such cases be formulated as
\cs_new_eq:NN \__module_name:w \engine_name:D % Probably :w ...
and the latter name is used in such places: this leaves only a single line to be adjusted as the team address such issues. It is also likely to be worth raising these with the team either directly on or LaTeX-L. For example, I am recently added support for \pdffilesize
and similar as experimental additions to l3file
as a result of such requests.
For working with LaTeX2e, where we might expect the code never to 'move on', one would usual stick to the 'classical' name.
\tex_endinput:D
for example , but also\tex_penalty:D
and probably others…):(
.\endinput
is not experimentally supported via\file_input_stop:
(release today so either grab from GitHub or wait for CTAN ...)