<Next version of Ox> <Previous version of Ox>

# Ox 6: new features and fixes

New features and fixed problems in version 6.3
New features and fixed problems in version 6.21
New features and fixed problems in version 6.2
New features and fixed problems in version 6.1
New features and enhancements in version 6.0
Fixed problems in version 6.0

The Ox version number is kept in line with the OxMetrics front-end version.

## Fixed problems in version 6.3

- Fixed: When running Ox code in OxMetrics: call to SaveDrawWindow could crash under Linux and OSX.
- Fixed: reading of csv with one column and no label treats first number as label: now read as unlabelled.
- Fixed: reading "%C" format using `sscan`/`fscan` did not always work correctly.
- Fixed: xlsx: empty cell (i.e. specified cell without content) would be read as zero.
- Fixed: `static virtual` and `virtual static` now flagged as error.
- Improved: `DrawTitle(i, "");` now removes the existing title.

## Fixed problems in version 6.21

- Fixed: problem using `for(;;)` when it is the first statement in a function (i.e. there are only declarations without assignments before it).
- Fixed: A scan format using * to suppress assignment of the read variable did not work for matrix or token types.
- Fixed: problem using public static variables in base class, which are accessed via an object of a derived class.

      	class Ca
      	{
      	public:
      		static decl sm_a;
      		static Set_a(const a);
      	}
      	Ca::Set_a(const a) { sm_a = a; }
      	class Cb : Ca { }

  The first two approaches did not work for a derived class when using static variables in the base class:
  1. Public access through an object did not work:

         	  	 decl obj = new Cb();
         		 obj.sm_a = 10;

  2. Printing an object directly or using `"%v"` did not work:

         	  	 println(obj, "%v", obj);

  3. Access through an object using a `getter' function worked fine:

             	 obj.Set_a(10);

  4. Access using the class directly worked fine:

         	     Cb::sm_a = 10;

  5. Access using the class and a static `getter' function worked fine:

         		 Cb::Set_a(10);

     Note that 4 and 5 are more efficient than 1 and 3, because the variable can be resolved at compile time.

## New features and fixed problems in version 6.2

- New: Added `hyper_2F1(a, b, c, z)` to compute the Gauss Hypergeometric function 2F1 with real parameters a, b, c and real argument z.
- Improved: `exit` now exits with the specified return code (in a console)
- Improved: `polygamma` now allows negative arguments
- Improved: xlsx: allow reading of strings created through a formula
- Improved: xlsm can be read as xlsx
- Fixed: Save graph as PDF: hats on symbols showed next to the symbol; large ellipses were squeezed in the middle.
- Fixed: xlsx: column labelling error when > 26 columns. Reading file written by OxMetrics works, but there are gaps. Reading file written in Excel will result in skipped columns.
- Fixed: There was a bug in some quantile functions that could lead to return of wrong value in some rare cases. This could affect quantiles of F, Beta and Inverse Gaussian.
- Fixed: Chrome/Safari/Opera frame loading fixed (was entering infinite reload loop). Improved default browser detection under Windows. Improved Chrome/Safari jumping to help item.

## New features and fixed problems in version 6.1

- New: Added read and write support for Excel xlsx files. Added read (113,114) and write (114) support for Stata 11 .dta files.
- New: Added PDF as new save format for graphics.
- Changed: Now using thinner symbols on very thick lines in plots.
- Fixed: PostScript BWG did not obey BWG line types
- Fixed: `dev/.../Makefile` files were missing from the installation.
- Fixed: `SetTextWindow` could appear to be delayed relative to the output, so output from the previous window could show in the new one.
- Fixed: This wouldn't work from OxRun (from draw4.ox): ShowDrawWindow(); // show this concoction SaveDrawWindow("draw4.gwg"); SaveDrawWindow("draw4.eps"); The second graph would not be created, and would create an empty draw4 window.

## New features and enhancements in version 6.0

- Added `QQ_N_SE` for `DrawQQ`: pointwise asymptotic Std.Error bands on normal QQ-plots.
- Recession shading line style (style constant is `ST_SHADING`; shading is on when the variable has value 1, off otherwise).
- oxdraw.h: defining ST_
- Introduced oxo version (separate from Ox version), current version is 5 (unchanged from Ox 5 to Ox 6). When the oxo version changes, .oxo files must be recompiled.

## Fixed problems in version 6.0:

- OxPack: fixed potential issue in `"OxPackSpecialDialog"("OP_VARIABLE",...`
- Repeatedly running an Ox file that saves a graph could result in multiple instances of the same graphics files being open in OxMetrics (asking for a reload every time it changes).
- The following code would leak memory:

      		fn()
      		{
      			decl logdet = rann(100000, 100);
      			invertsym(2 * unit(2), &logdet);
      		}

  Because `invertsym` wouldn't free before assigning. This applies to a few library functions that return an integer or double through an argument (and was only likely if a variable was reused).
- PcFiml class lacked GetResVar() (virtual from Modelbase)
- `DrawAdjust` doesn't work for `DrawDensity` because the title is drawn after the density.
- `MaxSQP(F)`: didn't return `MAX_MAXIT` if max reached; rounding errors on Hi/Low bounds could push parameters outside bounds by a tiny bit.

Ox version 6.30. © JA Doornik

This file last changed
.