=========================
QGEN 19 NEW FEATURES LIST
=========================

Copyright (C) 2021, AdaCore

This file contains a complete list of new features in version 19.
A full description of all features can be found in QGEN documentation.

An ISO date (YYYY-MM-DD) appears in parentheses after the description line.
This date shows the implementation date of the feature. Any 19.0w wavefront
subsequent to this date will contain the indicated feature, as will any
subsequent 19 or later release.

NF-R920-023 Add option to generate simplified entry point API (2018-09-21)

  QGen now provides an option called `--gen-entrypoint` to
  automatically generate an entry-point module exposing only the
  `init` and `comp` functions. This module declares internally all
  necessary state variables and provides an interface to call from
  hand-written code that is simpler than the lower-level interface
  used by the new modular code generation strategy (See
  NF-R404-022).

NF-R806-004 QGen Verifier results available as HTML report (2018-09-17)

  The results produced by QGen Verifier are internally saved as a
  comma-separated-values (CSV) file. This CSV file can now be
  processed using a separate MATLAB script that will generate an
  HTML report, letting users view QGen Verifier results in a
  readable format directly in the MATLAB/Simulink GUI. The report
  provides hyperlinks to easily jump to the blocks or the source
  files associated with a potential issue. Alternatively, running
  QGen Verifier from the MATLAB console will, by default, analyze
  the model and immediately open the HTML report in a browser, or,
  as an option, produce results in a text format to the MATLAB
  console.

NF-R712-037 Detect incompatible code generation options (2018-09-19)

  When regenerating over an existing codebase QGen checks the
  previous generation options for compatibility with the current
  options and displays incompatible parameters if necessary. In that
  case no code will be generated and the output directory will stay
  untouched.

NF-R622-042 Ada QGen_Functions split per with-clause dependency (2018-06-28)

  QGen generates files in Ada that contain the implementation of
  various operation (e.g. cos, sin ...). Each file now contains
  exclusively functions that have the same Ada package dependencies.

NF-R620-089 Remove redundant DLL in QGen Debugger on Windows (2018-07-02)

  The packaging of QGen Debugger has been improved to avoid a
  duplication of libgeneauto.dll after installation over QGen on
  Windows.

NF-R522-027 Support for MISRA rule 7.2 (2018-05-24)

  QGen now implements MISRA rule 7.2. QGen applies a "u" suffix to
  unsigned integer constants that can be interpreted as signed when
  using a different type size.

NF-R521-043 Enhanced QGen Verifier results traceability to model (2018-09-19)

  The results produced by QGen Verifier provide better traceability
  to the original Simulink model, ensuring that correct blocks and
  signals are matched. In addition, analysis makes use of
  precondition propagation across subsystems and model references,
  which provides a full backtrace of a potential issue, from its
  block of occurrence upwards to the top-level model.

NF-R427-025 Lift type restriction for lookup tables (2018-05-09)

  QGen required the base type of the breakpoints data to be
  equivalent to that of the input port for lookup tables. This
  limitation has been removed.

NF-R420-050 Binary constants printed in hexadecimal for C (2018-05-07)

  When generating C code, binary constants (not supported by all C
  compilers) are printed in hexadecimal format.

NF-R404-022 New modular code generation strategy (2018-05-25)

  QGen now generates code modularly at the granularity of models and
  model references. For each model, the code generated (and in
  particular its interface) is the same whether the model is
  considered in isolation or as a model reference within a parent
  model. Thanks to this, the user can generate code for each model
  separately, and then combine and compile all of the generated code
  together. Additionally, this feature is the basis for the new
  feature of fast iterative code generation (R329-011).

NF-R329-011 Fast iterative code generation (2018-05-31)

  QGen now supports iterative code generation. The initial iteration
  generates code for all of the model, and subsequent iterations
  only generate code for referenced models that have been modified
  since the previous iteration. This allows QGen Users to iterate
  rapidly on their models and re-generate code only for the models
  they have modified. This is possible thanks to QGen's new Simulink
  model exporter which replaces the previous decoration file
  exporter (deprecated and scheduled for removal in future
  releases). The new exporter detects changes in models since the
  last export and only re-exports models that have changed.
  For maximum efficiency, the exporter can be configured through the
  QGen GUI or the `qgen_build` and `qgen_export_xmi` MATLAB commands
  to achieve an even faster export by using a less accurate change
  detection method and omitting the export of precise sequencing
  information. Despite the minor differences that could appear in
  that case between the generated code and the Simulink simulation,
  this fast export can be invaluable for rapid development
  iterations. Once the final model is completed, the User can revert
  to the full export to achieve a precise and faithful code
  generation with a guarantee of behavioral equivalence with
  Simulink simulation.

NF-R315-062 Allow mask variable creation in init callback (2018-05-04)

  QGen now properly handles mask parameters created during the
  initialization callback associated with masks.

NF-R315-017 Support for Simulink strings and related blocks (2018-12-13)

  Support for Simulink strings is added with the following subset of
  blocks - ASCII to String, Compose String, String Constant, String
  Length, String to ASCII. Only bounded string types are supported
  in blocks where the output string type is explicitly settable.

NF-R313-041 Added --exclude-static switch to QGen (2018-03-15)

  The new --exclude-static switch forces QGen to not copy its static
  library files (e.g qgen_functions, qgen_math) to the generated
  files folder. This is useful when trying to integrate code from
  multiple independent models. Since normally there will be an
  instance of these libraries for every model you try to generate
  code for separately.

NF-R126-001 QGen supports Stateflow Truth Tables (2018-02-09)

  QGen now supports Truth Table functions inside Stateflow Charts
  and Simulink Truth Table blocks. Both C and MATLAB action language
  are supported inside Truth Table functions.

NF-R122-052 Support Simulink Extract-Bits block (2018-02-21)

  The Simulink Extract Bits block is supported. The length of the
  output data type must be a multiple of 8 bits (typically 8, 16 or
  32 bits, signed or unsigned). The bit field to extract can be
  specified at an arbitrary offset from the Least Significant Bit,
  and its length must be equal to the output type length. Selecting
  a bit field of a length not a multiple of 8 is not supported
  because Simulink would set the output data type to be fixed-point,
  which is not currently supported by the QGen code generator.

NF-QB06-018 Support Backward Euler integration on DTI block (2018-03-20)

  The 'Integration: Backward Euler' integrator method of the
  Discrete-Time Integrator block is supported.
  Note that currently this integrator method cannot be used in
  conditionally activated subsystems and cannot be called multiple
  times in one time instance. A constraint has been added to the
  Block Library enforcing this restriction. See tickets O910-019 and
  0909-064 for more information.

NF-Q621-013 New HTML report with QGen Compatibility Checker (2017-11-15)

  The QGen Compatibility Checker now produces a compatibility report
  in a new HTML format that is automatically displayed in the MATLAB
  web browser. The HTML report groups issues under collapsible
  categories that make it easier to spot critical issues and browse
  a large number of diagnostics. Each issue includes a hyperlink
  that automatically navigates to the relevant model element in
  Simulink. The previous text report format is still available
  through the `qgen_compatibility_check` MATLAB command.

NF-Q310-020 Support for protected object to wrap input signals (2018-02-09)

  QGen implements a new switch '--po-wrapper' which results in an
  extra package that contains a protected object. This protected
  object ensures mutual exclusion when changing input signals as
  part of executing an iteration of the model. QGen also creates
  'getter' protected functions to retrieve individual output
  signals.

NF-PA17-070 Add support for bin2dec and hex2dec functions (2018-03-22)

  QGen can now generate code for expressions containing the bin2dec
  and hex2dec functions.
