		Gnuplot Version 6.0.5 Release Notes
		===================================

This is the fifth incremental release for gnuplot stable version 6.0.
It contains more than the usual number of new features and improvements
back-ported from the development version.  Notably, support for mousing,
replotting, and save/restore of multiplots is now fully functional.

Changes in 6.0.5
=================

New features
------------

* Full mousing support for multiplots
  - all panels report mouse coordinates
  - all panels respond to pan/zoom/rotate mouse movement and hotkeys
  - "replot" reexecutes multiplot commands starting from current state
  - "remultiplot" restores the original state before reexecuting multiplot
  - interactive mousing remains active after ^C or "reset"

* Unicode escape sequences \U+xxxx are accepted in more contexts
  - escape sequences are expanded in "noenhanced" strings
  - escape sequences are expanded during substring evaluation
  - escape sequences are expanded in string functions strstrt() and strlen()

* New built-in function prod [<var> = <start> : <end>] <expression>
  - implements the sequential product operation
	     prod [i=a:b] f(i)   =   f(a) * f(a+1) * ... * f(b)

* Data files in EUC-JP encoding can be processed from other environments
  - If running in a EUC-JP locale, use "set encoding locale"
  - If running in a different locale, use "set encoding eucjp"
  - In either case, this affects only input data.  It does not change
    the encoding (usually UTF-8) written to plots on output.

* New coloring option for contourfill
  - Arbitrary discrete color ranges can be define without using a special palette
	set contourfill defined [zmin1:zmax1] color1, [zmin2:zmax2] color2, ...

* Allow "string"[i] as shorthand for "string"[i:i]

Changed behaviour
-----------------

* Trailing whitespace on the command line is now ignored on input.
  This means that the line-continuation character '\' is effective even
  if it is followed by an unintentional blank.

* Octal escape sequences must conform to the documented form \ooo
  - E.g. \7 or \0106 or \456 or \0 are now rejected

* "plot with labels" now accepts the "noenhanced" keyword

Bug fixes
---------

* qt: Slow font initialization on Windows			#Bug# 2316 2476
* gd: Resolved long-standing font handling problems.		#Bug# 2819
  - requires recent library versions (libgd 2.4.0 libraqm 0.10.3)
* webp:
  - possible corruption of single-frame multiplots		#Bug# 2876
  - incorrect alpha compositing onto transparent background	#BUG# 2878
* Better tic placement on logscale axis spanning two decades	#Bug# 2856
* Always clear previous plot title before a new plot is started #Bug# 2865
* Endpoint errors due to floating point precision		#Bug# 2768
* Repaired axis range parsing in parametric mode broken by change in 6.0.4
* Reworked logic for extending the command buffer incrementally on input.
  Long input lines with backslash continuation could lead to corruption
  of the command string if encountered early in program execution.
* Preserve blank lines in output from  "plot with table"	#Bug# 2874


KNOWN ISSUES
------------

- Font handling by the cairo/pango libraries supporting some gnuplot terminals
  (pdf, png, wxt, ...) on both Windows and MacOS are sensitive to the
  enviromental variable PANGOCAIRO_BACKEND.  If you are having font problems,
  try setting this to
	PANGOCAIRO_BACKEND=fc

- The libgd terminals (png/jpeg/sixelgd) may mangle the character spacing
  of rotated text, especially vertical text.  This is due to version mismatches
  with the shared libraries libgd.so and libraqm.so.  I do not know the full
  set of which pairs of versions work nicely with each other, but these recent
  versions do not suffer from this problem when used together.
	- libgd   version 2.4.0     (libgd.so.3)
	- libraqm version 0.10.3 

- Recent TeXLive pdflatex binaries do not like some of the UTF-8 characters in
  the user manual.  The distribution includes a pre-built copy of gnuplot.pdf
  but if you want to rebuild it from the source in docs/gnuplot.doc please use
  lualatex or xelatex instead.  You can either replace the definition
  PDFLATEX=pdflatex with PDFLATEX=lualatex in the Makefile or provide this in
  the environment during configuration
	PDFLATEX=lualatex ./configure

Gnuplot development is tracked in a git repository on SourceForge.
You can generate a complete history of changes using "git log"
after downloading:

