Changes.OS2 | This document describes the history of changes i have made, when porting Octave to OS/2. It does not contain the changes between the different original Octave versions. Octave for OS/2 Homepage. Introduction Read Me!

Changes since the Version 2.09 of Octave for OS/2

Octave 2.0.17 Build 01:

- New Version 2.0.17. This might be the final 2.0.x version.

Octave 2.0.16 Build 01:

- New Version 2.0.16

Octave 2.0.15 Build 01:

- New Version 2.0.15

Octave 2.1.23 Build 01:

- New version 2.1.234.
  Octave 2.1.234 is a test release!

Octave 2.1.14 Build 02:

- atanh(1) and acoth(1) will no longer crash Octave.

Octave 2.0.14 Build 02:

- atanh(1) and acoth(1) will no longer crash Octave.

Octave 2.1.14 Build 01:

- New version 2.1.14.
  Octave 2.1.14 is a test release!

Octave 2.0.14 Build 01:

- New Version 2.0.14
- diary bug fixed: User input when running a script will now be written into the diary file.

Octave 2.0.13 Build 02:

- oregonator.cc renamed to oregon.cc.
- Patch included:
  - src/file-io.cc and liboctave/data-conv.cc: uint16 and uint32 types supported in fread.
- Complex erf added to examples for dlfcn.
- Patch included:
  - data.cc: is_complex added.
- GNU Info updated to version 2.18.
- kpathsearch version 3.2 used.
- Help in image.m is now correct.

Octave 2.0.13 Build 01:

- New Version 2.0.13
- Plot functions patched.
- Patch included:
  - DASSL.cc (DASSL::do_integrate): If an exception occurs in the call to ddassl, set integration_error to 1 before calling the error handler and returning.
- Patch included:
  - Array2-idx.h (assign): Allow A([],[]) = scalar and, if do_fortran_indexing is set, A([]) = scalar.
  - Array-idx.h (assign): Allow A([]) = scalar.
- Patch included:
  - time.cc (extract_tm): Truncate field values instead of rounding. (Fgmtime, Flocaltime): Likewise, for timeval.

Octave 2.0.11 Build 02:

- New Version 2.0.11
- Patches included:
  - symtab.cc (symbol_record::variable_value): Avoid dereferencing NULL pointer.
  - lo-spec-fun: the order of the arguments in the gammai and gammainc.
