$Id: NEWS 78218 2026-03-01 02:27:51Z karl $
This file records noteworthy changes.  (Public domain.)

6.4.2 (for TeX Live 2026, 3 March 2026)
* New configuration value texmf_nlink_for_leaf to specify whether the
  st_nlink=2 (stat member for number of links, only on Unix-ish systems)
  check is made to decide whether we're in a leaf directory; in the
  default texmf.cnf, the check is disabled.

* Configuration value openin_any no longer has any effect; any filename
  is always considered ok for reading.  This is because in practice no
  value but `a' was ever useful anyway, to the best of anyone's knowledge.
  (More comments about this in texmf.cnf and tex-file.c.)

* kpsewhich: add abbreviations all for file type formats that have a
  space in their names, and "src" as a shorter abbreviation for "source",
  for completeness.  The practical benefit is minimal.

6.4.1 (for TeX Live 2025, 7 March 2025)
* kpsewhich outputs a blank line when a given file cannot be found,
  if more than one file to search for is specified.  

* A file named ".tex" can no longer be written from TeX; previously this
  was allowed as a special case.  (The LaTeX 2024-11-01 release changes
  their build process so as not to write it from TeX.)

6.4.0 (for TeX Live 2024, 10 March 2024)
* Support an extended check for safe filenames which also allows
  TEXMF[SYS]VAR, for Lua(La)TeX; new functions and corresponding
  kpsewhich options.
* Support a new variable TEXMF_OUTPUT_DIRECTORY (alongside the
  traditional TEXMFOUTPUT), so that subprograms can have access to an
  --output-directory setting in an engine invocation.

6.3.5 (for TeX Live 2023, 9 March 2023)
* Support guessing input file encodings for Unix-ish platforms, as on
  Windows; enabled for (e)p(la)tex, pbibtex, mendex.

6.3.4 (for TeX Live 2022, 21 March 2022)
* First return path from kpsewhich -all is now the same as non-all.
  (Internally, str_list_uniqify retains ordering.)

6.3.3 (for TeX Live 2021, 23 March 2021)
* The library does not emit warnings for unrecognized filenames,
  leaving it up to the caller.
* Double save_size limit to 200,000 for tex4ht, l3regex, etc.

6.3.2 (for TeX Live 2020, 27 March 2020)
* New option --cnf-line for kpsewhich (and tex and mf) to support
  arbitrary configuration settings on the command line.
* Warn about unusual program name qualifiers.
* The mktex* programs are no longer maintained or present here, but in
  TeX Live's Master/texmf-dist/scripts/texlive (with copies in
  Build/source/texk/texlive/linked_scripts as usual).

6.3.1 (for TeX Live 2019, 7 April 2019)
* kpsewhich --var-value does brace expansion as well as variable and
  tilde expansion.
* The kpathsea_path_search() and related functions always recognize either
  common path separator (: or ;) when splitting paths into elements.
  (Before, there were some unusual contexts where this did not happen.)

6.3.0 (for TeX Live 2018, 14 April 2018)
* New configuration value texmf_casefold_search to fall back to
  case-insensitive search in non-system directories if there is no exact
  match; only relevant on Unix.

6.2.3 (for TeX Live 2017, 19 May 2017)
* .OTF treated like .otf.
* texmf.cnf: mpost removed from default shell_escape_commands.
* texmf.cnf: TEXINPUTS.luajitlatex added.
* texmf.cnf: default bibtex capacities increased.

6.2.2 (for TeX Live 2016, 21 May 2016)
* gregorio added to default shell_escape_commands.

6.2.1 (for TeX Live 2015, 21 May 2015)
* search path information output with new option --help-formats to kpsewhich,
  no longer with --help.
* install <kpathsea/c-auto.h> in an architecture dependent location
  and use pkg-config to get the required flags.

6.2.0 (for TeX Live 2014, 30 May 2013)
* mktexlsr outputs normal msgs to stdout instead of stderr.
* do not ignore a non-terminated last line of a file.
* new texmf.cnf variables SELFAUTOGRANDPARENT, guess_input_kanji_encoding.
* Numerous changes for Windows.

6.1.1 (for TeX Live 2013, 30 May 2013)
* just one tree: merge texmf into texmf-dist.

6.1.0 (for TeX Live 2012, 1 July 2012)
* texmf.cnf is found in the great-grandparent's texmf-local,
  corresponding to the default TeX Live installation.
* New formats for .ris, .bltxml.
* Merge with W32TeX.

6.0.1 (for TeX Live 2011, 5 July 2011)
* Trailing comments and whitespace omitted from config values.
* Add .tlu to type lua suffixes, and .dfont to truetype suffixes.
* Prefix program_invocation{,_short}_name with kpse_.
* Finally remove kpse_set_progname (deprecated since 1998).

6.0.0 (for TeX Live 2010, 4 June 2010)
* Change xmalloc and friends to use size_t, unfortunately changing the ABI.

5.0.0 (for TeX Live 2009, 13 October 2009)
* Make shared library version and general package version the same.
* Make library re-entrant, thus unavoidable binary API changes.
* Change build system to Automake.

3.5.7 (for TeX Live 2008, 8 July 2008)
* kpsewhich has new options --all (to report all matches) and --subdir
  (to limit matches).
* more file suffixes (.dtx, et al.) and special files (updmap.cfg, et al.)
  found automatically.
* add basic Lua support.
* add 64-bit functions for pdftex.
* autoconf support finally modernized.

3.5.6 (for TeX Live 2006-07, 30 December 2006)
* longstanding minor portability/warnings problems.

3.5.5
* Copyrights of some source files were erroneously attributed to FSF.
* On Unix, accept the semicolon as well as the colon in environment
  variables like TEXINPUTS.
* Keep metafont from choking on large literals (> 4000) when calling
  mktexpk.

3.5.4 (7 March 2005)
* Change of some standard environment/texmf.cnf variables:
  HOMETEXMF -> TEXMFHOME
  VARTEXMF -> TEXMFVAR
  TEXMFVAR, TEXMFCONFIG: Always defined for the sake of teTeX 3.0.
  TEXMFSYSVAR, TEXMFSYSCONFIG: Added for the sake of teTeX 3.0.
* mktex*: A new option for MT_FEATURES in mktex.cnf: texmfvar.  If
  selected, files that would be written into a system texmf tree go
  to the TEXMFVAR tree.  Overriden by varfonts.

3.5.3 (28 November 2004)
* New options for kpsewhich
  -var-value=VARIABLE  to expand $VARIABLE without having to give an $
                       on the command line.
  -engine=ENGINE       to set the engine name, used in some search paths.
* New formats: kpse_enc_format, kpse_cmap_format, kpse_sfd_format,
  kpse_opentype_fomat, kpse_pdftex_config_format, kpse_lig_format,
  kpse_texmfscript_format.
* Add .afmt to the suffixes for kpse_fmt_format.  Aleph uses this.
* Rename access to kpseaccess.
* Rename readlink to kpsereadlink.
* Stop search early if we're given absolute or explicit relative names.
* Add 'angle(0,0)' to the metafont errors mktexpk will ignore.
* The withenable.ac script (used in configure) will fall back on using
  kpsewhich to look for texmf trees.
* If ls-R is not found check for ls-r as well.
* kpsewhich: add -var-value option.

3.5.2 (19 February 2003)
* Critical bugfix to db.c.

3.5.1 (17 February 2003)
* No news.

3.5.0 (15 February 2003)
* Use libtool.
* Do absolute searches again.
* Retain '${prefix}' in Makefile for texmf if that's how we found the tree.

3.4.6 (7 February 2003)
* Support for e-Omega.
* Change to the search algorithm: when there are several possibilities, look
  for all of them in one directory before moving to the next directory.

3.4.5 (28 January 2003)
* Remove "." from the TEXCONFIG path.

3.4.4 (16 January 2003)
* Add VARTEXMF HOMETEXMF to the default paths of texmf.in.

3.4.3 (11 January 2003)
* Minor fixes.
* Use both .w and .web suffixes for cweb.

3.4.2 (23 December 2002)
* Minor fixes to makefiles.
* A Win32 implementation of the fork/exec path in mktex.  This leaves
  MSDOS to be done.

3.4.1 (20 December 2002)
* A couple of fixes for the fork/exec code.

3.4.0 (14 December 2002)
* 3.4.x number as ABI is certainly broken now.
* Change the way the mktex* command lines are set up on unix systems.
  Now we call fork/exec directly instead of using popen.
  This code is not yet implemented for Windows/DOS.
* We're now (un?)fairly restrictive on what names are allowed for fonts.
  That part of the code probably need improvement.
* When reading names from the ls-R file, they are no longer case-smashed.
  So on platforms where this matters, the case-smashing should occur before
  names are inserted into the ls-R file -- only lowercase should be used in
  that file.

3.3.11 (13 November 2002)
* Minor fixes.

3.3.10 (11 November 2002)
* Minor fixes.

3.3.9 (22 October 2002)
* New extension: .oft for Omega formats.

3.3.8 (11 October 2002)
* Add support for mktexfmt (which is normally a link to fmtutil).
* Check both VAR.progname and VAR_progname in the environment.

3.3.7 (27 November 2001)
* Minor fixes/changes to assist Omega development.

3.3.6 (18 November 2001)
* Minor fixes/changes to assist Omega development.

3.3.5 (10 November 2001)
* Minor bug fixes.

3.3.4 (30 October 2001)
* Minor bug fixes.

3.3.3 (5 August 2000)
* On NeXT, 'rm -rf' will not fail, but uses the cwd as its argument.
  mktexlsr counted on it to fail, with sometimes disastrous results.

3.3.2 (25 April 1999)
* Minor bug fixes.

3.3.1 (29 May 1999)
* Minor bug fixes.

3.3 (26 March 1999)
* Minor bugfixes.

3.2 (15 March 1998)
* Brace expansion will accept the path separator as well as the comma,
  e.g., {foo:bar}.
* For TeX, we only recognize one suffix, because there is no such thing
  as a canonical list of TeX suffixes.
* We distinguish between two kinds of suffixes in the code: the standard
  suffixes which may be appended to filenames when searching; and the
  alternative suffixes which are never appended, but when found this
  prevents a search with one of the standard suffixes. 
* kpse_reset_program_name: change assumed program name, resets the search
  paths, so that searches will work as expected for the new name.
* kpse_set_program_name: new function, replaces kpse_set_progname.
* The MakeTeX* scripts have been renamed to mktex* forms.

3.1 (10 November 1997)
* The support for multiple texmf trees is much improved.
* New MakeTeX* scripts, based on teTeX's.  These scripts now use
  heuristics to decide where generated files are placed and which
  permissions they should have.
* The varfonts feature is enabled by default.
* Some MSDOS/Win32 support added to the sources.
* Change in searching algorithm: if a name doesn't have the default suffix
  we append it for the first search.  Then we search for the bare name.
  Thus if you have foo.bar and foo.bar.tex, the latter will now be found
  first.  Under the old system, you had to specify boo.bar.tex.tex to get
  foo.bar.tex instead of foo.bar.
* Prepend the value of KPSE_DOT to relative paths from texmf.cnf if it
  defined in the environment.  This means we can use . instead of
  $KPSE_DOT in paths.
* Define brace expansion so that {a,b}{1,2} expands to a1:b1:a2:b2.  This
  is different from how shells do it, and exploited in texmf.in.
* Renamed texmf.cnf.in to texmf.in.
* New value for debugging: DEBUG_VARS, equal to 64.
* If a file format has no suffix, allow its long name as the argument to
  kpsewhich --format.

3.0 (7 February 1997)
* Distribution terms changed to the GNU Library General Public License.
* Default directory structure matches the TDS standard. The most
  important change is in the fonts/ directory: the file type (tfm, pk)
  is now directly underneath fonts/.  Also, mft/ is now at the top level.
  `modeless' is used for gsftopk/ps2pk/etc.-generated fonts.
