Version 4.1.3 Tom Schoonjans - Fix bug in python meson build, resulting in numpy integers not being accepted by SWIG generated python bindings (reported by Christian Koernig) Version 4.1.2 Tom Schoonjans - Fix edge case in CS_Photo_Partial, where Kissel edge energies don't actually correspond to the first energy in the list of energies (reported by Ulla Vainio, and fixed by Oleg Shirokobrod) - Fix memory leak in SWIG generated Python bindings (reported by David Vine) Version 4.1.1 Tom Schoonjans - Do not use distutils in autoconf macros, as it will not be available in python 3.10 - Drop the `cython` option for the meson buildscript, as it became a reserved option in meson 0.59.0 Version 4.1.0 Tom Schoonjans - Add meson as alternative buildsystem - Add API to calculate XRF cross sections for whole shells, instead of individual lines (suggested by Oleg Shirokobrod) - Lightweight C++ wrappers through a header-only library (contributed by Marius Schollmeier and myself) - Add Google Analytics tracking to Python bindings and Java implementation - Update L values of CosKronTransProb and FluorYield for W, Re, Sn and Sb, using work from Ayri, Kaur, Kumar, Czyzycki, Karydas and Puri Version 4.0.0 Tom Schoonjans Major changes: - Drop xraylib command-line executable - Add proper, thread-safe error handling support through an extra argument in the C API, which is transformed into an exception in the other bindings. The old error handling functions have been deprecated. New API added to xraylib-error.h - Add unittests, lots of them, for all supported languages. - Deprecate IDL bindings: they work for now, but do not support the new error handling mechanism, and will no longer be actively developed. - Rewrite Java bindings, produce sources and javadoc jars, and publish to Maven and JFrog. Minor changes: - CompoundParser: do not allow lower case characters after digits (bugfix) - SymbolToAtomicNumber: deal gracefully with NULL (bugfix) - PHP bindings: create RPM package - SWIG: parse xrf_cross_sections_aux.h - Symbol visibility has been reduced. - CosKronTransProb: remove old _TRANS macros - AugerYield and CS_FluorLine_Kissel: introduce FLP13_TRANS correction - PM5_full_cascade_kissel: fix bug - xrf_cross_sections_aux: improve performance - Do not allow extrapolation with splint Version 3.3.0 Tom Schoonjans - Anomalous scattering factors: switch to EPDL97 (thanks to Chris Jacobsen and Ming Du for reporting spikes in RTAB data) - Windows installer: remove python and IDL bindings - RPM packages: remove IDL bindings - Support Anaconda Windows build - Support PHP7 - Add __version__ to Python modules (requested by Jonas Adler) - Support numpy scalars in SWIG generated Python bindings (requested by David Larsson) - Python example style improvements (contributed by Jonas Adler) - CompoundParser: compoundData now also contains nAtoms and molarMass - Cython generated Python bindings: use OpenMP Version 3.2.0 Tom Schoonjans - Python3 support in Fedora RPM packages - Pascal/Delphi bindings added (thanks to Matthew Wormington for his contributions) - pure Java implementation of xraylib: jar created with OSGI support - SymbolToAtomicNumber: char* changed to const char* - New API: Crystal_GetCrystalsList - K-shell fluorescence yields revised (thanks to Alex Simionovici for reporting this) - Cython bindings added to Windows installers - Several bugfixes: thanks to those that reported them! Version 3.1.0 Tom Schoonjans - Database of commonly used radionuclides for X-ray sources added (new API: GetRadioNuclideDataByName, GetRadioNuclideDataByIndex, GetRadioNuclideDataList and FreeRadioNuclideData) - numpy Python bindings added, generated with Cython. Performance basically the same as the core C library. (suggested by Matt Newville) - docstring support added to Python bindings (suggested by Matt Newville) - Windows SDKs now have support for Python 3.4. - Windows 64-bit SDK now comes with IDL bindings - Confirmed support for LabView (thanks to Dariush Hampai!) - Universal intel 32/64 bit Framework built for Mac OS X - Perl support for Debian/Ubuntu - Several bugfixes: thanks to those that reported them! Version 3.0.0 Tom Schoonjans - Moved all floats to doubles - Added support for Python3 (CLI) - NIST compound data included (new API: GetCompoundDataNISTByIndex, GetCompoundDataNISTByName, GetCompoundDataNISTList and FreeCompoundDataNIST) - All _CP functions now also support the NIST compound names. - Element density function added, using values from NIST (new API: ElementDensity) - Bindings for new languages: Ruby and PHP - Fluorescence yields and CK transition probabilities updated according to J.L. Campbell's Atomic Data and Nuclear Data Tables 95 (2009) 115–124 - Auger non-radiative rates extended. Consists now of almost 1000 macros. (new API: AugerYield) - Cascade effects improvements - Mass-energy absorption cross sections added from NIST. (new API: CS_Energy and CS_Energy_CP) (requested by Piernicola Oliva) - CompoundParser prototype changed!!! (new API: FreeCompoundData) - strict ANSI-C compliance for core library, thanks to Oleg Shirokobrod for providing the necessary patches! - Complex datatype changed to xrlComplex!!! - Refractive_Index_* functions now use double instead of floats (thanks to Manuel Sanchez del Rio for pointing out the problem). (new API: Refractive_Index, returns xrlComplex) - Fortran: changes to CompoundParser and Crystal_GetCrystal. All functions now use Fortran strings instead of C-style strings - CompoundParser now accepts real numbers as coefficients (requested by Olivier Tache) - Greatly enhanced documentation at http://github.com/tschoonj/xraylib.wiki - Windows 64 bit SDK - Many bugfixes and under-the-hood improvements Version 2.16.0 Tom Schoonjans -Crystal diffraction functions added (David Sagan): -Bragg angle -Q scattering amplitude -Atomic factors -Crystal F_H structure factor -Unit cell volume -d spacing -Perl and Python bindings updated to provide support for non-trivial arguments and return values -Lua bindings added -Codebase restructured: separate directory for each binding Version 2.15.0 Tom Schoonjans -Auger probabilities (AugerRate) and its macros -Revised interpolation scheme of the Kissel PE cross-sections -M-shell Coster-Kronig transition probabilities -XRF CS with cascade effects!! -Atomic level widths Version 2.14.1 Tom Schoonjans Bugfixes. See the following links for more information: http://github.com/tschoonj/xraylib/issues/closed/#issue/2 http://github.com/tschoonj/xraylib/issues/closed/#issue/3 http://github.com/tschoonj/xraylib/issues/closed/#issue/4 http://github.com/tschoonj/xraylib/issues/closed/#issue/5 http://github.com/tschoonj/xraylib/issues/closed/#issue/6 Version 2.14.0 Tom Schoonjans -Added Biggs Compton profiles (both total and partial) -Fixed Siegbahn macros for LineEnergy, CS_FluorLine and RadRate -Added Siegbahn macros for single lines -Added IDL and Python bindings for Windows -Created xraylib.exe for Windows -Added support for .NET on Windows -Several bugfixes and minor improvements API additions: ComptonProfile, ComptonProfile_Partial and ElectronConfig More info can be found in the commit messages Version 2.13.1 Tom Schoonjans -Corrected radrate database: 2.13.0 was using scofield for K and campbell for L instead of Krause data -"make clean" now works properly -Changed the way the RadRate of Kbeta lines are being calculated, now RadRate(KB_LINE) = 1.0 - RadRate(KA_LINE). Anyway, the way the RadRates are being calculated should be reviewed in the version. Siegbahn macros should be added for more lines. -Added NSIS script to produce a Windows installer: this installs the required files for development on Windows, including headers, dll, static libs with exported functions and some documentation. The Windows SDK has been verified to work with Microsoft Visual C++, Borland 5.5 and Intel C/C++ 11.1 Also: the Windows dll works with LabView... Version 2.13.0 Tom Schoonjans -Expanded the radrate database (150 linetypes available now, including M lines) -More line energies: the new database was calculated using the edge energy database and contains every theoretical possible transition. 381 linetypes are available -Kissel database fixes: since the Kissel edge energies do not correspond to the ones found in the edge energy database this could lead to unpredictable behaviour near the edges. This has been fixed by using the Kissel calculated edge energies. -Compound parser: we have added a parser for compounds which will determine information such as number of different elements, number of atoms per element and weight fractions. This parser has been coupled with several cross section functions. -Refractive indices: we added two functions that calculate the real and imaginary parts of the refractive index of a given compound. -Numerous bugfixes: an important one would be the restoration of IDL support on Mac OS X Snow Leopard -Creation of IDL bindings rpm -Added Java bindings (requires Sun JAVA compiler): works on Linux and Mac Os X -Verified support on FreeBSD 8.0 64-bit Version 2.12.1 Tom Schoonjans Fixed bug in installation scripts that caused the perl and IDL bindings compilation phase to fail under certain circumstances Version 2.12 Tom Schoonjans Build system has changed completely: the new system is based on autoconf, automake and libtool. Tests were conducted on different systems using different compilers. An overview: C-library: linux (Fedora 10 (gcc 4.3.2) and 11 (gcc 4.4.0), both 64-bit), Mac OS X (Leopard (gcc 4.0.1 and gcc 4.4.0) Intel 32-bit), Solaris 10 (Sun C 5.10 32-bit) Fortran bindings: linux (Fedora 10 (gfortran 4.3.2) and 11 (gfortran 4.4.0), both 64-bit), Mac OS X (Leopard (gfortran 4.4.0, g95 and ifort) Intel 32-bit), Solaris 10 (Sun Fortran 95 8.4 32-bit) Perl bindings: linux (Fedora 10 (perl 5.10.0) and 11 (perl 5.10.0), both 64-bit), Mac OS X (Leopard (perl 5.8.9) Intel 32-bit), Solaris 10 (perl 5.8.4 32-bit) Python bindings and xraylib executable: linux (Fedora 10 (python 2.5) and 11 (python 2.6), both 64-bit), Mac OS X (Leopard (python 2.5) Intel 32-bit) IDL bindings: linux (Fedora 10 (idl 7.1) 64-bit), Mac OS X (Leopard idl 7.0 Intel 32-bit) A spec file and pkg-config files were added as well. RPM packages were created for Fedora 10 and 11 x86_64 systems. Version 2.11 Tom Schoonjans Complete rewrite of the IDL bindings, using the DLM approach. Definition of the COMMON block XRAYLIB containing all the xraylib macros. This has the advantage that these convenient variables can now be used inside functions and procedures. An example is provided in xrlexample5.pro. In order for IDL to find the XRayLib DLM at runtime it is necessary that the user makes sure that the IDL_DLM_PATH environment variable points to the idl subdirectory of the xraylib installation folder! Version 2.10 Tom Schoonjans Minor changes: adjusted the placing of xraylib.mod into lib for the gfortran compiler Definition of two macros in xraylib.h: XRL_VERSION_MAJOR and XRL_VERSION_MINOR Recalculation (smoothing) of second derivatives of kissel cross section data. This was done to avoid erratic behaviour of interpolation near absorption edges. Support for IDL bindings on Mac (Tested on an Intel Mac running Mac OS X 10.4 and IDL 7.0) Minor changes to install.sh: Python bindings disabled when running on Mac etc... Version 2.9 Tom Schoonjans Introduction of partial photoelectric cross sections (data of L. Kissel) -> kissel_pe.dat New functions were added based on these partial PE CS: // Kissel Photoelectric cross sections float CS_Photo_Total(int Z, float E); float CSb_Photo_Total(int Z, float E); float CS_Photo_Partial(int Z, int shell, float E); float CSb_Photo_Partial(int Z, int shell, float E); // XRF cross sections using Kissel partial photoelectric cross sections float CS_FluorLine_Kissel(int Z, int line, float E); float CSb_FluorLine_Kissel(int Z, int line, float E); // Total cross sections (photoionization+Rayleigh+Compton) using Kissel Total // photoelectric cross sections float CS_Total_Kissel(int Z, float E); float CSb_Total_Kissel(int Z, float E); The user is now given the opportunity to choose at installation time between hardcoding the data or calling the data at run time with XRayInit. TODO: rewrite the IDL bindings completely in favor of the DLM approach, recommended by IDL Version 2.8 Tom Schoonjans All the physical data is now hardcoded during the compilation phase, making the initialization at run time redundant. (Thanks to Teemu Ikonen for contributing the code) Added bindings for Perl and Fortran 2003. For use of the Fortran 2003, a recent compiler like Intel Fortran 10.0, G95 or GFortran 4.3.0 is needed. The installation scripts are now gone and have been replaced by a Makefile Partial support for Mac OS X -> C, C++ dynamic libraries compile and run, as well as the Fortran and Perl bindings. The Python bindings do not work. The IDL bindings have not been tested yet. Examples for C shared libraries, Perl and Fortran bindings were added. SWIG is now a requirement for using the Perl and Python bindings. Version 2.7 - Added anomalous scattering factor Fii (fii.c, fii.dat) Version 2.6 Fixed installation of dynamic library for c++ (libxrl++.so) Version 2.5 Major updates from previous version (2.4): - Added anomalous scattering factor Fi (fi.c, fi.dat) Fixed bugs and updates from previous version (2.4): - Fixed bugs on installation scripts - Fixed problems with swig and python new releases Version 2.4 Fixed bugs and updates from previous version (2.3): - Fixed bugs on installation scripts Version 2.3 Major updates from previous version (2.2): - All partial lines added to CS_FluorLine in cs_line.c Fixed bugs and updates from previous version (2.2): - Version 2.2 Major updates from previous version (2.1): - Partial lines included Fixed bugs and updates from previous version (2.1): - ShellName expanded in xrayglob.c, SHELLNUM increased to 28 in xrayglob.h - Shell names #define placed in file shells.h - LineName expanded in xrayglob.c, LINENUM increased to 50 in xrayglob.h - Line names #define placed in file lines.h - fluor_lines.dat updated by file with partial lines - radrate.dat updated by file with partial lines - Fluorescence Energy converted from eV to KeV (/1000) - xraylib.i modified - KA_LINE, KB_LINE, LA_LINE and LB_LINE are now calculated in terms of partial lines in fluor_lines.c and radrates.c - shells.pro and lines.pro defines the lines and shells names for IDL - documentation updated - Only 4 lines in CS_FluorLine (file cs_line.dat) KA, KB, LA, LB - Example of use with C program added To be done: - Add more lines in CS_FluorLine (file cs_line.dat) - Write documentation in a more organized way - Improve example Version 2.1 Fixed bugs and updates from previous version (2.0): - Python and IDL exited after an error/warning message - Added flags ExitStatus, HardExit - Added Functions SetHardExit, GetExitStatus, SetExitStatus - Warning messages added for non-available lines, transitions, etc. - Banner text moved in doc directory - In fluor_lines.dat unexistent fluorescent lines reproduced previous line Unexistent lines removed - edges.dat and corresponding documentation in xraydoc.txt updated - include/xraylib.h defined as symbolic link to src/include.h - made install.sh script - output precision changed to %.5g in script To be done: - fluorescent line LB corresponds to LB1 - fluorescent line LA corresponds to LA1 ?? - in radrate.dat fluorescent line LA does not correspond to anything