Print

Print


Hello all,

Over the last few weeks we have been carrying out a serious review of a
lot of the LaTeX3 code, trying to deal with a number of remaining 'rough
edges' and to get a lot more order into the code. I will be giving
further details of this 'big bang' process over the next few days. One
result of this 'big bang' is that a number of functions have been
renamed or removed. The following notice details these. The updated code
will be sent to CTAN in the next few days.

Please read the notes explaining the changes carefully. In particular,
please note that *all* \toks_... functions are depreciated. Any issues
with these changes should be raised on LaTeX-L in the usual way.

Functions renamed some time ago, for removal on or before 2011-08031:

\cs_gnew_nopar:Npn            => \cs_new_nopar:Npn
\cs_gnew:Npn                  => \cs_new:Npn
\cs_gnew_protected_nopar:Npn  => \cs_new_protected_nopar:Npn
\cs_gnew_protected:Npn        => \cs_new_protected:Npn
\cs_gnew_nopar:Npx            => \cs_new_nopar:Npx
\cs_gnew:Npx                  => \cs_new:Npx
\cs_gnew_protected_nopar:Npx  => \cs_new_protected_nopar:Npx
\cs_gnew_protected:Npx        => \cs_new_protected:Npx
\cs_gnew_nopar:cpn            => \cs_new_nopar:cpn
\cs_gnew:cpn                  => \cs_new:cpn
\cs_gnew_protected_nopar:cpn  => \cs_new_protected_nopar:cpn
\cs_gnew_protected:cpn        => \cs_new_protected:cpn
\cs_gnew_nopar:cpx            => \cs_new_nopar:cpx
\cs_gnew:cpx                  => \cs_new:cpx
\cs_gnew_protected_nopar:cpx  => \cs_new_protected_nopar:cpx
\cs_gnew_protected:cpx        => \cs_new_protected:cpx
\cs_gnew_eq:NN                => \cs_new_eq:NN
\cs_gnew_eq:cN                => \cs_new_eq:cN
\cs_gnew_eq:Nc                => \cs_new_eq:Nc
\cs_gnew_eq:cc                =>  \cs_new_eq:cc

Functions depreciated 2011-05-27, for removal by 2011-08-31:

*All \toks_... functions*

All internal material for expl3 now uses token list variables. As a
result, the \toks_... functions have been removed. Hooks for the TeX
primitive token registers will be provided as the need occurs within LaTeX3.

\cs_gundefine:N               => \cs_undefine:N
\cs_gundefine:c               => \cs_undefine:c

Undefining a function is now an intrinsically-global operation, in the
same way the \cs_new:Npn is always global.

\group_execute_after:N        => \group_insert_after:N
\clist_top:NN                 => \clist_get:NN
\clist_top:cN                 => \clist_get:cN
\clist_remove_element:Nn      => \clist_remove_all:Nn
\clist_gremove_element:Nn     => \clist_gremove_all:Nn

\clist_display:N              => \clist_show:N
\clist_display:c              => \clist_show:c

The raw 'show' functions have been removed such that the result of
showing a comma-list is always formatted.

\KV_process_space_removal_sanitize:NNn       => \keyval_parse:NNn
\KV_process_space_removal_no_sanitize:NNn    => \keyval_parse:NNn
\KV_process_no_space_removal_no_sanitize:NNn => \keyval_parse:NNn

Key-value parsing has been simplified, and only the 'safe' version is
now provided. While there is a performance implication, the overall
improvement in interface and reliability suggests that this is a
worthwhile change.

\int_convert_from_base_ten:nn => \int_to_base:nn
\int_convert_to_symbols:nnn   => \int_to_symbols:nnn
\int_convert_to_base_ten:nn   => \int_from_base:nn

\int_to_symbol:n              => No replacement

The implementation of \int_to_symbol:n is currently too tied to LaTeX2e
and a particular set of symbols to be appropriate for inclusion in expl3.

\iow_now_buffer_safe:Nn => Use \iow_wrap:nnnN
\iow_now_buffer_safe:Nx => Use \iow_wrap:nnnN

