Ncrystal

Latest version: v3.9.7

Safety actively analyzes 685670 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 8 of 12

2.3.1

* Small bugfix fixing the loading of dynamic plugins.
* Ensure plugins are loaded before file searching is carried out. This
allows plugins to register in-memory files.

2.3.0

* Replace span class with a fully home-grown solution. This means that all
core NCrystal code is once more fully available under the primary
license (the Apache 2.0 license).
* Cfg parameters scatfactory and absnfactory now supports exclusion of
specific named factories. This is used to (by default) exclude current
factory from consideration when globalCreateScatter/Absorption is
invoked from a factory (github issue 51).
* Replace the '$(ncrystal-config --setup)' idiom with one which works also
when entries in PATH contains spaces: 'eval $(ncrystal-config --setup)'
(github isse 52).
* Rename internal radius variable in McStas sample, to avoid clashes with
component parameter (apparently this gave issues for McStas 3.0).

2.2.2

* Bugfix for system-wide installations. Input files were
accidentally opened in RW mode rather than just readonly, causing
permission errors when user invoking NCrystal did not have
write-permission to the input file. Thanks to the McStas crew for
noticing this.

2.2.1

* Bugfix restoring support for .nxs/.laz/.lau files which was accidentally
disabled in v2.2.0.
* Modify CMake code slightly to avoid warnings or unset CMAKE_BUILD_TYPE
under certain conditions where NCrystal is included as a sub-project.

2.2.0

* Support plugins (github issue 50)! Such plugins can be externally
developed (for instance on GitHub), and either loaded dynamically at
run-time by NCrystal or statically compiled into the NCrystal library
(see the next item). How to use or develop plugins is described in
more detail at https://github.com/mctools/ncrystal/wiki/Plugins .
* Major revamp and modernisation of CMake configuration code. Client code
can now find NCrystal via find_package statements (github issue 45),
which makes an NCrystal::NCrystal library target available. Geant4-code
needing the Geant4-NCrystal hooks must instead search for G4NCrystal
with find_package and add a dependency on the G4NCrystal::G4NCrystal
target. The new CMake code also facilitates static inclusion of
externally developed plugins (if for some reason this is preferred to
dynamic loading of the plugins). NCrystal now requires CMake 3.10.
A side-effect of the modernised CMake code is that installation
directories are affected somewhat.
* Add ncrystal-config script which can be queried for details about a
given installationn, or even used to setup the user environment by
typing $(./path/to/ncrystal/installation/bin/ncrystal-config --setup) in
a shell. The installed setup.sh file now simply wraps such a call.
A side-effect of the work on ncrystal-config and CMake is that NCrystal
installations are in general more relocatable and should continue to
function even if the installation directory is moved.
* Officially stop support of Python2 (github issue 48). Python2 (and many
major Python projects) had EOL January 2020, and PyPI (aka pip install)
has announced end of support for Python2 by January 2021. Users needing
to use NCrystal with Python2 will have to stick with NCrystal release
v2.1.1.
* Add support for NCRYSTAL_DATA_PATH variable, checked after
NCRYSTAL_DATADIR env. var and NCRYSTAL_DATADIR preprocessor definition
(github issue 49).
* Add ability to browse a list of available .ncmat files (of course only
those in the current working directory or search path). Can for instance
be accessed via "ncrystal_inspectfile --browse" (github issue 5). The
same tool can also --extract content of available files, and display
available plugins with --plugins.
* Fix Python interface cleanup-order bug where __del__ method could refer
to an already removed ctypes module at programme shutdown.
* Fix silly bug where W was left out of the alphabet in a few places.
* Fix big affecting printing of MatCfg objects with in-memory datafiles.
* Remove obsolete functions naturalElementDB and naturalElementDBByName
from Python interface (use the atomDB function instead), and update the
ncrystal_endf2ncmat script to work with new atomDB interface.
* Modernise C++ code, preventing raw new/delete usage and associated
memory management woes. RCHolder objects can be automatically converted
when possible (to const ptr or base class ptr), and add makeRC / castRC
/ static_castRC functions, similar to std::make_unique and
std::make_shared, but for instantiating classes derived from RCBase
directly into an RCHolder object. Apply new features throughout
codebase, and fix a slew of compilation warnings (mostly for clang12 or
gcc 4.8).
* Add DynLoader utility class for dynamic loading of shared libraries and
access to contained functions (used for dynamic plugin loading).
* Add common utilities for reading environment variables.
* Add ncglob function for file globbing.
* Add FactoryBase::combineScatterObjects helper method to encapsulate
the workarounds still needed in custom scatter factories.

2.1.1

* Reverse minor change in NCDefs.hh, which meant that client code which
was including public NCrystal C++ headers was prevented from using constants
like M_PI and friends (of course, usage of such constants is not
portable, and thus not really recommended). Release 2.1.1 is otherwise
completely identical to release 2.1.0.

Page 8 of 12

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.