* Change in searching algorithm: if the name already has a suffix
  (foo.sty), search for it by itself first, before appending the default
  suffix (foo.sty.tex).  This loses if you have an executable named
  foo.bar, with documentation in foo.bar.tex (foo.bar will be found
  first).  But this is unusual, and the other case is common.
* Environment variables PATH_program (e.g., TEXINPUTS_latex) checked
  for, as with configuration file values (TEXINPUTS.latex).
* Multiple TEXMF trees supported, via the following new facility:
* Shell brace expansion {foo,bar} implemented, thanks to Bash.
* Multiple ls-R files supported via the TEXMFDBS path.
* An ``alias'' database for files in ls-R supported, to handle 8.3 problems.
* Directories in the ls-R file can be relative (./) as well as absolute (/).
* New MakeTeX{PK,TFM,MF} scripts with more features, based on teTeX's.
* DVIPSMAKEPK (etc.) actually overrides the name `MakeTeXPK', as documented.
* MakeTeX* can be globally disabled via configure options.
* Support for building as a shared library with configure --enable-shared.
* Directories whose names begin with `.' are ignored.
* Some warnings can be suppressed by TEX_HUSH cnf value or envvar.
* kpsewhich has many new capabilities, documented via --help and in the manual.
* texfonts.map parsing has an include directive, and @c is a comment.
* Input lines in texmf.cnf can be continued with \.
* TEXMFLOG can be set in texmf.cnf, as previously documented.
* SELFAUTODIR and SELFAUTOPARENT are defined according to the location
  of the binary, and used to search for texmf.cnf.
