Quick history:

  C++ bindings that allow you to implement and invoke your classes in C++.
  The Distributed, Persistence, Replication and Emitter Frameworks.
  CORBA compliance, SOM classes are now described in CORBA's Interface Definition Language (IDL) instead of OIDL.
  Support for multiple inheritance.
  Interface Repository for run-time typing information.

SOM was available on OS/2 2.0 upwards, Windows NT, AIX 4, OS/390 and OS/400.

Why somFree?

This project provides a clean-room implementation of the major SOM components and is built to be very portable. The name comes from the method used to delete a SOMObject.

Main differences from IBM SOM

  1. IDL compiler is a C++ program rather than a SOM based framework. This solves a chicken-and-egg problem.
  2. Assembler is not used for thunking, somResolve() uses macros and apply/dispatch stubs.
  3. Some components are just hollow stubs, such as SOMP.
  4. Some components are not fully functional, eg somossvr.
  5. You can have both C and C++ header files generated. The choice of 'somcorba' or 'somstars' comes from managing the 'SOMSTAR' macro.
  6. No security functions implemented.

Changes

Changes from original somFree compiler: