All changes between EPOC Release 5 and previous EPOC releases raise potential compatibility issues. These are particularly important for developers who wish to:
- work on ER5 with code developed for previous EPOC releases
- produce new ER5 programs that also work on previous EPOC releases
The key points to consider are:
- whether programs written for previous releases of EPOC can run on ER5. Where possible, ER5 maintains binary compatibility, which means that existing programs can run without changes to source or rebuilding. For example, although changes have been made to the Agenda model (see About the Agenda model updates for EPOC Release 5), existing applications that use that component still run correctly on ER5. In other cases, interfaces from previous releases have been removed, and their functionality provided in new components, so code that used those interfaces will have to be rewritten for examples, see the discussions in Communications Database and Messaging Architecture. Between these extremes, it can also be possible for existing code to have to be rebuilt or relinked, without other changes, before it will run.
- whether programs that use new features can be deployed on devices running previous releases of EPOC. Usually this will not be possible, except where a feature is supplied as source code that you build into your own project. For an example, see Literal Descriptors.
For a discussion of the principles of managing compatibility in EPOC, see Controlling binary compatibility.
Compatibility issues should be understood early in the development cycle. To help with this, compatibility issues are highlighted in the documentation for a class or member under the heading Compatibility. If no such section exists, it should be assumed that the feature can be used with all previous EPOC releases.
WINS DLLs built with the ER5 SDK will not run under ER3 Emulators. This is because DLLs linked to the version of edll.obj
supplied with ER5 will not run against previous versions of euser.dll
.
This restriction does not apply to MARM builds. ER5 MARM builds should work on previous EPOC releases unless a feature marked as incompatible is used.