* /// (or more) is equivalent to //.
* If $HOME = / (as with root on some systems), avoid creating // in paths.
* Support for AFM, PostScript Type 1 font, source, documentation, Omega,
  and MetaPost-related file formats.
* New header kpathsea.h with all #include files.
* Under DOS, ls-R lines need not start with . or / or \ (e.g., c:).
* Amiga support.

2.6 (9 January 1995)
* MakeTeXPK installed from kpathsea, instead of each driver.
* MakeTeXPK.site looked for in texmf/web2c, instead of texmf/dvips.
* texmf.cnf installed and looked for in texmf/web2c, instead of texmf.
* If a mode is not explicitly specified, search all subdirectories (this
  was actually in a previous release).
* install-sh only looked for in the top-level directory.
* kpsewhich replaces and generalizes kpsexpand.

2.5 (15 December 1994)
* Go back to calling db_insert after a successful MakeTeXPK, and check
  for lack of an ls-R.
* Handle case of magstep -.5 for MakeTeXPK properly.

2.4 (28 October 1994)
* Avoid calling db_insert, which caused a segmentation fault.

2.3 (26 October 1994)
* Extra :'s in an envvar value, referring to the texmf.cnf value, work.
* Names like dpi600/cmr10.pk can be found in ls-R.
* KPATHSEA_DEBUG environment variable checked.
* Directories like pk/ljfour directly under $TEXMF/fonts are found.
* New standalone program, kpsexpand, optionally compiled and installed,
  to do variable expansion (not path searching).
