This is an exclusive preview of a proposal to enhance
the version compatibility of Obsydian's runtime system

The information contained in this document represents the current view of Synon Corporation on the issues discussed as of the date of publication. Because Synon must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Synon, and Synon cannot guarantee the accuracy of any information presented after the publication date. This document is for informational purposes only and was last updated February 2nd, 1998.

SYNON MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY

Introduction

In order to upgrade Obsydian generated applications to a new version of the runtime system, the existing functions for that application must be rebuilt (recompiled and re-linked) with the new version runtime system library. This upgrade step can sometimes be time consuming and resource intensive for developers due to the rebuild, retest and re-deployment costs. This document details a proposal for a future Obsydian release, to enhance the Obsydian generators and runtime system to eliminate this upgrade step and to allow easy upgrading and deployment of new versions of Obsydian applications.

Overview of the Obsydian runtime system

Through Obsydian’s ability to deploy to multiple platforms and generate native code, Obsydian developers have the option of implementing business designs through the generation of native C++ applications.

When deployed, these generated C++ functions interact with a sophisticated runtime system, unique to Obsydian. The Obsydian runtime system provides a core set of services in preference to regenerating the common code into every function. Generated C++ functions access the runtime services via C++ classes and methods provided by the Obsydian runtime system library. In fact, just about every single AD statement, AD variable, and Panel element makes use of some runtime C++ class for its implementation. Through this interaction, the Obsydian runtime provides services such as the handling of graphical user interface requests, data communications, data base access and core business data types such as fixed decimal, date and time types. The result is that Obsydian generated applications benefit from faster generation and significant object-oriented code reuse.

 The requirements of C++ compilers

C++ compilers require implementation and layout knowledge of the runtime class/object to access data members and functions. This layout knowledge causes binary incompatibility whenever a C++ class is changed in certain ways. This is a standard issue with C++ development that occurs when an application reuses existing libraries from Microsoft or other vendors.
Consequently, today, when a new version of the Obsydian runtime is made available, the C++ compilation and linkage bindings between generated C++ source and the runtime libraries requires Obsydian applications to be rebuilt to take advantage of a new version of the Obsydian runtime library.

Upgrading Obsydian generated applications today

Because improvements are continually being made to the runtime system by Synon. These changes are made to take advantage of new technologies as well as to incorporate new functionality requested by Obsydian developers. Unfortunately, these improvements often involve changing the size and shape of the C++ support classes resulting in the rebuild requirement.

The most significant impact of these requirements is the resources the customer must provide to rebuild, retest and re-deploy existing applications. Of course, not all existing applications need to be upgraded to the new versions. Customers must decide if the features in a new release justify their cost to upgrade. Currently the two mandatory releases available (2.5x and 3.0) both require a re-build only.

 Removing the rebuild requirement

It is the intention of Synon to isolate the generated code from the runtime system library through an encapsulation layer and eliminate the binary dependence between generated source and runtime, thereby removing the rebuild requirement.

Obsydian generated applications created after this enhancement will be able to upgrade to new versions of the Obsydian runtime systems by simply installing the new version into the application deployment environment. Existing applications generated from previous versions of Obsydian can inter-operate with newer Obsydian applications.

Availability

Undertaking a project to restructure the runtime will require significant engineering effort due to the complexity of the architecture and the impact to multiple generation and runtime platforms. Also, given the scope of changes, the resulting tool and runtime will require an in-depth, extended testing cycle. As a result, this enhancement is planned for a future release.

In addition, due to the nature of the runtime changes required to support this capability, the release that includes the restructure will require a full regeneration; but from that point forward newer releases of the runtime will be binary compatible with back-level generated/built applications.

Club Lava members will be notified as soon as Synon has determined an implementation schedule for this proposed feature. It is our goal to keep you constantly updated with the latest developments with the Obsydian tool.


©1995-98 Synon Corporation. All rights reserved.
Synon and Obsydian are registered trademarks of Synon Corporation.
Other product and company names herein may be the trademarks or registered trademarks of their respective owners.