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