<pre>
    git clone -b branch-6-0-stable git://git.code.sf.net/p/gnuplot/gnuplot-main
    git log
</pre>

Release Notes date:  28 July 2026


			Changes in 6.0.4
			=================

* NEW	 variable Inf is pre-set to floating point INFINITY
* NEW	 "sharpen" filter handles vertical edges in a step function
* NEW	 gprintf format specifiers %C and %Ci
	 %C  formats a complex value as {a, b}
	     This is the format used by the gnuplot "print" command
	 %Ci formats a complex value as a + bi
	     Both the real and imaginary parts are printed using libc format %g
	     with optional width and precision
* NEW	 Allow installation of 64bit version on Windows on ARM systems
* NEW	 mingw: optionally use the MSYS2/CLANG64 environment
	 Support for cross-compilation for Windows on ARM
* CHANGE update configure and headers for better compatibility with c23/gcc15
* CHANGE splot with pm3d fillcolor <x> generates a matching key sample
* CHANGE gprintf %H format is distinct from %h in utf8 context
         %H uses dot operator between mantissa and exponent
* CHANGE kitty, sixel: default size to 100% width, 75% height of terminal window
* CHANGE partially deprecate the "sample" keyword for plot commands
	 The plot command accepts axis ranges as the first thing after "plot".
	 If present, they update the primary axis ranges x y x2 y2.
	 If a second colon is found in the range, as in [t=min:max:increment],
	 this is unambiguously a sample range rather than an axis range so
	 the "sample" keyword is not required.                          Bug 2666
* CHANGE do not break contour lines into 100-segment fragments
	 This fixes a bug when saved contour lines are used as polygons.
	 To maintain previous placement of contour labels, use
	 "set cntrlabl interval 100".
* FIX	 sixel: improved support for a transparent background           Bug 2828
* FIX	 kitty: support animation on a transparent background
* FIX	 webp:  support animation on a transparent background
* FIX	 backport fixes for color assignment to pm3d surfaces
	 "set pm3d implicit" + "with lines" treated the same as "with pm3d"
	 adds support for "fc background"
	 pm3d interpolate > 1 inherits rgb color assignments from the parent tile
* FIX	 fill style of colorbox should match fill style of pm3d surface
* FIX	 svg: fillstyle solid <frac> was incorrectly treated as transparent
* FIX	 transparent fill color in 3D boxes and polygons                Bug 2812
* FIX	 alpha channel colors on ARM platforms                          Bug 2812
* FIX	 resolve ambiguous syntax in "set dashtype i (n,m)"             Bug 2814
* FIX	 svg: font size changes within a text fragment could be lost    Bug 2816
* FIX	 "reset session" must terminate multiplot mode
* FIX	 determination of above/below in polar mode filledcurves        Bug 2825
* FIX	 always flush hidden3d line cache if present                    Bug 2836
* FIX	 incorrect evaluation of a**b for integer a, integer b < 0
	 in the case of "set overflow NaN" or "set overflow undefined"
* FIX	 loss of precision in some ranges for asin acos asinh acosh     Bug 2839


			Changes in 6.0.3
			================

* NEW	 "contourfill {at base} {fs {no}border}"
* NEW	 "save changes <filename>"
* NEW    "plot <data> ... if (filter_condition)"
* NEW    backport watchpoint improvements from 6.1
* NEW	 Continued work on multiplot replot and mousing
* CHANGE 3D polygon objects can have per-object fill border properties.
* CHANGE The configuration option --with-wx-multithreaded has been removed.
* CHANGE "with hsteps" takes default width from "set boxwidth".
* CHANGE column(0) returns an integer (not complex) value
* CHANGE win: dll function loading altered for compatibility with gcc15
* FIX	 Support for combined hidden3d + pm3d depthorder back-ported from 6.1
* FIX	 qt: opaque key caused incorrect interactive toggling of final plot
* FIX	 6.0.2 regression in "splot ... using 1:2:3:4 lc palette"
* FIX	 placement of category labels along x-axis of boxplots
* FIX	 qt, cairo: "set colorbox invert" produced empty colorbox
* FIX	 placement of minor tics along logscale axis with narrow range
* FIX	 OK to have missing corners in an image from a sparse matrix
* FIX	 error handling for various corner cases involving function blocks

			Changes in 6.0.2
			================

