## Changes Introduced in V8.0.4

The following describes the most significant changes which occurred in the AST library between versions V8.0.3 and V8.0.4:

1. The behaviour of the astAddFrameastAddFrame method has been changed slightly. Previously, astAddFrame modified the FrameSetFrameSet by storing references to the supplied MappingMapping and FrameFrame objects within the FrameSet. This meant that any subsequent changes to the current Frame of the modified FrameSet also affected the supplied Frame object. Now, deep copies of the Mapping and Frame objects (rather than references) are stored within the modified FrameSet. This means that subsequent changes to the modified FrameSet will now have no effect on the supplied Frame.

2. The choice of default tick-mark gaps for time axes has been improved, to avoid a previous issue which could result in no suitable gap being found.

   - A new method called astRegionOutlineastRegionOutline has been added to the PlotPlot class. It draws the outline of a supplied AST RegionRegion.

3. A bug has been fixed that could cause astSimplfy to enter an infinite loop.

4. Some improvements have been made to the Mapping simplification process that allow more Mappings to be simplified.

5. The Frame class has a new read-only attribute called InternalUnit, which gives the units used for the unformatted (i.e. floating-point) axis values used internally by application code. For most Frames, the InternalUnit value is just the same as the Unit value (i.e. formatted and unformatted axis values use the same units). However, the SkyFrameSkyFrame class always returns “rad” for InternalUnit, regardless of the value of Unit, indicating that floating-point SkyFrame axis values are always in units of radians.

6. The LutMapLutMap class has a new attribute called LutEpsilonLutEpsilon, which specifies the relative error of the values in the table. It is used to decide if the LutMap can be simplified to a straight line.