% Release Notes, MATLAB Compiler
% Version 2.0 (R11) 22-Dec-1998
% $Revision: 1.25 $  $Date: 1999/01/20 23:44:24 $
% Copyright (c) 1984-1998 by The MathWorks, Inc.
%
% Compiler 2.0 / 1.2.1 INFORMATION
%
% This release contains a major upgrade to the MATLAB Compiler family.
% Version 2.0 of the Compiler supports most of the MATLAB version 5 
% language features (see below for details.)  It also includes 
% Version 1.2.1 which is a patch release designed to fix defects 
% reported against version 1.2 of the Compiler.  We have included both 
% versions because Compiler 2.0 does not include all of the same 
% optimization capabilities as the prior version of the Matlab Compiler.
% Compiler 2.0 should be used for M files which use Matlab version 
% 5 langauage features, and the version 1.2.1 compiler should be used with
% M-files which use the Matlab version 4.2 language features when peak 
% performance is desired. 
%
% With this release there are numerous changes to the available command 
% line options.  In order to assist in migrating to this new release, 
% we have prepared a quick-reference card which contains both the 
% Compiler 1.2.1 and the Compiler 2.0 options.  See the "Documentation" 
% section at the end of this file for details on how to print this card.
%
% Important note to Compiler 1.2 customers: version 2.0 of the Compiler 
% is the command line default from inside MATLAB and from the DOS/UNIX 
% shell.  You will need to change your build procedures in order to use
% the new Compiler.  If you do not wish to update your build procedures,
% please see the section "Making Compiler 1.2.1 The Default Compiler"
% below on how to make Compiler 1.2.1 the default Compiler.  
% 
% Read the information below for details on what is new or
% different about the V2.0/V1.2.1 Compilers.  For the latest 
% information on the MATLAB C/C++ Math Library, see the 
% MATLABROOT/extern/examples/cmath/release.txt and
% MATLABROOT/extern/examples/cppmath/release.txt files, respectively.
%
% MATLABROOT above corresponds to the directory where MATLAB is 
% installed on your system.
%
% Installation & Configuration of the MATLAB Compiler V2.0/V1.2.1
% 
% Based on customer feedback, we have modified the installation and
% configuration process for the MATLAB Compiler, to make it easier to 
% install and configure. The Compiler User's Guide includes a complete 
% set of recommended steps to perform during installation to ensure that 
% everything is working properly. It includes troubleshooting sections 
% to help diagnose and correct some of the more common installation 
% problems.
% 
% NOTE for Windows 95/98/NT customers: In this release of the Compiler, the 
% following list of platform compiler vendors and product releases are
% supported "out-of-the-box":
%
%       WATCOM 10.6 and 11.0
%       Borland 5.0, 5.02, and 5.3
%       MSVC 4.2, 5.0, and 6.0(*)
%
% (*) When installing MSVC 6.0, if you need to change where this compiler is 
%     installed, you must change the location of the Common directory (at the 
%     appropriate installer dialog.) If you change the location of the VC98 
%     directory from its default setting, the MEX and MBUILD scripts will not
%     work properly. 
%
% Compiler V2.0 Specific Information
%
% The V2.0 Compiler supports the following MATLAB 5 language features:
%
%     * Multi-dimensional Arrays
%     * Structures
%     * Cell Arrays
%     * Sparse Arrays
%     * varargin/varargout
%     * SWITCH/CASE
%     * TRY/CATCH
%     * EVALIN (MEX mode only)
%     * PERSISTENT
%
%  Unsupported MATLAB 5 features in this version of the Compiler are:
%
%     * User-defined classes (Matlab Objects)
%     * MATLAB 5 integer types (int8,16,32 and uint8,16,32)
%
% The V2.0 version of the Compiler does not perform the same optimizations that 
% V1.2.1 does and some code may run slower when compiled with this version.  
% In all cases, the code should run at least as fast as the equivalent 
% interpreted M-code.  For this reason, you may want to continue to use the 
% Compiler 1.2.1 if it provides better performance for your code.  
%
% Our #1 priority moving forward is to provide the full optimization levels that
% our customers require.  We understand that the performance of M code is a concern
% for all of our users.  In order to help us better understand your requirements,
% we invite you to complete the Compiler survey (type help COMPILER_SURVEY for details.)
% The survey GUI that comes up will compare the performance of the interpreted M code
% and the C and C++ Compiler-generated code from Compiler 1.2 and Compiler 2.0.
% At the end of the survey, you will be asked to provide the M code to us so that
% we can examine it to determine how to make your M code execute faster.  We will use this
% provided M code only for this purpose.
%
% If you experience a problem when using the MATLAB Compiler, please fill out a bug report
% so that we can examine and fix the problem.  (Type help COMPILER_BUG_REPORT for details.)
%
% The options for the V2.0 Compiler are different than in prior versions; use
% "mcc -?" for help on the new options.
%
% Version 2.0 of the Compiler is also available from the DOS/UNIX command line
% (in addition to being available from within MATLAB.)  Type "mcc -?" for 
% details on using the DOS/UNIX version of the Compiler.  This should make 
% it considerably easier to write makefiles that control the building
% of applications and MEX-files.
%
% Exception Handling and the Compiler-Generated C++ Code
%
% When using C++, we rely on the availability of exception handling in the
% C++ language.  Several of the compilers that we support do not properly 
% support C++ exception handling, and as a result our support for exception
% handling is limited on those platforms, namely:
%
%       GNU C++ 2.7.2             - Does not support C++ exception handling
%       Borland C++(all versions) - Has a restriction on support of goto 
%                                   statements within try/catch blocks.  The 
%                                   MATLAB Compiler sometimes generates goto 
%                                   statements for complicated "if" conditional 
%                                   statements.  The generated code for these 
%                                   will not compile in Borland C++, as a result
%                                   you will be required to simplify the if condition.
%       Watcom C++ (all versions) - When throwing an exception, the try/catch
%                                   run-time will occasionally produce 
%                                   unexpected results.  We are pursuing this 
%                                   issue with the vendor and characterizing 
%                                   the conditions under which this occurs.  
%
% NOTE: The -A debugline switch is implemented using try/catch statements,
%       use of this switch is also restricted in the above C++ 
%       implementations for the same reasons.
%
% Compiler V1.2.1 Specific Information
%
% The V1.2.1 Compiler supports the following MATLAB 5 language features:
%
%    * Local functions
%    * The END built-in array indexing operator (as in x(1:end))
%    * Logical indexing
%    * Short-circuit conditional evaluation for IF/WHILE statements
%
% NOTE: Any feature not specifically mentioned in the above list is NOT 
% supported by the V1.2.1 version of the MATLAB Compiler.  Specifically 
% unsupported in V1.2.1 are:
%
%     * Cell Arrays
%     * Multi-dimensional Arrays
%     * Structures
%     * User-defined classes (Matlab Objects)
%     * varargin/varargout
%     * SWITCH/CASE
%     * TRY/CATCH
%
% The options and switches to Compiler 1.2.1 are significantly different 
% from those available for Compiler 2.0.  To obtain help for the Compiler 
% 1.2.1 options, use "mcc -V1.2 -?".
%
% All of the other 1.1 Compiler restrictions remain in effect for 1.2.1.  See the
% documentation for a complete list.
%
% Making Compiler 1.2.1 The Default Compiler
%
% You can use the mccstartup feature (new to this release) to make Compiler
% 1.2.1 the default Compiler. An mccstartup file is a file containing MCC
% command line options which are automatically processed any time MCC is
% invoked. To configure an mccstartup file for changing the default Compiler,
% create a text file named "mccstartup" and place the text "-V1.2" in that
% file. (You can also put any other commonly used MCC command line options in
% the file as well.) On UNIX, put this file in your $HOME/matlab directory
% (create the directory if it doesn't already exist). On Windows, put this
% file in the <MATLAB>\bin directory, where <MATLAB> is your root MATLAB
% directory. MCC will now always treat "-V1.2" as the first command line
% option it processes. Any options appearing in the mccstartup file behave
% as if they appeared before the arguments specified on the command line.
% If the Compiler sees conflicting options, the rightmost option is taken
% For example, if you place "-V1.2" into your mccstartup file and then
% invoke the Compiler with "mcc -V2.0" it behaves as if you had typed
% "mcc -V1.2 -V2.0" and uses the V2.0 Compiler because it was specified
% last.
%
% Documentation
%
% MATLAB Compiler V2.0
% The "MATLAB Compiler V2.0 User's Guide" fully describes version 2.0 of
% the Compiler. This manual is provided in print form as well as pdf format.
% To access the pdf version, use the online Help Desk and select "Online
% Manuals." The Compiler reference pages are included in the printed manual,
% and they can also be accessed from the Help Desk by selecting "MATLAB
% Compiler Reference" from "Other Products." There is also a Quick Reference
% Card for the MATLAB Compiler that you can access from "Online Manuals" and
% print at your convenience.
% 
% MATLAB Compiler V1.2
% The "MATLAB Compiler V1.2 User's Guide" is available in pdf format from the
% online Help Desk. Note that the printed "MATLAB Compiler V2.0 User's Guide"
% contains an Appendix with much of the relevant information from the
% original "MATLAB Compiler V1.2 User's Guide".
%
%
%
% Errata for Compiler Generated Standalone Executables
%
% Any M-files that exist in the C/C++ Graphics Library will give
% link errors if the C/C++ Graphics Library is not present when 
% targeting a C or C++ standalone executable. We include a file 
% 'hgstubs.c' that can be added to either the mcc or mbuild command
% lines. When run, these functions will error out (as built-in 
% Handle Graphics functions do), but your program will link. As
% long as your program does not call these functions it will run
% properly.
%
%    This file is located in {matlab}/toolbox/compiler/hgstubs.c