/*******************************************************************************
*
* McStas, neutron ray-tracing package
*         Copyright 1997-, All rights reserved
*         Risoe National Laboratory, Roskilde, Denmark
*         Institut Laue Langevin, Grenoble, France
*
* McStas and McXtrace share code repository at
* https://github.com/McStasMcXtrace/McCode
*
* Both codes are released under GPL v3
*
* Documentation: CHANGES_McStas
*
* %Identification
* Written by: KN, KL, PEO, EF, PW, EK, JB
* Origin: DTU, ILL, Uni Copenhagen, PSI
* Modified by: KN, October 26, 1998 : initial release 1.0
* Modified by: KN, March 31, 1999   : release 1.1
* Modified by: KN, January 31, 2000 : release 1.2
* Modified by: KN, May 18, 2000     : release 1.3
* Modified by: KN, July 28, 2000    : release 1.4
* Modified by: KN, PEO, March 16, 2001: release 1.4.1
* Modified by: PEO, EF, October, 10th, 2001: release 1.5
* Modified by: PW, EF, May 19th 2003: version 1.7
* Modified by: PW, EF, March 4th 2004: version 1.8
* Modified by: PW, EF, November 16th 2005: version 1.9
* Modified by: PW, EF, March 29th 2006: version 1.9.1
* Modified by: PW, EF, December 4th 2006: version 1.10
* Modified by: PW, EF, July 3rd 2007: version 1.11
* Modified by: PW, EF, EK May 8th 2008: version 1.12
* Modified by: PW, EF, EK April 2nd 2009: version 1.12a
* Modified by: PW, EF, EK June/July 2010: version 1.12b
* Modified by: PW May-June 2011: version 1.12c (re-release)
* Modified by: PW November 2012: version 2.0RC1 (pre-release)
* Modified by: PW December 2012: version 2.0RC2 (pre-release)
* Modified by: PW December 2012: version 2.0
* Modified by: PW February-July 2014: version 2.1 (and the 2.1RC1 pre-release)
* Modified by: PW and JG May 2015: versions 2.2 and 2.2a
* Modified by: PW March 2016: version 2.3
* Modified by: PW May 2017: version 2.4
* Modified by: PW June 2017: version 2.4.1
* Modified by: PW December 2018: version 2.5
* Modified by: PW January 2020: version 2.6
* Modified by: PW February 2020: 3.0beta tech preview
* Modified by: PW May 2020: version 2.6.1
* Modified by: PW November 2020: version 2.7
* Modified by: PW December 2020: version 3.0
* Modified by: PW September-October 2021: version 2.7.1
* Modified by: PW September-November 2021: version 3.1
* Modified by: PW December 2022: versions 3.2 and 2.7.2
* Modified by: PW March 2023: version 3.3
* Modified by: PW September 2023: version 3.4
*
* This file is part of McStas 3.4, released September 19th 2023.
* It gives a 'changes' list from the beginning of the project
*
*******************************************************************************/
Changes in McStas 3.4, September 19th, 2023

 McStas 3.4 is the fifth official release in the 3.x series, with a modernised 
 code-generator and support for GPU acceleration on NVIDIA cards.


 Thanks:
 - Thanks to all members of the joint McStas-McXtrace team and input from our
   users via emails and GitHub issues alike!

 Fixes of issues from last 3.x release:
 - A number of issues from 3.3 were addressed, see the relevant GitHub issues for details:
   - https://github.com/McStasMcXtrace/McCode/issues?q=is%3Aissue+is%3Aclosed+label%3Amcstas-3.3

 Installation:
 - As usual, our install docs are available on the McCode GitHub page at
   https://github.com/McStasMcXtrace/McCode/tree/master/INSTALL-McStas
 - The meta-packages for Debian/Ubuntu and RedHat/Centos/Fedora are named e.g.
   mcstas-suite-python-ng for 'next generation' for coexistance with the 2.x
   series packages. (Please note that there will be no future 2.x releases!)
 - OpenACC GPU (and CPU multicore) acceleration is at the time of release still ONLY
   supported on Linux systems, as this is the only platform targeted by the NVIDIA
   HPC package. Versions 20.x, 21.x, 22.x and 23.x should all work. On Windows 64bit systems,
   support is expected to arrive "later", but you may run on your GPU via the so-called
   "Windows Subsystem for Linux" (WSL). macOS is unfortunately not supported
   by NVIDIA HPC acceleration.
 - McStas 3.4 comes with embedded NeXus support on macOS and on Debian/Ubuntu NeXus is pulled
   as a package dependency. On Windows, please install NeXus from the extras/ folder alongside
   your McStas bundle.
 - The build process for both macOS and Windows has been further overhauled and is based on an
   embedded conda environment. MPI support is now included with the installation on Windows.
 - We have further been modernising the (CMake-based) build system and will be contributing
   conda recipes for distribution via conda in the near future.
   Thanks to Thomas Kittelmann (ESS) for lots of help and footwork in the CMake/conda effort!

 McStas 3.4 enables most components and instruments on GPU. A very limited instruments using
 the "scatter logger" mechanism are still only available on 2.x and key components (e.g. Union
 and NCrystal) compute only on CPU.

 Tools:
 - We are no longer supporting / distributing the Perl-based tool set as all functionality
   has finally been ported to the Python tool set (which has been default since v. 2.4)
 - mcrun now supports an set of "optimisation" switches to allow evaluating an instrument as
   "object function". Thanks to Emmanuel Farhi for working on this.
    --optimize          Optimize instrument variable parameters to maximize
                        monitors
    --optimize-maxiter=optimize_maxiter
                        Maximum number of optimization iterations to perform
    --optimize-tol=optimize_tol
                        Tolerance for optimization termination. When optimize-
                        tol is specified, the selected optimization algorithm
                        sets some relevant solver-specific tolerance(s) equal
                        to optimize-tol
    --optimize-method=optimize_method
                        Optimization solver in ['powell', 'nelder-mead', 'cg',
                        'bfgs', 'newton-cg', 'l-bfgs-b', 'tnc', 'cobyla',
                        'slsqp', 'trust-constr', 'dogleg', 'trust-ncg',
                        'trust-exact', 'trust-krylov'] (default: powell) You
                        can use your custom method method(fun, x0, args,
                        **kwargs, **options). Please refer to scipy
                        documentation for proper use of it: https://docs.scipy
                        .org/doc/scipy/reference/generated/scipy.optimize.mini
                        mize.html?highlight=minimize
    --optimize-minimize
                        Choose to minimize the monitors instead of maximize
    --optimize-monitor=optimize_monitor
                        Name of a single monitor to optimize (default is to
                        use all)
 - McStas now ships with a "python-aware" code generator for generating "McStasScript" code, example:
     mcstas-pygen Instrument.instr   -->   Instrument_generated.py
   Using 'jupytext' this file may easily be converted to a notebook:
     jupytext --to ipynb Instrument_generated.py   -->   Instrument_generated.ipynb
   See https://github.com/PaNOSC-ViNYL/McStasScript
   for more information on McStasScript.
 - McStasScript is included with McStas 3.4 on macOS and Windows and readily configured for use with
   McStas 3.4 and its embedded Python version. For sake of user convenience, Jupyterlab is also included
   on these platforms, use 'jupyter lab' from within the McStas 'environment' to work with a McStasScript
   notebook.

 Components and Instruments:
 - In relation to the HighNESS project, the Wolter-optic components Conics_* have been given an
   overhaul by Mads Bertelsen. New related instrument WOFSANS is included with McStas 3.4.
 - Thanks to the work of José Robledo (FZJ), we now have a better interface to the Small-Angle Scattering
   models from SASview, aka. SASmodels. Due to the big number of included models that each correspond
   to a McStas component (94 in total!), these are now found in the "sasmodels" folder of your McStas
   installation. Two example instruments are also included: Test_SasView_bcc_paracrystal_aniso.instr and
   Test_SasView_guinier.instr.
 - The strain-scanning instrument ILL_SALSA.instr was contributed by Daniel Lomholt Christensen,
   Uni Copenhagen and ILL.
   
 Core simulation framework / code-generator:
 - mcstas-pygen: A secondary code-generator is now included that translates an instrument file to
   a .py script for use with McStasScript. If your system includes the jupytext utility
   (McStas on Windows and macOS now does by default), the command
     jupytext --to ipynb
   will translate the .py output from mcstas-pygen to an iPython notebook.
 - New functions to probe the distance to a given component instance at INTITIALIZE time:
   double index_getdistance(int first_index, int second_index)
   /* Calculate the distance two components from their indexes*/
   double getdistance(char* first_component, char* second_component)
   /* Calculate the distance between two named components */
   double checked_setpos_getdistance(int current_index, char* first_component, char* second_component)
   /* Calculate the distance between two named components at *_setpos() time, with component index checking */
   Thanks to Gregory S. Tucker (ESS) for contributing this functionality.
 - A new syntax for instrument parameter units has been added to the grammar:
 
      DEFINE INSTRUMENT template(lambda / "Aa" = 2.36)

   Such unit definitions may be probed using
   
      ./template.out --list-parameters
      double lambda/"Aa" = 2.36

   Thanks to Gregory S. Tucker (ESS) for contributing this grammar enhancement!
 - A new syntax called METADATA has been added to the grammar, allowing users to "glue" one or more
   pieces of information to a component instance, e.g.:
   
     COMPONENT Origin = Progress_bar()
       AT (0,0,0) ABSOLUTE
     METADATA JSON eniius_data %{
       ...{JSON string}...
     %}
     METADATA Python extra_function %{
     def the_function(a, b, c):
        return a + b / c
     %}

   Such metadata definitions may be probed using e.g.
   # List the components that have attached metadata:
     ./template.out --meta-list
     Origin
   # List the attached metadata names for Origin:
     ./template.out --meta-defined Origin
     eniius_data extra_function 
   # Probe the "type" of metadata for each metadata name:
     ./template.out --meta-type Origin:eniius_data
     JSON
     ./template.out --meta-type Origin:extra_function
     Python
   # Print the metadata for each metadata name:
     ./template.out --meta-data Origin:eniius_data
     ...{JSON string}...
     ./template.out --meta-data Origin:extra_function
     def the_function(a, b, c):
         return a + b / c
   
   Thanks to Gregory S. Tucker (ESS) for contributing this grammar enhancement!

 Libraries and other runtime code:
 - NCrystal library version 3.7.1 from T. Kittelmann (ESS) and X.X. Cai (CSNS), distributed
   with McStas on Unix platforms only. (Cross-compiles for Windows, but still needs work
   for "production" availability.)
 - MCPL library from T. Kittelmann (ESS) included at v. 1.6.2
 - On macOS NCrystal and MCPL are now installed via conda.
 - On debian and fedora we are providing new packages for NCrystal and MCPL via the
   McCode repository, independent of the McStas release. (Both codes will also soon arrive
   in the Debian ecosystem to beecome available with the next releases, thanks to
   Synchrotron SOLEIL, Emmanuel Farhi and Roland Mas.)

 START your migration to 3.x:
 - Following the release of 3.4, we will no longer systematically be releasing updates to the
   2.x series.
 - The Wiki has a dedicated section on McStas 2.x -> McStas 3.x conversion that includes:
   * A nomenclature list containing short descriptions of new concepts and important keywords
     in McStas 3.x and OpenACC / CUDA code in general.
   * A document outlining the most importand differences between 2.x and 3.x.
   * A guide for 2.x -> 3.x instrument conversion.
   * A guide for 2.x -> 3.x component conversion.
 - If you are still in trouble, please write us a GitHub issue or an email to mcstas-users@mcstas.org
 - Known limitations in the GPU-implementation:
   * The Union subsystem still works on CPU only, but can be used in the mixed GPU/CPU funnnel
     mode as mentioned above. Union_master is a NOACC component. We expect Union_master to receive
     GPU suport later in 2023.
   * The same solution is applied in use of the NCrystal_sample that uses a non-accelerated library
     without the needed #pragma's included. Several other "complicated" components such as
     Single_crystal_inelastic are included the same way.
   * Special NOACC versions of Monitor_nD and MCPL_output are included. These may be used in the case
     of large event datasets, allowing more than 2e9 events to be stored.

 Platforms:
  - We still support 64bit Windows 10/11 on Intel, three most recent 64bit macOS (11 Big Sur -> 13 Ventura)
    on both Intel and Apple Silicon processors. Debian-based distros on Intel and Arm, Fedora on Intel.
  - On macOS and Windows we bundle a Mambaforge Python with the installation.

We hope you will enjoy this new release!!!


Changes in McStas 3.3, March 31st, 2023

 McStas 3.3 is the fourth official release in the 3.x series, with a modernised 
 code-generator and support for GPU acceleration on NVIDIA cards.

 3.3 could have been considered a 'minor' update, but new built-in support for NeXus
 on all platforms and new SEARCH grammar warrant the .x increment.

 Thanks:
 - Thanks to all members of the joint McStas-McXtrace team and input from our
   users via emails and GitHub issues alike!

 Fixes of issues from last 3.x release:
 - A number of issues from 3.2 were addressed, see the relevant GitHub issues for details:
   - https://github.com/McStasMcXtrace/McCode/issues?q=is%3Aissue+is%3Aclosed+label%3Amcstas-3.2

 Installation:
 - As usual, our install docs are available on the McCode GitHub page at
   https://github.com/McStasMcXtrace/McCode/tree/master/INSTALL-McStas
 - The meta-packages for Debian/Ubuntu and RedHat/Centos/Fedora are named e.g.
   mcstas-suite-python-ng for 'next generation' for coexistance with the 2.x
   series packages
 - OpenACC GPU (and CPU multicore) acceleration is at the time of release still ONLY
   supported on Linux systems, as this is the only platform targeted by the NVIDIA
   HPC package. Versions 20.x, 21.x, 22.x and 23.x should all work. On Windows 64bit systems,
   support is expected to arrive "later", but you may run on your GPU via the so-called
   "Windows Subsystem for Linux" (WSL). macOS is unfortunately not supported
   by NVIDIA HPC acceleration.
 - McStas 3.3 comes with embedded NeXus support on macOS and on Debian/Ubuntu NeXus is pulled
   as a package dependency. On Windows, please install NeXus from the extras/ folder alongside
   your McStas bundle.
 - The build process for macOS has been overhauled and is now performed with the embedded
   conda environment. Further, the macOS builds should be more robust wrt. added, surrounding
   non-standard Python environments on the target machine.

 McStas 3.3 enables most components and instruments on GPU. A very limited instruments using
 the "scatter logger" mechanism are still only available on 2.x and key components (e.g. Union
 and NCrystal) compute only on CPU.

 Tools:
 - mcrun now automatically adds NeXus support to your binary if --format=NeXus is given on the
   commandline (or if DEPENDENCY " @NEXUSFLAGS@ " is included in your instrument or component file).
 - The new input flag --IDF will run an IDF generator (i.e. mcdisplay-mantid) prior to performing
   a NeXus-based simulation, i.e. for "one-click" support of output in Mantid-compatible NeXus
   format with an embedded IDF. Please consult the naming-conventions for sourceMantid, sampleMantid
   and nD_Mantid_xx found in
   https://github.com/McStasMcXtrace/McCode/wiki/McStas-and-Mantid#mcstas-mantid-workflow
   to succesfully generate your IDF. Please also inspire from the example instruments in the 'Mantid'
   category, see mcgui -> File -> New from template -> Mantid .
 - mcrun now forwards the -I input to the code-generator, which allows you to add a chosen folder
   with extra components etc. to your search path. Setting the -I flag implies recompilation (-c).
   (Please also note the related SEARCH grammar below which allows working on the component search
   path directly via the instrument or component grammar.)
 - The mcgui run dialogue now allows to directly specify --format=NeXus and --format=NeXus --IDF
   when starting a simulation.
 - mcdisplay-mantid has been given a good overhaul and now works properly with all of the supported
   mantid-event-detector geometries of Monitor_nD: rectangular, cylindrical/banana and OFF-file based.
   Thanks to Torben R. Nielsen and Celine Durniak (ESS) for repeated testing.
 - An mcplot (-pyqtgraph) and numpy related bug was quickly spotted and ironed out with the help
   of by Rose Robledo FZJ.

 Components and Instruments:
 - FZP_simple model of Fresnel Zone-Plate (phenomenologic/closed-form thin-plate approximation) added
   along with test instrument Test_FZP_simple, work by Anders Komar Ravn (NBI), and Erik B Knudsen
   (DTU, now Copenhagen Atomics)
 - Test_Monochromators.instr has been updated to include NCrystal_sample as a monochromator, plus
   includes multiple ways of parametrizing Single_crystal lattice orientation.
 - The 3 example ConicTracer interface-component codes Conics_EH.comp, Conics_PH.comp, Conics_PP.comp
   have been updated to allow specifying non-equidistant radii of the nested optical shells. Please
   use vector radii={a,b,c,d,e} or initialization via an instrument-based array and use a compatible
   setting of nshells.
 - The Elliptical_guide_gravity will now complain if you are using arrays for specifying varied coating
   without setting the nSegments input.
 - The multi-v-cavity support from the McStas 2.x version of Pol_guide_vmirror has been ported to 3.x.
   Thanks to Damian Rodriguez and Hal Lee (ESS) for interactions on this component.
 - By popular demand, certain characteristics of the ESS_butterfly component may be modified using
   compile-time re-definition. Defaults are ESS_SOURCE_DURATION 2.857e-3, ESS_SOURCE_FREQUENCY 14,
   ESS_SOURCE_POWER 5. (Use e.g. mcrun --D1=ESS_SOURCE_DURATION=1.0e-3 to simulate a 1 ms pulse.)
 - Similarly, the precession-algorithm constants of pol-lib may also be redefined at compile-time,
   defaults are: MCMAGNET_STACKSIZE 12, mc_pol_angular_accuracy (1.0*DEG2RAD), mc_pol_initial_timestep 1e-5.

 Core simulation framework / code-generator:
 - A new syntax called SEARCH has been added to the grammar, allowing users to run append a directory
   to the mcstas search path when looking for components. The syntax may be given in two forms in the
   instrument- or component-header directly after a SHELL token and before the DEPENDENCY, DECLARE
   tokens:
      SEARCH "/the/path/to/add/"
      SEARCH SHELL "the_executable --and --some --options"
   But you may also apply the same two SEARCH forms in connection with a component instance in TRACE, e.g.:
      TRACE
      ...
      SEARCH SHELL "readout-config --show compdir"
      COMPONENT readout = Readout(ring="RING", fen="FEN", tube="TUBE", a="left", b="right", ...)
      AT (0, 0, 0) ABSOLUTE
      ...
   Thanks to Gregory S. Tucker (ESS) for contributing this grammar enhancement!

 Libraries and other runtime code:
 - The (r-)interoff-lib.c family of codes have again received a couple of updates, thanks to McStas user
   Richard Wagner (ILL).
 - NCrystal library version 3.5.1 from T. Kittelmann (ESS) and X.X. Cai (CSNS), distributed
   with McStas on Unix platforms only. (Cross-compiles for Windows, but still needs work
   for "production" availability.)
 - MCPL library from the same authors included at v. 1.6.1

 Please start your migration to 3.x:
 - Following the release of 3.3, we will also release a "VERY last update" to the 2.x series in the form
   of McStas 2.7.3 that share a subset of tool features with McStas 3.3.
 - The Wiki has a dedicated section on McStas 2.x -> McStas 3.x conversion that includes:
   * A nomenclature list containing short descriptions of new concepts and important keywords
     in McStas 3.x and OpenACC / CUDA code in general.
   * A document outlining the most importand differences between 2.x and 3.x.
   * A guide for 2.x -> 3.x instrument conversion.
   * A guide for 2.x -> 3.x component conversion.
 - If you are still in trouble, please write us a GitHub issue or an email to mcstas-users@mcstas.org
 - Known limitations in the GPU-implementation:
   * The Union subsystem still works on CPU only, but can be used in the mixed GPU/CPU funnnel
     mode as mentioned above. Union_master is a NOACC component. We expect Union_master to receive
     GPU suport later in 2023.
   * The same solution is applied in use of the NCrystal_sample that uses a non-accelerated library
     without the needed #pragma's included. Several other "complicated" components such as
     Single_crystal_inelastic are included the same way.
   * Special NOACC versions of Monitor_nD and MCPL_output are included. These may be used in the case
     of large event datasets, allowing more than 2e9 events to be stored.

 Platforms:
  - We still support 64bit Windows 10/11 on Intel, three most recent 64bit macOS (11 Big Sur -> 13 Ventura)
    on both Intel and Apple Silicon/M1 processors. Debian-based distros on Intel and Arm, Fedora on Intel.
  - On macOS and Windows we bundle a Mambaforge Python with the installation.

We hope you will enjoy this new release!!!


