- bugfix for ordinal FIML with columns that are not threshold columns
- bugfix for detection of algebraic cycles when multiple objective functions are present
- test cases included for standard error calculation
- enabled standard error calculation by default

- bugfix for memory leak behavior in kronecker product calculation
- implemented kronecker exponentiation operator %^%.
- actually updating means calculations in ordinal FIML models
- removing standard errors from summary() until they are computed correctly

- added ‘unsafe’ argument to mxRun function. See ?mxRun for more information.
- bugfix for filtering definition variable assignment to current data source.
- bugfix for using data.frame with integer type columns that are not factors.

- implemented omxAllInt, use ?omxAllInt for R help on this function
- implemented omxMnor, use ?omxMnor for R help on this function
- added option to calculate Hessian after optimization. See ?mxOption for R help.
- added option to calculate standard errors after optimization. See ?mxOption for R help.
- added R documentation for vech, vechs, vec2diag, and diag2vec
- performance improvements for independent submodels
- added ‘silent=FALSE’ argument to mxRun() function
- added R documentation for omxApply(), omxSapply(), and omxLapply()
- wrote mxRename() and added R documentation for function
- added ‘indep’ argument to summary() to ignore independent submodels (see ?summary)
- added ‘independentTime’ to summary() output. Wall clock time for independent submodels.
- added ‘wallTime’ and ‘cpuTime’ to summary() output. Total wall clock time and total cpu time.
- implemented ‘:’ operator for MxAlgebra expressions. 1:5 returns the vector [1,2,3,4,5]
- implemented subranges for ‘[‘ operator in MxAlgebra expressions. foo[1:5,] is valid inside algebra.
- added omxGetParameters, omxSetParameters, omxAssignFirstParameters. Use ? for documentation.
- renamed all objective function generic functions from omxObj* to genericObj*
- enumerated OpenMx and NPSOL options in ?mxOption documentation
- implemented foo[x,y] and foo[x,y] <- z for MxMatrix objects

- added ‘mxVersion’ slot to output of summary() function.
- added documentation of summary() function.
- set default function precision for ordinal FIML evaluation to “1e-9”
- not throwing an error on mxMatrix(‘Full’, 3, 3, labels = c(NA, NA, NA))
- applying identical error checking to single thresholds matrix and single thresholds algebra
- implemented generic method names() for MxModel objects.
- implemented vec2diag() and diag2vec() matrix algebra functions.

- definition variables can now be used inside algebra expressions
- definition variables inside of MxMatrices will populate to the 1st row before conformability checking. In plain english: you do not need to specify the starting values for definition variables.
- the square-bracket operator when used in MxMatrix labels is no longer restricted to constants for the row and column. The row and column arguments will accept any term that evaluates to a scalar value or a (1 x 1) matrix.
- summary() on a model returns a S3 object. Behaves like summary() in stats package.
- eliminated UnusualLabels.R test case. Too many problems with windows versus OS X versus linux.
- implemented vech() and vechs() functions: half-vectorization and strict half-vectorization
- fixed bug in ordinal FIML when # of data columns > # of thresholds
- added ‘frontendTime’ and ‘backendTime’ values to summary() output. They store the elapsed time of a model in the R front-end and C back-end, respectively.
- created a name space for the OpenMx library. Only mx**() and omx**() functions should be exported to the user, plus several miscellaneous matrix functions and S4 generic functions.
- corrected ‘observedStatistics’ output of summary() to exclude definition variables
- corrected ‘observedStatistics’ output of summary() count the number of equality constraints

- added ‘vector’ argument to mxFIMLObjective() function. Specifies whether to return the likelihood vector (if TRUE) or the sum of log likelihoods (if FALSE). Default value is FALSE.
- renamed omxCheckEquals() to omxCheckIdentical(). omxCheckIdentical() call “identical” so that NAs can be compared.
- added checking of column names of F and M matrices in RAM objective functions.
- added ‘dimnames’ argument to mxRAMObjective() function. Populates the column names of F and M matrices.
- added square bracket operator to MxAlgebra expressions. A[x,y] or A[,y] or A[x,] or A[,] are valid.
- square bracket operator supports row and column string arguments.
- mxModel(remove=TRUE) accepts both character names or S4 named entities.
- added support for x86_64 on OS X 10.6 (snow leopard)
- fixed support for x86_64 on Ubuntu 9.10 (gcc 4.4)
- throw error message when inserting a named entity into a model with an identical name
- added Anthony William Fairbank Edwards “Likelihood” (1972; 1984) A, B, O blood group example to online documentation

- omxGraphviz() either prints to stdout or to a filename
- updated omxGraphviz() to draw an arrow if (value != 0 || free == TRUE || !is.na(label))
- omxGraphviz() returns a character string invisibly
- error checking for bogus definition variables
- summary() uses matrix dimnames by default, use options(‘mxShowDimnames’=FALSE) to disable
- added support for gcc 4.4 (Ubuntu 9.10) on x86 and x86_64 architectures
- created R documention for omxGraphviz() function
- generalized dependency specification for objective functions (omxObjDependencies)
- fixed cross-reference links in User Guide

- checked observed data for dimnames on ML objective functions
- using dimnames= argument to mxMLObjective() and mxFIMLObjective() propagates to MxMatrix objects on output.
- bug fix for error message where model name is incorrect
- updated user guide in response to feedback from beta testers
- incremented version number to 0.2.1-922 to sync demos and user guide

- several of the twin model demo examples have been recoded.
- fixed bug with non-floating point matrices.
- more error checking for mxPath().
- tools/mxAlgebraParser.py will convert Mx 1.0 algebra expressions (Python PLY library is required).
- renamed “parameter estimate” column to “Estimate” and “error estimate” to “Std.Error” in summary().
- added ‘dimnames’ argument to mxFIMLObjective() and mxMLObjective().
- error checking for RAM models with non-RAM objective functions.

- improved error messages on unknown identifier in a model (beta tester issue)
- fixed bug in mxMatrix() when values argument is matrix and byrow=TRUE
- implemented square-bracket substitution for MxMatrix labels
- fixed a bug in computation of omxFIMLObjective within an algebra when definition variables are used
- significant alterations to back-end debugging flags
- tweaked memory handling in back-end matrix copying
- added support for x86_64 linux with gcc 4.2 and 4.3

- added checking and type coercion to arguments of mxPath() function (a beta tester alerted us to this)
- moved matrices into submodels in UnivariateTwinAnalysis_MatrixRaw demo
- added Beginners Guide to online documentation
- mxRun() issues an error when the back-end reports a negative status code
- named entities and free or fixed parameter names cannot be numeric values
- constant literals are allowed inside mxAlgebra() statements, e.g. mxAlgebra(1 + 2 + 3)
- constant literals can be of the form 1.234E+56 or 1.234e+56.
- type checking added to mxMatrix arguments (prompted by a forum post)
- mxPath() issues an error if any of the arguments are longer than the number of paths to be generated
- data frames are now accepted at the back-end
- FIML ordinal objective function is now working. Still a bit slow and inelegant, but working
- FIML ordinal now accepts algebras and matrices. dimnames of columns must match data elements
- implemented free parameter and fixed parameter substitution in mxAlgebra statements
- implemented global variable substitution in mxAlgebra statements
- turned off matrix and algebra substitution until a new proposal is decided
- snow and snowfall are no longer required packages
- added cycle detection to algebra expressions
- mxEval() with compute = TRUE will assign dimnames to algebras
- added dimnames checking of algebras in the front-end before optimization is called
- added ‘make rproftest’ target to makefile

- mxEvaluate() was renamed to mxEval() after input from beta testers on the forums.
- new function mxVersion that prints out the current version number (beta tester request).
- When printing OpenMx objects, the @ sign is used where it is needed if you would want to print part of the object (beta tester request).
- now supports PPC macs.
- implemented AIC, BIC and RMSEA calculations.
- mxMatrix documentation now talks about lower triangular matrices (beta tester request).
- fixed bugs in a number of demo scripts.
- added chi-square and p-value patch from beta tester Michael Scharkow.
- added comments to demo scripts.
- fixed a bug in the quadratic operator (a beta tester alerted us to this).
- means vectors are now always 1xn matrices (beta tester request).
- added an option “compute” to mxEval() to precompute matrix expressions without going to the optimizer.
- Matrix algebra conformability is now tested in R at the beginning of each mxRun().
- named entities (i.e. mxMatrices, mxAlgebras, etc.) can no longer have the same name as the label of a free parameter. (This seems obscure, but you will like what we do with it in the next version!)
- can use options(mxByrow=TRUE) in the R global options if you always read your matrices in with the byrow=TRUE argument. Saves some typing. (beta tester request)
- fixed the standard error estimates summary.
- added mxVersion() function to return the version number (as a string).

- Added R help documentation for omxCheckCloseEnough(), omxCheckWithinPercentError(),
omxCheckTrue(), omxCheckEquals(), and omxCheckSetEquals()

- (mxMatrix) Fixed a bug in construction of symmetric matrixes.
- now supports lower, standardized, and subdiagonal matrices.

(mxEvaluate) mxEvaluate translates MxMatrix references, MxAlgebra references, MxObjectiveFunction references, and label references.

(mxOptions) added ‘reset’ argument to mxOptions()

- (mxPath) renamed ‘start’ argument of mxPath() to ‘values’
- renamed ‘name’ argument of mxPath() to ‘labels’
- renamed ‘boundMin’ argument of mxPath() to ‘lbound’
- renamed ‘boundMax’ argument of mxPath() to ‘ubound’
- eliminated ‘ciLower’ argument of mxPath()
- eliminated ‘ciUpper’ argument of mxPath()
- eliminated ‘description’ argument of mxPath()

- (dimnames) implemented dimnames(x) for MxMatrix objects
- implemented dimnames(x) <- value for MxMatrix objects
- implemented dimnames(x) for MxAlgebra objects
- implemented dimnames(x) <- value for MxAlgebra objects

(mxMatrix) added ‘dimnames’ argument to mxMatrix()

(mxData) renamed ‘vector’ argument of mxData() to ‘means’