59
EPOC R5’s emulator and WINC components were built with Microsoft Visual C++ Release 5,
and the C++ SDK also includes support for Microsoft Visual C++ Release 6. The emulator debug
databases released with the C++ SDK are in Microsoft Visual C++ Release 5 format, and cannot
be browsed using Microsoft Visual C++ Version 4. Thus, developers who still use Version 4 must
upgrade to Version 6 (Version 5 is no longer available). The GNU C++ Compiler and associated
toolchain, used for ARM builds, are the same as for previous EPOC releases.
EPOC R5 is the first full, externally-delivered, Symbian product. All source code, help, bitmaps,
text etc has been changed to reflect Symbian’s distinct identity.
8.5.3. Changes by component
8.5.3.1 Base
The user library has been enhanced by additions of APIs for range-checked C arrays, better literal
string handling, provision of a console size which always produces a full-screen console, transfer of
cleanup-related functions from STORE to E32 headers. It is recommended that new programs
take advantage of these new facilities and, where possible, old programs be updated to do so.
Project files required by
makmake have changed to support Unicode builds of EPOC, kernel
changes, and more hardware targets than MARM. As a result, almost all
.mmp files constructed
for SDKs prior to EPOC R5 must be changed. In most cases, the required change is a trivial one-
liner.
The kernel has changed significantly to provide better support for a wider range of target
architectures, better interrupt-handling, power management and peripheral bus architectures for
i/o devices, and other API changes. As a result all device drivers must be rewritten. UID changes
have been used to ensure that device drivers written with a pre-EPOC R5 SDK will not even load
on EPOC R5.
The PC Card interface supports i/o cards now (in addition to compact flash (CF) memory cards).
The architecture has been changed to use a peripheral bus interface which is an optional part of an
EPOC build, allowing it to be omitted for machines which do not need it.
The emulator has been changed to allow it to function effectively in any directory (not just
\epoc32\release\wins\deb\ and its peers, together with \epoc32\data\ and
\epoc32\wins\c\), and to allow much more flexibility in configuration. Changes in WINC
make it more suitable for writing convenient utility programs. The EPOC toolset has not been
updated for location independence, so that when developing using the C++ SDK, the old
directory locations must still be used.
Many performance improvements have been built into E32 and F32, including machine-coding
some functions, using faster algorithms for math, and changes to memory management which
reduce cache flushes required when context switching between system servers.
Math functions have been revised to give results which have been certified as conforming with
Java Compatibility Kit™ requirements, which are more specific than their previous IEEE754
conformance.
Unicode is supported with more collation and character-comparison functions, Unicode character
tables, and more supported locales.
Files use UTC timestamps (rather than local time), to provide improved synchronization support.
Many changes and fixes to loading of
.exes and DLLs have been implemented.
Limited support for writeable static data has been added, needed by core subsystems such as Java,
but is not available for application use.
ROMs may be constructed which support dual kernels, so that a single image can be tested on
two CPU/ASSP variants (though not two instruction set architectures).
Many toolchain changes have been made to support the above. Most
makmake and rombuild
project files must be modified as a result.
8.5.3.1.1 E32
8.5.3.1.1.1 User Library and APIs
All user library APIs are backward binary compatible with the user library from previous EPOC
releases.