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