Logo of CO-LaN smallAvailable for download from here, CO-LaN makes available today a maintenance release of COBIA 1.2.0, the version which was distributed at the end of Phase II of COBIA development project. This release is referenced as version 1.2.0.8.

The distribution is now made of three elements:

  • a zipped file that contains merge modules that are used in 3rd-party installation packages to install COBIA Runtime (also known as COBIA Core),
  • an installation package of these merge modules for 64-bit machines (to be used to repair an installation of the merge modules made by other means),
  • an installation package of COBIA Software Development Kit (SDK).

COBIA Runtime can be freely used and redistributed. It consists of middleware components that will be installed on the end-user’s computer during installation of COBIA-based Process Modelling Environments (PMEs) and Process Modelling Components (PMCs) developed by a software provider. The COBIA Runtime is intended to be distributed with and utilized by third-party software.

The COBIA Software Development Kit (SDK) is provided for free as a stand-alone installation package which distributes a set of components and tools that are used by a software developer to create software that utilizes COBIA as the middleware for CAPE-OPEN interoperability. The SDK includes code generators to help create the source code of interfaces developed from the CAPE-OPEN Interface Definition Language (IDL) specifically adapted to COBIA. The SDK installer installs COBIA Runtime as well.

Development and maintenance of COBIA is conducted by AmsterCHEM for CO-LaN.

Version 1.2.0.8 includes the addition of Flowsheet Monitoring and Custom Data interfaces, updates to installation packages to facilitate their inclusion in third-party installers, along with several minor bug fixes introduced as part of active maintenance of COBIA and identified during the development of COBIA Phase III. Version 1.2.0.8 resolves the following tickets:

  • Ticket 21: information missing on code generators and their use. Resolved by adding a developers command prompt, which is a normal command prompt that has the code generation binary folder in the path, as a short cut link from the start menu. Also added a comment in the box that opens to show how to get the help for both cobiaregister.exe and COBIA_CodeGen.exe;
  • Ticket 30: description of components missing within custom installation of COBIA SDK.
  • Ticket 63: support for Flowsheet Monitoring and Custom Data in COBIA Phase II. An example implementation of a Flowsheet Monitoring PMC was added.
  • Ticket 76: the current custom action by the COBIA SDK installer attempts to make a short path name, and sometimes this results in a long path name nevertheless. Was decided to not change the COBIA_INCLUDE environment value to be a short path name, to remove the custom action that does so and to remove the custom action DLL. Visual Studio users will likely not be affected. For other compilers, worst case scenario is that the COBIA_INCLUDE environment value is not supported as it contains spaces and the developer will have to manually provide the right include folder.
  • Ticket 81: BasicCapeCollection missed assignment and construction from CapeInterface.
  • Ticket 82: when a COBIA object is exposed to COM via COBIA, a wrapper is placed around the object. If a COBIA object is passed as an argument to COM, through a COMBIA call, this object is also wrapped by a COM object. In this scenario, there are two COM objects created for the same COBIA object, and they are therefore observed from the COM side as two different objects. The solution to the multiple COM wrapper creations is to keep a table of COM wrappers that are currently alive, index by unique ICapeInterface pointer. Any COM wrapper created is added to the table, any COM object deleted is removed from the table. If a COM pointer is requested, the table is checked. All of this is shielded by a mutex specific to this table.
  • Ticket 83: added assignment operators, fixed return type of assignment operators, fixed missing byte swap in assignment from Windows GUID to ExtCapeUUID.
  • Ticket 84: ICapeError was not a valid type in the IDL according to COBIA, so that errors could not be passed via IDL defined interface in their original form.
  • Ticket 87: command line code generator raised an error in case a name space was specified for a new class. It should raise an error in case a namespace is specified for any function except creating a new class.
  • Ticket 88: std::iterator class template (used as a base class to provide typedefs) is deprecated in C++17. Fixed by providing publicly accessible typedefs named iterator_category, value_type, difference_type, pointer, and reference.
  • Ticket 90: registrar component did not release registry writer and reader interfaces in all cases.
  • Ticket 91: Parser component did not check for null pointer in smart pointer assignment.
  • Ticket 92: COBIA IDL parser crashed on invalid parse data (such as text outside of the main library). In addition the parsed IDL file was not closed.
  • Ticket 93: some ICapeString methods were invalidly saying in their comment that the length included the terminating null character.
  • Ticket 94: /*in*/ annotation was missing on UUIDs in automatically generated code.
  • Ticket 95: redundant namespace was used in code generated files.
  • Ticket 96: Current-user PMCs failed to create on wine.
  • Ticket 98: error messages were not formulated properly in IDL parser as a result of multi byte string to wide string conversion issues.
  • Ticket 99: some methods in data wrappers did not initialize the return variables in case of an error return, leading some compilers to complain.
  • Ticket 100: generated wrapper code passed output interface wrappers by value instead of reference. This was not obvious in the generated code, as in case of the CAPE-OPEN 1.2 interfaces, all functions that return an interface, return it as [out,retval] and the problem only occurs for interfaces that are returned as [out].
  • Ticket 101: in expectation for COBIA Phase III, allow createInstance to accept CapePMCCreationFlag_AllowRestrictedThreading.
  • Ticket 102: the explanation about the selection of COBIA header files carries a typo. Instead of “Requires for any C++ based COBIA development” should be “Required for any C++ based COBIA development”.
  • Ticket 107: Water PP example throwing string rather than cape_open_error.

CO-LaN encourages all software developers to use version 1.2.0.8.

Previous release was version 1.2.0.7 on July 15, 2021. Version 1.2.0.7 was downloaded 103 times for the SDK and 109 times for the runtime since it was made available.

Questions on COBIA 1.2 can be posted on the CAPE-OPEN forum dedicated to COBIA.