Backend Coding Style and Language

The backend of OpenMx is currently (2013-05-31) written in C. In order to add new features and add future developers, the development team is changing the backend to compile in C++ instead of C. The user interface and its functionality in R is not affected by this change from C to C++. The source code will still compile on Mac OS X, Windows, and Linux. The package will install to R in the same way as before. All tests will continue to pass in C++. Examination of the test suite has shown the change to C++ is performance neutral. Models do not run faster or slower than before.

This change in particular facilitates the use of C++ generic collections for the upcoming Multilevel Structural Equation Modeling features. While the OpenMx backend will soon compile in C++, the style of the backend will remain in C, and the only C++ feature used by the OpenMx backend will be the generic collections. Scoping, structs, type casts, pointers, and so on will continue to be used in the C style, not the C++ style.