This release includes a substantial number of updates and improvements. A major theme is the use of modern C++ paradigms and concepts (i.e., C++11/14/17) in conjunction with more use of standard library capabilities. The refactoring of existing code to embrace and leverage these concepts available in current compilers (e.g., Visual Studio 2013, 2015, 2017, GCC, Clang, etc.) is proving beneficial in many ways. Not only is the number of lines of code shrinking, but so-called RAII concepts are beginning to surface, and the general understandability of what exists, how it works, and how it’s initialized is more accessible. In a nutshell, we are striving to make the package more flexible and capable by removing complexity rather than by exposing new functionality.

Consistent with this goal is the effort to more clearly separate (i.e., divorce) simulation “models” (i.e., classes/objects that define aspects of a system or world to be simulated), from the mechanics of their execution. This move has been partially motivated by Domain Driven Design concepts and is reshaping the framework in ways to make it more extensible and versatile. Soon it could be argued that OpenEaagles is not just a framework, but a fairly comprehensive platform to build an even wider range of simulation applications.

This release includes explicit support for Visual Studio 2013, 2015 and 2017 as well as improved 3rd party package build scripts for Linux-based GCC and Clang compilers. OpenEaagles is regularly compiled and used with Ubuntu and RedHat-based Linux distributions (Xubuntu 16.10/GCC 6.2.0 and CentOS 7.3/GCC 4.8 specifically).

Update: OE version 17.04 has been tested with Xubuntu 17.04/GCC 6.3.0 and much older Linux Mint 15/GCC 4.7.3 without issue. In other words, we have been compiling, building and running examples using a wide variety of compilers to ensure no rough edges in the software or built system exist.