21. Webcompilers

21.1. Webcompilers in FORCESPRO

The online FORCESPRO code generation service is providing solver binaries which are configured to run in the platforms supported by FORCESPRO. To build these binaries and configure them properly, webcompiler services (developed and maintained as part of FORCESPRO and hosted in the FORCESPRO infrastructure) are used which contain configurations and compilers for each platform.

21.2. Webcompilers versioning

In general, the webcompiler services are aligned with the FORCESPRO versioning in order to ensure each FORCESPRO version can always generate the solvers required as well as to ensure that the same FORCESPRO version will continue producing binaries with the same configuration even when new webcompiler services or FORCESPRO versions are released.

Since FORCESPRO 6.1.0, the generation of solver binaries for all platforms, except the ones specified here, is using a new infrastructure in order to achieve better scalability and service availability. The version of the webcompilers in the new infrastructure still continues to be aligned with the FORCESPRO version.

The webcompiler service version in use for a FORCESPRO version is always ensured to be compatible with the used FORCESPRO version. However, e.g. as a result of security maintenance, the webcompiler version used in the new infrastructure may change. While this will not affect compatibility with the used FORCESPRO version, a different webcompiler version could result in a different configuration for the generated binaries and as a result potentially different numerics. If this is critical for a specific application, the version to be used can be explicitly requested as shown here: Ensuring use of webcompiler version.

The webcompiler version used for the generation of a solver is directly accessible in the solver in its header file. The header file contains two comments:

/* Host Compiler Version: <compiler version> */
/* Target Compiler Version: <compiler version> */

These refer to the versions of the webcompiler services used for the compilation of the host solver and the target solver respectively and will point to the names of the versions used. For the mentioned platforms which are still using the legacy infrastructure, the value returned will be unavailable. For these platforms, the same version of the webcompiler service is ensured to be used by a FORCESPRO version throughout its lifetime and as such, explicit versioning is not necessary.

21.2.1. Webcompilers with legacy infrastructure

The platforms below continue using the legacy infrastructure for now:

  • Host solver for Windows with MSVC/Windows SDK compiler on MATLAB client or Python client

  • Target solver for dSPACE platforms

  • Target solver for Speedgoat platforms

  • Target solver for NI-cRIO platforms

21.3. Ensuring use of webcompiler version

As mentioned in the previous section, the version of the webcompiler service used to generate the binaries of a solver is available in the solver’s header file. If it is critical for an application to ensure the same numerics across different generations of the used solver, the version of the webcompiler service can be explicitly requested using the entries retrieved from the header file and providing them during solver generation as shown below:

codeoptions.host_compiler_version = '<compiler_version>';
codeoptions.target_compiler_version = '<compiler_version>';

In case of questions please contact support at support@embotech.com to discuss the requirements of the application and decide on the appropriate setup.