- Patch included:
  - error.cc (verror): Fix thinko in attempt to skip `error: ' tag when buffering error messages.
  - pt-cmd.cc (tree_try_catch::eval): Reset buffer_error_messages here if just discarding unwind_protect frame.
- Typos in mplot.m fixed.
- __pltopt__ functionality extended:
  Now, for plot (x, y, fmt) in the cases where either x or y (or both) are matrices, fmt can also be a string array. The rows of the string array correspond to the lines on the plot:
  - plot/__pltopt1.m__: New file.
  - plot/__pltopt.m__: Handle opt as a string array by calling __pltopt1__ multiple times and returning a string array with rows corresponding to the rows of opt.
  - plot/__plt2ss__.m, plot/__plt2vv__.m, plot/__plt2vm__.m,
  - plot/__plt2mv__.m, plot/__plt2mm__.m: Handle fmt as a string array.

Octave 2.0.10 Build 01:

- New Version 2.0.10
- Default install path changed (h:/apps/science/octave).

Octave 2.09.98 Build 01:

- New Version 2.0.9.98 (Beta)

Octave 2.09.97 Build 01:

- New Version 2.0.9.97 (Beta)

Changes since the Version 1.9x of Octave for OS/2

Octave 2.09 Build 03:

- mkfifo is now supported.
- inst-octave.cmd creates WPS objects for the documentation.
- The documentation is now also available in OS/2's INF format. You can view them using gnuview as Octave's external info viewer.
- Compiler updated (EMXFIX03).
- Bug in logm (wrong result for a complex scalar argument) fixed.
- Minor changes in the sources and makefiles.
- Workaround for the bug in the fortran routine DGELSS added (in CMatrix.cc).
- Patch included:
  - idx-vector.cc (IDX_VEC_REP::sort): New function.
  - idx-vector.h (idx_vector::sort): Ditto.
  - Array2-idx.h (Array2::maybe_delete_elements): Use it before trying to delete elements specified by the index vectors.

Octave 2.09 Build 02:

- Bug in cruft4.def fixed, which caused Octave to crash, when trying to compute eig(A) (or norm(A), ...) with a complex matrix A.

Octave 2.09 Build 01:

- New Version 2.0.9.

Octave 2.08 Build 01:

- New Version 2.0.8.
- Patch for pt-fvc.cc included.

Octave 2.07 Build 01:

- New Version 2.0.7.

Octave 2.06 Build 01:

- New Version 2.0.6.
- All functions working with FILE IDS (file handles) are renamed:
  _dup, _dup2, _close, _fdopen, _pipe.
- The function pipe is now returning the octave file streams.
- Minor modifications in the makefiles.

Octave 2.05 Build 04:

- inst-octave.cmd and updt-octave.cmd patched.
- Patches included:
  input.cc (octave_read): Don't forget to free input buffer if it exists and has zero length.
  (gnu_readline): Free buf if fgets returns 0.
  parse.y: Parse error will not abort Octave, when forced_interactive "-i"
  Array2-idx.h (Array2::maybe_delete_elements): Prevent out-of-bounds indexing of the index array.
  Array-idx.h (Array::maybe_delete_elements): Likewise.
  idx-vector.cc (IDX_VEC_REP::is_colon_equiv): Make it work when the vector is not sorted.

Octave 2.05 Build 03:

- lex.l patched: help will work with text mode files, even if the help text is not at the beginning of the file.
- Lisp files modified:
  hilit19 will not be loaded, when running emacs in normal text mode.
- parse.y patch included:
  Using formal parameters for functions, the names of which are already being used by builtin functions, will not produce errors. For example:
  function y=f(type), y=type; end;
- variables.cc patched: <CR>s are not copied into the help text.
- The full name of the executable can be specified in .emacs.
- inst-octave.cmd and updt-octave.cmd patched.
- lex.l patched: Octave reads script and function files with lines like:

                  x = x + ...
                      3;

Octave 2.05 Build 02:

- New internal system routine (also used in procbuf):
  All / in the executable are replaced by \ when using cmd.exe or 4os2.exe as shell and all \ are replaced by / when using a UNIX shell.
- make-octfile.cmd patched: The dynamic loading of function will under OS/2 2.xx.
- nextpow2.m patched: nextpow2(1000) returns 10.
- inst-octave.cmd patched: scripts.fat will be renamed to scripts on FAT.
- The files in the subdirectory doc are FAT compatible.
- Octave reads script and function files with lines like:

                  M = [1 2
                       3 4]

Octave 2.05 Build 01:

- New version: Octave 2.0.5
- help will work with text (<CR><LF>) files.
- No endfunction is needed at the end of a function file.
- Octave uses noncontinous multiple heaps. So the heap size is no longer fixed to 32 MB.
- Image viewer and GNUPlot can be used at the same time again. The environment variable OCTAVE_IMAGE_VIEWER is supported again.
- (require 'hilit19) added in lisp files.
- octave-mode.el modified: switch/case/otherwise/endswitch statement included.

Octave 2.02 Build 02:

- Bug in usleep fixed. plot works again.
- erf(x) and erfc(x) are supported. Bug in erfinv.m is fixed.
- gamma(2000) no longer aborts Octave.
- Bugfixes in the installationsscript. Corrected README.OS2
- Default value of IMAGEPATH now points to ../scripts/image.
- Patch included (oct-stream.cc):
  scanf reads correctly when using %f or %e.

Octave 2.02 Build 01:

- POPEN2.M modified:
  The script now uses the new function spawn to start the child process.
- The environment variable OCTAVE_IMAGE_VIEWER is no longer supported. Modify the script file IMAGE.M, if you want to use another image viewer.
- Function added: child_purge_temp_file. It removes the temporary file when the specified child process dies (used in IMAGE.M).
- The pipe function returns the file handles and not the Octave's file ids. Use fdopen to open the handles!
- Functions added: dup, close, fdopen.
- Function added: spawn.
- Octave reads OS/2 BMP (version 1.0) Windows BMP, PNM (P1 - P6) and Octave's IMG format. It writes OS/2 BMP (version 1.0) Windows BMP, PNM (P5, P6), Postscript and Octave's IMG format. LOADIMAGE.M and SAVEIMAGE.M are modified (the original version are in the archive image.zip).
- New version: Octave 2.0.2
- Bug fixes in dlfcn.lib.

Octave 2.01 Build 01:

- Dynamic Linking is now supported! See hello.cc and make_int.cc for example. A small bug in make_int.cc fixed.
- Bug in xor.m fixed.
- Bug in the installation script fixed:
  The script will not replace the first "\DLL" in LIBPATH, if Octave is installed for the first time on a system.
- The installation script is renamed to inst-octave.cmd.
- New version 2.0.1.
- All C++ Code is now placed in DLLs.
- GNUPLOT is started as normal VIO, so gshow will work. Also because of other changes in the code, CTRL-C works even when GNUPLOT is started.
- Minor changes in the sources.

Octave 2.00 Build 01:

- New version: Octave 2.0.
- Script and function files are loaded correctly even if they contain an End-of-file character. This character will be interpreted as a newline character.
- saveimage saves images in bmp, gif and ps files.

Changes since the Version 1.1.1 of Octave for OS/2

Octave 1.94 Build 01:

- New version 1.94 (pre-2.0).
  Octave 1.94 is a test release!
- New command line flag '-I'. It forces interactive behaviour, but deactivates the pager, even if Octave is in interactive mode.
- Every signal which will cause a jump to toplevel (Octave prompt), will be handled differently if a script or function file is executed: It will be handled as an error.

Octave 1.93 Build 02:

- New version 1.93 (pre-2.0).
  Octave 1.93 is a test release!
- Octave loads script and functions files even if they are no text files (CR/LF).
- The sigchld_handler in sighandlers.cc is patched:
  When no child in octave_child_list has created SIGCHLD, waitpid is executed. This solves problems with displaying images when GNUPLOT is running, and similar problems.
- Octave's system command now correctly returns the output or the pid, depending on the number or values of the arguments.
- The image viewer is started in "async"-mode.
- Changes in octave.el: hilit19 is used in the octave-shell-mode.

Octave 1.92 Build 02:

- get_size in oct-stream.cc patched:
  fread will work, when the second argument is a scalar.
- kbhit () in sysdep.cc calls flush_octave_stdout ().
- sighandlers.cc and toplev.cc patched:
  Ctrl-C and Ctrl-Break will work more than only once again.

Octave 1.92 Build 01:

- New version 1.92 (pre-2.0).
  Octave 1.92 is a test release!
- Minor bug fixes in octave-info.el.
- Changes in octave-mode.el: hilit19 is used for editing script files.
- New command add to the Emacs-Shell-Mode for Octave:
  warranty, multiplot, close multiplot, subwindow.
- Minor changes in the the makefiles for OS/2. These changes do not modify the binary.

Octave 1.91 Build 01:

- New version 1.91 (pre-2.0).
  Octave 1.91 is a test release!

Octave 1.90 Build 01:

- New version 1.90 (pre-2.0).
  Octave 1.90 is a test release!
- New libraries (readline, kpathsea).
- Octave uses again an internal info viewer:
  This ensures that it runs correctly under the control of Emacs.
- Signal handler for SIGCHLD gepatcht.
- Octave needs the GNUPLOT 3.6 beta to display multiple plots.
- Since the new compiler supports multiple heaps it is no longer necessary to fix the heap size during the installation.
- The environment variable OCTAVE_INITFILE specifies the name of the init file octave executes on startup.

Changes since the Version 1.1.0 of Octave for OS/2

Octave 1.1.1 Build 08:

- The cursor type will be selected in readline.
- New Compiler (emx-gcc 0.9c) and libraries used.
- The Stacksize has been increased.
- Signal handling is improved:
  Ctrl-Break always acts in the same way Ctrl-C does.
  No signal handler for SIGTERM!

Octave 1.1.1 Build 07:

- All FPE signals are now explicity masked off:
  This fixes the bugs when running Octave on systems with GAMESRVR.DLL.

Octave 1.1.1 Build 06:

- Pause now works also when running Octave under Emacs.
- The Octave's 'system' (or 'shell_cmd') is fixed.
  This fixes also the bug in saveimage.
- xvos2 now uses the image viewer specified in the environment variable OCTAVE_IMAGE_VIEWER, if set, or ib.exe if not.

Octave 1.1.1 Build 05:

- New Compiler (emx-gcc 0.9B) and libraries (stdcpp, libg++, ...)
- New info browser version 2.14
- parse.y was patched:
  A parse error will not abort the parser, if octave is forced to be interactive (-i).
- lex.l was patched:
  SIGINT will not crash Octave, if octave is forced to be interactive (-i).
- info will not kill the octave process, if the terminal type is emacs. It displays a message, so that emacs can start its own info browser.
- The routines read and write in liboctave/dMatrix.cc are patched:
  The streams are set to binary mode before writing/reading and set back to text mode after.
- Emacs-Shell-Mode for Octave including Info, temporary files, script files.
- New function in Octave: add_to_command_number.

Octave 1.1.1 Build 04:

- image uses now ib.exe (the Multimedia Viewer coming with Warp) to view the images. This works also when GNUPLOT is running.
- GNUPLOT is now started as PM program in a different session:
  Now one can use Ctrl-C to interrupt Octave, when Gnuplot is running.
- Internal Changes in Iostream:
  New function _io_popen (used in the member functions of the class procbuf) The command is now executed direct, without the command processor cmd.exe (or ...). The way the program is started (PM, Session, ...) is specified in the third argument of _io_popen. If this fails, the command is executed via the command processor.
- A new signal handler (SIGINT) for parse_and_execute:
  The script files are closed, if the execution is interrupted by the user. The signal works like an error!

Octave 1.1.1 Build 03:

- The signal handler is fixed: Ctrl-C works now more than only ones.

Octave 1.1.1 Build 02:

- The function script polyreduce.m is fixed:
  The functions deconv and residue are working.
- The Fortran and C routines are now in DLLs. This reduces the size of the executable and octave needs not so much memory at start time.
- The libraries of info, kpathsea and readline are linked using DLLs. The stand-alone info browser (info.exe) uses also that DLLs.
- The heap is not longer fixed to 32 MB (by emx gcc). The user can select the best heap size for his problems and his system.
- The iostream library is fixed: Octave reads binary files (load -b or load -m).
- A few changes in the source code.
- New Version of Octave (1.1.1).
- Octave no longer hangs the WPS, if it is closed by typing quit, while GNUPLOT is still running.

Changes since the Version 1.0 of Octave for OS/2

Octave 1.1.0 Build 01:

- Octave now uses ';' as separator in paths.
- Drives are now supported in paths:
  You can start octave from a different drive and octave will find the script files.
- Drives are also supported in 'cd' and 'pwd'.
- Control-C works more than once.
- By defining USE_EXTERNAL_TEMPLATES and using emxbind -s I made the file octave.exe much smaller.
- The temporary files created by the commands edit_history and run_history are deleted.
- The info files are changed for FAT.
- I have created a second set of script files, patched for FAT.
- Octave uses the file in the environment variable OCTAVE_INITFILE instead of .octaverc, if the variable is set.
- New Version of Octave (Version 1.1.0)
- New Compiler (emx-gcc 0.9A) and libraries (iostream 0.66)
- I added the extproc-statement.
- Octave executes now a interactive script from a file in the command line.
- Images can be viewed using ghostscript.
- Octave uses now GNUPLOT 3.5.