Changes in McStas 3.2, December 12th, 2022

 McStas 3.2 is the third official release in the 3.x series, with a modernised 
 code-generator and support for GPU acceleration on NVIDIA cards.
 
 Thanks:
 - Thanks to all members of the joint McStas-McXtrace team, you guys ROCK!
 - Our joint hackathon in November brought lots of goodies to our user base!

 Fixes of issues from last 3.x release:
 - A large number of issues from 3.1 were addressed, see the relevant GitHub issues for details:
   - https://github.com/McStasMcXtrace/McCode/issues?q=is%3Aissue+is%3Aclosed+label%3Amcstas-3.1

 Documentation & guides:
 - All 3.2 component and instrument headers have been given an overhaul and should
   render correctly in mcdoc / your browser.
 - The component pages now include an extra column in the parameter-table. When filling in
   this column with wanted values, plus filling the entry-boxes for AT, ROTATED and instance
   name, pressing "Generate" will put a code-snipet for your component instance directly on
   your computer clipboard, for easy transfer to the mcgui editor or any other editor of choice!
 - mcdoc has been made "less picky" wrt. component and instrument structure for a more robust
   experience.
 - mcgui has a new "Docs" button for easier access to the generated mcdoc pages (that give easy
   access to components, instruments, manuals, datafiles and more.
   
 Installation:
 - As usual, our install docs are available on the McCode GitHub page at
   https://github.com/McStasMcXtrace/McCode/tree/master/INSTALL-McStas
 - The meta-packages for Debian/Ubuntu and RedHat/Centos/Fedora are named e.g.
   mcstas-suite-python-ng for 'next generation' for coexistance with the 2.x
   series packages
 - OpenACC GPU (and CPU multicore) acceleration is at the time of release still ONLY
   supported on Linux systems, as this is the only platform targeted by the NVIDIA
   HPC package. Versions 20.x, 21.x and 22.x should all work. On Windows 64bit systems,
   support is expected to arrive "later", but you may run on your GPU via the so-called
   "Windows Subsystem for Linux" (WSL). macOS is unfortunately not supported
   by NVIDIA HPC acceleration.

 McStas 3.2 enables further components and instruments GPU. A very limited instruments using
 the "scatter logger" mechanism are still only available on 2.x.

 Interoperability with other codes:
 - We have worked on the interfaces with MCPL and NCrystal and a mechanism was developed
   to automatically detect their location using the mcpl-config and ncrystal-config utils.
   In practice this happens prior/during to the code-generation step, see below under mcrun.
   Thanks to Thomas Kittelmann (ESS) for your help in this area.

 Tools:
 - mcrun has a new solution to support 3 new keywords CMD(), ENV() and GETPATH() through the
   DEPENDENCY line as collected by the code-generator.
   * CMD() is used to call mcpl-config and ncrystal-config to probe lib and include-paths and
     use them in compiler-directives.
     (Examples available in MCPL_input.comp and MCPL_output.comp)
   * ENV() may evaluate an evironment variable
     (No specific example available yet)
   * GETPATH() can be used to locate the absolute path to e.g. an input file in the $MCSTAS
     folder hierachy. Component writers may use this mechanism for a low-barrier and platform-
     independent way to access inputfiles.
     (Examples available in Test_MCPL_input.instr and ESS_BEER_MCPL.instr)
 - mcrun has a new triplet of switches (D1/D2/D3) that can be used to easily set defines from
   the commandline. For instance --D1=SOMETHING will mean -DSOMETHING when compiling. Note that
   setting these --D flags implies recompilation (-c).
 - mcdoc has been made "less picky" wrt. component and instrument structure for a more robust
   experience. Also, rendered component pages now include an extra column in the parameter-table.
   When filling in this column with wanted parameter-values, plus filling the entry-boxes for
   AT, ROTATED and instance name, pressing "Generate" will put a code-snipet for your component
   instance directly on your computer clipboard, for easy transfer to the mcgui editor or any
   other editor of choice!
 - mcplot (-pyqtgraph) has received a nice update with an infobar at the bottom of the window.
   The infobar is updated with coordinates of the cursor on the active plot, meaning that you
   can easily determine the coordinates of e.g. a peak. The code has also received a number of
   bugfixes relating to colorbars, the order of monitor output in overviews etc.
   Thanks to Tobias Weber (ILL) for your work on mcplot.
 - The new mcdisplay-cad variant has come along, and is currently included in the form of a
   technology-preview. The code uses the Python module cadquery (https://github.com/CadQuery/cadquery)
   and is able to write e.g. STEP or STL output. For now, resolving the required dependencies is
   left to the user, but we foresee that this tool will mature over the coming releases.
   Thanks to Greg Tyler (ESS) for contributing this tool.

 Components and Instruments:
 - The Union framework is now considered a fully "official" part of McStas and is hence now found
   in the $MCSTAS/union folder. Union_master is a still a NOACC component when running on GPU
   (i.e. performs its calculations on CPU in FUNNEL mode). We expect Union_master to receive
   full GPU suport within 2023. The NCrystal_process.comp is back in Union - will work only in
   a NOACC/CPU COMPONENT setting.
 - By popular demand, the ConicTracer code for simulating Wolter optics from Boris Khaykovich et. al. (MIT)
   has been included. The main "library" code is conic.h found in $MCSTAS/share and is used from
   3 different example Wolter optic components: Conics_EH.comp, Conics_PH.comp, Conics_PP.comp.
   The illustrate how to mplement Elliptic-Hyperbolic, Parabolic-Hyperbolic and Parabolic-Parabolic
   Wolter mirrors, and two of these are used in the Test_Conics_pairs.instr instrument.
 - Most of the standard monitors will now fill in their own "instance name" as filename in case
   a filename was not defined. A small but very useful convenience.
 - Source_div_quasi.comp allows to sample source phase-space using Halton-sequences, which proves
   to be a very effective way to ensure an evenly distributed phase space region of interest, e.g.
   for imaging/SANS settings where a very low-divergent beam is relevant. This contribution is from 
   Mads Carlsen and Erik B. Knudsen (DTU) and was originally developed for McXtrace.
 - PSD_Pol_monitor.comp measures (local) polarisation over the (x,y) cross-section of a beam. Contributed
   by Alexander Backs (LU/ESS).
 - Single_crystal_inelastic.comp (NOACC), Single_magnetic_crystal.comp (NOACC), SANS_benchmark2.comp and
   Guide_multichannel are now all available in the McStas 3 series.
 - The Fermi_chop2a.comp and Vertical_T0a.comp chopppers from Garrett Granroth (SNS) have received
   a GPU-oriented update.
   
 Core simulation framework / code-generator:
 - Previously, any component present in a McStas instrument would trigger the transformation of
   every neutron to its local coordinate system, even in the case of an Arm() (empty TRACE) without
   an EXTEND block. We now instead detect components with an empty TRACE that have no EXTEND block
   and are able to completely skip these in the calculation. This results in a speedup in case of
   instruments with many "empty" components, such as big Union assemblies.
   Thanks to Mads Bertelsen (ESS) for investigating the problem and finding a good solution.
 - A new syntax called SHELL has been added to the grammar, allowing users to run a system command
   prior to code-generation. This may for instance be used to generate an instrument-snippet that
   you may %include in the instrument (think for-loops of an assembly of identical components).
   One could also imagine compilation of a needed library, wget of a data file etc.
   The synax is SHELL "command-to-execute" and it should be placed directly after a DEPENDENCY line
   within an instrument or component. We expect that applications and examples will come in the
   next couple of releases.
 - Components may from McStas 3.2 request USERVARS that become part of the particle struct.
   (For the time being only in the form of basic C types like double, int etc. and corresponding
   arrays / pointers.) This will mean that e.g. the optimisations in Single_crystal and PowderN
   in SPLIT scenarios can be introduced also in GPU settings.
   The first component to make use of this mechanism is Res_monitor.comp as used in Test_TasReso.instr.

 Libraries and other runtime code:
 - The (r-)interoff-lib.c family of codes have received multiple updates, thanks to McStas users
   Kyle Grammer (ORNL) and Gaetano Mangiapia (HZH):
   * The intersection routines now work correctly with gravity
     (see https://github.com/McStasMcXtrace/McCode/issues/1248)
   * The r-interoff-lib (and the related Guide_anyshape_r component) now support specifying
     a "full" reflectivity curve pr. OFF face, columns of m, alpha and W values should be
     added in this order to the OFF face. See example input file data/Guide_r.off.
     (see https://github.com/McStasMcXtrace/McCode/issues/1250)
 - A flaw was spotted in our NeXus implementation in the case of event lists: A small chunk-size
   of (1,6) was used, leading to slow I/O and lots of size-overhead. Our new NeXus files are
   generally a factor of (at least) 2-3 smaller and load much faster in e.g. Mantid.
 - A correction to ref-lib.c was recieved from Gaetano Mangiapia (HZH), allowing closer
   correspondance between simulated and measured mirror-reflectivities.
   (see https://github.com/McStasMcXtrace/McCode/issues/1247)
 - Updated version 3.5.1 NCrystal library from T. Kittelmann (ESS) and X.X. Cai (CSNS), distributed
   with McStas on Unix platforms only. (Now also cross-compiles for Windows, but still needs work
   for "production" availability.)
 - MCPL library from the same authors now included at v. 1.6.1
   
 Please start your migration to 3.x:
 - Following the release of 3.2, we will also release a "last update" to the 2.x series in the form
   of McStas 2.7.2 that share a subset of tool features with McStas 3.2.
 - The Wiki has a dedicated section on McStas 2.x -> McStas 3.x conversion that includes:
   * A nomenclature list containing short descriptions of new concepts and important keywords
     in McStas 3.x and OpenACC / CUDA code in general.
   * A document outlining the most importand differences between 2.x and 3.x.
   * A guide for 2.x -> 3.x instrument conversion.
   * A guide for 2.x -> 3.x component conversion.
 - If you are still in trouble, please write us a GitHub issue or an email to mcstas-users@mcstas.org
 - Known limitations in the GPU-implementation:
   * The Union subsystem still works on CPU only, but can be used in the mixed GPU/CPU funnnel
     mode as mentioned above. Union_master is a NOACC component. We expect Union_master to receive
     GPU suport within 2023.
   * The same solution is applied in use of the NCrystal_sample that uses a non-accelerated library
     without the needed #pragma's included. Several other "complicated" components such as
     Single_crystal_inelastic are included the same way.
   * Special NOACC versions of Monitor_nD and MCPL_output are included. These may be used in the case
     of large event datasets, allowing more than 2e9 events to be stored.
   
 Platforms:
  - We still support 64bit Windows 10/11 on Intel, all recent 64bit macOS including 13.0 Ventura on
   both Intel and Apple Silicon/M1 processors. Debian-based distros on Intel and Arm, Fedora on Intel.
  - On macOS and Windows we now bundle a Mambaforge Python with the installation.
  - On Windows, the McStasScript and guide_bot codes are as an experimental solution installed in our
    Python using pip. We will work on a solution for the other platforms during the spring of 2023.

 Infrastructure:
  - During the last McStas-McXtrace hackathon we worked on "standardizing" our CMake code, which will
    mean smoother integration with other codes and easier configuration and build of our code for
    various platforms. Try it out if you like, directly from the McCode repo.
    (https://github.com/McStasMcXtrace/McCode/)

We hope you will enjoy this new release!!!


Changes in McStas 2.7.2, December 12th, 2022

 McStas 2.7.2 is the 12th release in the 2.x series, provides minor incremental
 improvements and fixes various minor issues with McStas 2.7.1. McStas 2.7.2 is meant
 to be the LAST version in the 2.x series.

 Please start your migration to 3.x:
 - McStas 2.7.2 is a "last update" to the 2.x series, sharing a subset of tool features with McStas 3.2.
 - The Wiki has a dedicated section on McStas 2.x -> McStas 3.x conversion that includes:
   * A nomenclature list containing short descriptions of new concepts and important keywords
     in McStas 3.x and OpenACC / CUDA code in general.
   * A document outlining the most importand differences between 2.x and 3.x.
   * A guide for 2.x -> 3.x instrument conversion.
   * A guide for 2.x -> 3.x component conversion.
 - If you are still in trouble, please write us a GitHub issue or an email to mcstas-users@mcstas.org

 Thanks:
 - Thanks to all members of the joint McStas-McXtrace team, you guys ROCK!
 - Our joint hackathon in November brought lots of goodies to our user base!

 Fixes of issues from last release:
 - A number of minor issues from 2.7.1 were addressed, see the relevant GitHub issues for details:
   - https://github.com/McStasMcXtrace/McCode/issues?q=is%3Aissue+is%3Aclosed+label%3Amcstas-2.7.1

 Documentation & guides:
 - mcdoc has been made "less picky" wrt. component and instrument structure for a more robust
   experience. Most docs should thus render correctly in mcdoc / your browser.
 - The component pages now include an extra column in the parameter-table. When filling in
   this column with wanted values, plus filling the entry-boxes for AT, ROTATED and instance
   name, pressing "Generate" will put a code-snipet for your component instance directly on
   your computer clipboard, for easy transfer to the mcgui editor or any other editor of choice!
 - mcgui has a new "Docs" button for easier access to the generated mcdoc pages (that give easy
   access to components, instruments, manuals, datafiles and more.
   
 Installation:
 - As usual, our install docs are available on the McCode GitHub page at
   https://github.com/McStasMcXtrace/McCode/tree/master/INSTALL-McStas
 - The meta-packages for Debian/Ubuntu and Fedora are named e.g.
   mcstas-suite-python for coexistance with the 3.x series packages that are named
   mcstas-suite-python-ng.
 
 Interoperability with other codes:
 - We have worked on the interfaces with MCPL and NCrystal and a mechanism was developed
   to automatically detect their location using the mcpl-config and ncrystal-config utils.
   In practice this happens prior/during to the code-generation step, see below under mcrun.
   Thanks to Thomas Kittelmann (ESS) for your help in this area.

 Tools:
 - mcrun has a new solution to support 3 new keywords CMD(), ENV() and GETPATH() through the
   DEPENDENCY line as collected by the code-generator.
   * CMD() is used to call mcpl-config and ncrystal-config to probe lib and include-paths and
     use them in compiler-directives.
     (Examples available in MCPL_input.comp and MCPL_output.comp)
   * ENV() may evaluate an evironment variable
     (No specific example available yet)
   * GETPATH() can be used to locate the absolute path to e.g. an input file in the $MCSTAS
     folder hierachy. Component writers may use this mechanism for a low-barrier and platform-
     independent way to access inputfiles.
     (Examples available in Test_MCPL_input.instr and ESS_BEER_MCPL.instr)
 - mcrun has a new triplet of switches (D1/D2/D3) that can be used to easily set defines from
   the commandline. For instance --D1=SOMETHING will mean -DSOMETHING when compiling. Note that
   setting these --D flags implies recompilation (-c).
 - mcdoc has been made "less picky" wrt. component and instrument structure for a more robust
   experience. Also, rendered component pages now include an extra column in the parameter-table.
   When filling in this column with wanted parameter-values, plus filling the entry-boxes for
   AT, ROTATED and instance name, pressing "Generate" will put a code-snipet for your component
   instance directly on your computer clipboard, for easy transfer to the mcgui editor or any
   other editor of choice!
 - mcplot (-pyqtgraph) has received a nice update with an infobar at the bottom of the window.
   The infobar is updated with coordinates of the cursor on the active plot, meaning that you
   can easily determine the coordinates of e.g. a peak. The code has also received a number of
   bugfixes relating to colorbars, the order of monitor output in overviews etc.
   Thanks to Tobias Weber (ILL) for your work on mcplot.

 Components and Instruments:
 - Minor updates only, most are adjustments to align with McStas 3.x features
 - Update to Pol_guide_vmirror.comp to allow multiple V-cavities "side by side". Developed with
   Wai Tung (Hal) Lee and Damian Martin Rodriguez (ESS).
 - The Union framework is now considered a fully "official" part of McStas and is hence now found
   in the $MCSTAS/union folder. 
 - By popular demand, the ConicTracer code for simulating Wolter optics from Boris Khaykovich et. al. (MIT)
   has been included. The main "library" code is conic.h found in $MCSTAS/share and is used from
   3 different example Wolter optic components: Conics_EH.comp, Conics_PH.comp, Conics_PP.comp.
   The illustrate how to mplement Elliptic-Hyperbolic, Parabolic-Hyperbolic and Parabolic-Parabolic
   Wolter mirrors, and two of these are used in the Test_Conics_pairs.instr instrument.
 - Source_div_quasi.comp allows to sample source phase-space using Halton-sequences, which proves
   to be a very effective way to ensure an evenly distributed phase space region of interest, e.g.
   for imaging/SANS settings where a very low-divergent beam is relevant. This contribution is from 
   Mads Carlsen and Erik B. Knudsen (DTU) and was originally developed for McXtrace.
 - PSD_Pol_monitor.comp measures (local) polarisation over the (x,y) cross-section of a beam. Contributed
   by Alexander Backs (LU/ESS).
   
 Libraries and other runtime code:
 - The (r-)interoff-lib.c family of codes have received multiple updates, thanks to McStas users
   Kyle Grammer (ORNL) and Gaetano Mangiapia (HZH):
   * The intersection routines now work correctly with gravity
     (see https://github.com/McStasMcXtrace/McCode/issues/1248)
   * The r-interoff-lib (and the related Guide_anyshape_r component) now support specifying
     a "full" reflectivity curve pr. OFF face, columns of m, alpha and W values should be
     added in this order to the OFF face. See example input file data/Guide_r.off.
     (see https://github.com/McStasMcXtrace/McCode/issues/1250)
 - A flaw was spotted in our NeXus implementation in the case of event lists: A small chunk-size
   of (1,6) was used, leading to slow I/O and lots of size-overhead. Our new NeXus files are
   generally a factor of (at least) 2-3 smaller and load much faster in e.g. Mantid.
 - A correction to ref-lib.c was recieved from Gaetano Mangiapia (HZH), allowing closer
   correspondance between simulated and measured mirror-reflectivities.
   (see https://github.com/McStasMcXtrace/McCode/issues/1247)
 - Updated version 3.5.1 NCrystal library from T. Kittelmann (ESS) and X.X. Cai (CSNS), distributed
   with McStas on Unix platforms only. (Now also cross-compiles for Windows, but still needs work
   for "production" availability.)
 - MCPL library from the same authors now included at v. 1.6.1

   
 Platforms:
  - We still support 64bit Windows 10/11 on Intel, all recent 64bit macOS including 13.0 Ventura on
   both Intel and Apple Silicon/M1 processors. Debian-based distros on Intel and Arm, Fedora on Intel.
  - On macOS and Windows we now bundle a Mambaforge Python with the installation.
  - On Windows, the McStasScript and guide_bot codes are as an experimental solution installed in our
    Python using pip. We will work on a solution for the other platforms during the spring of 2023.

 Infrastructure:
  - During the last McStas-McXtrace hackathon we worked on "standardizing" our CMake code, which will
    mean smoother integration with other codes and easier configuration and build of our code for
    various platforms. Try it out if you like, directly from the McCode repo.
    (https://github.com/McStasMcXtrace/McCode/)

We hope you will enjoy this new release!!!


Changes in McStas 3.1, November 24th, 2021

 McStas 3.1 is the second official release in the 3.x series, with a modernised 
 code-generator and support for GPU acceleration on NVIDIA cards.
 
 Thanks:
 - Thanks to all members of the joint McStas-McXtrace team, you guys ROCK!

 Fixes of issues from last 3.x release:
 - A largetnumber of issues from 3.0 were addressed, see the relevant GitHub issues for details:
   - https://github.com/McStasMcXtrace/McCode/issues?q=is%3Aissue+is%3Aclosed+label%3Amcstas-3.0
   - Many GPU-related bugs fixes in all layers of the code, be it components, instruments or
     libraries.

 Documentation & guides:
 - The Wiki has been updated with a dedicated section on McStas 2.x -> McStas 3.x conversion
 - It includes:
   - A nomenclature list containing short descriptions of new concepts and important keywords
     in McStas 3.x and OpenACC / CUDA code in general.
   - A document outlining the most importand differences between 2.x and 3.x.
   - A guide for 2.x -> 3.x instrument conversion.
   - A guide for 2.x -> 3.x component conversion.

 Installation:
 - Our install docs are available on the McCode GitHub page at
   https://github.com/McStasMcXtrace/McCode/tree/master/INSTALL-McStas
 - The meta-packages for Debian/Ubuntu and RedHat/Centos/Fedora are named e.g.
   mcstas-suite-python-ng for 'next generation' for coexistance with the 2.x
   series packages
 - OpenACC GPU (and CPU multicore) acceleration is at the time of release ONLY
   supported on Linux systems, as this is the only platform targeted by the NVIDIA
   HPC package. Versions 20.x and 21.x should all work. On Windows 64bit systems,
   support is expected to arrive end of 2021. macOS is unfortunately not supported
   by NVIDIA HPC acceleration.

 Any GPU-capable McStas instrument now feature three new input parameters for GPU
 parallelisation flow-control:
  --vecsize                  OpenACC vector-size
  --numgangs                 Number of OpenACC gangs
  --gpu_innerloop            Maximum rays to process in a kernel call

 McStas 3.1 enables further instruments and functionality on GPU and has improved support for
 use of the union components. Also, the FUNNEL mode with combined CPU-GPU execution has become
 stable in all tested cases.
 
 Main features and changes with respect to the 2.x series:
 1. Modernised code-generation scheme based on functions instead of #defines, which brings
    many befefits.
 2. Support for OpenACC acceleration on NVIDIA GPU's on Linux systems
   * #pragma driven, inserted by the code-generation, but also implemented in libs and comps
   * Speedups measured using top-notch NVIDIA V100 datacenter cards are in the range of 10-600 with
     respect to a single-core of a modern CPU.
   * Platform support / compiler configuration:
     - Required compiler for GPU/OpenACC: NVIDIA HPC SDK 20.x or newer. Community edition works fine
     - Required GPU hardware: NVIDIA Tesla card + configured driver
     - Windows: At this point UNSUPPORTED for GPU/OpenACC since NVIDIA does not yet ship a package for
       this platform. Support should come with WSL 2.0 or via native support from NVIDIA.
     - macOS: At this point UNSUPPORTED for OpenACC since NVIDIA does not ship a package for
       this platform.
     - Linux: Full acceleration support with GPU, and with CPU/multicore.
   * Install the compiler and put it on your system PATH. Install and configure Nvidia drivers for your card.
   * We hope that GCC will offer better support for OpenACC in the near future.
   * Tool support
     - On Linux and macOS mcrun is preconfigured so that mcrun -c --openacc compiles with:
     - Linux: nvc -ta:tesla,managed,deepcopy -DOPENACC
     - Linux: You may configure for use on CPU/multicore via: nvc -ta:multicore -DOPENACC
     - The --funnel option can be used to launch the FUNNEL simulation flow, see description below.
   * For both of the above, adding -Minfo:accel will output verbose information on parallelisation
   * In mcgui, the mcrun --openacc configuration can be selected via the preferences
   * Both mcgui and mcrun allow combining --openacc and --mpi if you have multiple GPU's available.
     The n'th mpi process will attempt to use the k'th GPU, where k = #available GPU's % #MPI nodes.
 3. Special McStas 3.0 grammar for mixed CPU/GPU mode:
   * The "FUNNEL" mode has been improved and bugfixed. E.g. allows use of the GROUP keyword:
     - Mixed GPU/CPU mode, were sections of the instrument are executed on each device type, with
       copying of neutron-bunches back and forth.
     - When this instrument grammar is specified, it signifies that the component should be executed
       on CPU rather than GPU.
        CPU SPLIT 10 COMPONENT Sample = Something()
     - Sections before and after that are not marked CPU will be executed on GPU.
     - If a component includes the NOACC token in the component header, the CPU-mode is forced
       through the compilation, as it signifies that the component does NOT support GPU. This is
       for the time being the case for Union_master.
 4. Interoperability with McStas 2.7.1
   * Support for MCPL event interchange is available through MCPL_input and MCPL_output components,
     that work both on CPU and GPU for McStas 3.1. Note however that targeting GPU, MCPL_input reads
     ALL particle events durin INITIALIZE and MCPL_output writes ALL particle events during SAVE,
     whereas when using CPU in 3.1 or 2.7.1, reads and writes happen during the TRACE flow.
 5. Known limitations
   * The Union subsystem still works on CPU only, but can be used in the mixed GPU/CPU funnnel
     mode as mentioned above. Union_master is a NOACC component.
   * The same solution is applied in use of the NCrystal_sample and  for Sample_nxs.
   * Not all features of all components correspond to those from McStas 2.7.1, but all essential components
     have beenfully ported from the 2.7.1 tree to the 3.0 tree. Hence, some parts distributed with McStas 2.7.1
     will either not exist in the 3.1 release or may not function, due to either:
     (1) very specialised features (2) maintainability issues or (3) use ofcomplex algorithms.
   * At the time of release, the nightly tests http://new-nightly.mccode.org/latest/overview.html show that
     - McStas 3.1 ships with 238 instruments that succesfully compile on both CPU and GPU
     - These instruments use 162 of our components
     - 181 tests produce credible output data on GPU
   * We don't ship an updated set of manuals for McStas 3.1, but essential documentation is available
     on the McCode GitHub wiki https://github.com/McStasMcXtrace/McCode/wiki

Components:
 - A new source component Source_pulsed form Klaus Lieutentant (FZJ/Vitess) has been added with a
   corresponding test instrument Test_Source_pulsed.instr. Default parametrisations correspond to
   those of the source of the Juelich HBS project.
 - Special NOACC versions of Monitor_nD and MCPL_output have been added. When using these for event-mode
   output, more than 2e9 events can be stored.

Tools:
 - The tools for McStas 3.1 correspond to those distributed with McStas 2.7.1, that is:
  - mcgui allows definition of an "external editor", see the configuration menu.
   - On Linux we preconfigure for gedit (where we now also provide syntax-highlighting, on macOS
   and Windows we default to use the OS file-type settings, i.e. whatever you get by double-clicking
   an instr file.) Use ctrl/meta + shift + e to spawn the editor from mcgui.
 - User-level configuration files are now in a more user-readable form with indentation.
 - Use mcrun --write-user-config to save your user-level configuration file.
 - Config setting 'QSCI' has been added, putting this to 0 disables the QScintilla editor.
 - On macOS (from 11.0 Big Sur onwards), mcgui assumes light/dark mode with the system settings. A
   side-effect is that the syntax-highlighting in our QScintilla editor becomes close-to-unredable.
   Workarounds are:
   - Use the "external editor" option added to mcgui, see above.
   - Don't use dark mode
   - Start mcgui in light mode, then switch to dark mode
   
 Platforms:
  - We still support 64bit Windows 10/11 on Intel, all recent 64bit macOS including 11.0 Big Sur on
   both Intel and Apple Silicon/M1 processors. Debian-based distros on Intel and Arm, RPM-based distros on Intel.
   (RPMs are built on/for CentOS and Fedora, you may get varying milage elsewhere.)

 Libraries:
 - Updated version 2.7.3 NCrystal library from T. Kittelmann (ESS) and X.X. Cai (CSNS), distributed with McStas on Unix
   platforms only. 
 - MCPL library from the same authors now included at v. 1.3.2

We hope you will enjoy this new release!!!


Changes in McStas v.2.7.1, October 4th, 2021

 McStas 2.7.1 is the 11th release in the 2.x series, provides minor incremental
 improvements and fixes various minor issues with McStas 2.7

 Thanks:
 - Thanks to all contributors of components, instruments etc.! This is what Open Source
   and McStas is all about!

 Installation:
 - Our install docs are available on the McCode GitHub page at
 https://github.com/McStasMcXtrace/McCode/tree/master/INSTALL-McStas


Fixes of issues from last release:
 - A number of minor issues from 2.7 were addressed, see the relevant GitHub issues for details:
   - https://github.com/McStasMcXtrace/McCode/issues?q=is%3Aissue+is%3Aclosed+label%3Amcstas-2.7
   
Tools:
 - mcgui allows definition of an "external editor", see the configuration menu.
   - On Linux we preconfigure for gedit (where we now also provide syntax-highlighting, on macOS
   and Windows we default to use the OS file-type settings, i.e. whatever you get by double-clicking
   an instr file.) Use ctrl/meta + shift + e to spawn the editor from mcgui.
 - User-level configuration files are now in a more user-readable form with indentation.
 - Use mcrun --write-user-config to save your user-level configuration file.
 - Config setting 'QSCI' has been added, putting this to 0 disables the QScintilla editor.
 - On macOS (from 11.0 Big Sur onwards), mcgui assumes light/dark mode with the system settings. A
   side-effect is that the syntax-highlighting in our QScintilla editor becomes close-to-unredable.
   Workarounds are:
   - Use the "external editor" option added to mcgui, see above.
   - Don't use dark mode
   - Start mcgui in light mode, then switch to dark mode

 Platforms:
 - We still support 64bit Windows 10/11 on Intel, all recent 64bit macOS including 11.0 Big Sur on
   both Intel and Apple Silicon/M1 processors. Debian-based distros on Intel and Arm, RPM-based distros on Intel.
   (RPMs are built on/for CentOS and Fedora, you may get varying milage elsewhere.)

 Libraries:
 - Updated version 2.7.3 NCrystal library from T. Kittelmann (ESS) and X.X. Cai (CSNS), distributed with McStas on Unix
   platforms only. With McStas 2.7.1, NCrystal is more tightly integrated and should run without using ncrystal_preparemcstasdir.
 - MCPL library from the same authors included at v. 1.3.2.

 Components:
 - Minor updates only, adjustments to align with McStas 3.x features

 Instruments:
 - New "test" instruments have been added for easier comparison with McStas 3.x.

We hope you will enjoy this new release!!! (And keep an eye out for 3.1, it is almost also there...)


Changes in McStas 3.0, December 15th, 2020

 McStas 3.0 is the first official release in the 3.x series, with a modernised 
 code-generator and support for GPU acceleration on NVIDIA cards.
 
 Thanks:
 - Thanks to all members of the joint McStas-McXtrace team, you guys ROCK!
 - A special thanks to Jakob Garde who has continued to contribute (unpaid!)
   to the 3.0 efforts even after leaving DTU.
 - Thanks to Guido Juckeland (HZDR,DE) and Sebastian Alfthan (CSC,FI) who were
   behind the GPU Hackathons we participated in
 - Thanks to our NVIDIA mentors Vishal Metha, Christian Hundt and Alexey Romanenko

 Installation:
 - Our install docs are now available on the McCode GitHub page at
   https://github.com/McStasMcXtrace/McCode/tree/master/INSTALL-McStas
 - The meta-packages for Debian/Ubuntu and RedHat/Centos/Fedora are named e.g.
   mcstas-suite-python-ng for 'next generation' for coexistance with the 2.x
   series packages
 - OpenACC GPU (and CPU multicore) acceleration is at the time of release ONLY
   supported on Linux systems, as this is the only platform targeted by the NVIDIA
   HPC package. Versions 20.x should all work. On Windows 64bit systems, support is
   promised to arrive with WSL 2.0 (i.e. via a Linux-layer), but may also become
   supported with a targeted release by NVIDIA. macOS is unfortunately not supported
   by NVIDIA HPC acceleration.
   
 Main new features and changes:
 1. New code-generation scheme based on functions instead of #defines, which brings
   * Much improved compilation-times, the code is better suited for modern compilers
   * In most cases a speed-up of order 20%
   * The neutron _particle is now represented by a struct
   * The component types and instances are also represented by structs
   * In the generic TRACE function of a given component type, the _comp var is
     short-hand for "whatever the component instance is"
   * New instrument section of USERVARS %{ double example_flag; %} which enriches
     the _particle struct
   * In component DECLARE blocks, assignments can no longer be done and all declarations
     must be listed independently, i.e double a; is OK, double a,b; is not. Variables in
     this scope are automatically so-called "OUTPUT PARAMETERS" (we may deprecate that
     keyword completely for the official McStas 3.0 release)
   * Components no longer support DEFINITION PARAMETERS, instead the SETTING PARAMETERS
     must be used, which now includes a vector and string type supplementing the (default)
     double/MCNUM and int types.
   * New macros have been added for
   * INSTRUMENT_GETPAR(parameter_name)
   * COMP_GETPAR(component, parameter_name) which is similar to the legacy MC_GETPAR
   * MC_GETPAR3(component_class, component_name,parameter_name)
   * The function particle_getvar(_particle,"variable",success) provides component-access
     to the instrument USERVARS, e.g. in Monitor_nD.
   * Further, the new cogen implements support for Nvidia GPU's, for details see point 2 below.
 2. Support for OpenACC acceleration on NVIDIA GPU's on Linux systems
   * #pragma driven, inserted by the code-generation, but also implemented in libs and comps
   * Speedups measured using top-notch NVIDIA V100 datacenter cards are in the range of 10-600 with
     respect to a single-core of a modern CPU, see the figure in the below link. It was generated for
     an "ideally" parallel instrument.
     (https://camo.githubusercontent.com/96fcceec70d0761f8709eda4de7bcbde5597aee6/687474703a2f2f746d702e6d63737461732e6f72672f563130302d73706565647570732e706e67)
   * Platform support / compiler configuration:
     - Required compiler for GPU/OpenACC: NVIDIA HPC SDK 20.x or newer. Community edition works fine
     - Required GPU hardware: NVIDIA Tesla card + configured driver
     - Windows: At this point UNSUPPORTED for GPU/OpenACC since NVIDIA does not yet ship a package for
       this platform. Support should come with WSL 2.0 or via native support from NVIDIA.
     - macOS: At this point UNSUPPORTED for OpenACC since NVIDIA does not ship a package for
       this platform.
     - Linux: Full acceleration support with GPU, and with CPU/multicore.
   * Install the compiler and put it on your system PATH. Install and configure Nvidia drivers for your card.
   * We hope that GCC will offer better support for OpenACC in the near future.
   * Tool support
     - On Linux and macOS mcrun is preconfigured so that mcrun -c --openacc compiles with:
     - Linux: nvc -ta:tesla,managed,deepcopy -DOPENACC
     - Linux: You may configure for use on CPU/multicore via: nvc -ta:multicore -DOPENACC
     - The --funnel option can be used to launch the FUNNEL simulation flow, see description below.
   * For both of the above, adding -Minfo:accel will output verbose information on parallelisation
   * In mcgui, the mcrun --openacc configuration can be selected via the preferences
   * Both mcgui and mcrun allow combining --openacc and --mpi if you have multiple GPU's available.
     The n'th mpi process will attempt to use the k'th GPU, where k = #available GPU's % #MPI nodes.
 3. Special McStas 3.0 grammar for mixed CPU/GPU mode:
   * A "FUNNEL" mode has been added, which allows
     - Mixed GPU/CPU mode, were sections of the instrument are executed on each device type, with
       copying of neutron-bunches back and forth.
     - When this instrument grammar is specified, it signifies that the component should be executed
       on CPU rather than GPU.
        CPU SPLIT 10 COMPONENT Sample = Something()
     - Sections before and after that are not marked CPU will be executed on GPU.
     - If a component includes the NOACC token in the component header, the CPU-mode is forced
       through the compilation, as it signifies that the component does NOT support GPU. This is
       for the time being the case for Union_master. (Support is expected to come with McStas 3.1)
 4. Interoperability with McStas 2.7
   * Support for MCPL event interchange has been added through MCPL_input and MCPL_output components,
     that work both on CPU and GPU for McStas 3.0. Note however that targeting GPU, MCPL_input reads
     ALL particle events durin INITIALIZE and MCPL_output writes ALL particle events during SAVE,
     whereas when using CPU in 3.0 or 2.7, reads and writes happen during the TRACE flow.
 5. Known limitations
   * The Union subsystem works on CPU only for now, but can be used in the mixed GPU/CPU funnnel
     mode as mentioned above. Union_master is a NOACC component.
   * The same solution is applied in use of the NCrystal_sample and will eventually come for Sample_nxs.
   * Not all features of all components correspond to those from McStas 2.7, but all essential components
     have beenfully ported from the 2.7 tree to the 3.0 tree. Hence, some parts distributed with McStas 2.7
     will either not exist in the 3.0 release or may not function, due to either:
     (1) very specialised features (2) maintainability issues or (3) use ofcomplex algorithms.
   * Notable examples of unsupported / non-functional components or instruments are:
     - The scatter_logger and shielding_logger components / instruments
     - The Vitess_chopperfermi component
     - The FZJ_BenchmarkSfin2 instrument / SANS_benchmark2 component
     - The MCPL_merge instrument
     - SEMSANS_instrument
     - Sample_nxs
  * Generally, most components/instruments are now ported to our OpenACC based GPU-technology, but you
     likely may find combinations of use that slipped through our not fully exhaustive test-suite. Missing
     support may come in the form of either
     - Code that does not compile
     - Instruments that segfaults during execution
     - Instruments or components that produce obscure results
   * At the time of release, the nightly tests http://new-nightly.mccode.org/ show that
     - McStas 3.0 ships with 211 instruments that succesfully compiles
     - These instruments use 147 of our components
   * We don't ship an updated set of manuals for McStas 3.0, but essential documentation is available
     on the McCode GitHub wiki https://github.com/McStasMcXtrace/McCode/wiki


Tools:
 - The tools for McStas 3.0 correspond to those distributed with McStas 2.7, apart from the above-mentioned
   mcrun options for --openacc and --funnel.
 - On macOS (from 11.0 Big Sur onwards), mcgui will assume light/dark mode with the system settings.
   (The change came from using the system python3 with our app/miniconda-distributed Qt libs etc.)
 - We now no longer officially support the perl/PGPLOT backend, these may or may not work on your system.
 - The mcformat utility has been deprecated.

 Platforms:
 - Nothing really new to report here. We still support 64bit Windows 10, all recent 64bit macOS including 11.0 Big Sur,
   Debian-based and RPM-based distros. (RPMs are built on/for CentOS, you may get varying milage elsewhere.)

 Libraries:
 - Updated version 2.2.2 NCrystal library from T. Kittelmann (ESS) and X.X. Cai (CSNS), distributed with McStas on Unix
   platforms only. With McStas 3.0, NCrystal is more tightly integrated and should run without using ncrystal_preparemcstasdir.
 - MCPL library from the same authors now included at v. 1.3.2

Tools:
 - The tools for McStas 3.0 correspond to those distributed with McStas 2.7, apart from the above-mentioned
   mcrun options for --openacc and --funnel.
 - On macOS (from 11.0 Big Sur onwards), mcgui will assume light/dark mode with the system settings.
   (The change came from using the system python3 with our app/miniconda-distributed Qt libs etc.)
 - We now no longer officially support the perl/PGPLOT backend, these may or may not work on your system.

 Platforms:
 - Nothing really new to report here. We still support 64bit Windows 10, all recent 64bit macOS including 11.0 Big Sur,
   Debian-based and RPM-based distros. (RPMs are built on/for CentOS, you may get varying milage elsewhere.)

 Libraries:
 - Updated version 2.2.1 NCrystal library from T. Kittelmann (ESS) and X.X. Cai (CSNS), distributed with McStas on Unix
   platforms only. To use it, carry out the below steps:
     mcstas:~/NCryst$ mcstas-2.7-environment
     mcstas:~/NCryst$ source $MCSTAS/ncrystal/setup.sh
     mcstas:~/NCryst$ ncrystal_preparemcstasdir
     mcstas:~/NCryst$ cp $MCSTAS/examples/NCrystal_example_mcstas.instr .
     mcstas:~/NCryst$ mcrun -c NCrystal_example_mcstas.instr
 - MCPL library from the same authors now included at v. 

We hope you will enjoy this new release!!!


Changes in McStas v.2.7, Novmeber 27th, 2020

 McStas 2.7 is the 10th release in the 2.x series, provides minor incremental
 improvements and fixes various minor issues with McStas 2.6.1

 Thanks:
 - Thanks to all contributors of components, instruments etc.! This is what Open Source
   and McStas is all about!

 Installation:
 - Our install docs are now available on the McCode GitHub page at
 https://github.com/McStasMcXtrace/McCode/tree/master/INSTALL-McStas


Fixes of issues from last release:
 - A number of minor issues from 2.6.1 were addressed, see the relevant GitHub issues for details:
   - https://github.com/McStasMcXtrace/McCode/issues?q=label%3A%22McStas+2.6.1%22+label%3A%22ready+for+release+on+master%22+is%3Aclosed

Tools:
 - On macOS (from 11.0 Big Sur onwards), mcgui will assume light/dark mode with the system settings.
   (The change came from using the system python3 with our app/miniconda-distributed Qt libs etc.)
 - We now no longer officially support the perl/PGPLOT backend, these may or may not work on your system.

 Platforms:
 - Nothing really new to report here. We still support 64bit Windows 10, all recent 64bit macOS including 11.0 Big Sur,
   Debian-based and RPM-based distros. (RPMs are built on/for CentOS, you may get varying milage elsewhere.)

 Libraries:
 - Updated version 2.1.1 NCrystal library from T. Kittelmann (ESS) and X.X. Cai (CSNS), distributed with McStas on Unix
   platforms only. To use it, carry out the below steps:
     mcstas:~/NCryst$ mcstas-2.7-environment
     mcstas:~/NCryst$ source $MCSTAS/ncrystal/setup.sh
     mcstas:~/NCryst$ ncrystal_preparemcstasdir
     mcstas:~/NCryst$ cp $MCSTAS/examples/NCrystal_example_mcstas.instr .
     mcstas:~/NCryst$ mcrun -c NCrystal_example_mcstas.instr
 - MCPL library from the same authors now included at v. 1.3.2.

 Components:
 - Updated Union library from Mads Bertelsen, ESS DMSC.
 - Cyl_monitor.comp, enriched with angular limits and dynamic allocation.
 - Event_monitor_simple.comp, a simple ascii event-list monitor, good for debugging purposes

 Instruments:
 - New "unit test" instruments for basic functionalities and key components:
   * Random numbers and focusing
     . Test_RNG_rand01.instr
     . Test_RNG_randnorm.instr
     . _RNG_randpm1.instr
     . Test_RNG_randtriangle.instr
     . Test_RNG_randvec_target_circle.instr
     . Test_RNG_randvec_target_rect.instr
     . Test_RNG_randvec_target_rect_angular.instr
   * Monitors
     . Test_Monitor_nD.instr
   * Sample components
     . Test_Incoherent.instr
     . Test_PowderN.instr
     . Test_PowderN_concentric.instr
     . Test_SX.instr
     . Test_Sqw.instr
 - Various new instruments used for comparison with the forthcoming McStas 3.0
   ILL_D2B_noenv.instr, ILL_H22_D1A_noenv.instr, ILL_H22_D1B_noenv.instr,
 - Name change, TasResoTest.instr is now called Test_TasReso.instr
 - Instruments providing earlier models of ESS moderators have been retired, i.e. are not in the
   release anymore:
   ESS_2001_bispectral.instr, ESS_2015_test.instr, ESS_Brilliance_2001.instr, ESS_Brilliance_2013.instr,
   ESS_Brilliance_2014.instr, ESS_Brilliance_2015.instr, ESS_Brilliance_TDR.instr

We hope you will enjoy this new release!!! (And keep an eye out for 3.0, it is almost also there...)


Changes in McStas v.2.6.1, May 4th, 2020

 McStas 2.6.1 is the nineth release in the 2.x series and fixes various minor issues with McStas 2.6.

 Thanks:
 - Thanks to all contributors of components, instruments etc.! This is what Open Source
   and McStas is all about!

 Installation:
 - Our install docs are now available on the McCode GitHub page at
 https://github.com/McStasMcXtrace/McCode/tree/master/INSTALL-McStas

 Fixes of issues from last release:
 - A number of minor issues from 2.6 were addressed, see the relevant GitHub issues for details:
   - https://github.com/McStasMcXtrace/McCode/issues?q=is%3Aissue++label%3A%22McStas+2.6%22+


Changes in McStas 3.0 technology preview, Feburary 25th, 2020

 IMPORTANT: 3.0beta IS a proper 'beta', that is: Don't expect it to fully work, don't expect it to be fully stable,
 Do on the other hand expect interesting BUGS!

 McStas 3.0beta is a preview of technology in the forthcoming 3.x series.
 
 Thanks:
 - Thanks to all members of the joint McStas-McXtrace team, you guys ROCK!
 - Thanks to Guido Juckeland (HZDR,DE) and Sebastian Alfthan (CSC,FI) who were
   behind the GPU Hackathons we participated in
 - Thanks to our NVIDIA mentors Vishal Metha, Christian Hundt and Alexey Romanenko

 Installation:
 - As this is NOT a production release, we will only offer installation packages in
   the form of "manually installable" packages.
   
 Main new features and changes:
 1. New code-generation scheme based on functions instead of #defines, which brings
   * Much improved compilation-times, the code is better suited for modern compilers
   * In most cases a speed-up of order 20%
   * The neutron _particle is now represented by a struct
   * The component types and instances are also represented by structs
   * In the generic TRACE function of a given component type, the _comp var is
     short-hand for "whatever the component instance is"
   * New instrument section of USERVARS %{ double example_flag; %} which enriches
     the _particle struct
   * In component DECLARE blocks, assignments can no longer be done and all declarations
     must be listed independently, i.e double a; is OK, double a,b; is not. Variables in
     this scope are automatically so-called "OUTPUT PARAMETERS" (we may deprecate that
     keyword completely for the official McStas 3.0 release)
   * Components no longer support DEFINITION PARAMETERS, instead the SETTING PARAMETERS
     must be used, which now includes a vector and string type supplementing the (default)
     double/MCNUM and int types.
   * New macros have been added for
   * INSTRUMENT_GETPAR(parameter_name)
   * COMP_GETPAR(component, parameter_name) which is similar to the legacy MC_GETPAR
   * MC_GETPAR3(component_class, component_name,parameter_name)
   * Further, the new cogen implements support for Nvidia GPU's, for details see point 2 below.
   * Status on CPU (20200220) is that 134 out of 176 instruments from the mcstas-3.0 branch compile
     for CPU - and most run as expected.
 2. Limited, experimental support for OpenACC acceleration on NVIDIA GPU's
   * #pragma driven, inserted by the code-generation, but also implemented in (many, not all)
     libs and comps
   * Status on GPU (20200220) is that 91 out of 176 instruments from the mcstas-3.0 branch compile
     for GPU. These 91 instruments include in total 73 out of 213 components. Out of the functional
     instruments, around 45 produce meaningful data at this point.
   * Speedups measured using top-notch NVIDIA V100 datacenter cards are in the range of 10-600 with
     respect to a single-core of a modern CPU, see the figure in the below link. It was generated for
     an "ideally" parallel instrument.
     (https://camo.githubusercontent.com/96fcceec70d0761f8709eda4de7bcbde5597aee6/687474703a2f2f746d702e6d63737461732e6f72672f563130302d73706565647570732e706e67)
   * Platform support / compiler configuration:
     - Required compiler for GPU/OpenACC: PGI 19.4 or newer. Community edition works fine
     - Required GPU hardware: NVIDIA Tesla card + configured driver
     - Windows: At this point UNSUPPORTED for GPU/OpenACC since the CUDA managed memory mode is not
       available for this platform. (Very simple instruments without monitors may work, at this point
       untested). OpenACC multi-threading should work with pgcc -ta:multicore -DOPENACC, also untested.
     - macOS: Only CPU-thread parallelisation is supported, since NVIDIA Cards at this point are
       unsupported on recent macOS versions. Parallelises similarly to MPI, but slightly slower.
     - Linux: Full acceleration support with GPU, and with multicore.
   * Install the compiler and put it on your system PATH. Install and configure Nvidia drivers for your card.
   * We hope that GCC will offer better support for OpenACC in the near future.
   * Tool support
     - On Linux and macOS mcrun is preconfigured so that mcrun -c --openacc compiles with:
     - Linux: pgcc -ta:tesla,managed,deepcopy -DOPENACC
     - macOS: pgcc -ta:multicore -DOPENACC
   * For both of the above, adding -Minfo:accel will output verbose information on parallelisation
   * In mcgui, the mcrun --openacc configuration can be selected via the preferences
 3. Interoperability with McStas 2.6
   * Rudimentary support for MCPL event interchange has been added through a set of MCPL_input_GPU
     and MCPL_output_GPU components.
 4. Known limitations
   * As mentioned above, not all components/instruments are ported to the GPU technology yet
   * We have not fully decided if our newly implemented random number algorithm is sufficiently
     robust/stable.
   * Monitor_nD user vars can not currently access the neutron USERVARS, but a solution is in the pipe.
   * Not all features of all components correspond to those from McStas 2.6, partly because not all
     modifications have been ported from the 2.6 tree to the 3.0 tree.
   * Especially the sample components may
     - Create GPU-side segmentation faults etc. with big datasets / large statistic, this is a
       targeted area of development before the actual release of 3.0. :-)
     - Give simulation results that are systematically 'off' with respect to CPU results.


Changes in McStas v.2.6, January 24th, 2020

 McStas 2.6 is the eight release in the 2.x series and fixes various issues with McStas 2.5, plus 
 new developments. 

 Thanks:
 - Thanks to all contributors of components, instruments etc.! This is what Open Source
   and McStas is all about!

 Installation:
 - Our install docs are now available on the McCode GitHub page at
 https://github.com/McStasMcXtrace/McCode/tree/master/INSTALL-McStas
 
 Fixes of issues from last release:
 - A number of issues from 2.5 were corrected, see the relevant GitHub issues for details:
   - https://github.com/McStasMcXtrace/McCode/issues?utf8=✓&q=is%3Aissue+is%3Aclosed+label%3A%22McStas+2.5%22+

 Plus lots of work in general:
 https://github.com/McStasMcXtrace/McCode/issues?page=1&q=is%3Aissue+is%3Aclosed++project%3AMcStasMcXtrace%2FMcCode%2F5&utf8=✓
 
 Tools:
 - As for the earlier few releases the default set of tools are Python-based and developed by Jakob Garde, DTU. 
   The Perl ones are still around as a backup solution, handy for those that prefer "the oldschool way"
   - See https://github.com/McStasMcXtrace/McCode/wiki/User-documentation-for-the-2017--Python-tool-set for usage
   - On Unix platforms, the Perl tools are accessible by adding .pl to the wanted tool (mcgui.pl etc.)
   - On Windows, the Perl tools are accessible by adding -pl to the wanted tool (mcgui-pl etc.)
   - BUT: Please use the Python tools and provide feedback rather than sticking with the Perl! :-)
 - Contribution from Tobias Weber ILL: Python-version of mcresplot.
 
 Platforms:
 - Nothing really new to report here. We still support 64bit Windows 10, all recent 64bit macOS, Debian-based and RPM-based distros
   (RPMs are built on/for CentOS, you may get varying milage elsewhere.)

 Libraries:
 - Updated version 1.0.0 NCrystal library from T. Kittelmann (ESS) and X.X. Cai (CSNS), distributed with McStas on Unix
   platforms only. To use it, carry out the below steps:
     mcstas:~/NCryst$ mcstas-2.6-environment 
     mcstas:~/NCryst$ source $MCSTAS/ncrystal/setup.sh
     mcstas:~/NCryst$ ncrystal_preparemcstasdir 
     mcstas:~/NCryst$ cp $MCSTAS/examples/NCrystal_example_mcstas.instr .
     mcstas:~/NCryst$ mcrun -c NCrystal_example_mcstas.instr
   The NCrystal library from this version of McStas also includes the nice ncrystal_inspectfile python tool that allows
   to quickly visualise scattering-kernel data from .ncmat, .nxs, .lau and .laz files. To use that:
     mcstas:~/NCryst$ mcstas-2.6-environment 
     mcstas:~/NCryst$ source $MCSTAS/ncrystal/setup.sh
     mcstas:~/NCryst$ ncrystal_inspectfile $NCRYSTALDIR/data/Ca_sg225.ncmat
 - MCPL library from the same authors now included at v. 1.3.0. The distributed version of MCPL now includes the 
   python-based pymcpltool command that can e.g. be used to extract gaussian statistics from MCPL files. McStas now
   ships the mcpl2phits and phits2mcpl tools (mcpl2ssw and ssw2mcpl have been included since mcstas-2.3).
 - Updated version of the NXS lib from Mirko Boin HZB.

 Components:
 - Updated Union library from Mads Bertelsen, ESS DMSC including:
   - New geometries, mesh (for stl file input in Union setups) and cone (e.g. relevant for describing anvils
     in pressure cells.
   - New AF_HB_1D_process for modelling 1D antiferromagnetic Heisenberg chains and PhononSimple_process for
     modelling single-branchg acoustic phonons ala Phonon_simple
   - New SINE2020-developed Union physics processes from Victor Laliena, Uni Zaragoza: Texture_process.comp
     and IncoherentPhonon_process.comp. See https://doi.org/10.3233/JNR-190117.
 - Shieldinglogger-components from Rodion Kolevatov, IFE for estimating gamma-production in guides:
   - Contributions Dose_calculator and Shielding_calculator
   - Patched versions of optics-components: Elliptic_guide_gravity_shieldinglogger, Guide_channeled_shieldinglogger,
     Guide_curved_shieldinglogger, Guide_gravity_shieldinglogger, Guide_shieldinglogger
   - Components patched / derived from the "scatterlogger" framework to model Ni and Ti layers seperately: Shielding_log_iterator_Ni_new,
     Shielding_log_iterator_Ti_new, Shielding_log_iterator_stop, Shielding_log_iterator_total, Shielding_logger.comp,
     Shielding_logger_stop.comp.
   - See https://doi.org/10.3233/JNR-190123, https://doi.org/10.1016/j.nima.2018.12.069 and https://doi.org/10.3233/JNR-180088
   - Please note that the included Shielding- and Dose- calculators will only give sensible for guides with
     borosilicate glass substrate. If the substrate is, e.g. copper, the dose rates from neutrons transmitted 
     through the coating and captured in the substrate will overshoot the coating contribution significantly, 
     so that shielding has to be enforced by few tens of centimeters of concrete. 
 - Guide_anyshape_r additions from Peter Link MLZ. Allows describing geometry in OFF format with reflectivity "per" face.
   Test instrument is Test_guides which has been updated to include this modified component.
 - Vertical_Bender from Andrew Jackson ESS and Richard Heenan STFC. Allows modelling a multi-channel bender
   that curves vertically down.
 - SANS_spheres2 by Peter Willendrup, derived from Henrich Frilinghaus' SANS_benchmark2. More realistic cross-section
   calculations than from e.g. Sans_spheres. templateSANS2.instr is the related test instrument.
 - Updated version of Sample_nxs from Mirko Boin HZB.
 - Guide_simple is identical to Guide except from not having OFF library support. Common with forthcoming
   McStas 3.0 beta release with GPU support.
 - Elliptic_guide_gravity promoted from contrib to optics since Mads Bertelsen is full member of McStas dev team. 
 - PolAnalyser_ideal and Set_pol moved from misc to optics.
 - NPI_tof_theta_monitor is in contrib, was by mistace placed in monitors before.  
 - Single_magnetic_crystal.comp is an experimental magnetic csingle crystal model. Its operational model is based 
   on that of Single_crystal.comp but supports SF and NSF magnetic scattering. The present model only supports
   the SF-NSF paradigm along a given reference vector.  
 - PSD_monitor_4PI_spin.comp is a version of PSD_monitor_4PI but with separate SF- and NSF-channels
 
 Instruments:
 - Union_test_texture.instr demonstrates use of Texture_process.comp by Victor Laliena. To be used with datafile
   "coef_Four_L2.txt" found in the installation data-folder. This datafile contains texture information on Zr alloys
   derived from the publication https://doi.org/10.1016/j.jnucmat.2018.08.003.
 - Union_IncoherentPhonon_test.instr demonstrates use of IncoherentPhonon_process.comp by Victor Laliena. To be used
   with datafile "dos_meV.txt" found in the installation data-folder.
 - Union_test_mesh.instr demonstrates use of mesh geometry in Union
 - ESS_BIFROST_shielding.instr and PSI_Focus_shielding.instr, demonstration of Shielding_logger concept from
   Rodion Kolevatov
 - TasResoTest, triple-axis resolution test instrument from Tobias Weber ILL. Can be used with his new tool
   development mcresplot.py.
 - Tools_ONION, instrument to investigate q-resolution via Mantid, by Thomas Huegle, ORNL. See also
   https://doi.org/10.1016/j.nima.2019.162711 and the related python code available at 
   https://github.com/McStasMcXtrace/McCode-contribution-support-docs/tree/master/McStas/2.6_Onion_tool_T_Huegle
 - templateSANS_MCPL, behaves like the normal templateSANS but dumps all events in an MCPL file.
 - MCPL-oriented tool-instruments by Peter Willendrup
   - MCPL2Mantid_flat: Read MCPL input and write Mantid-compatible NeXus output
   - MCPL_filter_energy: Read MCPL input and write only neutrons in wanted energy interval
   - MCPL_filter_wavelength: Read MCPL input and write only neutrons in wanted wavelength interval
   - MCPL_filter_radius: Read MCPL input and write only neutrons with position within wanted radius
   - MCPL_merge: Read up to 10 MCPL input files and write neutrons to a merged MCPL file   
 - SINE2020-developed McStas_Isotropic_Sqw, McStas_PowderN, McStas_Single_crystal by Erik Knudsen. They have
   MCPL input/output and are intended for easy use of McStas samples within SIMRES.
 - Test_guides has been modified to include Guide_anyshape_r from Peter Link MLZ.
 - templateSANS2 serves as test instrument for SANS_spheres2.
 - BNL_H8_simple.instr is identical to BNL_H8.instr except e.g. not including SPLIT. Common with forthcoming
   McStas 3.0 beta release with GPU support.
 - PSI_DMC_simple is identical to PSI_DMC.instr except e.g. not including SPLIT. Common with forthcoming
   McStas 3.0 beta release with GPU support.
 - PSI_source is a simple frontend derived from PSI_DMC. Common with forthcoming McStas 3.0 beta release
   with GPU support.
 - mini minimal instrument with source, slit and PSD. Common with forthcoming McStas 3.0 beta release
   with GPU support.
 - Test_single_magnetic_crystal.instr is a skeleton Laue camera which exemplfies use of Single_magnetic_crystal.comp 

 Datafiles:
 - Klaus Lieutenant from FZJ/Vitess has collected reflectitivy-data from SwissNeutronics, Mirrotron and S-DH, analysed
   these and fitted the "classical" McStas mirror-reflectivity profile to these. The resulting data have been placed
   in the data directory under the filenames of
   - SwissNeutronics_mirors_2020.txt
   - Mirrotron_mirors_2020.txt
   - S-DH_mirors_2020.txt.
   The files are not to be used directly with reflecting components, but can instead be used as lookup-tables for
   relevant parameters in each case. I.e. for a mirror of nominal m-value m_nom, use m_real, R_0, W and alpha from the
   relevant table.
 - Most other new datafiles are directly related to component- or instrument-additions and have been mentioned above.
 

We hope you will enjoy this new release!!!


Changes in McStas v.2.5, December 12th, 2018

 McStas 2.5 is the seventh release in the 2.x series and fixes various issues with McStas 2.4.1, plus 
 many new developments. McStas 2.5 is also the 20th anniversary release of McStas - 1.0 was released
 in October 1998!

 Thanks:
 - Thanks to all contributors of components, instruments etc.! This is what Open Source
   and McStas is all about!

 Installation:
 - Our install docs are now available on the McCode GitHub page at
 https://github.com/McStasMcXtrace/McCode/tree/master/INSTALL-McStas
 
 Fixes of issues from last release:
 - A number of issues from 2.4.1 were corrected, see the relevant GitHub issues for details:
   - https://github.com/McStasMcXtrace/McCode/issues?utf8=✓&q=is%3Aissue+is%3Aclosed+label%3A%22McStas+2.4.1%22+

 Plus lots of work in general:
 https://github.com/McStasMcXtrace/McCode/issues?utf8=✓&q=is%3Aissue+is%3Aclosed++project%3AMcStasMcXtrace%2FMcCode%2F1+

 Tools:
 - As for the earlier few releases the default set of tools are Python-based and developed by Jakob Garde, DTU. 
   The Perl ones are still around as a backup solution, handy for those that prefer "the oldschool way"
   - See https://github.com/McStasMcXtrace/McCode/wiki/User-documentation-for-the-2017--Python-tool-set for usage
   - On Unix platforms, the Perl tools are accessible by adding .pl to the wanted tool (mcgui.pl etc.)
   - On Windows, the Perl tools are accessible by adding -pl to the wanted tool (mcgui-pl etc.)
   - BUT: Please use the Python tools and provide feedback rather than sticking with the Perl! :-)
 - Feature developments:
   - mcgui: For a quick visualisation of your instrument, simply use Simulation -> Display-2D and Display-3D (will use the
     default instrument parameters
   - mcgui: The run-dialogue now gives quick access to all mcdisplay and mcplot utilities as comboboxes
   - mcdoc: We now provide a mcdoc utility based on Python

 Platforms:
 - Our Windows release is finally 64bit. Also further prepackages GSL for use e.g. with Multilayer_sample.comp from
   R. Dalgliesh (ISIS)
 - If you want to use NeXus and / or MPI on Windows, please ensure to install Strawberry perl!

 Libraries:
 - NCrystal library from T. Kittelmann (ESS) and X.X. Cai (DTU Nutech/ESS) is distributed with McStas on Unix
   platforms. To use it, carry out the below steps:
     mcstas:~/NCryst$ mcstas-2.5-environment 
     mcstas:~/NCryst$ source $MCSTAS/ncrystal/setup.sh
     mcstas:~/NCryst$ ncrystal_preparemcstasdir 
     mcstas:~/NCryst$ cp $MCSTAS/examples/NCrystal_example_mcstas.instr .
     mcstas:~/NCryst$ mcrun -c NCrystal_example_mcstas.instr 
 - MCPL library from the same authors now included at v. 1.2.3

 Components:
 - Single_crystal_inelastic.comp is a development from Duc Le (ISIS) and presents our attempt at a general,
   inelastic single crystal component. iFit can be used to generate its input, see
   http://ifit.mccode.org/McStas.html#mozTocId36233
 - E_4PI.comp is a monitor also from Duc Le, used to illustrate the output of his inelastic component in the
   instrument Test_Single_crystal_inelastic.instr
 - Magnon_bcc.comp is new inelastic component from K. Lefmann (KU), used in Test_Magnon_bcc_TAS.instr and
   Test_Magnon_bcc_2D.instr 
 - Isotropic_Sqw.comp from E. Farhi has recieved a number of important edits, including correctiono of a bug
   found by S. Bellissmia (CNR) relating to detailed balance
 - PowderN received a bugfix from M. Bertelsen (KU) and a set of focusing patches from J. Saroun (NPI)
 - NPI_tof_dhkl_detector.comp and NPI_tof_theta_monitor.comp are new monitor components from J. Saroun (NPI),
   used in his model of the ESS BEER instrument, see below
 - Guide_multichannel.comp is a new component from J. Saroun (NPI), based on Guide_channeled.comp. It allows to
   simulate bi-spectral extraction optics.
 - Sqq_w_monitor.comp is a development from P. Willendrup (DTU) and is a "scattering plane" monitor that outputs
   a set of energy-slices over a (qh,qk) reciprocal space plane, used in Test_Magnon_bcc_2D.instr
 - Pol_guide_mirror.comp is a development from E. Knudsen (DTU) which among other use cases allows to simulate a
   so-called "frame overlap mirror" as envisioned for multiple ESS instruments
 - Pol_Bfield.comp from E. Knudsen (DTU) has been updated to allow more flexible geometry and "rotatable" tabulated
   field descriptions. It replaces Pol_simpleBfield which is now in obsolete.
 - Absorber.comp received a bugfix thanks  to Artur Glavic (PSI)
 - FermiChopper.comp had a long-standing issue when using supermirror coatings in the slit-package which is
   now fixed, thanks to Ryoichi Kajimoto (J-PARC) 
 - All monitors can now suppress file-output when their standard input parameter "nowritefile" is true. The idea
   is to be able to suppress (some) output at runtime, e.g. in simulations with lots of monitors.

 Instruments:
 - ESS_Testbeamline_HZB_V20.instr from Alaa Al-Falahat and Robin Woracek (ESS/HZB) is a model of the ESS test-
   beamline in Berlin
 - ESS_BEER_MCPL.instr from J. Saroun (NPI) is a model of the ESS BEER secondary spectrometer. It uses MCPL input
   calculated via SIMRES
 - BTsimple.instr from P. Willendrup (DTU) shows a simple method to calculate brillance transfer through a guide
   system
 - ILL_H142_D11.instr and ILL_H142_D33.instr from E. Farhi (ILL) are models of the optics in the two well-known
   ILL SANS instruments
 - ILL_H5_new.instr from E. Farhi (ILL) is a model of the ILL IN5 spectrometer after the guide upgrade in 2011
 - ILL_IN5_Spots.instr modified byP. Willendrup (DTU) is a model of the ILL IN5 spectrometer with multiple
   resolution-calculation options
 - ISIS_IMAT.instr from G. Burca (ISIS) is a model of the ISIS IMAT engineering-beamline
 - ISIS_SANS2d_Mantid.instr from T. R. Nielsen (ESS) is a model of the ISIS SANS2d instrument with sample and
   a Mantid output possibility
 - ISIS_TOSCA_preupgrade.instr and ISIS_TOSCA_preupgrade_Mantid.instr from P. Willendrup and S. Mukhopadhyay,
   based on an earlier model by  M.Zanetti are models of the TOSCA spectrometer at ISIS
 - NCrystal_example_mcstas.instr by X.X. Cai (DTU/ESS) is used to illustrate the use of the NCrystal library
   in McStas
 - Test_DiskChoppers.instr by P. Willendrup (DTU) compares the use of 2 DiskChoppers with one MultiDiskChopper
 - Test_Magnon_bcc_TAS.instr from K. Lefmann (KU) and Test_Magnon_bcc_2D.instr P. Willendrup (DTU) illustrate
   the use of the new Magnon_bcc.comp
 - Test_Single_crystal_inelastic.instr from Duc Le (ISIS) is a test instrument for Single_crystal_inelastic.comp
 - Test_Pol_Guide_mirror.instr from E. Knudsen (DTU) is a test instrument for Pol_guide_mirror.comp
 - Test_focus.instr from T. Weber (ILL) compares focusing by Single_crystal and Monochromator_curved

We hope you will enjoy this 20th anniversary release!!!


Changes in McStas v.2.4.1, June 26th, 2017

 McStas 2.4.1 is the sixth release in the 2.x series and fixes various issues with McStas 2.4, plus 
 provides a small set of new developments.

 Thanks:
 - Thanks to all contributors of components, instruments etc.! This is what Open Source
   and McStas is all about!

 Fixes of issues from last release:
 - A number of issues from 2.4 were corrected, see the relevant GitHub issues for details:
   - https://github.com/McStasMcXtrace/McCode/issues?utf8=✓&q=is%3Aissue%20is%3Aclosed%20label%3A%22McStas%202.4%22%20

 Tools:
 - As for 2.4 we the default set of tools are Python-based and developed by Jakob Garde, DTU. 
   The perl ones will stay around as a backup solution
   - See https://github.com/McStasMcXtrace/McCode/wiki/User-documentation-for-the-2017--Python-tool-set for usage
   - On Unix platforms, the perl tools are accessible by adding .pl to the wanted tool (mcgui.pl etc.)
   - On Windows, the perl tools are accessible by adding -pl to the wanted tool (mcgui-pl etc.)
   - BUT: Please use the Python tools and provide feedback rather that sticking with the Perl! :-)
 - Minor feature developments:
   - The mcrun utility script now automatically stores a copy of the instr file in the dataset output folder
   - mcplot-pyqtgraph, mcdisplay-pyqtgraph and mcdisplay-webgl provide the --invcanvas to select white backgrounds in
     the plots (for now only available from the commandline!)
   - When installed, the mcstas-clusterscripts package provides an easy way to generate SLURM or PBS cluster batchfiles.
     The Python mcgui allows to access these via the File -> Configuration menu.

 Components and instruments:
 - MCPL library still at v. 1.1
   - A minor issue in MCPL_output.comp was fixed
 - Minor updates to the ESS_butterfly_MCPL.instr, see also:
   https://confluence.esss.lu.se/display/MCSTAS/Using+MCPL+as+source+term+in+McStas
 - SNS_BASIS - model of the BASIS backscattering instrument at SNS, from Niko Tsapatsaris, ESS.
   Further serves as test instrument for two component contributions from the same author:
   - Spherical_Backscattering_Analyser, a spherical backscattering analyser with variable reflectivity
     and mosaic gaussian response.
   - Guide_m, guide piece like the normal Guide.comp, but with independent reflectivity specification
     for all four mirrors.


Changes in McStas v.2.4, May 17th, 2017

 McStas 2.4 is the fifth release in the 2.x series and fixes various issues with McStas 2.3, plus 
 provides important new developments.

 Thanks:
 - Thanks to all contributors of components, instruments etc.! This is what Open Source
   and McStas is all about!


 Tools:
 - From 2.4 we will default to use our new set of Python tools, developed by Jakob Garde, DTU. 
   The perl ones will stay around as a backup solution
   - See https://github.com/McStasMcXtrace/McCode/wiki/User-documentation-for-the-2017--Python-tool-set for usage
   - On Unix platforms, the perl tools are accessible by adding .pl to the wanted tool (mcgui.pl etc.)
   - On Windows, the perl tools are accessible by adding -pl to the wanted tool (mcgui-pl etc.)
   - BUT: Please use the Python tools and provide feedback rather that sticking with the Perl! :-)
 - Our Python tools are now Python 3 compliant
 - A mcgui editor with rich syntax highlighting
 - A mcrun utility script, with a few new features wrt. the legacy perl solution:
   - The feature --autoplot spawns your selected plotter on sim completion
   - The feature --multi (or -M) allows grid-scanning, i.e. multidimensional scans
   - The --list (or -L) allows to make 1D-scans that are not equidistant, or even filename strings, etc…
 - A newly developed mcplot-pyqtgraph, optically similar to the legacy mcplot solution, but with new features:
   - Easy mouse-based zooming and panning on individual monitor plots
   - Colormaps can be changed for 2D-plots
   - Select a single plot by clicking, get back to the overview by right-clicking, or by pressing 'b'
   - On scans ctrl-click (meta-click on OS X) to see monitor as function of scanned variable
   - On scans press 'x' to receive all scan points as individual plot windows
 - A newly developed mcdisplay-webgl
   - Fully 3D and interactive, uses your HTML5-capable browser with javascript controls
   - Pause or resume visualisation of the neutron rays in the instrument
   - Allows to keep already rendered rays to illustrate the full beam
   - Visualises rays with color, scaled with particle velocity (ideal for illustrating e.g. monochromatisation)
 - A newly developed mcdisplay-pyqtgraph, modeled after the legacy mcdisplay tool, but with various improvements
 - The cif2hkl software from iFit (http://ifit.mccode.org) is provided with McStas for easy generation of reflection 
   lists for the Single_crystal and PowderN components


 Components and instruments:
 - A new set of components referred to as “Union” components, contribution by Mads Bertelsen Uni Copenhagen.
   - Allows very rich simulation of samples and sample environment
   - Several instrument files included to illustrate the capabilities and use
   - See http://media.mcstas.org/ESS_DMSC_20161117/DMSC_talk_MBertelsen_McStas_Union.mp4
 - Component and Instrument documentation headers have been uniformised in preparation for a Python mcdoc. (This new
   tool is NOT ready for distribution with McStas 2.4.) Please look inside the existing doc headers and adhere to the
   new format when writing new components.
 - MCPL library updated to v. 1.1
   - See https://mctools.github.io/mcpl/
   - MCPL_input allows to repeat input files an integer number of times
   - possible to modify particle energy, position and direction on repetition
   - MCPL_output has an option to merge generated output files in case of MPI
   - MCPL2hist.instr provides a template for easy histogram visualisation of from MCPL data.
 - ESS_butterfly.comp provides a time-focusing mode ala what was available in ESS_moderator_long.
 - ESS_butterfly_MCPL.instr implements the use of MCPL files in the ESS butterfly geometry
 - PowderN can “flip” the d_phi focusing to “zoom” on a range of angles.
 - New PSD_monitor_TOF that outputs a TOF signal pr. PSD pixel (single files). Used in templateNMX_TOF.instr
 - A version of Isotropic_Sqw from the McStas 2.0 release has been imported under the name of Isotropic_Sqw_legacy, 
   since some users reported that release being in better agreement with experiments. 
   - Some issues were corrected since 2.0 and fixed in today's component
   - Today's component has a different set of issues, see e.g. https://github.com/McStasMcXtrace/McCode/issues/300
 - By the help of a Japanse user, we have identified issues with the performance of the supermirror coating option
   in FermiChopper.comp. We will investigate further and adress the issue over the course of 2017. Note that the 
   component works as expected when not implementing supermirror slits.
 - Various bugfixes and improvements across the example instruments and component library


 Platforms:
 - Our macOS application bundle provides a 'miniconda' Python, including gcc, openmpi etc.
   - Important: Please run the 'Check-PY-dependencies' script after dragging to /Applications
   - Optionally run the 'Check-PL-dependencies' for access to the Perl tools
 - Our Linux packages for RPM systems provide a 'miniconda' Python for all Python tool dependencies.
   - Our RPM's were built on CentOS 7, and requires glibc-2.14, other builds can be made available on request.
 - Our Windows installer provides a 'miniconda' Python, including gcc. 
   - Supplemental binaries for Microsoft MPI and NeXus are provided with the installer
   - For full documentation support, you must still install the Strawberry Perl package prior to installing McStas
 - On Windows 10 64bit and newer, the Windows Subsytem for Linux allows a much improved McStas experience, see
   the page http://www.mcstas.org/news/2016.html at the heading "October 6th, 2016: Use Microsofts ... "
 


Changes in McStas v.2.3, April 6th, 2016

 McStas 2.3 is the fourth release in the 2.x series and fixes various issues with McStas 2.2a, plus 
 provides important new developments.

 IMPORTANT: Please ensure to use our "migration scripts" for McStas 2.0 and 1.12c if you want
 these to co-exist with 2.3. See https://github.com/McStasMcXtrace/McCode/tree/master/tools/migration-tool
 Also, please read the platform-specific notes below!

 Thanks:
 - Thanks to all contributors of components, instruments etc.! This is what Open Source
   and McStas is all about!

 General:
 - As of McStas 2.3, we support a new binary event file format: "MCPL" (Monte Carlo Particle List), developed
   by Thomas Kittelmann, ESS. The format aims to allow easier interchange of particle event data between monte
   carlo codes, and read/write functionality has been implemented for MCNP, Geant4 and McStas.
 - Interoperability with Mantid has been improved, as OFF-based detectors can be used to define detector geometries
   in Mantid-oriented simulation runs. See https://github.com/McStasMcXtrace/McCode/wiki/McStas-and-Mantid for
   more documentation on the use.

 Infrastructure:
 - To build McStas from GitHub, you will now need a CMake version >= 3.0
 - At the ILL, Emmanuel Farhi has set up a nice web-service called cif2hkl, which allows to generate Laz/Lau
   structure data files from CIF files. See http://barns.ill.fr/cif2hkl.html
 - A new e-Learning infrastructure for neutron scattering has been set up at https://www.e-neutrons.org . Among
   other things, it features a web-simulator powered by McStas. Once you have signed up, you will have access
   to many interesting things, among these this "close to complete" list of McStas instruments that can be run
   on the web: https://www.e-neutrons.org/mcstas-distrib
 - We have started populating the McCode wiki at https://github.com/McStasMcXtrace/McCode/wiki with information
   for developers and others who want to work on the McStas code at a 'deeper' level.

 Components:
 - New component SASview_model.comp by Jakob Garde and Torben Nielsen allows to use SASview scattering kernels
   from within McStas. See also the test instrument templateSasView.instr
 - New component Diaphragm - an alias of the Slit comoponent
 - New components MCPL_input and MCPL_output by Erik Knudsen. Used to read and write MCPL binary event files. See
   corresponding test instruments below. 
 - New component Refractor.comp by Emmanuel Farhi and Bob Cubitt, ILL. Implements a single bulk material shape 
   that can be used as a prism or lens.
 - PerfectCrystal.comp by Markus Appel, ILL / FAU Erlangen-Nuernberg. Perfect crystal component, primarily for 
   use as monochromator and analyzer in backscattering spectrometers. Reflections are simulated using a Darwin, 
   Ewald or Gaussian profile. Doppler movement of the monochromator is supported.
 - MultiDiskChopper.comp by Markus Appel, ILL / FAU Erlangen-Nuernberg. Models a disk chopper with a freely 
   configurable slit pattern. For simple applications, use the DiskChopper component instead.
 - Updated version of Sample_nxs from Mirko Boin (HZB), including more nxs material definitions.
 - Bugfix to ESS_moderator from Jan Saroun (RESTRAX/Simres): missing focusing/direction cosine inserted. Please
   note that this component does not implement "engineering reality" and currently uses a coordinate system 
   centered on the moderator assembly. An updated moderator component which references the "Moderator focus 
   coordinate system" will be released later during the spring of 2016.
 - Bugfixes to numerous other components...
 
 Instruments:
 - New test instrument templateSasView.instr, documenting use of SASview_model.comp
 - New test instruments Test_MCPL_input.instr and Test_MCPL_output.instr, documenting use of the MCPL components
 - New test instrument Test_PowderN_Res.instr, demonstrates difference of using 'banana, theta' and 'banana, divergence'
   in Monitor_nD - and can be used to show influence of sample size on detected line with in diffractometers.
 - New test instrument LLB_6T2.instr by Xavier Fabreges, LLB. Model of the LLB 6T2 thermal single crystal
   diffractometer.
 - New ILL_IN13.instr by E. Farhi and A. Dennison, ILL. Models the IN13 Thermal neutron backscattering spectrometer.
 - New SAFARI_MPISI.instr by Deon Marais, Necsa. Models the SAFARI instrument 'Materials Probe for Internal Strain 
   Investigations'
 - New SAFARI_PITSI.instr by Deon Marais, Necsa. Models the SAFARI instrument 'Powder Instrument for Transition in 
   Structure Investigations'

 
 Datafiles:
 - cif2hkl service: At the ILL, Emmanuel Farhi has set up a nice web-service called cif2hkl, which allows to generate 
   Laz/Lau structure data files from CIF files. See http://barns.ill.fr/cif2hkl.html
 - New Sqw input data for H2O, D2O, He4, D2 by Emmanuel Farhi
 - UO2.laz powder definition included by Emmanuel Farhi
 - Further .nxs material definitions for Sample_nxs included
 - Furhter moderator defintion files for SNS made available

 Tools:
 - McStas 2.3 is the second release to include a version of our mcgui-py tool, based on Python, 
   QT and Scintilla. It has been made available across platforms, but without (yet) becoming the 
   default GUI application for McStas. Therefore, a few manual steps may be required to
   getting mcgui-py running on your platform:

   To install/try the new mcgui-py tool, please follow 
   the instructions listed below.
   * Debian Linux systems: 
     Simply apt-get install mcstas-tools-python-mcgui and dependencies should be autmatically resolved
   * RPM-based Linux systems:
     Use yum to install mcstas-tools-python-mcgui and dependencies should be autmatically resolved 
     (Tested to work for Fedora Core 21)
   * OS X:
     - Download and install Anaconda Python 2.7 (using the "for me only" option).
     - When installation is done, start a new terminal and locate the folder where you downloaded
       and unpacked the McStas installation bundle. Inside the extras/ folder you will find a subfolder
       called QScintilla/. 
     - Run the script BuildMe.command by typing "./BuildMe.command".
       (Browsing your way using Finder and double-clicking the BuildMe.command icon should also work)
     - NOTE: If your system prompts you to install command line tools: Accept to install. Afterwards, 
       run the script "BuildMe.command" again.
     - "mcgui-py" should now be available.
   * Windows:
     - Download and install Anaconda Python 2.7 and let it register as the default Python of your windows
       system. All dependencies should be included.

 - McStas 2.3 further includes the optional mcplot-gnuplot-py plotter based on Python and Gnuplot with 
   a Qt widget for control. On Mac OS X and Windows you need to install Gnuplot yourself, ensuring that the
   Gnuplot executable is available on the system PATH.


Changes in McStas v2.2a, May 29th, 2015

 McStas 2.2a is the third release in the 2.x series and fixes various minor issues with McStas 2.1,
 plus provide important new developments.

 IMPORTANT: Please ensure to use our "migration scripts" for McStas 2.0 and 1.12c if you want
 these to co-exist with 2.2a. See https://github.com/McStasMcXtrace/McCode/tree/master/tools/migration-tool
 Also, please read the platform-specific notes below!

 Thanks:
 - Thanks to all contributors of components, instruments etc.! This is what Open Source
   and McStas is all about!
 - Thanks to Joachim Wuttke from FZ Jülich / MLZ for helping us update the TeX documentation!

 General:
 - Fix wrt. random number seed initialization when using MPI. (<-- The only difference wrt. 2.2)
 - The new component/instrument keyword DEPENDENCY allows to automatically require / compile instruments
   with external libraries, such as GSL in the case of Multilayer_sample (see ISIS_CRISP.instr). We foresee
   that this extension will see many great applications in the future.
 - The Mantid-IDF generation through our Perl mcdisplay tool has been optimized.
   For a "compact" i.e. source/sample/detector IDF use
       mcdisplay --format=Mantid ILL_H16_IN5_Mantid.instr -n0
   For a "full" IDF (also including visualisation of neutron optics etc use
       mcdisplay --format=Mantid --complete ILL_H16_IN5_Mantid.instr -n0
 - The use of WHEN with EXTEND code only considered the first statement (report by M. Appel). Fixed.

 Infrastructure:
 - McStas (and its X-ray counterpart McXtrace) are now on GitHub, see
   https://github.com/McStasMcXtrace/McCode
 - We will continually provide various bits of "missing information" on the related Wiki at
   https://github.com/McStasMcXtrace/McCode/wiki
 - If you want to contribute instrument models or components, the future way of doing that is to
   fork / clone our GitHub repo, make your changes and send us a pull-request
 - We will later provide a "cheat sheet" - McStas and GitHub for physicist... :-)

 Components:
 - A new model for the ESS butterfly moderator - see documentation for the ESS_moderator.comp. Developed by
   Peter Willendrup in close collaboration with Troels Schoenfeldt DTU Nutech/ESS.
   ** A separate document with recommended settings for this component will be released later **
 - the Isotropic_Sqw component was broken in McStas 2.1. The expected behaviour has been restored. 
   Users of this component should upgrade to McStas 2.2a asap. Sorry for the inconvenience.
 
 Instruments:
 - ILL_IN13 backscattering instrument contributed by Emmanuel Farhi
 - ILL_IN4 tof instrument contributed by Emmanuel Farhi
 - ILL_IN6 fixed time window (was too narrow, causing under-estimate of energy resolution)
 
 Datafiles:
 - Improved water Sqw data files contributed by Emmanuel Farhi (- see also JNST 52 (2015) 844 )
 - Added CaF2 crystal, improved Al2O3 sapphire transmission

 Tools:
 - McStas 2.2a is the first release to include a first version of our new mcgui-py tool, based on Python, 
   QT and Scintilla, work done by new McStas team member Jakob Garde. We think it is a very nice start
   at this long-awaited replacement of mcgui (Perl) and want you to try it out even though a few edges
   may still be rough here and there. We therefore make it available across platforms, but without (yet)
   making it the default GUI application for McStas. Therefore, a few manual steps may be required to
   getting mcgui-py running on your platform:

   To install/try the new mcgui-py tool, please follow 
   the instructions listed below.
   * Debian Linux systems: 
     Simply apt-get install mcstas-tools-python-mcgui and dependencies should be autmatically resolved
   * RPM-based Linux systems:
     Use yum to install mcstas-tools-python-mcgui and dependencies should be autmatically resolved 
     (Tested to work for Fedora Core 21)
   * OS X:
     - Download and install Anaconda Python 2.7 (using the "for me only" option).
     - When installation is done, start a new terminal and locate the folder where you downloaded
       and unpacked the McStas installation bundle. Inside the extras/ folder you will find a subfolder
       called QScintilla/. 
     - Run the script BuildMe.command by typing "./BuildMe.command".
       (Browsing your way using Finder and double-clicking the BuildMe.command icon should also work)
     - NOTE: If your system prompts you to install command line tools: Accept to install. Afterwards, 
       run the script "BuildMe.command" again.
     - "mcgui-py" should now be available.
   * Windows:
     - Download and install Anaconda Python 2.7 and let it register as the default Python of your windows
       system. All dependencies should be included.

 - McStas 2.2a further includes a simple mcplot plotter for Unix platforms (Linux, OS X) based solely on 
   shell-script + Matlab/iFit/Octave, no need for Perl or Python with this plotter, called mcplot-matlab


Changes in McStas v2.1, September, 2014

 McStas 2.1 is the second release in the 2.x series and fixes various issues with McStas 2.0,
 plus provide important new developments.

 IMPORTANT: Please ensure to use our "migration scripts" for McStas 2.0 and 1.12c if you want
 these to co-exist with 2.1. Also, please read the platform-specific notes below!

 Thanks:
 - Thanks to all contributors of components, instruments etc.! This is what Open Source
   and McStas is all about!
 - Thanks to Jonas Stein from Uni Cologne for helping us modernize the TeX documentation!
 
 General:
 - Via NeXus libraries and a new --format=Mantid setting for the mcdisplay tool, we are now
   able to generate NeXus/HDF files that can be read and treated by Mantid! Mcdisplay generates
   a Mantid IDF description for embedding in the NeXus file, including the usual McStas instrument
   geometry. Please read the specific guide for this method, documented in the McStas manual, Chapter 6.
 - Use of STATE_PARAMETERS and POLARIZATION parameters is no longer supported!
   If you have home-grown components using these, you will get this type of error with 
   McStas 2.1:

      Translating instrument definition 'BNL_H8.instr' into C ...
      mcstas -t -o BNL_H8.c BNL_H8.instr
      Compiling simulation BNL_H8.instr
      Arm.comp is using STATE PARAMETERS
      	       mcstas-2.1 does NOT support this keyword. Please remove line 36
      mcstas-2.1: 1 Errors encountered during parse of BNL_H8.instr.
      ** Error exit **

      
   As the error message suggests, this can be fixed by simply removing/commenting out
   the STATE and POLARISATION parameter lines in the top of the component, i.e.:
   /* STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) */
   /* POLARISATION PARAMETERS (sx,sy,sz) */
   
 - In case of "negative time" propagation we no longer ABSORB these neutrons but rather restore
   the incoming neutron state, leaving it untouched for the following components. This avoids
   various types of shadowing effects, e.g. when placing parallel monitors that are not in a 
   GROUP. This is furhter in preparation for the forthcoming ASSEMBLY keyword which will work
   roughly like an "iterative group" that loops on the ASSEMBLY of components until no furhter
   scattering is achieved, but always scatters first on the component which is closest (in time)
   to the neutron.

 - "Scatter logging": With this release we provide this special ensemble of instrument examples
   - Test_Scatter_log_losses.instr
   - Test_Scatter_log_mvalues.instr
   - Test_Scatter_log_ssw_mcnp.instr
   that together with the (misc cathegory) components
   - Scatter_log_iterator.comp
   - Scatter_log_iterator_stop.comp
   - Scatter_logger.comp
   - Scatter_logger_stop.comp
   provide a powerful post-processing mechanism, mainly for guide systems - that for instance
   can be used to study the non-propagated, i.e. absorbed neutron flux along the guide. For
   more information, a paper by Esben Klinkby et. al. will be available in one of the next 
   issues of Journal of Physics: Conference Series, proceedings of the NOP&D 2013 meeting in
   Ismaning. Slides from Esbens talk are available here:
   http://orbit.dtu.dk/files/57025387/prod11375088187360.NO_P_v8.pdf

 - As of this release, McStas is distributed using easy-to-use meta-packages for the Windows
   and Mac OS X systems. (these already existed for the deb and rpm based Linux packages, see
   below) The content of these packages are:

   * Windows:
     - See http://www.mcstas.org/download/install_windows for details
     - Strawberry Perl (including a gcc compiler)
     - Perl PPD extensions for PDL, PGPLOT and Tk
     - The core mcstas package
     - The mcstas component package, with comps, instruments, datafiles
     - The mcstas Perl tools package with mcgui, mcplot etc.
     - The mcstas manuals package with PDF docs
     - For VRML and X3D viewing of instruments, we recommend Instant Player from
       http://www.instantreality.org
     - ! The mcstas Python tool packages are installed by default, but if you want to 
       make use of our OPTIONAL Python based packages, their dependencies need to be installed
       by hand !
       - Needed dependencies for the Python packages are all available in the Python(x,y)
       	 package available from https://code.google.com/p/pythonxy/

   - ! We are only distributing a 32bit package for windows, since we feel the 64-bin gcc on
       windows is not mature - gives problems in a few, specific cases. In any case, the 32-bit
       McStas for windows works perfectly fine on a 64-bit operating system !  

   - ! If you experience strange behavior from perl/mcgui on Windows like
       	    a) ppm shell not being able to install the extra Perl packages
            b) mcgui not being able to run / compile a simulation (all you get is mcrun -- help output)
     	    c) mcgui not being able to access local component files
	  - Solution can be to ensure your user has "full control" to the executables in
	    c:\strawberry\perl\bin (Right-click, Properties, Security, Authenticated users -> Edit)

   * Mac OS X:
     - IMPORTANT: Please ensure to use our "migration scripts" for McStas 2.0 and 1.12c if you want
       these to co-exist with 2.1. They MUST be applied before installing 2.1!
     - See http://www.mcstas.org/download/install_mac_os_x for details
     - A McStas 'app' bundle in /Applications/McStas-2.1.app - you can uninstall all of McStas 2.1
       by dragging this bundle to the trash bin.
     - Tk perl package for mcgui
     - SciPDL package for mcplot, including the core pgplot package
     - The core mcstas package
     - The mcstas component package, with comps, instruments, datafiles
     - The mcstas Perl tools package with mcgui, mcplot etc.
     - The mcstas manuals package with PDF docs
     - For VRML and X3D viewing of instruments, we recommend Instant Player from
       http://www.instantreality.org
     - ! If you want to use our OPTIONAL Python based packages, select these for installation
       in the Metapackage installer !
       - For the Python mcrun, you need to install PyYAML from http://www.pyyaml.org/wiki/PyYAML
       - Most other needed dependencies for the Python packages are available through the 
       	 SciPy superpack available from http://fonnesbeck.github.io/ScipySuperpack/
       - You may also choose the commerical Anaconda or Enthought Python distributions
       
   - ! The install location of the McStas components and libraries on Mac OS X has changed! Your files
       are now placed in /Applications/McStas-2.1.app/Contents/Resources/mcstas/2.1/ - but for ease
       of use, a link is also available in /usr/local/mcstas/2.1/ (Note that we have dropped 'lib' in 
       that path.) Links to binaries are in /usr/local/bin.

   * For Linux (Debian and RPM based)
     - IMPORTANT: Please ensure to use our "migration scripts" for McStas 2.0 and 1.12c if you want
       these to co-exist with 2.1. They MUST be applied before installing 2.1! 
     - See http://www.mcstas.org/download/install_linux for details
     - For some RPM based systems, you may futher need to install the EPEL extensions, see https://fedoraproject.org/wiki/EPEL
     - For Deb and RPM type systems we provide a set of APT and YUM repositories. Simply follow the
       instructions on the link provided to add the relevant repository to your Linux.
     - Afterwards, simply choose to install mcstas-suite-perl (perl tools), mcstas-suite-python 
       (python tools) or mcstas-suite (both toolsets) and all dependencies should be taken care of.

   - ! The install location of the McStas components and libraries on Linux X has changed! 
       * On Debian, your files are now placed in /usr/share/mcstas/2.1/ - links to binaries are in /usr/bin
       * On RedHat, your files are now placed in /usr/local/mcstas/2.1/ - links to binaries are in /usr/local/bin
       (Note that we have dropped 'lib' in the mcstas system path.)


  
 - A given McStas 2.x release is "self-contained" and can be installed in parallel with other versions
   of McStas and McXtrace 
 - We provide a "migration tool" for Unix based systems (i.e. Linux & Mac) to let your already
   installed McStas 1.x or 2.0 co-exist with the new 2.1
 - Using McStas with NeXus does no longer require recompilation if you only want to _write_ NeXus.
   (Simply install NeXus and update your MCSTAS_CFLAGS to include -lNeXus -DUSE_NEXUS). For the
   conversion of files using mcformat NeXus must still be available at compile time

 Core & runtime code:
 - Backward compatibility 1: As written above, STATE and POLARIZATION parameters are no longer supported!
 - Complete rework of the DETECTOR_OUT infrastructure:
   * Simplified code-structure
   * Proper support for MPI when generating NeXus event lists
 - New logic wrt. negative time propagation: Neutrons are restored rather than ABSORB'ed
 - Improvement of the interpolation routines e.g. for magnetic fields: search is performed roughly in constant time
 - Read_Table: better search for files, including from full executable path, from source.instr location, from 
   PWD and from McCode lib.
 - ref-lib.c: If components use alpha=0 and w=0 in parametrizing the reflectivity, the StdReflecFunc
   applies a phenomenological fit of Swiss Neutronics mirrors (above m=3 including a 2nd order beta term). The fits
   were done by Henrik Jacobsen, University of Copenhagen.

 Tools:
 - Since 2.0 mcgui Perl and mcrun Python has been generating time-stamped output directories if no output dir 
   was specified. The legacy mcrun Perl now exhibit this behavior also. This is balanced by the possiblitiy
   to choose . (dot) as the output directory - then the legacy behaviour of storing data in the working
   directory is enabled.

 Documentation:
 - Modernized and facelifted TeX documentation in the manuals, which include slightly updated Component manual.
   A few components-docs parameter tables are now extracted from mcdoc and included in the manual. 

 New Components:
 - Rotator and Derotator - components that allow a section of the instrument to rotate in time.
 - New ESS_moderator component by P Willendrup, E Klinkby and T Schoenfeldt DTU
   * new ess_source-lib with brilliance defintitions corresponding to Mezei 2001, TDR and 2014 brilliances
   * support for geometrical brilliance variation (i.e. "pancake" geometry)
   * much simplified input-parameter setup
   * various fixes wrt. McStas 2.0 and later updated source modules
 - Monitor_Sqw - generates an Sqw between a sample and a detector, a kind of inelastic resolution monitor.
   (Emmanuel Farhi)
 - Analyzer_ideal.comp, ideal analyzer for Spin-Echo techniques (Erik Knudsen)
 - Pol_pi_2_rotator.comp, idealized pi/2 flipper for Spin-Echo (Erik Knudsen)
 - Pol_triafield.comp, idealized triangular coil (Delft) for Spin-Echo (Erik Knudsen)
 - Scatter_log_iterator.comp, see above notice about "Scatter logging"
 - Scatter_log_iterator_stop.comp, see above notice about "Scatter logging"
 - Scatter_logger.comp, see above notice about "Scatter logging"
 - Scatter_logger_stop.comp, see above notice about "Scatter logging"
 - SANS_benchmark2.comp, benchmarked SANS component from Heinrich Frielinghaus, FZJ

 Updated Components:
 - Single_crystal and PowderN have both been optimized for speed - especially in connection with using
   the SPLIT keyword:
     * The first precomputations relating to structure and crossections is kept for each incoming netron,
       so that the component may skip these calculations for the next SPLIT version of the neutron (there
       is a built-in check for whether that kind of neutron was processed before). This means that a set'
       of SPLIT neutron may be scattered across ALL reflection that are allowed for that specific incoming
       direction and wavelength. Further, the components estimate the optimal value of the SPLIT. For large
       single crystal unit cells (i.e. protein crystals etc.), speedups of a factor of 500 have been observed!
       The method works with all orders of scattering, even though the largest gain is seen with order=1.
     * Use is easy, e.g.
          SPLIT 43 COMPONENT SX=Single_crystal(order=1, ...)
 - Single_crystal now allows to be used as a Powder, mainly for benchmarking purposes - at the point of scattering,
   the "crystallite" is randomly oriented. Final validation is pending, but in this setting, the component already
   gives the same order of manitude scattering as PowderN, where this powder ring "intergration" has been 
   implemented using a completely different strategy - provided the right values of mosaicity and delta_d_d are
   given!
 - ISIS moderator component allow specification of the accellerator current. The component performance
   defaults to the actual, relevant accellerator setting for each target station (TS). All TS1 and TS2
   moderator input files are now included with McStas and have meaningful names with reference to the 
   relevant TS. 
 - Source_gen now contains LLB and FRM-II source parameters in the component help.
 - Monitor_nD contains infrastructure for handling events in Mantid NeXus files.
 - Isotropic_Sqw - various fixes, including optimized memory usage
 - Lens component - support for abstract geometries via the OFF/PLY input format
 - Guide_anyshape - various improvements
 - FermiChopper - fixed bug in tangent intersection
 - Elliptic_guide_gravity - support for curvature via horizontal, vectorial addition to gravity

 Instruments:
 - Various instruments have been included, allowing to estimate pulsed-source average and peak brilliance.
 - ISIS_SANS2d instrument contributed by R. Heenan, ISIS
 - Test_Guide_Curved - test instrument for simple, curved guide types
 - HZB_FLEX contributed by Klaus Habicht and Markos Skoulatos, HZB
 - SEMSANS_instrument.instr by Morten Sales, HZB
 - Test_Scatter_log_losses.instr, see above notice about "Scatter logging"
 - Test_Scatter_log_mvalues.instr, see above notice about "Scatter logging"
 - Test_Scatter_log_ssw_mcnp.instr, see above notice about "Scatter logging"
 - FZJ_BenchmarkSfin2.instr by Heinrich Frielinghaus, FZJ. Test instrument for the SANS_benchmark2.comp
 - templateNMX.instr, templateLaue variant demonstrating the Single_crystal speed improvement mentioned above

 Data:
 - New .lau datafiles for macromolecular structures Rubedoxin and Perdeuterated pyrophosphatase, contributed by
   Esko Oksanen, ESS.


Changes in McStas v2.0, December 21st, 2012

 McStas 2.0 is the long-awaited major release of McStas

 Thanks:
 - Thanks to all contributors of components, instruments etc.! This is what Open Source
   and McStas is all about!
 - Thanks to Johan Brinch for helping us modernize the structure of the code and bring
   new solutions in the tool area!
 - Thanks to Esben Klinkby for debugging results of the McStas (physics) test!

 General:
 - As documented in the manual, a new major release means loss of backward compatibility.
   See remarks below about STATE_PARAMETERS and naming of component parameters. Most of your
   existing instruments and components should be trivial to port to the new release as the
   code generation gives you helpful debugging information. Should you fail after trying, 
   feel free to send us a tgz or zip with all needed instrument- and component code to 
   mcstas-users@mcstas.org and we will try to help.
 - As of this release, McStas is distributed as multiple packages rather than a monolithic:
   - mcstas, contains code generator and runtime codes
     * Dependencies: a C-compiler (and mcstas-comps)
     * Optional: an MPI environment
   - mcstas-comps, contains component- and instrument example libraries 
     * Dependencies: mcstas
   - mcstas-tools-Perl, contains our "legacy" set of perl tools 
     * Dependencies: mcstas, Perl, Perl::Tk, pgplot, perl-PGPLOT, Gnuplot
     * Optional: Perl::Tk::CodeText, Perl::Math::Amoeba, Matlab, a VRML-viewer, (Scilab 4.0)
     * Remark: As far as possible, we provide dependencies in the installation bundles
     * Remark: mcgui can be configured to run python-based tools for sub-tasks
   - mcstas-doc, contains our PDF manuals
   - mcstas-tools-Python-mcrun, contains our new, python-based compile/run script
     * Dependencies: python-yaml
     * Remark: The script falls back to the perl version if dependencies do not resolve
   - mcstas-tools-Python-mcplot-matplotlib, contains a new matplotlib mcplot solution
     * Dependencies: python-matplotlib
     * Remark: A bit on the slow side for large datasets
     * Remark: Features zooming on individual plots
     * Remark: "Standard" mcplot shortcuts for graphics dumps etc.
     * Remark: Recommendations for platform-specific python-distributions below
     * Remark: The script falls back to the perl version if dependencies do not resolve
   - mcstas-tools-Python-mcplot-chaco, contains a draft implementation of mcplot based on chaco
     * Dependencies: python-chaco
     * Remark: Faster than matplotlib-solution, but a bit on the slow side for large datasets
     * Remark: Features zooming on individual plots
     * Remark: Recommendations for platform-specific python-distributions below
     * Remark: Not easy to install dependencies for chaco if not in your python distro
     * Remark: The script falls back to the perl version if dependencies do not resolve
   - mcstas-web, contains a webserver-based run/trace/plot solution
     * Dependencies: python, python-XXX, R or perl+pgplot+perl-PGPLOT, nginx or apache
     * Remark: Currently not packaged, get it from our SVN.
 - In the future, we will release new versions of e.g. the component library, docs or tools while 
   maintaining the core mcstas package. See repository-remarks below.
 - A given McStas 2.x release is "self-contained" and can be installed in parallel with other of
   McStas and McXtrace (i.e. run mcgui-2.0RC2 to select a specific version)
 - We provide the new mccode-select and mccode-select-bundle that allows to select the version of
   a given tool (i.e. mcrun) which is run by default 
 - We provide a "migration tool" for Unix based systems (i.e. Linux & Mac) to let your already
   installed McStas 1.x co-exist with the new 2.x 
 - Using McStas with NeXus does no longer require recompilation if you only want to _write_ NeXus.
   (Simply install NeXus and update your MCSTAS_CFLAGS to include -lNeXus -DUSE_NEXUS). For the
   conversion of files using mcformat NeXus must still be available at compile time

 Platform support:
 - We have moved from autoconf+make to CMake for easy multi-platform support
 - Supported platforms / targeted distributions of McStas are available for
   - Debian-based Linux systems (including Ubuntu, Mint etc.)
     * Versions: 32 and 64 bit
     * Remark: Dependencies resolved through OS package system
     * Remark: We provide debian packages for dependencies that are not in the OS'es by default
     * Remark: On Debian you need to enable the 'non-free' and 'contrib' apt-repositories
     * Remark: We will soon provide an apt repository for your sources.list
   - RPM-based Linux systems (including Scientific Linux, CentOS etc.)
     * Versions: 32 and 64 bit
     * Remark: Dependencies resolved through OS package system
     * Remark: For most of these distros you will need to enable the RPMforge and EPEL repositories.
       	       See e.g.: http://www.howtoforge.com/perfect-server-centos-6.3-x86_64-nginx-courier-ispconfig-3-p3
     * Remark: We provide RPM or SRPM packages for dependencies that are not in the OS'es by default
     * Remark: We will soon provide an RPM repository for your yum
     * Remark: The 'python-chaco' dependency for the chaco-mcplot is not easily available here
   - Mac OS X, through a set of .pkg packages
     * Versions: Independent 64 bit versions for 10.6 Snow Leopard, 10.7 Lion and 10.8 Mountain Lion. 
       	       Older versions are not directly supported, but installation should be possible if you 
	       build from the SVN tree using cmake.
     * Remark: On 10.6 you need to install a compatible Xcode - available from http://developer.apple.com
       	       or use the one on your original installation medium.
     * Remark: On 10.7 and 10.8 you need to get Xcode from the App store and through the in-app preferences
       	       download the 'Command Line Tools'.
     * Remark: On 10.8 you need to install XQuartz from	http://xquartz.macosforge.org/landing/
     * Remark: We distribute dmg images for each supported target release of OS X including all other
       	       bits you need for runing McStas and the Perl tools. Follow instructions in the README file. 
     * Remark: To run the python-mcrun tool you need to install python-yaml via Terminal.app and this commmand:
               sudo easy_install pyyaml
     * Remark: To run the python-mcplot tools you need to either get
       	       a) Enthought Python (Commercial Python distribution) from http://www.enthought.com/products/epd.php .
	       	  This enables both the matplotlib and chaco based mcplot tools. You need to make the installed 
		  python the system-default python 2.7, the instructions from Enthought:
		  http://www.enthought.com/products/epdgetstart.php?platform=mac#default
	       b) SciPy superpack from http://fonnesbeck.github.com/ScipySuperpack/ . This enables the 
	          matplotlib mcplot tool with the default Python available on OS X.
   - Microsoft Windows systems
     * Versions: 32 and 64 bit, tested on XP, Windows 7 and Windows 8
     * Remark: We distribute zip files for each 32 and 64 bit Windows independently. Follow instructions 
       	       in the README file. 
     * Remark: We recommend using Strawberry Perl (v. 5.16) and provide compatible ppd's for the various
               perl-tool dependencies (perl-PDL, pgplot, perl-PGPLOT, perl-Tk-CodeText, perl-Math-Amoeba).
	       Get Strawberry Perl via http://strawberryperl.com
     * Remark: Strawberry Perl includes gcc! Hence no need to install a separate c-compiler!
     * Remark: For MPI parallelization, we recommend installing MPICH2 from http://www.mpich.org
     * Remark: We recommend Python(x,y) on Windows systems as it includes both matplotlib and chaco. Get
       	       Python(x,y) via http://code.google.com/p/pythonxy/
     * Remark: To enable the Python based mcrun tool with Python(x,y) you need to install PyYAML from
       	       http://pyyaml.org/wiki/PyYAML
     * Remark: Windows installations now recide in e.g. c:\mcstas-2.0RC2 and we provide two version-
               dependent desktop links: mcgui-2.0RC2 and mcstas-environment-2.0RC2 (the latter for running 
	       simulations using the windows cmd.exe). We do not touch the system registry for setting up 
	       PATH's etc., all is handled from the two links/batch files.
 - As far as possible, we build the packages on "standard" versions of the relevant OS'es (with the exception
   of the windows builds that are created on Debian Linux via cross-compilation)

 Tools
 - Many new developments as mentioned above. Just to name a few:
   - New mcrun tool based on Python
   - New mcplot tool based on Python+matplotlib
   - New mcplot tool baded on Python+chaco
   - New web-frontend based on Python
   - Mcgui perl-tool has been refurbished, updated look plus new button for changing working dir

 Core & runtime code:
 - Backward compatibility 1: Some backward-compatibility is lost in the new version of the code-generation, 
   as we no longer use the information defined in the component STATE_PARAMETERS and POLARISATION_PARAMETERS
   macros. A warning is issued in case of components using these macros, e.g.:
   Warning:  /usr/local/lib/mcstas-2.0delta/monitors/TOF2Q_cylPSD_monitor.comp is using STATE PARAMETERS
    mcstas-2.0delta 2.0delta support is PARTIAL for these and support will END with next release
 - Backward compatibility 2: We have standardized naming of component parameters - see the file NOMENCLATURE
   installed in the McStas library. The code generation will give error messages of e.g. using xw and yh where
   one should now be using xwidth and yheight.
 - Support for tabulated magnetic fields. New code for handling interpolation in sparse data is included 
   in the share/interpolation/ area. The test instrument Test_pol_tabled.instr takes use of this feature. 
   The curren implementation is in draft status, we expect speedup in the next McStas release.

 New Components:
 - Sample_nxs.comp from Mirko Boin, HZB. Diffraction/imaging oriented sample where one defines the structure
   by means of the NXS crystallography library which is now also included with McStas. The component comes with the test-
   instruments Test_Sample_nxs_diffraction.instr and Test_Sample_nxs_imaging.instr. 
 - Elliptic_guide_gravity.comp from Henrik Carlsen, NBI. Analytical approach to describing an elliptical guide
   geometry where gravity is taken into account. Included in the Reflectometer.instr from Anette Vickery, NBI.
 - Suite of SANS-samples from Martin Cramer Pedersen, NBI. Various approaches to describing SANS diffraction
   e.g. using the PDB data bank. Component names are SANSShells.comp SANSPDBFast.comp SANSPDB.comp 
   SANSNanodiscsWithTagsFast.comp SANSNanodiscsWithTags.comp SANSNanodiscsFast.comp SANSNanodiscs.comp
   SANSLiposomes.comp SANSEllipticCylinders.comp SANSCylinders.comp SANSCurve.comp SANSSpheres.comp. Included
   (some as comments) in the TestSANS.instr.
 - SANSQMonitor.comp also from  Martin Cramer Pedersen, NBI. Q-monitor for SANS also included in TestSANS.instr.
 - TOF2Q_cylPSD_monitor from Anette Vickery, NBI. Time-of-flight vs. q monitor of cylindrical shape. Included
   in the Reflectometer.instr test instrument. 
 - SNS_source_analytic.comp from Franz X. Gallmeier, SNS. Smooth-fit description of the SNS-moderators. Fits are
   derived from the same underlying raw-data as the ordinary SNS_source.comp is using directly with linear
   interpolation. NOTE: This component uses the atypical neutrons/pulse intensity unit. The used input file MUST 
   be given with a full path.
 - Brilliance_monitor.comp from Peter Willendrup, DTU Fysik. Monitor for easy evaluation of mean and instantaneous
   source brilliance for source comparison. Used in the ESS_brilliance.instr test instrument.
 - TOF_PSD_monitor_rad.comp from Kim Lefmann, KU. Derived from PSD_monitor_rad by Henrich Frielinghaus, FZJ.
   Position-sensitive TOF monitor with radially averaging.
 - PSD_TOF_monitor.comp from Peter Willendrup, DTU Fysik. PSD-monitor with a number of independent time-slices. 
   Derived from PSD_monitor by Kim Lefmann, KU.
 - Source_gen4.comp from Jonas O Birk, NBI and Uwe Filges PSI. Version of source_gen with PSI-specific changes,
   e.g. a high-energy tail contribution. Included in the RITA-II.instr from Linda Udby, NBI.
 - Absorber.comp from Peter Willendrup, DTU Fysik. Slab of perfectly absorbing material. Included in the RITA-II.instr 
   from Linda Udby, NBI.
 - PSD_monitor_psf.comp and PSD_monitor_psf_eff.comp from Kim Lefmann and Linda Udby, KU. Two derivatives of 
   PSD_monitor.comp both with gaussian point-spread-function and _eff with a 1/k efficiency parameter. Included 
   in the RITA-II.instr from Linda Udby, NBI.
 - Virtual_mcnp_ss_input.comp and Virtual_mcnp_ss_output.comp from Esben Klinkby, DTU Nutech. Allows to read and write
   MCNP/MCNPX 'source surfaces'. For use in simulations where neutrons need transport in both codes.
 - Virtual_mcnp_ss_Guide.comp from Esben Klinkby, DTU Nutech. Single guide piece sitting in a 'sandwich' between 
   an input and an output MCNP/X source surface.
 - Mirror_Curved_Bispectral.comp and Mirror_Elliptic_Bispectral.comp from Henrik Jacobsen, KU. Mirrors for the
   bispectral ESS instrument ESS_2001_bispectral.instr.
 - Radial_div.comp from Kaspar Klenoe, KU. Divergence monitor measuring the radial deviation in divergence. Used in 
   Henrik Jacobsen's ESS_2001_bispectral.instr.

 Updated Components:
 - ESS_moderator_long.comp patches from Kim Lefmann KU (multiple-pulses, TOF-focusing) and Esben Klinkby DTU Nutech 
   (geometry and spectrum from ESS MCNPX models). Thanks to Klaus Lieutenant from Vitess/HZB for providing adjusted
   parameters for the 'Mezei moderator' and a wavelength-dependent corretion term. The legacy 2001 ESS parametrization
   is provided in obsolete as ESS_moderator_long_2001.comp.
 - Bugfix of the SNS_source.comp from Garrett Granroth, SNS (segfaulted on windows). NOTE: This component uses the 
   atypical neutrons/pulse intensity unit. The used input file MUST be given with a full path.
 - Bugfix of the Multilayer_sample from Rob Dalgliesh, ISIS. 
 - Many other components received updates... 

 Instruments:
 - HZB_NEAT.instr from Emmanuel Farhi, ILL - written in collaboration with Ruep E Lechner. The NEAT spectrometer
   from the HZB.
 - TestSANS.instr from Martin Cramer Pedersen, NBI. Test SANS setup for the new SANS components described above.
 - Reflectometer.instr from Anette Vickery, NBI. Reflectometer on pulsed source. Test instrument for a couple of
   components from NBI contributors decribed above.
 - Test_Sample_nxs_imaging.instr and Test_Sample_nxs_diffraction.instr from Mirko Boin, HZB. Test instruments for
   the use of Sample_nxs.comp. NOTE: Special compilation required, see instrument source codes!
 - RITA-II.instr from Linda Udby, NBI. Very detailed and complete, experimentally benchmarked description of the
   RITA-II spectrometer at PSI. Use the RITA-II_test.sh script for test-scans.
 - Test_SSR_SSW.instr and Test_SSR_SSW_Guide.instr from Esben Klinkby DTU Nutech. Test instruments for the above
   mentioned components.
 - ESS_2001_bispectral.instr from Henrik Jacobsen, KU. Model of a bispectral extraction system for the ESS (currently
   using the 2001 version of the source)
 - ILL_D22.instr from Emmanuel Farhi. Model of the D22 SANS from ILL.

Changes in McStas v1.12c, June 3rd, 2011

 McStas 1.12c is bugfix release.

 Bugfixes include:

  Runtime
  - Fix of a bug in the rectangular focusing routine, reported to mcstas-users by Markos Skoulatos, HZB
    (see http://mailman.mcstas.org/pipermail/mcstas-users/2010q4/000845.html)
  - Introduction of --ncount as unsigned long long int in place of double. Using double could potentially lead 
    simulations to "hang". A re-release of McStas 1.12c was done due to bugs in components related to the new
    type returned from mcget_ncount.

  Tools
  - If gnuplot is available at installation time, mcplot and mcgui can use this in place of PGPLOT.
    To use gnuplot, either
    - edit your mcstas_config.perl and put      PLOTTER => 'Gnuplot',
    - set the enviroment variable MCSTAS_FORMAT to Gnuplot

  Components
  - Lens.comp, typo in author name corrected
  - Guide_four_side.comp (and other similar), by Tobias Panzner updated
  - Single_crystal.comp, corrected initialization when providing lattice consts and angles
  - Source_simple.comp, corrected centering-bug when using gaussian wavelength distribution
  - Monochromator_pol.comp, now works properly in GROUPS/multi-slab configurations
  - Pol_simpleBfield.comp, potential polarisation exit-state bug corrected
  - FermiChopper.comp, fixed error when computing automatic phase 
  - Monitor_nD.comp, fixed geometry bugs reported by Lambert van Eijck
  
  
  Example instruments
  - ESS_IN5_reprate.instr, parameter naming change in ESS_moderator_long component was not accomodated.
  - templateTAS.instr, fixes relating to inclusion in other instrument files
  


Changes in McStas v1.12b, July 15th, 2010

 McStas 1.12b is mostly a bugfix release, and the VERY last release in the 1.x series.
 - A few extra features and contributions have been included.

 McStas 2.0 will be released late 2010 and will introduce new features that
 could break ceartain backward compatibility, hence we move from the 1.x series.

 Bugfixes include:

  Runtime
  - Further adjustments to the MPI implementation, solves problems of hanging processes on large cluster runs.
  - Threading support completely removed.

  Components
  - New contributions
    - Multilayer_Sample.comp (Robert Dalgliesh, ISIS)
      Multilayer Reflecting sample using matrix Formula. Requires GSL (GNU Scientific Library)
    - Lens.comp (C. Monzat/E. Farhi/S. Desert/G.Euzin, ILL/LLB)
      Refractive lens with absorption, incoherent scattering and surface imperfection.
    - Lens_simple.comp (Henrich Frielinghaus, FZ Juelich)
      Rectangular/circular slit with parabolic/spherical LENS
    - Guide_four_side.comp (Tobias Panzner, PSI)
      Models a guide with elliptic, parabolic or straight shaped side walls. 
    - Guide_four_side_2_shells.comp (Tobias Panzner, PSI)
      Models a guide with elliptic, parabolic or straight shaped side walls. 
      As -"- with 2 outer mirror layer shells.
    - Guide_four_side_10_shells.comp (Tobias Panzner, PSI)
      Models a guide with elliptic, parabolic or straight shaped side walls.
      As -"- with 10 outer mirror layer shells.
    - Pol_FieldBox (Peter Willendrup)
      Easier to use precession area. Corresponds to a set of Pol_simpleBfield's plus slits.
    - Sapphire_Filter (Jonas O Birk, Uni CPH). Filter component, defaulting to saphire material properties

  - New component features
    - Addition of high-energy tail to Source_gen.comp (edits by Uwe Filges, PSI)  
    - Single_crystal.comp extended for anisotropic mosaicity (EXPERIMENTAL), (edits by Erik Knudsen, Risoe DTU)

  - Various minor bugfixes to
    - Guide_curved.comp
    - DiskChopper.comp
    - SNS_source.comp
    - ESS_moderator_long.comp
   
  Example instruments
  - New examples
    - ISIS_CRISP.instr, CRISP reflectometer from ISIS, test instrument for Multilayer_Sample.comp above
    - Test_Lens.instr, test instrument for Lens.comp above
    - FZJ_KWS2_Lens.instr, KWS2 SANS from FZJ, test instrument for Lens_simple.comp above
    - templateTOF.instr (Was ILL_TOF_Env before)
    - templateLaue.instr (Derived from the old tutorial Laue instrument)
    - SE_example.instr and SE_example2.instr, simplistic Spin-Echo machines for illustrating use of Pol options
    - template.instr ("Void" instrument skeleton - like Insert->Instrument Template)
    - Test_shellguides.instr, test instrument for contributions from Tobias Panzner and Jonas O Birk.

  - Minor improvements to
    - templateDIFF.instr (SPLIT improves statistics)
    - templateTAS.instr (SPLIT improves statistics)
    - SNS_test.instr (Cleanup)
    
  Datafiles
  - Added SNS moderator input file source_sct091_tu_02_1.dat
  - Added ISIS moderator input file h.crisp

  Platform support/Tools
  - Mac OS X 10.3 Panther, 10.4 Tiger, 10.5 Leopard, 10.6 Snow Leopard (PPC/Intel, 32/64bit)  
    - Fix for problems with multiple perl installs, currently locked to perl 5.8.
    - Instructions for using Matlab visualisation in the .dmg README file
  - Windows XP 32/64bit, Windows Vista 32/64bit, Windows 7 32/64bit
    - Note that we provide only a 32 bit package, but shown to work on 64 bit
    - Fixed mcrun / mcgui for Windows for missing transfer of mpi parameters
    - Fixed mcplot for Windows, foreground color is now black, not cyan
  - Linux: Ubuntu is now our only "reference" Linux (Debian does not provide perl-pgplot)
    - Ubuntu .deb's for 32 and 64bit, work for both for 9.10 Karmic Koala and 10.04 Lucid Lynx
    - The .deb's require PGPLOT and perl-pgplot from Ubuntu Universe/Multiverse repositories

  Parallelisation
  - Improved stability of MPI simulations
 
  Various
  - A number of unlisted minor bugs ironed out, both in components, runtime code and tools.


 McStas 1.12a is essentially a bugfix release, and the last release in the 1.x series.

 McStas 2.0 will be released late 2009 / early 2010 and will introduce new features that
 could break ceartain backward compatibility, hence we move from the 1.x series.

 Bugfixes include:

  Runtime
  - Adjustments to the MPI implementation, solves problems of hanging processes on large cluster runs.

  Components
  - Various minor bugfixes to
    - Isotropic_sqw.comp
    - Vitess_input.comp
    - Pol_bender.comp
    - Pol_monitor.comp
    - PolLambda_monitor.comp
    - SNS_source.comp
    - ISIS_moderator.comp
    - FermiChopper_ILL.comp
    - Progress_bar.comp
    - TOFRes_sample.comp
    - Virtual_tripoli4_output.comp
    - Guide_honeycomb.comp
   
  Example instruments
  - Minor improvements to
    - PSI_DMC.instr (source-guide focusing corrected)
    - templateDIFF.instr (SPLIT improves statistics)
    - templateTAS.instr (SPLIT improves statistics)
    - SNS_test.instr (Cleanup)

  Datafiles
  - Added SNS moderator input file source_sct091_tu_02_1.dat

  Tools
  - Fixed mcrun / mcgui for Win32 for 'fixed --ncount at 1e6' when scanning/optimizing
 
  Platform support
  - Mac OS X, fix for problems with multiple perl install
  - Windows XP,  Windows Vista - see Tools section
  - Linux, pgplot and pgperl now builds using gfortran (replacing g77)
  
  Parallelisation
  - Improved stability of MPI simulations
  - Preference for OpenMPI (standard on Ubuntu and Mac OS X)

  Various
  - A number of unlisted minor bugs ironed out, both in components, runtime code and tools.


Changes in McStas v1.12, May 8th, 2008

  Metalanguage
  - New %include "instr" mechanism to include one instrument in another. (Useful for independent
     build-up of e.g. primary and secondary spectrometer. Or easily see the effect of moving an instrument
     to a different beamport or facility!) See the manual for details.
  - When applying the WHEN keyword, an applied EXTEND %{ %} block will only be active if the WHEN
     returns 'true'.
  - Please take care when combining WHEN, GROUP and EXTEND %{ %} - see the manual.

  Runtime
  - Fix of a limiting case focusing problem reported to mcstas-users by George Apostolopoulos.
     ( See http://mailman.risoe.dk/pipermail/neutron-mc/2007q4/002915.html )

  Components
  - When using the Virtual_input type components, --ncount is always set to an integer multiplum 
     (repeat_count) of the number of events in the file. See also related remark about MPI below.
  - New component: MirrorElli.comp, elliptical mirror. Contributed by Sylvain Desert, LLB
  - New component: MirrorPara.comp, parabolic mirror. Contributed by Sylvain Desert, LLB
  - Single_crystal validation still ongoing, but has progressed: The algorithm seems OK, but is to some
     extent not in sync with the documentation. New option to specify reciprocal space vectors directly.
     (before only real space definitions were possible)
  - Most monitors now allow to 'not propagate' the neutron, i.e. not influence the beam. Parameter name
     is 'restore_neutron'.
   
  Example instruments
  - ILL_H25_IN22_sample/_resolution.instr (CRG instrument @ ILL) by E. Farhi / P. Willendrup
  - Incoherent_Test.instr - instrument to compare incoherent scattering from the different sample comps
     (V_samle, PowderN, Single_crystal, Isotropic_sqw). More instruments of this type planned (compare
     guides etc.), P. Willendrup / E. Knudsen / A. Daoud-Aladine
  - FocalisationMirrors.instr - test instrument for MirrorElli and MirrorPara, Sylvain Desert, LLB
  - PSI_DMC.instr, Powder Diffractometer, PSI, L. Keller / U. Filges / P. Willendrup

  Datafiles
  - 'Bugfix', some of the provided .laz files did not have proper unit for |F2|.
  
  Tools
  - Support for per-user mcstas_config.perl file, located in $HOME/.mcstas/ . This folder is also the default
     location of the 'host list' for use with MPI or gridding, simply name the file 'hosts'.
  - mcgui Save Configuration for saving chosen settings on the 'Configuration options' and 'Run dialogue'.
  - Possibilty to run MPI or grid simulations by default from mcgui.
  - When scanning parameters, mcrun now terminates with a relevant error message if one or more scan steps
     failed (intensities explicitly set to 0 in those cases).
  - When running parameter optimisations, a logfile (default name is "mcoptim_XXXX.dat" where XXXX is a
     pseudo-random string) is created during the optimisation, updated at each optim step.
  - We now provide syntax-highlighting setup files for vim and gedit editors.

  Output formats
  - Rudimentary support for GNUPLOT when plotting with mcplot. Data file format is standard McStas/PGPLOT.
 
  Platform support
  - Mac OS X 10.3 Panther (ppc), 10.4 Tiger (pcc/intel), 10.5 Leopard (ppc/intel)
  - Windows XP,  Windows Vista (Now with a recent perl version; 5.10 plus various fixes). New feature on Windows:
     Simulations _always_ run in the background, freeing mcgui for other work.
  - "Any" Linux - reference platforms are Ubuntu 8.04 (and earlier) and Debian 4.0 (and earlier). We have also tested 
     Fedora 8, OpenSuSE 10.3 and CentOS 4 releases recently.
  - FreeBSD (FreeBSD release 6.3 and its cousin DesktopBSD 1.6 recently tested)
  - SUN Solaris 10 (Intel tested, Sparc probably OK)
  - Plus probably any UNIX/POSIX type environment with a bit of effort...
  
  Parallelisation
  - Improved stability of MPI simulations by addition of an 'MPI barrier' (reduces probability of nodes beeing 'out of sync'.
  - On Windows, an 'mpicc.bat' script has been added for easier setup of McStas with gcc and MPI (We recommend MPICH).
  - Mac OS X 10.5 Leopard is shipped with built-in support for MPI (OpenMPI). No need to install extra packages.
  - Use of 'virtual sources' is now supported on MPI clusters. (If running on N nodes, all neutron events will be processed
     on each of the N nodes - implicit repetition N times of the source contents.)
  - OpenMP threading support 
  - Much improved gridding support (via ssh). Ready for heterogenous systems, e.g. mixed operating systems and hardware
     types! (Requires -c compile flag for mcrun or equivalent setting in mcgui.) The only requirement is ssh client on the machine 
     where the grid run is started, plus ssh daemon and c-compiler (e.g. gcc or simply cc) on the remote machines. Files in the 
     current dir are transparently copied back and forth, causes a substantial network traffic in some cases. Output data from the 
     nodes are automatically merged using mcformat. Just as efficient as MPI without any library dependencies at all. Make use 
     of all processer cores in your machine, simply choose to 'grid'. Windows 'client' host OK, we autodetect ssh and scp binaries
     from the Putty package.

  Various
  - A number of minor bugs ironed out, both in components, runtime code and tools.
  - From release 1.12, McStas is GPL 2 only. The debate on the internet about the future GPL 3 license suggests that this license 
     might have implications on the 'derived work', hence have implications on what and how our users use their McStas simulations
     for. To protect user freedom, we will stick with GPL 2.     

  WARNING: The 'dash' shell which is used as /bin/sh on some Linux system (Including Ubuntu 8.04) makes the 'Cancel' and 'Update' 
  buttons fail in mcgui. Solutions:
  a) If your system is a Debian or Ubuntu, please dpkg-reconfigure dash and say 'no' to install dash as /bin/sh
  b) If you run another Linux with /bin/sh beeing dash, please install bash and manually change the /bin/sh link to point at bash.

Changes in McStas v1.11, July 3rd, 2007

  Metalanguage
  - New SPLIT keyword for improving statistics. WARNING: Follow instructions in the documentation for safe
    use of the SPLIT keyword. 

  Components
  - Source_adapt.comp, additions by Aaron Percival which allows to specify a flat wavlength distibution.
  - Single_crystal.comp, warning NOT to use this component as a monochromator (bug fix/validation under way).
  - PowderN.comp, can now be used in concentric mode, i.e. for modelling sample surroundings (cryostat, container..).
  - Tunneling_sample.comp (new) Double-cylinder shaped all-incoherent scatterer with elastic, quasielastic (Lorentzian)
    and tunneling (sharp) components. No multiple scattering. Absorbtion included. By Kim Lefmann
  - TOF2E_monitor.comp (new) TOF-sensitive monitor, converting to energy. By Kim Lefmann

  Example instruments
  - New ILL_H15_IN6 and ILL_H142_IN12 instruments by Emmanuel Farhi are included.
  - Histogrammer.instr - see the 'Tools' section
  - New ESS_IN5_reprate.instr Instrument for simulating IN5-TYPE (cold chopper) multi-frame spectrometer at ESS LPT.
    (Also example instrument for Tunneling_sample.comp.) By  Kim Lefmann

  Datafiles
  - Reflectivity curves from Swiss Neutronics (more work done, available in the next McStas release).
  - More Sqw tables for use with the Isotropic_Sqw component.

  Tools
  - PGPLOT output format (original McStas format) is now possible on Windows. A pgplot/pgperl installation
    is included in a standard McStas Win32 installation.
  - New mcdaemon for visualisation of intermediate simulation results (obtained by sending USR2 signal to a 
    running simulation or by using the Progress_bar component with flag_save=1).
  - Improvements to mcgui:
    * New tool menu with hooks to mcformat, mcdaemon and mcplot
    * Possibility for auto-setup of MPI ssh keys
    * Possibility to run the McStas editor in 'detached' mode, hence available whilst a simulation is running
  - Histogrammer.instr: Special histogramming instrument for visualisation of virtual source files (Virtual_input,
    VitESS, MCNP and Tripoli formats)

  Output formats
  - NeXus output format possible. To use this feature, HDF and NeXus libraries must be available
    and functional on your system before installing McStas from source. (In case of a binary package, 
    you MUST recompile the McStas software.) To enable a McStas build with NeXus, run 
    ./configure --with-nexus.

  Platform support
  - Mac OS X is now considered a supported platform. For now, no actuall installer program
    is given, but all needed software has been packed together with easy to follow instructions.
    Test of the instructions have been performed on Mac OS X 10.4 Tiger on both Intel and PPC
    hardware.
  - McStas now comes in a Debian binary package (.deb), tested to work on Debian and Ubuntu systems. The debian
    package provides McStas, pgplot and pgperl and have dependencies for the perl, perl-tk, gcc, libg2c0, pdl and libc6-dev 
    packages.

  Parallelisation
  - The threading mechanism for parallelisation has been removed from McStas since it caused too many problems. For 
    parallelisation on single machines (e.g. modern dual-core processors) or clusters, MPI (MPICH) is the recommended solution.
    The McStas team members routinely run developer machines and clusters using MPI.

  Intel C compiler
  - The documentation now includes instructions to run McStas with the Intel C compiler (available on Windows,
    Linux x86 and Mac OS x86 systems). Typically, a performance gain of 2 is found relative to gcc -O2. Relevant
    compiler flags are:

    MCSTAS_CFLAGS="-g -O2 -wd177,266,1011,181"
    export MCSTAS_CC="icc"

  - To run McStas with MPI and the Intel C compiler, you may have to edit your mpicc shell script to set:
    
    CC="icc"

  Various
  - A standard McStas source package now works directly within the DANSE framework.

  WARNING: The 'dash' shell which is used as /bin/sh on some Linux system (Including Ubuntu 7.04) makes the 'Cancel' and 'Update' 
  buttons fail in mcgui. Solutions:
  a) If your system is a Debian or Ubuntu, please install our Debian package which requests automatic removal of 'dash'.
  b) If your /bin/sh is dash, please install bash and manually change the /bin/sh link to point at bash.

Changes in McStas v1.10, Dec 4, 2006

  General
  - This release is a major step forward for McStas in terms of support for polarisation.
    Peter Christiansen who worked at Risoe March-October 2006 was the main workforce 
    behind this new functionality, backed by funding from ISIS, work by Rob Dalgliesh at 
    ISIS and inspiration from the VitESS and NISP packages. As this is the first release
    with polarisation support, the methods and algorithms implemented will certainly be 
    developed further. Hence, documentation of the functionality has been placed in an 
    appendix to the manual. 
    Polarisation users: Please give us feedback for further development!
    Items marked by (p) below relate to the new polarisation support.
  - New keywords for the meta language improves support for e.g. description of sample
    enviroments.
  - A method for automatic optimisation has been implemented, e.g. for achieving maximum flux
    at the sample position (any quantity measured by a McStas monitor can be optimised) as a
    function of simulation parameters.
  - Bugfixes in many different areas.

  Documentation
  - Manual and component manual slightly updated according to adding/modification of components
    and functionality. New appendix on the polarisation features. (p)

  Kernel
  - New WHEN keyword, conditional use of components,
        COMPONENT MyComp=Component(...) WHEN (condition) AT
  - New JUMP keyword, possibility to iterate a given component a number of times (multiple 
    scattering) or for 'teleportation' to a given component. (USE WITH CAUTION)
  - Improved COPY keyword with parameter substitution (Make a copy of an other component 
    instance with a few parameters changed)
  - Spin propagation algorithm (When magnetic field is set 'on', the central propagation
    routines also handle Larmor precession in the field) (p)
  - Handeling of analytical B-fields (p)

  Tools
  - New 'merge/convert' tool mcformat: Convert between McStas output formats and merge cluster
    node datasets into one dataset.
  - TOF mode for mcdisplay (Statistical chopper acceptance diagrams generated from the simulated
    neutron rays. Currently only supported on Unix systems with PGPLOT.)
  - Optmisation support in mcrun/mcgui using Perl::Amoeba (se description above)
  - POSIX threading on multi-core processors (BEWARE, performance is generally better using MPI)
  - mcgui: Note that if you experience crashes when starting/running GNOME/Gtk2 applications, 
    update your perl-Tk installation. Two ways to do this:
    1) Get the tarball from http://www.mcstas.org/download/Tk-804.027_gtk2_patch.tar.gz and
       install using 'perl Makefile.PL && make && make install'.
    2) Do a 'make tk' in the McStas unpacked McStas source directory. This will download and
       install the tarball into your McStas system directory.

  Components
  - Monochromator_pol.comp - Polarising monochromator/analyzer (p)
  - Pol_bender.comp - Polarising bender (p)
  - Pol_mirror.comp - Polarising mirror (p)
  - Pol_guide_vmirror.comp - Guide with semi-transparent, polarising mirror (p)
  - Pol_simpleBfield.comp - Numerical precession in analytical B-fields (p)
  - 3 Polarisation monitors - MeanPolLambda_monitor.comp, PolLambda_monitor.comp
    Pol_monitor.comp (p)
  - PSD_Detector.comp - Physical detector - comes with many gas lookup tables 
    (Contrib: Thorwald van Vuure, ILL)
  - Virtual_mcnp_*.comp - MCNP event file handeling
    (Contrib: Chama Hennane, ENSIMAG and Emmanuel Farhi, ILL) 
  - Source_multi_surfaces.comp - Source comp with multiple surface areas with individual
    spectrums 
    (Contrib: Ludovic Giller, EPFL and Uwe Filges, PSI)
  - multi_pipe.comp - Defines a 'grid' of slits (focusing device)
    (Contrib: Uwe Filges, PSI)
  - Exact_radial_coll.comp - Radial collimator comp, exact model
    (Contrib: Roland Schedler, HMI)
  - FermiChopper_ILL.comp  - Fermi Chopper comp with optional supermirror coated blades.
    (Contrib: Helmut Schober, ILL)
  - V_sample enriched with quasi-elastic features (Kim Lefmann)
          
  Example Instruments
  - TAS frontend with reciprocal space (hkl) calculator (Emmanuel Farhi)
  - Example instruments for polarisation comps (p)
  - QUENS_test.instr (Test of new quasi-elastic features V_sample)
  
  Installation
  - Much easier installation on Windows, single executable file with all support applications
    is now available. Simply click 'next' alle the way and you are done.
  - PGPLOT and Scilab installation help tools on Linux systems

  WARNINGS (Almost identical to those from release 1.9.1)
  - Because of rapid changes in the support software for McStas, the current release has support
    for only some releases of:

    * Scilab (Win32 and Unix) - pick release 4.0 if available or pick release 3.0 from , e.g. from
      http://www.scilab.org/download/index_download.php?page=oldReleases.html
      (Automatically included in the Win32 .exe installer and Linux Scilab installer)

    * Perl (Win32) - on Windows we only support Perl 5.6 - pick
      http://downloads.activestate.com/ActivePerl/Windows/5.6/ActivePerl-5.6.1.638-MSWin32-x86.msi
      (Automatically included in the Win32 .exe installer)

    * If you are running Unix with GNOME/Gtk2 applications, you may experience problems with mcgui
      crashing, please install updated perl-Tk from http://www.mcstas.org/download

Changes in McStas v1.9.1, Mar 29, 2006

  General
  - Update release, mainly bugfixes plus a few other things

  Documentation
  - Component manual slightly updated according to adding/modification of components.

  Tools
  - mcgui: A few bugfixes. Note also that if you experience crashes when starting/running
    GNOME/Gtk2 applications, update your perl-Tk installation. Two ways to do this:
    1) Get the tarball from http://www.mcstas.org/download/Tk-804.027_gtk2_patch.tar.gz and
       install using 'perl Makefile.PL && make && make install'.
    2) Do a 'make tk' in the McStas unpacked McStas source directory. This will download and
       install the tarball into your McStas system directory.

  Components
  - DiskChopper.comp - new disc chopper component. Chopper.comp made obsolete.
    See mcdoc page / component manual for further details.
  - Guide.comp - reads reflectivity tables from disk.
  - Isotropic_Sqw - minor bugfixes, validated against PowerN, V_sample, etc.
  - PowderN - validated against Isotropix_Sqw, Squires, experimental data.

  WARNINGS
  - Because of rapid changes in the support software for McStas, the current release has support
    for only some releases of:

    * Scilab (Win32 and Unix) - pick release 4.0 if available or pick release 3.0 from , e.g. from
      http://www.scilab.org/download/index_download.php?page=oldReleases.html

    * Perl (Win32) - on Windows we only support Perl 5.6 - pick
      http://downloads.activestate.com/ActivePerl/Windows/5.6/ActivePerl-5.6.1.638-MSWin32-x86.msi

    * If you are running Unix with GNOME/Gtk2 applications, you may experience problems with mcgui
      crashing, please install updated perl-Tk as noted above.