* Debugging output written to stderr instead of stdout.
* pxlNNN support removed; I never intended to support `pxl1500', and
  pxl300 is never used.

2.2 (14 October 1994)
* MakeTeXPK invoked for the any_glyph type; this is for xdvik.
* MakeTeXPK sources $(psheaderdir)/MakeTeXPK.site if it exists.
* pxlNNN/cmr10.pk searched for (as well as dpiNNN/cmr10.pk and cmr10.NNNpk)

2.1 (12 September 1994)
* Manual goes through TeX, and .cps/.aux files are in the distribution.
* INSTALL* variables set at the top level.
* Dependency on GNU tr making paths.h and texmf.sed (->texmf.cnf) removed.
* texmf.cnf installed if it didn't previously exist.

2.0 (8 September 1994)
* Runtime configuration file support; see the manual.
* Both dpi600/cmr10.pk and cmr10.600pk are searched for.
* ls-R matches $TEXMF//latex2e vs. $TEXMF//latex209.
* $TEXMFLOG, if set, specifies a filename for logging successful searches.
* All directory entries beginning with `.' are ignored, not just `.' and `..'.
* Default path for PK and GF fonts includes the mode name.
* ls-R is in $TEXMFROOT instead of hardwired at compile time.
* More debugging flags, and they can be set with client program options.
* If MakeTeX{PK,TFM} fail, or aren't invoked, a file missfont.log is
  written with the requisite commands, as in dvips.
* More 328/329/330 fixes, maybe for the last time.
* The override font paths (XDVIFONTS etc.) apply only to glyph (PK/GF)
  searches, not TFM or VF.
* -g is not the default when linking, to avoid unnecessarily large binaries
  (due to static libraries) under Linux.
* configure checks for a smart putenv.
* Stat results are cached to speed up disk searches.

1.8 (2 April 1994)
* New target install-info, so the documentation can be installed without
  the headers.
* Existing but unreadable files are complained about, instead of just ignored.
* A leading %% in a path element forbids searching the disk for that
  element; only a db will be searched (if it exists).
* The db is only used if it might be relevant to a given path element,
  not searched first regardless.

1.7 (1 March 1994)
* Searches can use an externally-built ls-R ``database'', for speed.
* `VPATH = .' lines removed from generated Makefile, for broken Sun make.
* A path foo//tfm finds foo/tfm as well as foo/*/tfm.