The code now includes a 'hard wrapping' system for I/O output. This
should be used in place of the 'buffer_safe' functions.

\ior_new:N => No replacement
\ior_new:c => No replacement
\iow_new:N => No replacement
\iow_new:c => No replacement

These functions are no longer required and will be removed entirely.

\ior_open_streams: => \ior_list_streams:
\iow_open_streams: => \iow_list_streams:

\char_set_catcode:w         => No replacement
\char_set_mathcode:w        => No replacement
\char_set_lccode:w          => No replacement
\char_set_uccode:w          => No replacement
\char_set_sfcode:w          => No replacement
\char_value_catcode:w       => No replacement
\char_show_value_catcode:w  => No replacement
\char_value_mathcode:w      => No replacement
\char_show_value_mathcode:w => No replacement
\char_value_lccode:w        => No replacement
\char_show_value_lccode:w   => No replacement
\char_value_uccode:w        => No replacement
\char_show_value_uccode:w   => No replacement
\char_value_sfcode:w        => No replacement
\char_show_value_sfcode:w   => No replacement

All of these low-level functions have higher-level equivalents, which
should be used.

\peek_after:NN    => \peek_after:Nw
\peek_gafter:NN   => \peek_gafter:Nw

The second argument to these functions may be '{' or '}' and is
therefore 'w'.

\msg_class_new:nn => \msg_class_set:nn

Classes are rarely defined, and 'new' here is not necessarily useful.

\msg_trace:nnxxxx => \msg_log:nnxxxx
\msg_trace:nnxxx  => \msg_log:nnxxx
\msg_trace:nnxx   => \msg_log:nnxx
\msg_trace:nnx    => \msg_log:nnx
\msg_trace:nn     => \msg_log:nn

Performance considerations mean that true 'trace' code is unlikely to
use the message system.

\msg_generic_new:nnn        => No replacement
\msg_generic_new:nn         => No replacement
\msg_generic_set:nnn        => No replacement
\msg_generic_set:nn         => No replacement
\msg_direct_interrupt:xxxxx => No replacement
\msg_direct_log:xx          => No replacement
\msg_direct_term:xx         => No replacement

These low-level functions should all be substituted by the appropriate
higher-level message function. Direct use of the message system is no
longer supported.

\prop_display:N => \prop_show:N
\prop_display:c => \prop_show:c

The raw 'show' functions have been removed such that the result of
showing a property list is always formatted.

\prop_gget:NnN => No replacement
\prop_gget:NVN => No replacement
\prop_gget:cnN => No replacement
\prop_gget:cVN => No replacement

\prop_get_gdel:NnN => \prop_gpop:NnN

\prop_if_in:ccT  => No replacement
\prop_if_in:ccF  => No replacement
\prop_if_in:ccTF => No replacement
\prop_gput:ccx   => No replacement

Using 'cc' properties is no longer supported.

\prop_if_eq_p:NN => No replacement
\prop_if_eq:NNT  => No replacement
\prop_if_eq:NNF  => No replacement
\prop_if_eq:NNTF => No replacement
\prop_if_eq_p:cN => No replacement
\prop_if_eq:cNT  => No replacement
\prop_if_eq:cNF  => No replacement
\prop_if_eq:cNTF => No replacement
\prop_if_eq_p:Nc => No replacement
\prop_if_eq:NcT  => No replacement
\prop_if_eq:NcF  => No replacement
\prop_if_eq:NcTF => No replacement
\prop_if_eq_p:cc => No replacement
\prop_if_eq:ccT  => No replacement
\prop_if_eq:ccF  => No replacement
\prop_if_eq:ccTF => No replacement

As property lists are no ordered, these functions do not make sense and
are removed.

\prg_new_map_functions:Nn => No replacement
\prg_set_map_functions:Nn => No replacement

Changes to internal structures mean that these functions are no longer
needed at the kernel level, and so have been removed.
-- 
Joseph Wright