* NEW	 plot style "with hsteps" enables a variety of new plot types
* NEW	 3D plot style "with filledcurves"
* NEW	 UTF-8 terminal input supported when linked with BSD editline library
* NEW	 3D polygons can use palette coloring and pm3d lighting
* NEW	 General binary keyword option "blank=NaN"
* NEW	 "linestyle variable" is accepted as a color specifier in plot commands
* CHANGE Local variables are reimplemented to provide a better-defined scope
* CHANGE Boxplot outlier placement is controlled by "set jitter"
* CHANGE Content of $GPVAL_LAST_MULTIPLOT is appended to the output from "save"
* FIX	 reworked generation of logscale axis tic marks                 Bugs 2372 2717
* FIX	 Do not save extraneous commands to $GPVAL_LAST_MULTIPLOT       Bug 2714
* FIX	 svg: modify gnuplot_svg.js to work in local standalone mode    Bug 2715
* FIX	 wxt: release per-thread font data before entering "persist"    Bug 2693
* FIX	 "set table": honor "nosurface" keyword in splot
* FIX	 "set table": honor "set format z" when z is printed from plot
* FIX	 better contouring near the edge of a z-clipped surface
* FIX	 handle mousing of logscale axes in inactive plot windows       Bug 2723
* FIX	 "set tics scale" does not change other axis tick properties    Bug 2724
* FIX	 points with variable color value NaN should not be drawn       Bug 2737
* FIX	 "set term tikz nostandalone" should suppress the latex wrapper Bug 2740
* FIX	 handle unusual case of intersecting pm3d surfaces              Bug 2744
* FIX	 prevent use-after-free if a function block has no "return"     Bug 2745

			Changes in 6.0.1
			================

* CHANGE Use of data source '-' inside a multiplot is an error; use a local datablock instead
* CHANGE gd: scale "dot" (pointtype 0) by current linewidth		Bug 2690
* FIX	 configure script modified to accommodate Fedora dependencies	Bug 2706
* FIX	 mp: configure --with-metapost failed to include mp terminal
* FIX	 empty field in csv file should not generate a tic label	Bug 2667 2672
* FIX	 Do not autoscale or extend axis ranges while zooming		Bug 2679 2680
* FIX	 svg: set default fill properties for depth-sorted pm3d objects
* FIX	 x11: Empirical correction for bad rotation of enhanced text	Bug 2661
* FIX	 wxt: Add exception handler for mouse event processing		Bug 2680 2683
* FIX	 wxt: make right-mouse zoom box independent of terminal scaling	Bug 2578
* FIX	 regression: border color of objects with fillstyle "empty"	Bug 2686
* FIX	 "set colorbox border {<lt>}" parsing error
* FIX	 gd x11:  very short arrows were not drawn at all		Bug 2690
* FIX	 qt wxt x11: "set term" from a script causes next pause to fail	Bug 2703
* FIX	 tikz: fix use of palettes with a fixed number of colors	Bug 2706
* FIX	 "stats ... name FOO" Do not delete existing variables FOO_*	Bug 2695
* FIX	 order-dependent parsing of 2D plots with "fs solid fc variable"

		Features introduced in version 6
		================================

For a detailed list of new features, with illustrations, see
  http://www.gnuplot.info/docs_6.0/NewFeatures.html

For more example plots see
  http://www.gnuplot.info/demo_6.0/

- Function blocks and scoped variables
- Larger collection of special and complex-valued functions
- New plot styles
	o 2D plot style `with surface` works in 2D polar coordinates to produce a
	  solid-fill gridded representation of the plane. This is analogous to the
	  use of dgrid3d and pm3d to produce a 3D gridded surface.
	o 2D plot style `with sectors` renders one annular segment ("sector") for
	  each line of input data. This style can generate pie and donut charts,
	  windrose charts, and a polar equivalent to sparse-matrix heatmaps.
	o 2D plot style `with lines` now has a filter option `sharpen`.
	  This filter detects spikes in a function plot that would be missed or
	  under-represented due to coarse sampling.  It adds an additional
	  sampling point at the location of each such peak.
	o 3D plot style `with contourfill` produces 2D or 3D surfaces with
	  distinct z-ranges indicated by solid color fill.