1.6 (3 February 1994)
* Memory fault in copying long paths fixed.
* More variables passed down from the top-level Makefile.
* Mention SMART_PUTENV in the INSTALL file, and fix bug in xputenv.c
  when one envvar is a proper prefix of another.
* More attempts at eliminating magstephalf annoyances.
* Directory name substitutions are done globally when creating paths.h.
* Various changes for DOS.

1.5 (24 January 1994)
* Default paths changed.
* Defining GCC_WCHAR lets GCC define wchar_t.
* EXIT_FAILURE and EXIT_SUCCESS defined in all cases (if they're not already).
* str[r]chr never redefined (I hope).

1.4 (3 November 1993)
* Check closest fallback font size.
* All default paths (including dvips') in paths.h.in, not the Makefile.
* Rearrange directory lists so that dirs in which a file is found
  migrate to the top.
* Update for Autoconf 1.7.

1.3 (6 October 1993)
* Fix free of non-malloced memory bug.
* Fix uninitialized gf path bug.
* mkdirchain invoked as an absolute filename.

1.2 (27 September 1993)
* Running MakeTeXPK is tried before the fallback resolutions.
* The final bitmap name uses a variable spec, so DOS & OS/2 can get
  dpi300/cmr10.pk.
* Document TeX-specific features.
* Dpi passed to MakeTeXPK via the envvar KPATHSEA_DPI instead of MAKETEX_DPI.

1.1 (26 August 1993)
* Installation fixes.

1.0 (5 August 1993)
* Routines to look up TeX font files, default path specifications, etc.
* Sort-of pattern matching: /foo//bar matches subdirectories
  /foo/a/bar, /foo/b/bar, /foo/a1/a2/bar, etc.
* $var and ${var} expansion.
* Support for MakeTeX... scripts.
* Support for fallback resolutions and font.
* Lazy evaluation of path elements.
* Some runtime debugging support.

0.2 (12 May 1993)

First general release as a standalone library.
