******************************************************************************** RELEASE NOTES FOR HEASOFT 6.37 August 13, 2026 ******************************************************************************** The HEASoft 6.37 release is driven by new and updated mission- specific data analysis software (IXPE, MAXI, NuSTAR, XRISM, et al.), but as usual includes other enhancements and fixes. Configuration-related changes throughout the package mean that users who already have HEASoft installed will need to completely replace their software installation; there is no clean way to simply overlay this new release or to update an existing installation. We continue to support installation of HEASoft from the source code distribution, but starting with this release we no longer offer our traditional pre-compiled binaries and instead recommend installing pre-built HEASoft tools via the Conda package manager: https://heasarc.gsfc.nasa.gov/docs/software/conda.html Please note that HEASoft 6.37 is the last major release in which we intend to provide the FITSViewer GUI ("FV"). Support for FV will be discontinued in future releases in favor of a new utility "fviewer", available now via 'pip': pip install fviewer https://heasarc.github.io/fviewer/ The fviewer utility is included for testing in our 6.37 Conda packages. ******************************************************************************** CFITSIO ******************************************************************************** Version 4.7.0: - This release includes patches to security vulnerabilities. We strongly encourage this upgrade, particularly for those running CFITSIO in web accessible applications. Our thanks to A. Denkiewicz and Z. Bugaud for their extensive help with this. - New test framework added, containing a collection of unit tests. Our thanks to W. Pursell for contributing this. - Bug fix for parsing octal integer constants in expressions. Our thanks to 'Cruzzil_Code' for submitting this. - Enhanced output from uncompress2mem_from_mem function. - Appended 'fits_' prefix to stream driver function names to reduce chances of potential symbol name conflicts with outside libraries. Our thanks to 'rtobar' for submitting this. ******************************************************************************** ATTITUDE ******************************************************************************** - coordpnt: Bugs fixed in converting coordinates of region files. ******************************************************************************** HEAGEN ******************************************************************************** - burstfinder: Replaced VLAs with dynamic memory allocation - hpextract: Fixed issue with array columns, including TBIT type allocation correction ******************************************************************************** HEASARC ******************************************************************************** - extractor (legacy Fortran): EQUINOX and RADECSYS are no longer written to the output when they were not present on input. Please also note, in the HEASPTOOLS package: ftextractor: a new C++ event extractor (built on the new heaev event-handling library) that is the modern replacement for the Fortran extractor and is called by XSELECT in its place for most missions (see xselect below). It can also be run standalone. Beyond reproducing extractor's products (events, image, spectrum, light curve, WMAP), it adds: * Joint spectropolarimetric output (Stokes covariances). With stokescov=QU (default) or IQU, ftextractor writes the inter-spectrum covariances between the Stokes I/Q/U spectra as per-bin XCOV columns plus grouping keywords (XCOVSIB / COVGRP / COVIDX / NCOVMEM, COVFRMT='XCOV-PAIR-1' or 'XCOV-SET-1'). This lets XSPEC fit the Stokes spectra jointly with the new chistokes/chicov statistic instead of treating Q, U (and I) as independent. stokescov=NONE restores the old independent-spectra behaviour. (Stokes I/Q/U extraction itself, via stokes=NEFF/SIMPLE/UNWEIGHTED, is unchanged from extractor.) * Single-pass multi-product extraction. A single run can now fan one pass over the events into many output products -- one per region, one per time interval (timesplit=yes), or one per phase window (phasewndfile=@list) -- rather than re-reading the events once per product. XSELECT drives this through its new "per=" modifier on "extract". ******************************************************************************** HEASP / HEASPTOOLS ******************************************************************************** HEASP: - Neural-network table-model emulation. Table-model files may carry an NNPTFILE keyword pointing to a PyTorch (.pt) network that emulates the model; enabled via the new --with-libtorch configure option. - Polarization cross-covariance. Support for Q/U cross-covariance between spectra (XCOV), backing the new chistokes/chicov statistics. - SVD-compressed RMFs -- a compressed RMF side-car representation (used by the new ftsvdcmprmf tool). - Analytic gradients for OGIP table models. - pha/rmf changes to existing behaviour: TLMAX is now written in pha::write; scalar QUALITY/SYS_ERR keyword values are now preserved on read; rmf::read now validates F_CHAN+N_CHAN against TLMIN+DETCHANS (malformed RMFs that previously loaded silently may now be flagged). HEASPTOOLS: - ftsvdcmprmf (NEW): builds an SVD-compressed RMF side-car (with an optional --emitrmf denoising mode). - ftextractor: a new C++ event extractor (built on the new heaev event-handling library) that is the modern replacement for the Fortran extractor and is called by XSELECT in its place for most missions (see xselect below). It can also be run standalone. Beyond reproducing extractor's products (events, image, spectrum, light curve, WMAP), it adds: * Joint spectropolarimetric output (Stokes covariances). With stokescov=QU (default) or IQU, ftextractor writes the inter-spectrum covariances between the Stokes I/Q/U spectra as per-bin XCOV columns plus grouping keywords (XCOVSIB / COVGRP / COVIDX / NCOVMEM, COVFRMT='XCOV-PAIR-1' or 'XCOV-SET-1'). This lets XSPEC fit the Stokes spectra jointly with the new chistokes/chicov statistic instead of treating Q, U (and I) as independent. stokescov=NONE restores the old independent-spectra behaviour. (Stokes I/Q/U extraction itself, via stokes=NEFF/SIMPLE/UNWEIGHTED, is unchanged from extractor.) * Single-pass multi-product extraction. A single run can now fan one pass over the events into many output products -- one per region, one per time interval (timesplit=yes), or one per phase window (phasewndfile=@list) -- rather than re-reading the events once per product. XSELECT drives this through its new "per=" modifier on "extract". ******************************************************************************** HEATOOLS ******************************************************************************** - ftmerge: fixed corrupted output when input files have different TSCAL/TZERO; propagate TNULL keywords from subsequent input files - ftverify: Fixed CFITSIO version number in ftverify output ******************************************************************************** XSELECT ******************************************************************************** xselect v3.0: - xselect has been reimplemented in C++ (previously Fortran). Behaviour is intended to be unchanged. - Session/save files are now written in a human-readable "name=value" format rather than the old Fortran-formatted layout. - New extraction backend. Missions can use "ftextractor" instead of "extractor" if set in the xselect.mdb file. This change has been made for ASCA, AstroSat, MAXI, IXPE, Chandra, Suzaku, XMM, NICER, ROSAT, Hitomi and HaloSat. - New "per=" modifier on "extract" for multi-axis (region/time/phase) fan-out in a single pass. - Phase-filter stack: "filter phase" now appends to a stack (with save/persistence); "list filter" shows every entry. ******************************************************************************** XSPEC ******************************************************************************** Xspec version 13.0.0: Version 13.0 is a major release whose principal theme is Bayesian inference and global optimization. A new chapter on Bayesian methods and a new Algorithms appendix describe the analytic-gradient and response-compression machinery that underpins many of the features below. For full details, please reference the Xspec User Manual: https://heasarc.gsfc.nasa.gov/FTP/software/xspec/XspecManual/XspecManual-13.0.0.pdf Spectral Model Data Files: - Spectral model data files are no longer shipped with HEAsoft. The new ftgetmodeldata tool downloads, on demand, the data files required by the models in use, over the network (via cURL), with version lookup (including a latest option), a manifest file (modelDataFiles.csv), and clobber and dry-run options. See: https://heasarc.gsfc.nasa.gov/docs/software/xspec/modeldata.html Bayesian inference and optimization: - Closed-form analytic derivatives (Jacobians and their reverse- mode vector-Jacobian products) are now available for the great majority of the model library. These provide a fast Levenberg- Marquardt path, in which the gradient is computed analytically in a single pass rather than by finite differences, and supply the posterior gradient used by the new Hamiltonian Monte Carlo sampler. - New hmc command: a No-U-Turn-Sampler variant of Hamiltonian Monte Carlo over the thawed parameters, using the analytic posterior gradient. It supports warmup adaptation of the leap- frog step size and diagonal mass matrix, multiple independent chains (parallelized with "parallel hmc"), and checkpoint/resume. Output is written in a format compatible with "chain load". - New nest command: a multi-ellipsoidal nested sampler that produces weighted posterior samples together with an estimate of the marginal likelihood (model evidence, log Z). It supports checkpoint/resume and parallel sampling ("parallel nest"). - New compare command: automated model selection. Alternative models are evaluated against the current data and ranked by the Akaike and Bayesian information criteria, by Bayesian evidence ("compare nest"), or by fitting each alternative with the global optimizer ("compare global"). - New "fit global" option: a derivative-free global optimization by Differential Evolution followed by a polish with the current fit method. It is never-regress (the original fit is restored if no improvement is found), reproducible under "xset seed", parallelizable with "parallel global", and reports any competitive minima within delta stat < 9 of the best fit. The improve command now uses the same Differential Evolution machinery as a local warm-restart and works with all fit methods, not just the Minuit methods. - The Minuit fit methods (migrad, simplex) were overhauled: Minuit now works directly in the parameter's stored value (so a fit started between a parameter's soft and hard limits reaches the same minimum as one started inside them), hard limits are passed to Minuit only when they span a range of 100 or less, and a fit that stops short of the minimum now says so instead of reporting convergence --- with different warnings for running out of function evaluations (fit again to continue) and for Minuit finding no direction of improvement. See the method command. - New "bayes smooth" subcommand: a multi-parameter smoothness prior that couples a chosen parameter across datagroups, penalizing shell-to-shell roughness. It is the in-engine regularizer for projct de-projection, with automatic selection of the regularization strength by the L-curve or discrepancy principle. Several new single-parameter prior families were also added (cauchy, beta, studentst, halfnormal, powerlaw, isotropic, lognormal, gamma, and shiftedlognormal). - Added an MCMC diagnostics suite, including the Rubin-Gelman R_hat convergence statistic, and gave chain, hmc and nest a common sample format. - PyXspec gained a unified Bayesian-inference module (runHMC, runChain, shared result objects, and arviz interoperability), a new module providing numpy vectorization for local models, and several new methods and attributes (mostly added to the Fit class). New fit statistics - chistokes: a chi-squared variant that uses the per-bin Stokes Q/U cross-covariance when fitting polarization spectra, rather than treating Q and U as independent. It has been generalized to an arbitrary n-member cross-spectrum covariance group (with the chicov alias), so any set of bin-by-bin correlated spectra --- overlapping extraction regions, grating orders, or the full Stokes I/Q/U triple --- can be fit jointly with a multivariate- Gaussian likelihood, per-bin Cholesky solve and graceful shrinkage of non-positive-definite covariances. The covariances are carried in the spectrum files (COVFRMT='XCOV-SET-1'; legacy Q--U pair files are auto-promoted), produced by the ftextractor tool (stokescov=iqu) and summed under grouping by ftgrouppha. See the Statistics Appendix. New models: - Four X-ray spectropolarimetric reflection models based on precomputed STOKES tables, designed for joint fitting of the Stokes I/Q/U spectra: stdisc (reflection of a power-law source of arbitrary incident polarization from the distant, nearly neutral equatorial regions of an accretion disc), and sttorus, stcone and stbowl (reflection from an optically thick, axially symmetric torus, double cone, or double bowl -- representing e.g.\ an opaque AGN torus, a broad-line region, or a super-Eddington accretion funnel -- with partially ionized, neutral, or Chandrasekhar electron-scattering surfaces). Modifications to models: - The broadening of the APEC/SPEX pseudo-continuum (set by the BROADPSEUDO xset option) now uses an FFT and accepts fast and slow options. The fast option (equivalent to on) uses an abundance-weighted atomic mass so that a single FFT broadens all elements at once, about five times faster than the per-element slow calculation. - The gsmooth and lsmooth convolution models use an FFT for the index 0 and index 1 cases, giving order-of-magnitude speed-ups, and cache the kernel FFT when it has not changed. - Added a check that warns (yellow alert) when the fiducial energy at which a line width is specified falls outside the input energy range. - Table models (atable, mtable, etable) may now carry a neural network (NN) emulation of the tabulated spectra, indicated by an NNPTFILE keyword in the table file pointing to a PyTorch (.pt) weights file. When such a table is loaded XSPEC automatically evaluates the model with the neural network instead of interpolating on the parameter grid, with no change to how the model is set up. This requires XSPEC to have been built with libtorch (the --with-libtorch configure option). - The crossarf mixing model can now be stacked, one copy per source, so that a single sky region may host several emission components with different spatial distributions -- for example an extended source and a point source, which spill into neighbouring regions by different fractions and so require separate arfs. Each source's cross arfs are supplied by source-tagged XFLT keywords of the form CrossArfSrcSFromNToM (source S, contribution to region M from region N); the original CrossArfFromNToM form is unchanged and applies to source 1. - The recorn mixing model is once again applied separately within each data group, so the correction norms of several spectra can be fitted at the same time. Its first parameter names a single spectrum, so unlike the other mixing models -- whose one transformation spans every data group -- recorn needs one copy per corrected spectrum. Each data group's copy now has its own spectrum number and cornorm, all of which appear in "show par" and can be set and fitted; in the intervening releases only the lowest data group's copy did anything. Other: - New group command for runtime (re)grouping of spectra without re-reading the files. Its most important use is "group back", which lays a coarser super-bin grouping on top of the current source binning --- each super-bin spanning a whole number of source bins --- to reduce a bias in the C statistic when a background is present (the W statistic, see the Statistics Appendix of the Xspec Manual. That statistic profiles out one background-rate nuisance parameter per source bin; when the background has few counts per bin these estimates are noisy and bias the fitted source parameters --- an incidental-parameters problem that can reach tens of percent for faint sources on a low-count background. Sharing a single background rate across the source bins of each super-bin shrinks the number of nuisance parameters and can bring the bias down to a few percent. The pooled-background path is selected automatically whenever a background super-bin grouping has been set up at runtime with "group back"; a GROUPING column carried by the background file (e.g. from ftgrouppha) is not used for this, since on input XSPEC applies the source grouping to the background. The command also regroups the source spectrum itself ("group data" with optbin, minsn, mincounts, const, or file); all grouping is persisted in save files, recoverable with "tclout group", and available in PyXspec. - New sim command for bulk posterior-predictive simulation: it draws many parameter sets (from the loaded chains, or from the fit covariance scaled by "sim fsigma"), realizes each as a simulated dataset in the loaded spectra, optionally refits it (a parametric bootstrap), and accumulates the results --- the in-program replacement for the scripted "tclout simpars" + newpar + fakeit loop (the multifake script). Because the realization happens in place no files are written and the original state is restored on completion. An optional command file ("sim @cmdfile") is run on every realization and may return a row of numbers or append to a per-realization output file; the products are recovered with "tclout sim". The whole run is reproducible under "xset seed" and parallelizable with "parallel sim". - The plot command allows finer control over plot stacks by using the pipe (|) character to delimit them, e.g. "plot da res | mo | ld rat" draws three stacks. At present up to four stacks may be drawn, each holding up to four panes. - New plot options dspec, despec and deespec: the model-independent counterparts of ufspec, eufspec and eeufspec. The flux density is obtained by a regularized truncated-SVD inversion of the detector response rather than by scaling the data by the model- dependent unfolded/folded ratio, so the plotted data points do not move when the model is changed. - Operational switches of the form "xset CONTROL_STRING yes" control the numerical paths used in fitting and model evaluation and enable cross-check validation modes. For example, DISABLE_ANALYTIC_GRAD reverts fits to finite-difference derivatives. They are listed in a new table in the xset entry, separate from the model control strings. - "chain info" and margin accept a parameter number of 0 to report and plot the distribution of the statistic values stored in a chain. - The identify command gained a spex option to search the SPEX line list. - Python local models are now supported in the standalone (Tcl) version of XSPEC, not only in PyXspec. A Python model function may also opt into a faster vectorized interface with the @xspec.vectorized decorator, receiving zero-copy numpy arrays instead of Python tuples and lists --- avoiding the per-element Python-object overhead. - Rank-K SVD compression of response matrices is now supported: a compressed side-car file (produced by the ftsvdcmprmf tool) can be loaded with the response command and tuned with the svdrank and svdeps options for fast folding (See the Algorithms Appendix of the Xspec Manual). - The XSPEC libraries were reorganized so they can be linked into third-party C++ programs without Tcl or PGPLOT: core start-up was split into a new XSCore library, and the model and data classes were split into separate XSModel and XSData libraries. The PLT plotting package was modernized to call PLT and PGPLOT directly from C++. Fixes: Many user-visible bugs present in earlier versions have been fixed. The more significant fixes are grouped by area below; a complete list of the user-facing fixes in this release is given in the Xspec User Manual's Release Notes Appendix. Models: - The btapec model overwrote the helium abundance with the metal abundance, producing a wrong continuum whenever the abundance parameter was not 1. - The zvgabs absorption-line width was applied in km/s instead of the equivalent keV value. - The velocity-broadened Lorentzian and Voigt models (the vlorentz and vvoigt families) shipped with a width-parameter hard maximum of 20 km/s, below their own default of 100 km/s, so a fit could never raise the width above 20 km/s. The maxima now match the vgauss family. - The xmmpsf and suzpsf PSF mixing models set the model flux to zero above 6 keV. - Out-of-bounds memory writes in the diskline model (when a line's blue edge fell in the first energy bin) and the pileup model (when max_ph=1) could corrupt memory or crash XSPEC. - The vvnpshock and vvsedov models (and their bvvnpshock/bvvsedov variants) reused stale ionization fractions when only the electron temperature was changed, giving a wrong spectrum. Data, responses and setup: - Defining a model with more than one data group loaded read out of bounds, aborting XSPEC on builds compiled with array-bounds assertions. - An ignore or notice command whose channel range lay entirely above the spectrum's channel count could crash. - Deleting several spectra in a single data command could remove the wrong spectra. - A table-model file path containing a slash or a hyphen was corrupted when the component was added with addcomp. - Channels re-noticed after a dummyrsp command were incorrectly folded to zero. - Variable-length QUALITY and GROUPING columns were incorrectly assumed to be scalar when their repeat count was 1. Fitting and statistics: - A segmentation fault in the cstat statistic when all channels are ignored. - The default Levenberg-Marquardt (leven) method could leave parameters stuck pegged at a hard limit. - A parameter resting on one of its limits was given a numerical derivative half its true value, so the Levenberg-Marquardt step for it was twice as long as it should be. Additive norms met this routinely. On the paths that differentiate the statistic directly ("xset usechainrule no", and the recorn cornorm) the same parameter could hang fit outright. - fit could abort the whole session, or read out of bounds with a Minuit method, when the covariance matrix was ill-conditioned or not positive-definite; it now issues a recoverable error. - The empirical distribution function test statistics could crash or return NaN: with every channel ignored, with a model integrating to zero over the noticed range, or with a spectrum that was folded but not fitted. - The recorn cornorm parameter could not be fitted: because it rescales the data rather than the model, the chain-rule derivative was identically zero, so it was pegged as insensitive and fit stopped with "No variable parameters for fit". - untie could free a mixing-model parameter outside the lowest data group, producing a parameter that could not be displayed, set or fitted but still consumed a degree of freedom. Plotting: - "plot sensitivity" and insensitivity drew the first detector's curve for every response of a multiple-response spectrum. - "plot delchi", ufspec, fitstat and icounts could crash for a plot group whose spectrum has no response for an active model source. - The polarization plots polfrac and polangle returned NaN or zero for multiple-source models and could contain spurious or infinite bins. Commands and scripting: - "autosave 0" crashed XSPEC with a divide-by-zero on the next command. - Running a script by a path containing a directory component (for example @../model) failed to append the default .xcm suffix. - energies with the log option and a low energy of 0 silently built a degenerate energy grid for every model. ******************************************************************************** XSTAR ******************************************************************************** New version 2.59i: - Changes to fix the brems emissivity unit error. Previously, the brems emissivity was erroneously assumed to be per sr, when in fact the expression used was summed over angle. Now this has been corrected. In routine for calculating heating, cooling, and radiative transfer (heat.f90) divide 'brcems' by 4pi. ******************************************************************************** BURSTCUBE ******************************************************************************** - Fixed install scripts to use $PYTHON and added more error trapping ******************************************************************************** HITOMI ******************************************************************************** - hxisgdmerge: Now initializes the variable 'clean' to "false". - mxsgti: Version number and comments updated to reflect a previous change ******************************************************************************** IXPE ******************************************************************************** Changes to the IXPE Python Tools: - ixpeproduct: Changed logging output of calls to other ftools (e.g. extractor); calls are now the exact format of the command-line call to that tool, allowing users to capture such lines from log and re-run them at their own command line Now allows users to provide both no "srcregfile" argument and a "radius" of zero. This condition will result in the entire observed area being used as the source region, any value of "bgregfile" being ignored, and a message being logged to let the user know this is the case. Now handles event and attitude files that have been split into multiple components due to the change of one or more critical processing parameter. Call to extractor to produce light curve files has been changed to use a stokes weight of "unweighted" instead of the weight specified by the argument "weight". This results in the correct "I" light curve being produced, and in "Q" and "U" light curves being produced, though they may not match the weighting specified by the user. - ixpefilemerge (NEW): Comprehensively merge multiple IXPE HK or event files into a single output file; covers all HDUs of the original file, including recalculating the GTI and the time bounds of the resulting output - ixpeflagbgd: Parameters for each of the three background rejection algorithms used have been changed from being hard-coded to being looked up from a bgdparam CALDB file (which have been added to the latest CALDB). A new parameter "bgdparam" can be used to select automatic lookup of the bgdparam file from the CALDB (default), or to allow the user to supply the name of their own bgdparam file. - ixpepolarization: Infile1, infile2, and infile3 arguments have been replaced by a single argument "infile" which can be a single file, a list of files, or an @file. Modfact1, modfact2, and modfact3 arguments have similarly been replaced by a single argument "modfact". Thus, ixpepolarization now allows more than three input files. Each input file still generates unique HDU's, but now multiple input files with the same DETNAM will be combined into an HDU named "COMBINED ". The HDU combining all input files has been renamed "COMBINED FILES". ******************************************************************************** MAXI ******************************************************************************** MAXI (version 3.1): - mxdownload_wget: Changed JAXA URL for archive access - mxevtfilter: Removed unused scancondition filtering and associated parameters; addressd EXPOSURE keyword settings; remove event files with no source data - mxevtgti: efficiency improvements, better support of user GTI input - mxgtiwmap: Added more informative error message when HVHIST input is not given as expected - mxlcraw: Improved column write sturcturing and memory management; replaced VLAs with dynamic memory allocation; read TBYTE, improved allocations in reading; use long for indexing; sort unsigned char instead of boolean; efficiency improvements - mxlcurve: Updates to handle small time bins, additional header keywords; corrected indexing to get all scans; long type instead of int rows; full scans for indexing instead of only good scans; match data types to FITS column types; efficiency improvements - mxpha: Adjusted BACKSCAL keyword; accept single time interval input - mxpipeline: Revised to match new code/tools; 'getfkey' not 'get_fkey'; improved support of lists of files in place of CALDB settings for parameters COLEA, HVHIST, and TELDEF; streamlined checksum updates; updated EXPOSURE in all spectral extensions; set maskfile to NONE if no background - mxpsfcorr: Replaced Perl task with equivalent (faster) C code solution - mxscan: OGIP unit settings for TUNIT - mxscancond: Shift camera number assignment earlier in code; header keyword updates; simplified column build strategy; changed flagging to match TBYTE instead of boolean; removed unnecessary casting in calloc; efficiency improvements - maxitool library: Converted obscure flag from bool to int to match TTYPE ******************************************************************************** NUSTAR ******************************************************************************** NuSTARDAS v2.1.6: - numetrology: Updated to accommodate changes to the duty cycle of the NuSTAR metrology lasers (used for determining the quaternions from the detector coordinates onto the sky. No change is performance is expected. This change allows the additional METSTATE values of 14, 22, 30 which correspond to different cadence modes for the two metrology lasers. Changes should be transparent to the user and are not expected to affect science analysis. - numkarf: Support HTTPS access to CALDB files in S3 buckets ******************************************************************************** SWIFT ******************************************************************************** XRTDAS v3.7.2: - Updates to support newer compilers ******************************************************************************** XRISM ******************************************************************************** - xaarfgen: Turned on perl autoflush. - xapipeline and rslpipeline: Added the parameters 'excltelgti' and 'fractelgti' to fine-tune the exclusion of telemetry GTI from the computation of time-dependent Resolve energy gain. - xtdpipeline: Added second call to xtdflagpix tool to complete the bad pixel flagging following the PI calculation. - xmatraceback: Bugs were fixed pertaining to some of the values in the output photon fractions FITS file, and to the alignment between raytracing photons and the detector. Differences in traceback images are expected to be negligible but users should re-run the tool to verify this, and to correct the photon fractions output file. - rslbratios: Several bug fixes were implemented. Also, a new output file is created that contains GTI corresponding to time intervals that exclude periods of PSP limit violations. The screen output resulting from PSP limit violations is substantially reduced. It is recommended that the updated tool be re-run on user data. - rslmkrmf: Parameter processing slightly altered. The tool now requires 'whichrmf' to be set to 'X' if 'splitcomb' is 'yes'. - rslmkrsp: Improvements were made to the handling of some of the input parameters. The tool does not need to be re-run on user data. - rslmpcor: A file existence check was removed because it did not work for remote files. - rslmxsgti: Version and comments updated to reflect a previous change. - xtdflagpix: Bugs were fixed in the accumulation of individual event flags into the bad status flag. The tool does not need to be re-run on user data. - xtdpixclip: Improved handling of the 'emax' parameter. Introduced a new input parameter 'timeintfile', which is the name of a GTI file that enables restricting histograms and the threshold determination to specified time intervals. ******************************************************************************** XTE ******************************************************************************** - pcarsp and rddescr: fixed interaction bug that prevented EDS-binned responses from working; this affects EDS modes like Binned and Event modes other than GoodXenon; make shift file name be more unique; xpcaarf is less chatty to prevent huge command logs - xtedatamode: (NEW) Scans an XTE observation and reports on its contents; a command-line version of 'xdf' - pcaprepobsid and pcamergeobsids: do a more careful assessment of the data files available and create 256-bin and/or EDS gain- corrected background as needed; typo fix to error message in pcaprepobsid - pcaphasyserr: Change to RMS calculation of fractional systematic error - fcollect: Output MISSION metadata keyword for output filter file - pcaprepfile2: new parameters gaincorr and gcorrfile allow gain correction of background estimates - XTE Perl tasks: more meticulous error return status for use by the caller (e.g. HEASoftPy) ******************************************************************************** MISC. ******************************************************************************** - Revised Python configuration to allow for a venv-installed Python - Support for using a system-installed copy of the WCS library, utilized via configure option "--with-wcslib=[PATH]" (has no effect if FV is included in the build as FV requires WCSLIB object files) - New configure option "--with-libtorch[=PATH] is available to enable libtorch NN table-model support in HEASP. If specified without a PATH, it will attempt to auto-detect torch support via '$PYTHON import torch'. - New configure option "--with-giza=[PATH]" (beta) is available to provide the location of GIZA library and headers; if specified and found, HEASoft will use GIZA for (most) PGPLOT handling, but will use our embedded copy of PGPLOT if not. The "--with-giza" option should have no effect on Ximage since it currently requires PGPLOT. - manifest.yaml: new file listing the latest versions of the heasoft components - historical_versions.csv: new CSV of all past versions of heasoft components, back to heasoft v5