- Hulls, masks, and smoothing
	o A cluster of 2D points can be replaced by a bounding polygon ("hull").
	  Both convex hulls and concave hulls (χ-shapes) are supported.
	o Any hull or other closed path can be used as a mask to display only
	  selected regions of a pm3d surface or image plot.
	o New smoothing option "smooth path" can be used on 2D and 3D curves
	  that are not monotonic on x or y.  This allows smoothing of hulls.
- Named palettes
	o The current palette can be saved to a named colormap for future us.
	o A predefined palette named "viridis" is provided.
	o Plots can specify a previously saved palette by name.
	  This permits the use of multiple palettes in a single plot command.
	o Named palettes can be edited to contain an alpha channel.
- New built-in functions and array operations
	o palette(z) returns the current RGB palette color mapping for z.
	o rgbcolor("name") returns the 32bit ARGB value for a named color.
	o index(Array, element) returns the first index i for which Array[i]
	  is equal to element.
	o split("string", "separator") unpacks the fields in a string into
	  an array of strings.
	o join(array, "separator") is the complement to split().
	  It concatenates the elements of a string array into a single string.
	o `stats <non-existent file>` yields a testable value with no error;
	  useful to avoid errors or warnings in scripts.
- Program control flow
	o New syntax if {...} else if {...} else {...}
	o XDG base directory conventions for configuration files are supported.
	o `unset warnings` suppresses output of warning messages to the console.
	o The `fit` command is protected by exception handling. Control always
	  returns to the next line of input even in the case of fit errors.
	  On return FIT_ERROR is non-zero if an error occurred.
	o "Watchpoints"  are target values associated with individual plots
	  in a graph. As that plot is drawn, each component line segment is
	  monitored to see if its endpoints bracket the target value of a
	  watchpoint coordinate (x, y, or z) or function f(x,y).
	  If a match is found, the [x,y] coordinates of the match point are
	  saved for later use.  Possible uses include
		- find the intersection points of two curves
		- find zeros of a function
		- find and notate where a dependent variable or function f(x,y)
		  crosses a threshold value
		- use the mouse to track values along multiple plots simultaneously
- New terminals and terminal options
	o Terminals that display graphics in the same window as text entry now
	  support pseudo-mousing; i.e. they respond to arrow keys and other
	  hot-key bindings during "pause mouse".
	o New terminals kittygd and kittycairo provide in-window graphics for
	  terminal emulators that support the kitty protocol.
	o New terminal webp generates a single frame or an animation sequence
	  using webp encoding. Frames are generated using pngcairo,
	  then encoded through the WebPAnimEncoder API.
	o New terminal block for text-mode pseudo-graphics uses Unicode block
	  or Braille characters to offer improved resolution compared to the
	  dumb or caca terminals.
	o latex terminals standalone mode updated to work with texlive2023
- Miscellaneous other new features
	o Multiplots can now be saved, replotted, and resized interactively.
	  This is a change from all previous gnuplot versions, where only the
	  most recent component of a multiplot could be replotted.
	o The command sequence that generates the current multiplot is saved to
	  a datablock $GPVAL_LAST_MULTIPLOT.
	o New command "remultiplot" replays the saved command sequence. 
	o Time unit settings for major and minor axis tics.  For example,
	  minor tic marks can be placed at exactly one month intervals.
	o The character sequence $# in a using specifier evaluates to the total
	  number of columns available in the current line of data.
	  "plot FOO using 0:(column($# - 1))" plots the last-but-one field of each row.
	o keyword binvalue=avg plots the average, rather than the sum, of binned data.
	o "set colorbox bottom" places the color box underneath the plot.
	o "set pm3d spotlight" adds a user-controlled spotlight to the lighting model.
	o New key layout options to force specific width or number of columns.
	  Automatic positioning of the key on the page can be manually tweaked
	  by giving an offset.
	o "set isotropic" adjusts the axis scaling in both 2D and 3D plots such
	  that x, y, and z axes all have the same scale.
	o Text rotation angles are not limited to integral degree values.
	o Data-driven color assignments in plot style "histograms".
	o A keyentry with no given plot style can be used to place a secondary title
	  in the key or, in combintation with "title", to create two columns of text.

		Notes for packagers and testers
		===============================