Changes in McStas v1.9, Nov 16, 2005

  General
  - To indicate the collaborative nature of the McStas package, the main website
    URL does no longer belong to Risoe or ILL but is http://www.mcstas.org.
  - The package has been strengthened by the presence of Klaus Lieutenant (former
    captain of Vitess, HMI) at ILL. He has focused a lot on validation and testing
    of the package, giving very important input and done very valuable work.
  - To help us in the fight against bugs, a BUGZILLA system has been set up for users
    to report their suggestions and problems. The system is available at the URL
    http://www.mcstas.org/McZilla .
  - The VnCS (Virtual neutron Code Sharing) agreement has been signed by the leaders
    of the Vitess and McStas software packages to formally support closer collaboration
    and sharing of code between the packages. At least one component (Vitess_ChopperFermi)
    now works with both packages, work done by Klaus Lieutenant and Geza Zsigmond.
  - Many big and small BUGS ellimnated!
  - First attempt at "concentric components" (sample environment). See Isotropic_Sqw in
    the 'Components' section below.

  Documentation
  - With this release, the component manual has finally been updated! Major work has
    been put into this by especially Kim Lefmann and Emmanuel Farhi. The user manual
    has also been revised, but not as intensively.
  - Improvements to tutorial/teaching material as result of Copenhagen University course on
    neutron scattering, given by Kim Lefmann and Peter Willendrup. The idea is that when
    improved further, the full simulation part of the course can serve as an extended
    tutorial for McStas. In the package, projects on virtual experiments at DMC, RITA-2 and
    SANS-2 at PSI is included.

  Tools
  - A web frontend is now available for McStas, check it out at http://www.mcstas.org/webfront .
    Currently it is not actually part of the package, may become so in a near future release.
  - On Unix systems, mcdaemon is a tool to periodically send -USR2 signals (save) to running
    simulation processes. Is in an early state but should work okay, but not documented in the
    user manual. Replots intermediate data.
  - mcgui has been intensively revised, many annoyances have been removed and features adjusted
    for easier use.

  Components
  - For simplicity, a number of components (especially monitors and sources) have been merged.
    This for example means that the Source_simple replaces the former Source_flat* components.
    Fewer duplications of code => smaller risk of old bugs surviving in the code.
  - PowderN: General powder sample component, replaces the simpler Powder1 and Powder2 components,
    has a very flexible system to read crystallographic data for powder line description. Is
    in the process of beeing validated against data from DMC@PSI. The code itself and the
    validation of it is the result of collaboration between mainly Peter Willendrup from the
    McStas team and Laurent Chapon (ISIS), Uwe Filges (PSI) and Lukas Keller (PSI). A validation
    paper will be presented at ICNS, Sydney.
  - Isotropic_Sqw: Originally work for the Ph.D. thesis of V. Hugouvieux, ILL. Extended and
    validated intensively by Emmanuel Farhi, ILL. It handles elastic and inelastic scattering
    for both coherent and incoherent processes, with secondary absorption and multiple scattering.
    The code has been validated against PowderN and V_sample. It comes with the same flexible
    system as PowderN to read data files, including crystallographic data for powder line
    description. Moreover, it may be used to describe concentric geometries in order to model
    sample environments.
  - Vitess_ChopperFermi: Originally work for Vitess by Geza Zsigmond, now PSI. Validated and
    adapted for use with McStas by Klaus Lieutentant, ILL in the frame of the VnCS agreement.
  - TOFRes_sample: time-of-flight version of the Res_sample component. Written by Kim Lefmann,
    Risoe. Will be merged with the res_sample component in next release.
  - The full suite of Fermi Choppers have been tested intensively by Klaus Lieutentant, partly
    inspired by the work of ILL stagiere Rebecca Peacock.

  WARNINGS
  - Because of rapid changes in the support software for McStas, the current release has support
    for only some releases of:

    * Scilab (Win32 and Unix) - pick release 3.0 from , e.g. from
      http://www.scilab.org/download/index_download.php?page=oldReleases.html

    * Perl (Win32) - on Windows we only support Perl 5.6 - pick
      http://downloads.activestate.com/ActivePerl/Windows/5.6/ActivePerl-5.6.1.638-MSWin32-x86.msi


