Skip to content

Latest commit

 

History

History
954 lines (708 loc) · 27.2 KB

CHANGELOG.md

File metadata and controls

954 lines (708 loc) · 27.2 KB

Changelog

All notable changes to the l3kernel bundle since the start of 2018 will be documented in this file.

The format is based on Keep a Changelog, this project uses date-based 'snapshot' version identifiers.

Added

  • \seq_set_split_keep_spaces:Nnn (see #784)
  • \tracingstacklevels
  • Color export in comma-separated format

Changed

  • Use prevailing catcodes instead of string in regex replacement (issue #621)
  • \__kernel_file_name_sanitize:n now uses a faster \csname-based approach to expand the file name.
  • \pdf_version_gset:n for dvips.
  • Improve handling of \exp_not:n in \text_expand:n (issue #875)
  • \file_full_name:n now avoids calling \pdffilesize multiple times on the same file.

Fixed

  • Evalutate integer constants only once (issue#861)
  • Detect \ior_map_inline:Nn calls on undefined streams (issue#194)

Deprecated

  • l3docstrip converted to a stub which simply loads DocStrip: use the latter directly

Added

  • l3color: Moved from l3experimental
  • l3pdf: Moved from l3experimental
  • default alias to str_convert

Changed

  • Re-ordered interface3 documentation
  • Moved msg_show:nn(nnnn) to stable

Changed

  • Use new (internal) interface for kerns

Added

  • \c_zero_str

Added

  • \keyval_parse:nnn

Changed

  • \keyval_parse:NNn is set equal to \keyval_parse:nnn

Fixed

  • Handling of encoding-specfic commands in \text_purify:n

Fixed

  • \peek_analysis_map_inline:n with spaces and braces

Fixed

  • Setting of line width in vertical coffins in LaTeX

Added

  • \peek_analysis_map_inline:n
  • \peek_regex:nTF, \peek_regex_remove_once:nTF, and \peek_regex_replace_once:nnTF
  • \token_case_catcode:NnTF, \token_case_charcode:NnTF, and \token_case_meaning:NnTF

Changed

  • Extend \text_expand:n to cover \@protected@testopt
  • Extend \text_purify:n to cover \@protected@testopt

Added

  • \token_if_font_selection:N(TF) (see #806)

Fixed

  • Avoid relying on braced \input primitive syntax
  • Correct expansion of environments in \text_purify:n
  • Some aspects of cctab setup with 8-bit engines(issue #814)

Changed

  • Improved performance for tl functions
  • Extend case changer to cover all of Greek with pdfTeX

Fixed

  • Correctly detect LaTeX when pre-loading expl3 and setting up case changer
  • Lua emulation of \strcmp (issue #813)

Changed

  • Use Lua pseudo-primitives instead of \directlua
  • \token_if_primitive:N(TF) now reports pseudo-primitives as primitives in LuaTeX

Fixed

  • Loading in generic mode (issue #800)

Fixed

  • Save primitive definition of \pdfoutput with CSLaTeX

Added

  • \hbox_overlap_center:n

Changed

  • Backend setting for direct PDF output
  • Backend setting for XeTeX support

Deprecated

  • Backend setting pdfmode

Fixed

  • \file_compare_timestamp:nNn(TF) in LuaTeX (issue #792)
  • Text case changing and expansion where an excluded command is equivalent to \use:n

Changed

  • Color selection implementation
  • Performance enhancements for \keys_set:nn

Fixed

  • Loading generically on ConTeXt (issue #783)

Added

  • l3cctab module for using category code tables
  • \file_parse_full_name:n and \file_parse_full_name_apply:nN
  • Additional \prop_put:Nnn variants
  • \seq_set_map_x:NNn
  • \msg_term:nn(nnnn)

Fixed

  • File lookup with \input@path
  • 8-bit encodings in \str_set_convert:Nnnn

Changed

  • Implementation of \file_parse_full_name:nNNN now uses \file_parse_full_name:n internally
  • \seq_set_map:NNn no longer x-expands <inline function> (\seq_set_map_x:NNn now does that). Both moved to stable.

Removed

  • Functions deprecated at end of 2019

Deprecated

  • \str_declare_eight_bit_encoding:nnn

Changed

  • Use scn operator for separations
  • Internal color model
  • Internal performance enhancements
  • Moved \msg_expandable_error:nn(nnnn) to stable.
  • Moved \seq_indexed_map_inline:Nn and \seq_indexed_map_function:Nn to stable as \seq_map_indexed_inline:Nn and \seq_map_indexed_function:Nn.
  • Internal changes to expl3 to allow loading earlier in LaTeX2e.

Added

  • \str_convert_pdfname:n

Changed

  • Make \text_purify:n f-type expandable

Changed

  • Performance improvements in keyval processing

Changed

  • Internal changes to quark handling

Added

  • Recognize the exponent marker E (same as e) in floating point numbers

Fixed

  • Leave active characters untouched when case-changing (see #715)

Added

  • Control for start-of-titlecasing: see \l_text_titlecase_check_letter_bool

Fixed

  • Nesting of \seq_shuffle:N in another sequence mapping (issue #687)
  • \ior_shell_open:Nn in engines other than LuaTeX - shell commands didn't execute, plus the command call would be left in the input stream.

Added

  • \text_purify:n

Fixed

  • Issue with case-changing Turkish

Added

  • \tex...:D coverage for TeX Live 2020 engine changes

Changed

  • New implementation for \keyval_parse:NNn - around 40% speed improvement, also expandable

Fixed

Changed

  • Extend case-changing encoding support to Cyrillic and Greek

Added

  • Option suppress-backend-headers (see matching change in l3backend)

Changed

  • Allow dvisvgm driver with XeTeX (issue #677)

Fixed

  • undo-recent-deprecations would not reload the deprecation code

Fixed

  • Interaction with some babel languages at the start of the document

Changed

  • Leave implicit tokens unchanged by \text_expand:n
  • Extend the de-alt case changing locale to 8-bit engines

Added

  • Key property .cs_set:Np and variants

Changed

  • Support \@uclclist entries when case-changing

Fixed

  • Allow for full range of encodings when expanding text (issue #671)
  • Support \begin/\end in text expansion

Added

  • \l_keys_key_str and \l_keys_path_str

Deprecated

  • \l_keys_key_tl and \l_keys_path_tl, replaced by \l_keys_key_str and \l_keys_path_str, respectively

Changed

  • Minor edits to LaTeX3 News

Added

  • Table of Contents for combined LaTeX3 News

Changed

  • Use Lua utf8 library if available

Fixed

  • Undefined command in box debugging code

Added

  • Support for command replacement in text expansion

Changed

  • Require key values for numerical key types (dim, int, etc.) (see #661)

Fixed

  • Issue with keys where some leading spaces could be left in key names

Added

  • bool_case_true:n(TF) and \bool_case_false:n(TF)
  • \file_hex_dump:n(nn) and \file_get_hex_dump:n(nn)N(TF)
  • \str_<type>case:n
  • \text_<type>case:n(n)
  • \text_expand:n and supporting data structures

Changed

  • Distribute LaTeX3 News
  • Moved \char_<type>case:N to stable
  • Documentation improvements

Fixed

  • Inherit key required/forbidden properties (see #653)
  • Set backend at the beginning of \document (see #657)

Deprecated

  • \str_<type>_case:n replaced by \str_<type>case:n except \str_mixed_case:n replaced by \str_titlecase:n
  • \tl_<type>_case:n(n) replaced by \text_<type>case:n(n), except \tl_mixed_case:n(n) replaced by \text_titlecase:n(n)

Fixed

  • Handling of repeated loading of a backend (issue #646)
  • Handling of repeated loading of deprecated functions

Fixed

  • File searching when \(pdf)filesize is not available (fixes #644)

Changed

  • Internal structure of \c_sys_jobname_str altered
  • Update upTeX test to follow guidance from developers

Changed

  • File names are now returned without quotes by \file_full_name:n

Fixed

  • \file_if_exist:n(TF), etc., when dealing with file names containing spaces (see #642)

Added

  • Lua function l3kernel.shellescape()

Changed

  • Better coverage of (u)pTeX primitives following publication of pTeX manual in English
  • Trim spaces surrounding file names

Removed

  • HarfTeX primitives

Fixed

  • Correct handling of 'traditional' class options for backend

Changed

  • Standard backend for (u)pTeX is now dvips
  • Minimum LuaTeX version now v0.95
  • Moved \debug_on:, \debug_off:, \debug_suspend: and \debug_resume: to stable
  • Accept 'traditional' class options for backend (dvipdfmx, dvips, etc.)
  • Performance enhancements when loading expl3

Fixed

  • Handling of files with no extension
  • Behaviour of Lua function l3kernel.charcat in some circumstances
  • Loading under ConTeXt

Fixed

  • Variants using \exp_args functions with more than 9 arguments (see #636)

Fixed

  • File searching using \file_full_name:n (see #634)

Changed

  • Speed up variants and reduce their \tracingall output
  • Debug and deprecation code are now loaded independently of expl3 core
  • \file_compare_timestamp:nNn(TF) now usable in expansion contexts
  • Moved to stable:
    • \bool_const:Nn
    • \dim_sign:n
    • \file_compare_timestamp:nNn(TF)
    • FP logb operator
    • \fp_sign:n
    • fparray module
    • \int_sign:n
    • \intarray_const_from_clist:Nn
    • \intarray_show:N
    • \ior_map_variable:NNn
    • \ior_str_map_variable:NNn
    • \mode_leave_vertical:
    • \prop_(g)set_from_clist:Nn
    • \prop_const_from_clist:Nn
    • \seq_const_from_clist:Nn
    • \seq_(g)shuffle:N
    • \sys_if_platform_unix:(TF)
    • \sys_if_platform_windows:(TF)
    • \sys_gset_rand_seed:
    • \sys_rand_seed:
    • Shell access functions

Fixed

  • Key .initial:n property when combined with inherited keys (see #631)

Fixed

  • Loading Unicode data when some chars may be active (see #627)

Fixed

  • Missing internal variant (fixes #624)

Added

  • \file_full_name:n, \file_mdfive_hash:n, \file_size:n, \file_timestamp:n
  • \seq_map_tokens:Nn, \tl_map_tokens:nn, \tl_map_tokens:Nn

Changed

  • Moved \prop_map_tokens:Nn to stable
  • Generate chars with catcode as-supplied when case changing

Added

  • \fp_if_nan:nTF

Changed

  • Make round(.,nan)=nan with no "Invalid operation" error

Fixed

  • \tl_rescan:nn and \tl_(g)set_rescan:Nnn when single-line input contains a comment character (see #607)
  • Final value of the variable in \tl_map_variable:NNn and \clist_map_variable:NNn.
  • Remove duplicate keys in \prop_set_from_keyval:Nn (see #572)

Deprecated

  • \c_term_ior

Fixed

  • Coffin pole intersection in some cases (see #605)

Fixed

  • Loading for expl3 with plain TeX

Added

  • Moved l3str-convert module to l3kernel

Changed

  • Ensure \msg_fatal:nn ends the TeX run if used inside an hbox (see #587)
  • Moved backend code to a separate release schedule

Fixed

  • Handling of control sequences in key names (see #594)

Added

  • Experimental \file_compare_timestamp:nNn(TF)

Changed

  • Precedence of juxtaposition (implicit multiplication) in l3fp now different for keywords/variables and factors in parentheses

Added

  • Experimental driver-level interfaces for image inclusion
  • Experimental \ior_shell_open:Nn

Fixed

  • Some issues in dvisvgm driver

Added

  • .muskip_set:N property

Changed

  • Experimental \driver_pdf_compress_objects:n replaces \driver_pdf_objects_(en|dis)able:

Added

  • \char_str_<target>_case:N

Fixed

  • Infinite loop in some cases in DVI mode due to link-breaking code (see #570)
  • Category code of output from \char_<target>_case:N, and same issue in \str_<target>_case:n

Added

  • New l3legacy module containing
    • \legacy_if:n(TF)

Changed

  • Moved \file_get_mdfive_hash:nN(TF), \file_get_size:nN(TF) and \file_get_timestamp:nN(TF) to stable
  • Moved \file_if_exist_input:n and \file_if_exist_input:nF to stable
  • Moved \file_input_stop: to stable
  • Moved \peek_N_type:TF to stable

Added

  • Experimental support for a range of PDF concepts at the lowest (driver abstraction) level

Changed

  • Moved \tl_if_single_token:n(TF) to stable

Fixed

  • Support for ConTeXt from mid-December 2018

Fixed

  • Loading when pre-TL'18 XeTeX is in use (see #555)

Added

  • \str_log:n, \str_log:N
  • TF versions for \file_get_...:nN and \ior_(str_)get:NN functions
  • \cs_prefix_spec:N, \cs_argument_spec:N, \cs_replacement_spec:N
  • undo-recent-deprecations option
  • factorial function in l3fp

Changed

  • Return values from \file_get:nnN, \file_get_...:nN, \ior_get:NN, \sys_shell_get:nnN
  • Moved coffin affine transformations to stable
  • Moved \prop_count:N to stable
  • Moved \tl_count_tokens:n to stable
  • Completed emulation of e-type argument when \expanded is unavailable
  • Made expandable messages expand their result, like usual messages
  • Made deprecation errors less intrusive by default
  • Stopped providing do-nothing \color macro when undefined

Deprecated

  • \token_get_prefix_spec:N, \token_get_arg_spec:N, \token_get_replacement_spec:N replaced by \cs_prefix_spec:N, \cs_argument_spec:N, \cs_replacement_spec:N, respectively

Fixed

  • Treatment of inherited keys when setting only known keys (see #548)

Removed

  • Experimental \skip_split_finite_else_action:nnNN
  • Experimental \tl_reverse_tokens:n

Changed

  • Defensive code for redefinition of \time, \day, \month and \year

Fixed

Added

  • Support for return of whole path by \keys_set_known:nnN-like function \keys_set_known:nnnN (see #508)
  • .prop_(g)put:N key property (see #444)

Fixed

  • Handling of nested key setting when filtering, etc. (see #526)
  • Inheritance of default values (see #504)

Added

  • Global versions of box affine functions, e.g. \box_grotate:Nn
  • Global versions of box size adjustment functions
  • \box_(g)set_eq_drop:NN, \(h|v)box_unpack_drop:N
  • \file_get:nnN and \file_get:nnNTF
  • Experimental functions \sys_shell_get:nnN and \sys_shell_get:nnNTF

Changed

  • \char_generate:nn now always takes exactly two expansions
  • Move \prg_generate_conditional_variant:Nnn to stable
  • Renamed experimental \box_trim:Nnnnn and \box_viewport:Nnnnn as \box_set_trim:Nnnnn and \box_set_viewport:Nnnnn, respectively

Deprecated

  • \box_(g)set_eq_clear:NN, replaced by \box_(g)set_eq_drop:NN
  • \(h|v)box_unpack_clear:N, replaced by \(h|v)box_unpack_drop:N
  • \tl_(g)set_from_file(_x):Nnn, replaced by \file_get:nnN

Fixed

  • Scope treatment of \box_set_dp:N, etc.
  • In (u)platex: detection of spaces in \tl_rescan:nn and related functions

Removed

  • Experimental function family \tl_(g)set_from_shell:(N|c)nn (replaced by \sys_shell_get:nnN)

Added

  • \ior_map_variable:NNn and \ior_str_map_variable:NNn

Fixed

  • Unclosed conditional with Unicode engines

Changed

  • Improved expl3 loading time with LuaTeX and XeTeX
  • Improved performance of \ior_map_inline:Nn and related functions

Fixed

  • Handling of accented characters under mixed case changing in 8-bit engines (see #514)

Added

  • \iow_allow_break:

Fixed

  • Correct fp randint with zero argument (see #507)
  • Handling of \current@color with (x)dvipdfmx (see #510)

Removed

  • Support for stand-alone l3regex, l3sort, l3srt, l3tl-analysis, l3tl-build
  • \box_resize:Nnn
  • \box_use_clear:N
  • \c_minus_one
  • \file_add_path:nN
  • \file_list:
  • \file_path_include:n and \file_path_remove:n
  • \io(r|w)_list_streams: and \io(r|w)_log_streams:
  • \sort_ordered: and \sort_reversed:
  • \token_new:Nn
  • Generation of invalid variants from n/N base types

Changed

  • Move \tl_range:nnn to stable

Fixed

  • Loading in ConTeXt MkIV

Changed

  • Enable \char_generate:nn to create active tokens with XeTeX

Changed

  • Apply \par only at the end of vertical boxes
  • Move \int_rand:n to stable
  • Move \<var>_rand_item:N to stable

Fixed

  • Typo in \lua_shipout_e:n (see #503)

Added

  • Support for cross-compatibility primitives in XeTeX
  • \int_sign:n, \dim_sign:n and \fp_sign:n

Fixed

  • Wrapping of text in messages, etc., for some line lengths (fixes #491)

Added

  • \g_msg_module_documentation_prop (see #471)
  • \peek_remove_spaces:n

Changed

  • Formatting of messages: now follows LaTeX2e closely

Deprecated

  • \msg_interrupt:nn, \msg_log:n and \msg_term:n

Fixed

  • Handling of inheritance for choice keys (fixes #483)

Added

  • Some driver-level support for PDF features
  • \peek_catcode_collect_inline:Nn, \peek_charcode_collect_inline:Nn, \peek_meaning_collect_inline:Nn

Fixed

  • Handling of unknown keys when inheritance is active (fixes #481)

Added

  • \lua_escape:e, \lua_now:e and \lua_shipout_e:n
  • \str_case_e:nn(TF) and \str_if_eq:ee(TF)
  • \sys_if_platform_unix:(TF) and \sys_if_platform_windows:(TF)
  • \tl_(g)set_from_shell:Nnn

Deprecated

  • \lua_escape_x:n, \lua_now_x:n and \lua_shipout_x:n
  • \str_case_x:nn(TF) and \str_if_eq_x:nn(TF)

Added

  • Support for e-type argument using \expanded or macro emulation

Added

  • CHANGELOG.md (fixes #460)

Fixed

  • Loading expl3 with LuaTeX/XeTeX and certain letter tokens set to be active (see #462)

Changed

  • Alter \char_codepoint_from_bytes:n to produce four groups in all cases; make f-type expandable

Fixed

  • Correct date string in expl3.dtx
  • Correct \c_sys_engine_version_str when using XeTeX

Added

  • Define \c_zero_int and \c_one_int
  • Implement \c_sys_engine_version_str
  • Implement \seq_indexed_map_function/inline
  • Implement \intarray_gzero:N
  • Implement \intarray_const_from_clist:Nn
  • Implement \bool_set_inverse:N
  • Implement \bool_xor:nnTF instead of just \bool_xor_p:nn
  • Implement candidate \int_rand:n
  • Implement \intarray_gset_rand:Nnn
  • Implement candidate l3fparray module

Changed

  • Update minimal required versions of XeTeX and LuaTeX
  • Deprecate named integer constants \c_zero. etc.
  • Move all primitives to \tex_...:D namespace, deprecating older engine-dependent prefixes
  • Several internal optimisations

Fixed

  • Expand boolean expression before calling \chardef (fixes #461)

Removed

  • Remove undocumented \fp_function:Nw and \fp_new_function:Npn

Added

  • Implement \tl_analysis_map_inline:nn
  • Implement \exp_args_generate:n to define new \exp_args:N... functions
  • Low-level \int_value:w function
  • New experimental functions for
    • Building token lists piecewise
    • Fast manipulation of integer arrays
    • Sequence shuffling
    • \seq_set_from_function:NnN
    • \char_codepoint_to_bytes:n

Changed

  • Significant internal revision to use only internal functions 'private' to specific modules
  • Better documentation of cross-module kernel-internal functions
  • Enable \char_generate:nn for active chars
  • Renamed \tl_show_analysis:(N|n)n as \tl_analysis_show:(N|n)n
  • Change \int_rand:nn (and rand_item functions) to better use the RNG
  • Make prg break functions public
  • Make scan marks mechanism public
  • Make \prg_do_nothing: long rather than nopar (fixes #455)
  • Several performance improvements
  • Documentation improvements

Fixed

  • Only index TF, T, F functions together if they are expl3 functions (fixes #453)
  • Make \infty and \pi into errors in fp expressions (fixes #357)

Removed

  • Deprecated functions expiring at end of 2017
  • Old module .sty files

Changes

  • Adjustments to l3drivers to support l3draw development in l3experimental bundle

Added

  • Tuple support in fp expressions
  • Step functions have been added for dim variables, e.g. \dim_step_inline:nnnn