comparison NEWS @ 2452:a28ed603c65c

[project @ 1996-10-31 19:49:29 by jwe]
author jwe
date Thu, 31 Oct 1996 19:52:17 +0000
parents
children d07a5d0b57e2
comparison
equal deleted inserted replaced
2451:d8d35d1f4a31 2452:a28ed603c65c
1 Summary of changes for version 2.0:
2 ----------------------------------
3
4 * New data types can be added to Octave by writing a C++ class. On
5 systems that support dynamic linking, new data types can be added
6 to an already running Octave binary. A simple example appears in
7 the file examples/make_int.cc. Other examples are the standard
8 Octave data types defined in the files src/ov*.{h,cc} and
9 src/op-*.cc. [This feature should be better documented by the
10 time 2.0 is released].
11
12 * The configure option --enable-bounds-check turns on bounds
13 checking on element references for Octave's internal array and
14 matrix classes. It's enabled by default. To disable this
15 feature, configure Octave with --disable-bounds-check.
16
17 * The C-style I/O functions (fopen, fprintf, etc.) have been
18 rewritten to be more compatible with Matlab. The fputs function
19 has also been added. Usage of the *printf functions that was
20 allowed in previous versions of Octave should still work.
21 However, there is no way to make the new versions of the *scanf
22 functions compatible with Matlab *and* previous versions of
23 Octave. An optional argument to the *scanf functions is now
24 available to make them behave in a way that is compatible with
25 previous versions of Octave.
26
27 * The interface to the pager has changed. The new built-in variable
28 `page_output_immediately' controls when Octave sends output to the
29 pager. If it is nonzero, Octave sends output to the pager as soon
30 as it is available. Otherwise, Octave buffers its output and
31 waits until just before the prompt is printed to flush it to the
32 pager.
33
34 * Expressions of the form
35
36 A(i,j) = x
37
38 where X is a scalar and the indices i and j define a matrix of
39 elements now work as you would expect rather than giving an error.
40 I am told that this is how Matlab 5.0 will behave when it is
41 released.
42
43 * Indexing of character strings now works.
44
45 * The echo command has been implemented.
46
47 * The document command is now a regular function.
48
49 * New method for handling errors:
50
51 try
52 BODY
53 catch
54 CLEANUP
55 end_try_catch
56
57 Where BODY and CLEANUP are both optional and may contain any
58 Octave expressions or commands. The statements in CLEANUP are
59 only executed if an error occurs in BODY.
60
61 No warnings or error messages are printed while BODY is
62 executing. If an error does occur during the execution of BODY,
63 CLEANUP can access the text of the message that would have been
64 printed in the builtin constant __error_text__. This is the same
65 as eval (TRY, CATCH) (which may now also use __error_text__) but
66 it is more efficient since the commands do not need to be parsed
67 each time the TRY and CATCH statements are evaluated.
68
69 * Octave no longer parses the help command by grabbing everything
70 after the keyword `help' until a newline character is read. To
71 get help for `;' or `,', now, you need to use the command
72 `help semicolon' or `help comma'.
73
74 * Octave's parser now does some simple constant folding. This means
75 that expressions like 3*i are now evaluated only once, when a
76 function is compiled, and the right hand side of expressions like
77 a = [1,2;3,4] are treated as true matrix constants rather than
78 lists of elements which must be evaluated each time they are
79 needed.
80
81 * Built-in variables that can take values of "true" and "false" can
82 now also be set to any nonzero scalar value to indicate "true",
83 and 0 to indicate "false".
84
85 * New built-in variables `history_file', `history_size', and
86 `saving_history'.
87
88 * New built-in variable `string_fill_char' specifies the character
89 to fill with when creating arrays of strings.
90
91 * If the new built-in variable `gnuplot_has_frames' is nonzero,
92 Octave assumes that your copy of gnuplot includes support for
93 multiple plot windows when using X11.
94
95 If the new built-in variable `gnuplot_has_multiplot' is nonzero,
96 Octave assumes that your copy of gnuplot has the multiplot support
97 that is included in recent 3.6beta releases.
98
99 The initial values of these variables are determined by configure,
100 but can be changed in your startup script or at the command line
101 in case configure got it wrong, or if you upgrade your gnuplot
102 installation.
103
104 * The new plot function `figure' allows multiple plot windows when
105 using newer versions of gnuplot with X11.
106
107 * Octave now notices when the plotter has exited unexpectedly.
108
109 * New built-in variable `warn_missing_semicolon'. If nonzero, Octave
110 will warn when statements in function definitions don't end in
111 semicolons. The default value is 0.
112
113 * Octave now attempts to continue after floating point exceptions
114 or out-of-memory errors.
115
116 * If Octave crashes, it now attempts to save all user-defined
117 variables in a file named `octave-core' in the current directory
118 before exiting.
119
120 * It is now possible to get the values of individual option settings
121 for the dassl, fsolve, lsode, npsol, qpsol, and quad functions
122 using commands like
123
124 dassl_reltol = dassl_options ("relative tolerance");
125
126 * The svd() function no longer computes the left and right singular
127 matrices unnecessarily. This can significantly improve
128 performance for large matrices if you are just looking for the
129 singular values.
130
131 * The filter() function is now a built-in function.
132
133 * New function randn() returns a pseudo-random number from a normal
134 distribution. The rand() and randn() functions have separate
135 seeds and generators.
136
137 * Octave's command-line arguments are now available in the built-in
138 variable `argv'. The program name is also available in the
139 variables `program_invocation_name' and `program_name'. If
140 executing a script from the command line (e.g., octave foo.m) or
141 using the `#! /bin/octave' hack, the program name is set to the
142 name of the script.
143
144 * New built-in variable `completion_append_char' used as the
145 character to append to successful command-line completion
146 attempts. The default is " " (a single space).
147
148 * Octave now uses a modified copy of the readline library from
149 version 1.14.5 of GNU bash.
150
151 * In prompt strings, `\H' expands to the whole host name.
152
153 * New built-in variable `beep_on_error'. If nonzero, Octave will try
154 to ring your terminal's bell before printing an error message.
155 The default value is 0.
156
157 * New command-line argument --traditional sets the following
158 preference variables for compatibility with Matlab:
159
160 PS1 = ">> "
161 PS2 = ""
162 beep_on_error = 1
163 default_save_format = "mat-binary"
164 define_all_return_values = 1
165 do_fortran_indexing = 1
166 empty_list_elements_ok = 1
167 implicit_str_to_num_ok = 1
168 ok_to_lose_imaginary_part = 1
169 page_screen_output = 0
170 prefer_column_vectors = 0
171 prefer_zero_one_indexing = 1
172 print_empty_dimensions = 0
173 treat_neg_dim_as_zero = 1
174 warn_function_name_clash = 0
175 whitespace_in_literal_matrix = "traditional"
176
177 * New functions:
178
179 readdir -- returns names of files in directory as array of strings
180 mkdir -- create a directory
181 rmdir -- remove a directory
182 rename -- rename a file
183 unlink -- delete a file
184 umask -- set permission mask for file creation
185 stat -- get information about a file
186 lstat -- get information about a symbolic link
187 more -- turn the pager on or off
188 gammaln -- alias for lgamma
189
190 * New audio functions from Andreas Weingessel
191 <Andreas.Weingessel@ci.tuwien.ac.at>.
192
193 lin2mu -- linear to mu-law encoding
194 loadaudio -- load an audio file to a vector
195 mu2lin -- mu-law to linear encoding
196 playaudio -- play an audio file
197 record -- record sound and store in vector
198 saveaudio -- save a vector as an audio file
199 setaudio -- executes mixer shell command
200
201 * New plotting functions from Vinayak Dutt. Ones dealing with
202 multiple plots on one page require features from gnuplot 3.6beta
203 (or later).
204
205 bottom_title -- put title at the bottom of the plot
206 mplot -- multiplot version of plot
207 multiplot -- switch multiple-plot mode on or off
208 oneplot -- return to one plot per page
209 plot_border -- put a border around plots
210 subplot -- position multiple plots on a single page
211 subwindow -- set subwindow position for next plot
212 top_title -- put title at the top of the plot
213 zlabel -- put a label on the z-axis
214
215 * New string functions
216
217 bin2dec -- convert a string of ones and zeros to an integer
218 blanks -- create a string of blanks
219 deblank -- delete trailing blanks
220 dec2bin -- convert an integer to a string of ones and zeros
221 dec2hex -- convert an integer to a hexadecimal string
222 findstr -- locate occurrences of one string in another
223 hex2dec -- convert a hexadecimal string to an integer
224 index -- return position of first occurrence a string in another
225 rindex -- return position of last occurrence a string in another
226 split -- divide one string into pieces separated by another
227 str2mat -- create a string matrix from a list of strings
228 strrep -- replace substrings in a string
229 substr -- extract a substring
230
231 The following functions return a matrix of ones and zeros.
232 Elements that are nonzero indicate that the condition was true for
233 the corresponding character in the string array.
234
235 isalnum -- letter or a digit
236 isalpha -- letter
237 isascii -- ascii
238 iscntrl -- control character
239 isdigit -- digit
240 isgraph -- printable (but not space character)
241 islower -- lower case
242 isprint -- printable (including space character)
243 ispunct -- punctuation
244 isspace -- whitespace
245 isupper -- upper case
246 isxdigit -- hexadecimal digit
247
248 These functions return new strings.
249
250 tolower -- convert to lower case
251 toupper -- convert to upper case
252
253 * New function, fgetl. Both fgetl and fgets accept an optional
254 second argument that specifies a maximum number of characters to
255 read, and the function fgets is now compatible with Matlab.
256
257 * Printing in hexadecimal format now works (format hex). It is also
258 possible to print the internal bit representation of a value
259 (format bit). Note that these formats are only implemented for
260 numeric values.
261
262 * Additional structure features:
263
264 -- Name completion now works for structures.
265
266 -- Values and names of structure elements are now printed by
267 default. The new built-in variable `struct_levels_to_print'
268 controls the depth of nested structures to print. The default
269 value is 2.
270
271 -- New functions:
272
273 struct_contains (S, NAME) -- returns 1 if S is a structure with
274 element NAME; otherwise returns 0.
275
276 struct_elements (S) -- returns the names of all elements
277 of structure S in an array of strings.
278
279 * New io/subprocess functions:
280
281 fputs -- write a string to a file with no formatting
282 popen2 -- start a subprocess with 2-way communication
283 mkfifo -- create a FIFO special file
284 popen -- open a pipe to a subprocess
285 pclose -- close a pipe from a subprocess
286 waitpid -- check the status of or wait for subprocesses
287
288 * New time functions:
289
290 asctime -- format time structure according to local format
291 ctime -- equivalent to `asctime (localtime (TMSTRUCT))'
292 gmtime -- return time structure corresponding to UTC
293 localtime -- return time structure corresponding to local time zone
294 strftime -- print given time structure using specified format
295 time -- return current time
296
297 The `clock' and `date' functions are now implemented in M-files
298 using these basic functions.
299
300 * Access to additional Unix system calls:
301
302 dup2 -- duplicate a file descriptor
303 exec -- replace current process with a new process
304 fcntl -- control open file descriptors
305 fork -- create a copy of the current process
306 getpgrp -- return the process group id of the current process
307 getpid -- return the process id of the current process
308 getppid -- return the process id of the parent process
309 pipe -- create an interprocess channel
310
311 * Other new functions:
312
313 atexit -- register functions to be called when Octave exits
314 putenv -- define an environment variable
315 meshgrid -- compatible with Matlab's meshgrid function
316 tilde_expand -- perform tilde expansion on string
317 completion_matches -- perform command completion on string
318
319 * The New function octave_config_info returns a structure containing
320 information about how Octave was configured and compiled.
321
322 * New function getrusage returns a structure containing system
323 resource usage statistics. The `cputime' function is now defined
324 in an M-file using getrusage.
325
326 * The info reader is now a separate binary that runs as a
327 subprocess. You still need the info reader distributed with
328 Octave though, because there are some new command-line arguments
329 that are not yet available in the public release of Info.
330
331 * There is a new built-in variable, INFO_PROGRAM, which is used as
332 the name of the info program to run. Its initial value is
333 $OCTAVE_HOME/lib/octave/VERSION/exec/ARCH/info, but that value can
334 be overridden by the environment variable OCTAVE_INFO_PROGRAM, or
335 the command line argument --info-program NAME, or by setting the
336 value of INFO_PROGRAM in a startup script.
337
338 * There is a new built-in variable, EXEC_PATH, which is used as
339 the list of directories to search when executing subprograms. Its
340 initial value is taken from the environment variable
341 OCTAVE_EXEC_PATH (if it exists) or PATH, but that value can be
342 overridden by the the command line argument --exec-path PATH, or
343 by setting the value of EXEC_PATH in a startup script. If the
344 EXEC_PATH begins (ends) with a colon, the directories
345 $OCTAVE_HOME/lib/octave/VERSION/exec/ARCH and $OCTAVE_HOME/bin are
346 prepended (appended) to EXEC_PATH (if you don't specify a value
347 for EXEC_PATH explicitly, these special directories are prepended
348 to your PATH).
349
350 * If it is present, Octave will now use an `ls-R' database file to
351 speed up recursive path searching. Octave looks for a file called
352 ls-R in the directory specified by the environment variable
353 OCTAVE_DB_DIR. If that is not set but the environment variable
354 OCTAVE_HOME is set, Octave looks in $OCTAVE_HOME/lib/octave.
355 Otherwise, Octave looks in the directory $datadir/octave (normally
356 /usr/local/lib/octave).
357
358 * New examples directory.
359
360 * There is a new script, mkoctfile, that can be used to create .oct
361 files suitable for dynamic linking.
362
363 * Many more bug fixes.
364
365 * ChangeLogs are now kept in each subdirectory.
366
367 See NEWS.1 for old news.