Changes in McStas v1.8, Mar 4, 2004

  License
  - McStas is now GPL software. Note that generated code, output data and papers
    based on these is not considered "derived work" but merely normal usage of the
    software package.
  - The McStas software package now includes a re-distribution of the plotlib
    package for Scilab, (http://www.dma.utc.fr/~mottelet/myplot.html), courtesy of
    Stephane Mottelet (stephane.mottelet@dma.utc.fr). Plotlib is beeing distributed
    using a BSD like license. Plotlib needs not be precompiled anymore.
  - McStas now uses the Perl CPAN module Proc::Simple on unix platforms. Proc::Simple
    is distributed using the Perl artistic license.

  General
  - Nightly CVS builds of McStas are now available to the public from
    http://mcstas.risoe.dk/cvs (optionally use the mcsync script to get these)
    NOTE: The CVS builds are not considered 100% stable, you can count on errors
    in there, but you also get the newest stuff.

  Installation
  - Improved installation and build scripts. NOTE: The new version is INCOMPATIBLE
    with Win32 releases older than Windows 2000
  - Automatic detection of plotting backend, (make config)
  - Test procedure (make test)

  Kernel (i.e. the 'mcstas' program)
  - a PREVIOUS keyword has been implemented, for referencing e.g. position placement
    to upsteam components.
  - improvements to runtime randvec_target_rect functions
  - Updated Mersenne Twister random number generator

  Tools
  - Various bugfixes, especially on the Win32 platform and RedHat 9 specific stuff
  - mcgui now includes an option to 'scan' instrument parameters (previously only
    possible using mcrun.pl.
  - mcconvert.pl script has been added to the distribution, converts between
    Matlab and Scilab type output. Cyclic conversion, e.g. Matlab->Scilab->Matlab
    is not supported.
  - mcplot opens scan steps with Matlab/Scilab backends
  - mcrun now has support for Matlab/Scilab backends, built in test procedure
    (mcrun --test), poor man's grid computing - see the manual for information on
    how to use this.
  - mcdoc support for instrument headers, support for the built in tutorial
  - Improved tutorial built into the gui tools
  - editor, various improvements (line numbers etc.)

  Instruments
  - mcgui now has a special Neutron Site menu (auto generated) to allow distribution
    of instruments
  - instruments can now have default input values
  - several contributed / new instruments, have a look in your examples/ folder

  Components
  - New components:
    $ Official components
      - Sans_spheres, a sample for small angle neutron scattering
      - Powder2, a two ring powder sample
      - Phonon_simple, a phonon scattering sample
      - Guide_gravity improved
    $ Contributed components
      - Guide_tapering, guide with elliptical/parabolic/general tapering
        (Uwe Filges)
      - ISIS_moderator, (Stuart Ansell and Dickon Champion)
      - Guide_curved (Ross Stewart)

Changes in McStas v1.7, Jan 17, 2003

  Kernel (i.e. the 'mcstas' program)
  - components may have a SHARE section, which is imported only once per type
    of component. It has the same role as DECLARE, but only once.
  - the component files may have some %include inside '%{ }%' C DECLARE or SHARE
    blocks. The files to include are searched locally, and then in the library.
    If an extension is found, just the specified file is included, else both
    .h and .c are embedded if the --no-runtime has not been specified.
    The instrument files can also embed external files, both in C blocks
    and in the instrument parts (DECLARE, etc...) as in previous releases.
  - The instrument and components may have char* setting parameters. For
    instruments, their length is limited to 1024 chars.
  - The FINALLY section, that was executed at the end, has been split into
    still the FINALLY, and a new SAVE section. This latter is executed
    at simulation end (just before the FINALLY), but also each time an
    intermediate save is required (e.g. a 'kill -USR2 <pid>' is used).
  - An instrument source file may contain EXTEND %{ }% C blocks just after
    the usual AT...ROTATED.. keywords, to extend the behaviour of existing
    components, without touching their code. All local component variables are
    available. This may for instance be used to add a new 'color' to neutrons,
    i.e. assign a new characteristic variable to the neutron.
  - component instances in an instrument source file may be GROUPed into
    exclusive assembly, i.e. only one component of the group will intercept
    neutron, the rest will be skipped. This is usefull for multi monochromators
    multi detectors, multiple collimators, ... This is a kind if splitting.
  - McStas can now compile for Windows without troubles (if lex/yacc files
    were generated elsewere, or using the flex/yacc for Windows)

  Run-time library (e.g. the instrument program)
  - A global gravitation handling is now available, by setting the -g flag
  - many output formats are available for data. use the --format="format"
    flag, e.g. --format="Scilab". The full list is displayed with
    the -h flag for the instrument program.
    example:
      mcrun test.instr --format="Matlab binary" -n 1e4
    will create a mcstas.m file. Launch Matlab and execute
      s=mcstas('plot')  % will import data into s, and plot all detectors.
    Binary formats are handled by IDL, Matlab, Scilab.
    The present available format list is
      "McStas" "Scilab" "Matlab" "IDL" "XML" "HTML"
    The default format is McStas/PGPLOT, but may be specified globally using
    the MCSTAS_FORMAT environment variable
  - It is possible to save 3D data arrays, by calling the DETECTOR_OUT_3D macro.
    (handled as 2D by mcplot)
  - The type of the 'number of events' array in monitors was changed from int to
    double, to avoid overflow. Please update your home-made monitors.
  - many dedicated libraries are now available as shared code for reading
    tables, handling data trees and monitors. These are C functions to be
    %included into components (see e.g. lib/monitors/Monitor_nD.comp)
  - The USR2 signal generates an intermediate save for all monitors, during
    the simulation (execute the SAVE section). The USR1 still give informations.
  - a new randvec_target_rect function now focuses on a rectangle
    (more efficient than former randvec_target_sphere=randvec_target_circle)

  Components (in the lib directory)
  - a new data directory contains neutron data tables
  - obsolete directory contains components that were renamed or old.
  - misc/Progress_bar component now exists, and may save data regularly.
  - optics/Monochromator_curved can read reflectivity and transmission tables
  - monitors/Monitor_nD can have automatic limits mode for either all or
    selected monitored variables. It may also plot banana monitors for mcdisplay
    and trigger intermediate savings for all monitors (same as USR2 sig.)
    Also, it may monitor something else than the intensity, e.g. the mean
    energy on a XY psd.
  - sources/Virtual_output can save all neutron events into a file
    (beware the size of the generated files !). Format may be text and binary
  - sources/Virtual_input can read the files generated by Virtual_output
  - optics/Guide_gravity can handle a 2D array of channels
  - optics/Filter_gen can read a table from a file and affect the neutron beam
    (replaces the obsolete 'Flux_adapter'). It may act as a filter or a source
  - samples: they now can all target towards any component, giving its index
    (no need to compute target_x/y/z vector, use e.g. target_index=+1)
  - samples/Res_monitor, Powder1 and V_sample may now have a sphere or box
    shape, and may focus to a circular or rectangular area

  Tools
  - Matlab, Scilab and IDL may read directly McStas results if the simulation
    was executed with the --format="..." option (see 'Run-time' changes)
  - mcplot, mcdisplay, mcgui are now less dependent on the perl/pgplot installed
    versions.
  - mcplot can plot a single simulation data file
  - mcplot, mcresplot, mcdisplay can output gif, ps and ps color. They also
    have integrated help (-h options), and may generate output files in a
    non interactive mode (read file, create output file, exit)
  - mcplot and mcdisplay work with Matlab, PGPLOT and Scilab plotters (set with
    the MCSTAS_FORMAT default setting, or -pPLOTTER, or PGPLOT if not set)
  - mcrun can not currently generate scan results in other formats than McStas
  - mcsats2vitess works now ok for converting a McStas component to a Vitess one


Changes in McStas v1.6.1 (beta), Feb 18th, 2002.

 - a bug was corrected for very small signal statistics automatic limits
   search in Monitor_nD (0.16.4), that could cause parasitc peaks and
   fluctuations in detector.

 - 'optics' components were renamed by categories, starting with Guide_...,
   Monochromator_..., Filter_... etc so that sorting is easier.

 - Monochromator_2foc and Monochromator_curved can now read a reflectivity table
   file (eg. PG) with rows [k, R]. Both components give the same results, and
   can use the same parameters.

 - mcplot can now read a list of detector files, without a '.sim' file. This
   enables to visualise a set of selected monitors, or may be used when the
   mcstas.sim file was deleted. Detector files must be in current directory.

 - the 1D and 2D detectors now compute simple signal statistics (min, max, mean,
   center and width of distributions) which are stored in the detector file
   and shown in plots (mcplot).

 - The Virtual_input replaces the Source_file component (see below), and can
   read text, Vitess and binary float files of neutron events.

Changes in McStas v1.6-ill (alpha), October 29th, 2001.

 - In component definitions, a SHARE keyword followed by a C code block
   %{...}% acts the same as a DECLARE block, but is only included once in an
   instrument. This is very useful when using many identical components
   (guides, monitors, monochromators) to speed-up compiling and perfomrnaces.
     SHARE
     %{ /* included only once for all identical components */
     %}
     DECLARE
     %{ /* included for all components */
     %}
   Then all component programmers may add C functions to the 'kernel'. This is
   only worth when you plan to use a given component many times in a simulation
   (e.g. not for sources or samples). To downgrade a McStas 1.5 component, just
   move the SHARE block C code into the DECLARE block.
 - In an instrument definition, within the TRACE section, each COMPONENT
   instance may include a C code block:
     COMPONENT Comp1 = Guide(...)
     AT (...) ROTATED (...)
     EXTEND
     %{ /* some C code to execute after component Comp1 */
        /* in current coordinate system. You may use Comp1 and global */
        /* instrument variables */
     %}
   For instance, you can here give a 'color' (additional neutron
   characteristic) and modify next components behaviours.
   This block is always executed in groups, but you can test if the componnet
   intercepted the neutron with the SCATTERED variable (if (SCATTERED) { ... }).
 - In an instrument TRACE section, it is possible to put a set of component
   in an exclusive group. Only one of the elements of the group can act on
   the neutron. If no element acts on the neutron, it is absorbed.
   This is specially useful for multi-detectors, multi-monochromators in
   parallel, multiple collimators/guides (e.g. radial).
     COMPONENT Comp1 = Guide(...)
     AT (...) ROTATED (...) GROUP MyGroupName

     COMPONENT Comp2 = Guide(...)
     AT (...) ROTATED (...) GROUP MyGroupName
   Comp1 and Comp2 may even be at the same place.
   For programmers: it is important that the component TRACE section contains a
   SCATTER keyword when it successfully intercepts it, to tell McStas that a
   component in a group acts on a neutron, and can skip other comp in the group.
 - In 'mcplot', it is possible to use the -ps, -psc and -gif options to
   generate a PS, color PS, and GIF file, and exit mcplot (no display).
 - The Monitor_nD was upgraded to correct bugs when reaching the component
   (the propagation was not performed correctly in some cases), and the disk/
   sphere radius (monitor remained then squared). This component now uses
   the SHARE block. A bug was corrected for lists. It can output log and abs of
   signals, and source files (see Source_file).
 - The Gravity_guide now handles correctly the focusing multichannel guides.
   Gravitation is included (on y axis). This component now uses the SHARE block.
   The Channeled_guide does not handle properly the focusing multichannels.
 - The Source_gen component focuses uniformly on the target, and can model
   rectangular, disk, gaussian, and Maxwellian (up to 3 distributions) sources.
   Previous source components did not focus correctly on the target. They were
   also corrected, execpt the 'Source_Maxwell'. Source_gen can replace all thee
   previous sources.
 - A new Source_file component can take as input a text file containing an
   array with columns ' x y z vx vy vz t sx sy sz p', such as the data files
   generated from Monitor_nD with options="list all source". The source may
   be re-generated more than once, which is useful to improve accuracy,
   specially when further components do MC choices. Vitess files and float
   binary files are also ok (auto-recognition of format).
 - The signal handler now gives more info about where a signal was caught.
   For instance it tells in which component part an error occured, to make
   debuging easier.
   Usefull Signals: kill -Signal <pid>
      -USR1: display info and continue simulation
      -USR2: finish simulation and save results
      -QUIT: end simulation immediately
 - The 2D detectors now also output the errors/counts on signal as 1D detectors.
   Set p2=NULL in DETECTOR_OUT_2D to unactivate error saving in components.
 - We tried to lower the number of components by merging similar ones.
 - There are now new MACROS for the component programmer.
     * mccompcurindex is the number (index) of the current component
       (1 is first component of instrument)
     * RESTORE_NEUTRON(index, x, y, z, vx, vy, vz, t, sx, sy, sz, p)
       restores the neutron state to the one at the input of the component
       'index'. To ignore a component effect, use
       RESTORE_NEUTRON(mccompcurindex, x, y, z, vx, vy, vz, t, sx, sy, sz, p)
       at the end of its TRACE section, or in its EXTEND section.
       These neutron states are in the local component coordinate systems.
     * STORE_NEUTRON(index, x, y, z, vx, vy, vz, t, sx, sy, sz, p)
       stores the current neutron state in the trace-history table, in local
       coordinate system. This is automatically done when entering each
       component of an instrument.
     * POS_A_COMP_INDEX(index) is the absolute position of component
       'index'. POS_A_COMP_INDEX(mccompcurindex) is the same as
       POS_A_CURRENT_COMP. You may use POS_A_COMP_INDEX(mccompcurindex+1) to
       make, for instance, your component access the position of the next
       component (this is usefull for automatic targeting).
     * SCATTERED is non zero when previous component acted on neutron (let pass
       or scatter)

   Warning: programmers, do not use anymore the 'mccompcurname' when writing
   your components. rather use the 'NAME_CURRENT_COMP'.

   Other minor modifications
   #cleaned up non used variables in mcstas-r.c/h
   #tested and corrected components
        misc: Vitess_input/output: included Spin from Vitess. (vitess-lib.c/h)
          but can not be used as mcstas can not find vitess-lib.c/h. I included
          what was needed in SHARE sections. now works OK.
        samples:
            Single_crystal (now can take lattice angles, forgot a %} at SHARE
              end)
            provide *.dat diffraction samples from Crystallographica
        optics:
            Beamstop now is a merging of Beamstop_circular and
              Beamstop_rectangular (using default  values to select shape)
            Channeled_guide: now output an error in multichannel focusing mode.
            Chopper: determined default values to have lambda~4 AA. Can handle
              First_Chopper (parameter IsFirst)
            Fermi_Chopper : default values for transmission every ~2 AA
            Gravity_guide: limit loops to max of 1000 bounces for each
              components (to avoid endless loops)
            Mosaic_anisotropic: can take DM (d-spacing). default for graphite.
            Powder_filter (did not work at all, now can take lattice angles,
              also works as a sample, can take samples/*.dat diffraction files)
            Selector: default values for transmission at ~4 AA
            Slit: now is a merging of Slit and Circular_slit (using default
              values to select shape)
            Soller: can take transmission
            V_selector: default values for transmission at ~4 AA
        sources
            Source_gen: can handle all previous sources in one component (up to
              3 Maxwellians). Corrected homogeneity bug for illumination.
            Source_file: can read 'source' files from Vitess, text files (both
              90 bytes/neutron) and float binary  files (e.g, from Monitor_nD
              with options="list all, source binary" which is more compact in
              size, 48  bytes/neutron). Autorecognition of the format. The MCNP
              output is not fixed. Just tell MCNP  guys to output the float
              binary or text file.
   #other tested components:
        monitors: all
        optics: Bender, Curved_Monochromator, Filter, Filter_Graphite,
          Gravity_guide, Mon_2foc,
        Curved_Monochromator, Monochromator
   #not tested: Guide, He3_cell, Mirror, (should be ok ??!!)
   #moved to obsolete components:
        monitors: PSD_monitor_4PI_log.comp, PSD_bidim.comp, PSD_curved.comp,
          PSD_entry.comp,
        samples: Powder0.comp
        optics:
            Beamstop_circular Beamstop_rectangular (gathered into Beamstop)
            First_Chopper (included in Chopper)
            Circular_slit (included in Slit)
            Guide2
            Monochromator0
            Circular_slit
            Soller_trans.comp
   #perl scripts: mcplot (direct output -ps, -psc, -gif)

Changes in McStas v1.5, October, 10th, 2001

Modified components
      A corrected version of Arm.comp. For further information, see the emails by Ulrich
      Wildgruber and Stuart Rycroft. (Apr. 26, 2001)
      A corrected version of  Monitor_nD.comp. For further information, see the email by
      Emmanuel Farhi. (Apr. 26, 2001)
      A rewritten version of Gravity_guide.comp has been contributed by Emmanuel Farhi
      (see email). The component provided in the email works with McStas 1.4.2, but the official
      version of the component is not working with McStas 1.4.2 because support for this
      component has been added to the kernel. (Aug. 7, 2001)
      An updated version of Monitor_nD.comp has been contributed by Emmanuel Farhi (see
      first and second email). The new version of the component is not working with McStas
      1.4.2 because support for the component has been added to the kernel. (Aug. 8, 2001)
      Andrew Wildes and Emmanuel Farhi have detected an error when using focusing
      geometry in Channeled_guide. The slope of the channels is not computed corrected
      correctly, because the same left and right slopes are used in all channels. This has now
      been included properly in Gravity_guide, and it is recommended that this component is
      used. (Sep. 18, 2001)
      The handling of illumination in Source_flat, Source_div and Source_flat_lambda have
      been corrected. (Oct. 9, 2001)
  New components
      The He3_cell.comp has been contributed by Trefor Roberts. It models a cylindrical 3He
      spin filter cell. (Aug. 8, 2001)
      The Mon_2foc.comp has been contributed by Peter Link. It models a double bent
      monochromator with multiple slabs. (Aug. 9, 2001)
      The Bender.comp has been contributed by Philipp Bernhardt. It models a curved neutron
      guide. (Aug. 10, 2001)
      The Powder_filter.comp has been contributed by Ben Fortescue. It models a general
      box-shaped powder filter. (Aug. 16, 2001)
      The Source_Maxwell_3 component describes a source with three Maxwellian
      distributions. (Sep. 17, 2001)
      Various monitors have been added: EPSD_monitor, PSDcyl_monitor, PSDlin_monitor,
      TOF_cylPSD_monitor, TOFlog_mon. (Sep. 18, 2001)
          A minor error in TOF_cylPSD_monitor has been corrected. (Oct. 9, 2001)
      A new monitor TOFLambda_monitor has been added. (Oct. 9, 2001)
      A guide modeling waviness, Guide_wavy, has been added. (Oct. 9, 2001)
      A generic source, Source_gen, has been added. (Oct. 10, 2001)
  The signal handling system has been updated to handle a special case. The signal handling
  system will be documented in the manual of version 1.5. (Aug. 7, 2001)
  The representation of polarisation in McStas components and instruments is supposed to work
  as follows. Only components actually modifying the spin explicitly require the "POLARISATION
  PARAMETERS (sx,sy,sz)" line. An instrument handling polarisation may consist of  components
  both with and without this line; it will transform the spin vector correctly anyway. The
  "POLARISATION PARAMETERS (sx,sy,sz)" line is therefore removed from all official
  components not dealing with polarisation. The reason is that for instruments without polarisation
  some simulation time is gained by excluding the transformations of the spin vector. (Aug. 9,
  2001)
  Some definitions have been added that can be used in coding components:
      NAME_CURRENT_COMP gives the name of the current component as a string. (Aug.
      16, 2001)
      POS_A_CURRENT_COMP gives the absolute position of the current component. A
      component of the vector is referred to as POS_A_CURRENT_COMP.i where i is x, y or z.
      (Aug. 16, 2001)
      ROT_A_CURRENT_COMP and  ROT_R_CURRENT_COMP give the orientation of the
      current component as rotation matrices (absolute orientation and the orientation relative to
      the previous component, respectively). A component of  a rotation matrice is referred to
      as  ROT_A_CURRENT_COMP[m][n], where m and n are 0, 1, or 2. (Aug. 16, 2001)
      POS_A_COMP(comp) gives the absolute position of the component with the name
      comp. Note that comp is not given as a string. A component of the vector is referred to as
      POS_A_COMP(comp).i where i is x, y or z. (Aug. 16, 2001)
      ROT_A_COMP(comp) and ROT_R_COMP(comp)  give the orientation of the
      component comp as rotation matrices (absolute orientation and the orientation relative to
      its previous component, respectively). Note that comp is not given as a string. A
      component of  a rotation matrice is referred to as  ROT_A_COMP(comp)[m][n], where
      m and n are 0, 1, or 2. (Aug. 16, 2001)

Changes in McStas v1.4.1, March 16, 2001

 - New components: ESS_moderator_long.comp and ESS_moderator_short.comp
   (by Kim Lefmann), Source_Maxwell (by Emmanuel Farhi). Gravity_guide.comp
   is included in the official version.
 - Some support for the calculation of correlation functions in the
   components Monitor_nD and PreMonitor_nD (by Emmanuel Farhi)
 - A signal handling system is included (by Emmanuel Farhi)
 - Misc. minor bug fixes
 - For more information:
   http://neutron.risoe.dk/mcstas/developments/developments.html


Changes in McStas v1.4, July 28, 2000:

 - It is now possible to use arbitrary C expressions in the instrument
   definition, ie. to set rotations, component parameters, etc. Only
   works for SETTING parameters though, not DEFINITION parameters.
 - Experimental mcstas2vitess conversion program to automatically
   translate a McStas component into a VITESS module.
 - Option to clear the simulation output in mcgui.
 - Partial solution to the problem with name conflicts on component
   parameters.
 - Partial NeXus support implemented, but not yet functional.
 - Misc. minor bug fixes.



Changes in McStas v1.3, May 18, 2000:

 - New facility `McDoc' for documentation of components, with
   automatic extraction of documentation from comment headers in the
   source code.
 - The possibility in the graphical user interface `mcgui' to build
   instrument definitions using "point-and-click", based on McDoc.
 - Much improved `mcrun' front-end, which now replaces the old `gscan'
   front-end and interfaces with `mcplot'.
 - Optional component input parameters.
 - Instrument parameters may now also be of string type.
 - Improved Single_crystal component, now supports anisotropic mosaic,
   multiple scattering, extinction, absorbtion, and incoherent
   scattering.
 - New components Source_Optimizer and Monitor-nD, by Emmanuel Farhi.
 - Misc. minor bug fixes.



Changes in McStas v1.2, January 31, 2000:

 - New components (Single_crystal, Mosaic_simple, Source_adapt,
   Res_sample, ...).
 - New graphical user interface mcgui.
 - New command-line front-end mcrun with automatic compilation
   (experimental).
 - New resolution function front-end mcresplot (experimental).
 - Better random number generator "Mersenne Twister".
 - Fix for problem with Digital Unix almost-ANSI compiler.
 - Misc. minor bug fixes.



Changes in McStas v1.1, March 31, 1999:

 - New components.
 - Much improved output file format, with new mcplot front-end to
   automatically plot the results of a simulation.
 - New MCDISPLAY sections in component definitions, and much improved
   mcdisplay front-end.
 - New kernel calls DETECTOR_OUT_[012]D(), mcget_ncount().
 - Improved error messages.
 - New --portable compiler option.
 - Various minor bug and compatibility fixes.
 - Preliminary support for polarised neutrons.
 - Quote special characters in strings in the generated C code.



Changes in McStas v1.0, October 26, 1998:

 - Initial release.
