Summary of important user-visible changes for version 5 (yyyy-mm-dd):
--------------------------------------------------------------------

 ** The determination of an object's dimensions, size, and shape by the
    functions ndims, rows, columns, isscalar, isvector, isrow, iscolumn,
    ismatrix, and issquare now fully depends on the function size.
    Thus, any user-defined object can ensure correct treatment by the
    aforementioned functions by properly overloading the "size"
    function.

 ** The function randi has been recoded to produce an unbiased (all
    results are equally likely) sample of integers.  This may produce
    different results in existing code.  If it is necessary to reproduce
    the exact random integer sequence as in previous versions use

      ri = imin + floor ((imax - imin + 1) * rand ());

 ** A new core function movfun will apply a function to a sliding
    window of arbitrary size on a dataset and accumulate the results.
    Many common cases have been implemented using the naming
    scheme movXXX where "XXX" is the function that will be applied.
    For example, the moving average over a dataset is movmean.
    New moving window functions:

    movfun   movslice
    movmad   movmax   movmean   movmedian   movmin   movprod
    movstd   movsum   movvar

 ** The functions issymmetric and ishermitian accept an option "nonskew"
    or "skew" to calculate the symmetric or skew-symmetric property
    of a matrix.  Performance has also been increased.

 ** The function isdefinite now returns true or false rather than
    -1, 0, 1.  To test for a positive semi-definite matrix (old output
    of 0) check whether the following two conditions hold:

      isdefinite (A) => 0
      isdefinite (A + 5*TOL, TOL) => 1

 ** The issorted function now uses a direction option of "ascend" or
    "descend" to make it compatible with both the sort function and
    with Matlab.  Change all uses of "ascending" and "descending" in
    existing code to the new options.

 ** The strncmp and strncmpi functions now return true if the two input
    strings match, even though the number of characters specified by N
    exceeds the string length.  This behavior more closely matches
    common sense and is Matlab compatible.  Example:

      Octave 5   : strncmp ("abc", "abc", 100) => true
      Previously : strncmp ("abc", "abc", 100) => false

 ** The intmax, intmin, and flintmax functions now accept a variable
    as input.  This supports a common programming usage which is to
    query the range of an existing variable.  Existing code can be
    simplified by removing the call to "class" that was previously
    required.  Example:

                   x = int8 (3);
      Octave 5   : range = [ intmin(x), intmax(x) ]
      Previously : range = [ intmin(class(x)), intmax(class(x)) ]

 ** The ranks function has been recoded for performance and is now 25X
    faster.  In addition, it now supports a third argument that
    specifies how to resolve the ranking of tie values.

 ** The fsolve function has been tweaked to use larger step sizes when
    calculating the Jacobian of a function with finite differences.
    This leads to faster convergence.  The default solver options have
    also changed to be Matlab compatible.  This *may* result in existing
    code producing different results.

          Option     |  New Default   |  Old Default
      ------------------------------------------------
        FinDiffType  |   "forward"    |   "central"
        MaxFunEvals  | 100*length(x0) |     Inf
        TolFun       |     1e-6       |     1e-7
        TolX         |     1e-6       |     1e-7
        Updating     |     "off"      |     "on"

 ** The fminsearch function has changed default solver options for
    Matlab compatibility.  The accuracy option TolFun is now 1e-4 rather
    than 1e-7.  This *may* result in existing code producing different
    results.

 ** The fminbnd function has changed defaults for Matlab compatibility.
    This *may* result in existing code producing different results.

          Option     |  New Default   |  Old Default
      ------------------------------------------------
        MaxFunEvals  |      500       |     Inf
        MaxIter      |      500       |     Inf
        TolX         |     1e-4       |     1e-8

 ** The fminunc function has changed defaults for Matlab compatibility.
    This *may* result in existing code producing different results.

          Option     |  New Default   |  Old Default
      ------------------------------------------------
        FinDiffType  |   "forward"    |   "central"
        MaxFunEvals  | 100*length(x0) |     Inf
        TolX         |     1e-6       |     1e-7
        TolFun       |     1e-6       |     1e-7

 ** Using "clear" with no arguments now removes only local variables
    from the current workspace.  Global variables will no longer be
    visible, but they continue to exist in the global workspace and
    possibly other workspaces such as the base workspace.
    This change was made for Matlab compatibility.

 ** The Octave plotting system now supports high resolution screens,
    i.e, those with greater than 96 DPI which are referred to as
    HiDPI/Retina monitors.

 ** Figure graphic objects have a new property "Number" which is
    read-only and will return the handle (number) of the figure.
    However, if the property "IntegerHandle" has been set to "off" then
    the property will return an empty matrix ([]).

 ** Patch and surface graphic objects now use the "FaceNormals" property
    for flat lighting.

 ** "FaceNormals" and "VertexNormals" for patch and surface graphic
    objects are now calculated only when necessary to improve graphics
    performance.  In order for any normals to be calculated the
    "FaceLighting" property must be set to "flat" (FaceNormals) or
    "gouraud" (VertexNormals), AND a light object must be present in the
    axes.

 ** The "Margin" property of text() objects has a new default of 3
    rather than 2.  This change was made for Matlab compatibility.

 ** Printing to raster formats (bitmaps like PNG or JPEG) now uses an
    OpenGL-based method by default.  The print options "-opengl"
    (raster) and "-painters" (vector) have been added ("qt" toolkit
    only).  The figure property "renderer" specifies which renderer to
    use.  When the property "renderermode" is "auto" Octave will select
    -opengl for a raster output format and -painters for a vector output
    format.

 ** A new print option "-RGBImage" has been added which captures the
    pixels of a figure as an image.  This is similar to screen capture
    tools, except that print formatting options can be used to, for
    example, change the resolution or display the image in black and
    white.

 ** Two new print options for page-based formats (PDF, PostScript) have
    been added.  The "-fillpage" option will stretch the plot to occupy
    the entire page with 0.25 inch margins all around.  The "-bestfit"
    option will expand the plot to take up as much room as possible on
    the page without distorting the original aspect ratio of the plot.

 ** Printing using the -dtiff output device will now create compressed
    images using LZW compression.  This change was made for Matlab
    compatibility.  To produce uncompressed images use the -dtiffn
    device.

 ** A new printing device is available, -ddumb, which produces ASCII art
    for plots.  This device is only available with the gnuplot toolkit.

 ** Specifying legend position with a numeric argument is deprecated and
    will be removed in Octave 7.0.  Use a string argument instead.

 ** It is now possible to use files and folders containing Unicode
    characters in Windows.

 ** The environment variable used by mkoctfile for linker flags is now
    LDFLAGS rather than LFLAGS.  LFLAGS is deprecated, and a warning
    is emitted if is used, but it will continue to work until eventual
    removal in Octave 7.0.

 ** The GUI requires Qt libraries.  The minimum Qt4 version supported is
    Qt4.8.  Qt5 of any version is preferred.

 ** The FFTW library is now required to perform FFT calculations.
    The FFTPACK sources have been removed from Octave.

 ** The OSMesa library is no longer used.  To print invisible figures
    when using OpenGL graphics, the Qt QOFFSCREENSURFACE feature must be
    available and you must use the qt graphics toolkit.

 ** The str2func function no longer accepts a second "global" argument.
    This argument was typically used to allow functions that accept
    function names as arguments to avoid conflicts with subfunctions or
    nested functions.  Instead, it's best to avoid this situation
    entirely and require users to pass function handles rather than
    function names.

 ** The path handling functions no longer perform variable or brace
    expansion on path elements and Octave's load-path is no longer
    subject to these expansions.

 ** New functions added in 5:

      clearvars
      isfile
      isfolder
      matlab.lang.makeUniqueStrings
      matlab.lang.makeValidName
      movegui
      movfun
      movie
      movmad
      movmax
      movmean
      movmedian
      movmin
      movprod
      movslice
      movstd
      movsum
      movvar
      openfig
      ordeig
      savefig
      uitable

 ** Legacy functions.

    The following functions have been declared legacy functions which
    means they are obsolete and should not be used in any new code.
    Unlike deprecated functions, however, their removal from Octave has
    not yet been scheduled.

      Function             | Replacement
      ---------------------|------------------
      findstr              | strfind
      flipdim              | flip
      isdir                | isfolder or dir_in_loadpath
      isequalwithequalnans | isequaln
      isstr                | ischar
      setstr               | char
      strmatch             | strncmp or strcmp
      strread              | textscan
      textread             | textscan

 ** Deprecated functions.

    The following functions have been deprecated in Octave 5 and will
    be removed from Octave 7 (or whatever version is the second major
    release after 5):

      Function               | Replacement
      -----------------------|------------------
      output_max_field_width | output_precision

 ** The following functions were deprecated in Octave 4.2 and have been
    removed from Octave 5.

      Function             | Replacement
      ---------------------|------------------
      bitmax               | flintmax
      mahalanobis          | mahal in Octave Forge statistics pkg
      md5sum               | hash
      octave_config_info   | __octave_config_info__
      onenormest           | normest1
      sleep                | pause
      usleep               | pause
      wavread              | audioread
      wavwrite             | audiowrite

 ** Deprecated graphics properties.

    The following properties or allowed corresponding values have been
    deprecated in Octave 5 and will be removed from Octave 7 (or
    whatever version is the second major release after 5):

      Object               | Property                | Value
      ---------------------|-------------------------|-------------------
      text                 | fontangle               | "oblique"
      uibuttongroup        | fontangle               | "oblique"
      uicontrol            | fontangle               | "oblique"
      uipanel              | fontangle               | "oblique"
      uitable              | fontangle               | "oblique"

 ** The following properties or allowed corresponding values were
    deprecated in Octave 4.2 and have been removed from Octave 5:

      Object               | Property                | Value
      ---------------------|-------------------------|-------------------
      axes                 | xaxislocation           | "zero"
                           | yaxislocation           | "zero"
      hggroup              | erasemode               |
      image                | erasemode               |
      line                 | erasemode               |
      patch                | erasemode               |
      patch                | normalmode              |
      surface              | erasemode               |
      surface              | normalmode              |
      text                 | erasemode               |

 ** The C++ function is_keyword has been deprecated in favor of
    iskeyword.  The old function will be removed two versions after 5.

---------------------------------------------------------

See NEWS.4 for old news.