Obsolete or deprecated components
---------------------------------

The "gnuplot mode" elisp and TeX files for use with emacs are now
maintained as a separate project: https://github.com/bruceravel/gnuplot-mode
so there is no longer a configuration option --with-lisp-files.

LaTeX-related terminal drivers latex, emtex, eepic, and tpic are no longer
built by default.  Their closest equivalent is the new pict2e terminal, but
LaTeX users who want support for the full range of gnuplot plot styles are
recommended to use the cairolatex or tikz terminals.

Configuration options for interactive use
-----------------------------------------

The 6.0 source code supports three primary cross-platform interactive
modes in addition to several platform-specific modes.

1) Qt

   The qt terminal supports interactive display with menu-driven
   output to png, svg or pdf.  If either Qt6 or Qt5 is detected by the
   configure script, this will be the default terminal.  It is now the
   fastest and most full-featured interactive terminal option.

   To disable this terminal or force use of Qt5 even if Qt6 is present
	$ ./configure --with-qt=qt5
	$ ./configure --without-qt
	   
2) Cairo/pango/wxWidgets

   This set of terminals includes pngcairo, pdfcairo, epscairo, and cairolatex
   for output to a file. The wxt terminal provides interactive display
   All of these will be built by default if the configuration script finds
   the required libcairo, libpango, libcairo, libwxgtk, and related
   support libraries

   To disable these terminals:
       $ ./configure --without-cairo
       $ ./configure --with-cairo --disable-wxwidgets
       
3) X11 (the "classic" interactive interface)
   This used to be the preferred interactive interface, but the newer
   wxt and qt terminals offer nicer output and a wider range of features.


Output to files
---------------

Of course the terminals (output modes) present in previous gnuplot versions
are also still available. These include, among many more obscure options:

- PostScript (*.ps or *.eps)
- svg
- png/jpeg/gif output via libgd graphics library
- png/pdf/eps output via cairo graphics library
- TeX/LaTeX including TikZ and ConTeXt
- Bitmapped output to support older devices (e.g. HP deskjet, epson, and
  seiko printers, pbm bitmapped graphics files) is available if needed
  but is no longer configured in by default.
      ./configure --with-bitmap-terminals

Output of inline graphics to terminal emulator or linux console
---------------------------------------------------------------

The sixel and kitty terminals display graphics in-line with the commands
typed in a suitable terminal emulator window.  For example "xterm -ti 340"
emulates a vt340 with indexed color sixel graphics.
The KDE desktop konsole terminal provides RGB color sixel graphics
and 32-bit color + alpha channel graphics using the kitty protocol.
The yaft terminal emulator can provide sixel graphics at linux console
level with no x11 or other windowing system active.

Generating interactive plots for web display
--------------------------------------------

- Mouseable output for display on the web can be created using either
  the canvas terminal (HTML5 2D canvas element) or the svg terminal.
  Both allow zooming, toggling plot elements on/off, and user-scriptable
  hot keys.

			Other Notes
			===========

Installation
------------

You can download a source tarball for the current gnuplot version
from the gnuplot development site on SourceForge.
	http://sourceforge.net/projects/gnuplot

Some platform-specific installation tips are given in the INSTALL
file of the source package; the short version for linux/unix-like
systems is to unpack the tarball and then
<PRE>
build it:
      cd gnuplot-6.0.5 ; ./configure ; make
test it:
      make check
install it:
      make install
</PRE>

Pay careful attention to the output of the ./configure script.
It may indicate that some output modes have been omitted because the
necessary support libraries were not found.  In general you need to have
previously installed the "*-devel-*" versions of these libraries.


Support
-------
Please report all bugs and installation problems to the bug tracker
on SourceForge:
	https://sourceforge.net/p/gnuplot/bugs/

Development
-----------
Gnuplot development is ongoing. The development branch contains preliminary
implementations of new features.  The current development version is 6.1.
Bug fixes for version 6.0 will appear in patchlevel releases 6.0.1, 6.0.2, etc.
approximately twice a year or as needed to correct a serious regression.
