the daemon sent 3 messages; i've conflated them here.
Names of contributions: l3kernel, l3packages, l3experimental Author's name: The LaTeX3 Project Author's email: latex-team@latex-project.org Package version: SVN3990 Location on CTAN: macros/latex/contrib/l3kernel/ Summary description: LaTeX3 programming conventions License type: lppl
Announcement text given by the package's contributor:
Snapshot of SVN 3990
This snapshot features a number of significant improvements to expl3.
*New FPU*
The entire l3fp module (the LaTeX3 floating point unit) has been rewritten to allow expandable floating point operations. This allows the introduction of 'floating point expressions', for example
fp_set:Nn l_tmpa_fp { sin ( 3 / 4 ) }
The older non-expandable operations such as fp_sin:Nn are therefore deprecated: fp_add:Nn and fp_sub:Nn are retained.
*Wider review of consistency*
The team have taken advantage of introduction of the new FPU to review consistency across the l3kernel modules. This has resulted in a number of functions being either renamed or deprecated. These changes have been detailed on the LaTeX-L list, along with a small number of other deprecations which reflect a general improvement in the logic of expl3. The removals are:
- ExplSyntaxNames(On|Off)
- clist_if_eq:NN(TF)
- clist_use:N, seq_use:N
- msg_two_newlines:
- msg_class_set:nn
- quark_if_recursion_tail_break:(N|n)
- skip_if_infinite_glue:n(TF)
- l_tmpc_int
- <type>_length => <type>_count
- if_num:w => if_int_compare:w
- ior(_str)_(g)to:NN => ior_get(_str):NN
- prg_case_<type>:nnn => <type>_case:nnn
- prg_stepwise_... => int_step_...
- prop_del => prop_remove
- msg_newline: => \ or iow_newline:
The team have also reviewed the use of x-type arguments in kernel-defined functions. In some cases, functions had been given x-type arg specs even though the expansion carried out was not exactly of this form. This has led to the deprecation of a one function and renaming of three others:
- l_if_empty:xTF
- iow_wrap:xnnnN => iow_wrap:nnnN
- str_case:xxn => str_case_x:nnn
- str_if_eq:xx(TF) => str_if_eq_x:nn(TF)
It also means that some functions have been revised so that the x-type versions are based on n-type base functions in the standard way. These are all within the message system.
*Improving status details*
The revisions above mean that some modules of l3kernel have now been reviewed carefully by the team. For those modules, we have removed the 'Experimental' statement from the description; thus for example l3int is now simply
L3 Integers
rather than
L3 Experimental integers
At the same time, there are more experimental additions to be made to l3kernel which we want to include in the distribution whilst allowing some flexibility. We also want programmers to be able to find which functions have this status by reading the documentation. A new l3candidates module has therefore been added, and all distributed experimental additions to the kernel have been moved here.
*Marking up internal code*
Separating out functions which are documented and thus generally usable from those for 'internal' use only is an important part of the LaTeX3 work. To aid this, the team have introduced a new convention to indicate all internal material using two underscore characters. At the same time, an 'extended DocStrip' program has been added to LaTeX3 to simplify this process. Full details are included in the documentation.
In general, making this change should not affect existing code from third parties. However, some kernel-internal functions may have been used by others as the status of these was not previously made clear. The renaming may therefore require adjustments. Issues in this area should as usual be raised on the LaTeX-L mailing list.
*General changes*
The snapshot includes the usual list of more general changes in l3kernel:
- The && operator now binds more tightly in boolean expressions than the || operator, as in other programming languages.
- Breaking mappings and similar structures has been improved so that the break is always to the appropriate end point.
- Indexing of all structures is now from one, not zero. This reflects the fact that LaTeX programming is used to support 'natural' lists and so forth, and so offset indexing is inappropriate.
- Vertical coffins should now set linewidth and columnwidth correctly.
- The errorcontextlines primitive is now not altered in package mode so that users setting are respected.
- Getting and popping from an empty sequence or comma list now returns q_no_value, consistent with property list behaviour.
- All get and pop operations on property lists, sequences and clists now support variants with TF branches (i.e., the check for q_no_value is done internally and the appropriate branch selected). They are the recommended interfaces for normal use.
- New l_concat:NNN family of functions.
- Added experimental (clist|seq)_use:Nnnn for more nuanced use of list structures.
- Added .initial:(n|V) to l3keys
- Improved appearance of ...show:n functions at the terminal.
- Updated ox_show:N and new ox_show:Nnn to provide more information, including full box contents with ox_show:N, also new ox_log:N and ox_log:Nnn for writing to the log.
- Remove a number of 'expired' functions.
- Native drivers improved to now support pdfTeX 1.30 onward, matching engine coverage stated for expl3 in general
- Drop loading of color package and load graphics as late as possible, to avoid option clashes.
- Protected all variants involving an x-type expansion, and made cs_generate_variant:Nn, the cs_(new|set|gset):Nn family of functions, and prg_new_protected_conditional:Npnn more resilient against invalid input.
- Provide two local and two global scratch variables for each type.
*xparse*
- Bug in expandable functions fixed so that they will correctly accept par tokens is the argument signature is appropriate.
- Revise definition of 'NoValue' such that it does not use a document-level token at all.
Users may view the package catalogue entries at http://mirror.ctan.org/help/Catalogue/entries/l3kernel.html http://mirror.ctan.org/help/Catalogue/entries/l3packages.html http://mirror.ctan.org/help/Catalogue/entries/l3experimental.html or they may browse the packages' directories at http://mirror.ctan.org/macros/latex/contrib/l3kernel/ http://mirror.ctan.org/macros/latex/contrib/l3packages/ http://mirror.ctan.org/macros/latex/contrib/l3experimental/
thanks for the upload; i've installed the new version, and updated the catalogue repository.
Robin Fairbairns
For the CTAN team