Files
epics-base/documentation/RELEASE_NOTES.html
2003-08-21 18:33:58 +00:00

866 lines
30 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>EPICS Release baseR3.14 </title>
</head>
<body lang="en">
<center>
<h1>EPICS Release base 3.14.3</h1>
<h1>Aug 05 2003</h1>
</center>
<center>
<h2>Changes since 3.14.2</h2>
</center>
<h4>TPRO output</h4>
<p>The record processing trace output generated when the <code>.TPRO</code>
field of a record is non-zero now includes the name of the thread that is
actually doing the processing.</p>
<h4>calcRecord and calcoutRecord</h4>
<p>Previously if a dbGetLink failed on one of the input links, dbGetLink was
not called for the remaining links. Now it is.</p>
<h4>put notify</h4>
<p>put notify did not act properly if a record had disp=TRUE, i.e. if puts
are disabled. It now returns putNotifyPutDisabled.</p>
<h4>fastlock.h</h4>
<p>This is no longer supported</p>
<h4>devLib</h4>
<p>devLib is now supported on vxWorks and RTEMS. It has been moved from
src/vxWorks/src to src/libCom/osi. devLibVirtualOS has been extended to
support allocating A24 addresss and an init method.</p>
<h4>vxWorks dependent modules moved</h4>
The following have been moved from src/vxWorks/src to
src/libCom/osi/os/vxWorks: camacLib.h, drvTS.c, drvTS.h, epicsDynLink.c,
epicsDynLink.h, module_types.h, task_params.h, veclist.c. Brief documentation
has been added to the Application Developer's Guide.
<h4>Close-On-Exec flag set for all sockets created in EPICS base</h4>
<p>On POSIX systems if a Channel Access application spawns off 3rd party
software with an exec() call then all open file desriptors are inherited
unless the close-on-exec flag is set for each file descriptor. A new wrapper
function was created so that all sockets created in EPICS base will have the
close-on-exec flag set on POSIX systems. The function which spawns the CA
repeater with exec() used to close all open files except stdin/stdout/stderr.
This step was no longer required and therefore was removed from the code.</p>
<h4>Temporary Files on Windows</h4>
<p>The tmpfile() function on windows requires that all temporary files be
stored in the root folder. The antelope (yacc) tool in base was calling
tmpfile() and this was causing problems at sites where win32 systems use
remotely mounted secure file systems. A wrapper function called "FILE *
epicsTempFile()" that creates a temporary file on WIN32 with a name epicsNNN
using one of the following paths was installed into libCom. It searches
starting with (1) below and stops when it finds a specified path that exists.
On POSIX systems, and systems that default to POSIX behavior, epicsTempFile()
simply calls tmpfile().</p>
<ol>
<li>where the TMP environment variable specifies</li>
<li>in c:\tmp</li>
<li>in the current working directory</li>
</ol>
<h4>envPaths file</h4>
<p>For operating systems other than vxWorks, there is now a target file
created in each <code>iocBoot/ioc</code> directory called
<code>envPaths</code>, which performs the same functions as the
<code>cdCommands</code> file in vxWorks but using environment variables. The
entries in <code>envPaths</code> are derived from the contents of the
application's <code>configure/RELEASE</code> file.</p>
<h4>Macros in database filenames</h4>
<p>Database (<code>.db</code> and <code>.dbd</code>) filenames passed to
<code>dbLoadDatabase</code>, <code>dbLoadRecords</code> and inside
<code>dbLoadTemplate</code> substitutions files will now have environment
variable macros expanded before opening. These are expressed using the
standard <code>${MACRO}</code> syntax. Inside a template substitutions file
the filename must be enclosed in double quotation marks if macros are
used.</p>
<h4>registerRecordDeviceDriver output subroutine renamed</h4>
<p>The registration routine generated by the registerRecordDeviceDriver.pl
perl script now includes the name of the application, thus requiring a
one-line change to any IOC startup files produced with earlier R3.14 releases
of base. The actual name is taken from a second command line argument
supplied to the script by the modified make rules, and is derived from the
name of the fully expanded dbd file from which the necessary information is
extracted. The change needed to every startup script involves using this new
name in place of the old <code>registerRecordDeviceDriver</code>. Assuming
that your application's fully expanded dbd file is called
<code>example.dbd</code> you would modify the lines</p>
<blockquote>
<pre>dbLoadDatabase("dbd/example.dbd",0,0)
registerRecordDeviceDriver(pdbbase)</pre>
</blockquote>
<p>to become</p>
<blockquote>
<pre>dbLoadDatabase("dbd/example.dbd",0,0)
example_registerRecordDeviceDriver(pdbbase)</pre>
</blockquote>
<h4>dbExpand <code>-o outfile</code> option</h4>
<p>A commandline option <code>-o</code> has been added to the dbExpand
program to allow the name of its output file to be specified. If there are
any errors in the input file(s) the output file will not be generated or
modified at all. The rules to expand DBD files have been changed to make use
of this.</p>
<h4>New keyword <code>variable()</code> supported in dbd files</h4>
<p>Database definition (.dbd) files can now contain declarations of simple
static variables, a facility intended for driver debugging purposes. These
<code>variable(name)</code> or <code>variable(name,type)</code> declarations
are preserved by dbExpand (<code>type</code> is <code>int</code> if omitted),
and will be converted by registerRecordDeviceDriver.pl into code that
registers them with iocsh. The variables themselves must be defined in some
existing C or C++ code and marked using the macro
<code>epicsExportAddress(type,name)</code>. Only plain <code>int</code> and
<code>double</code> types are supported.</p>
<p><strong>macEnvExpand</strong></p>
<p>A facility for performing macro expansion using environment variables as
macro definitions has been added to libCom/macLib. The ioc shell now performs
macro expansion using this on all input lines (other than comments) before
printing and executing the line.</p>
<p><strong>iocsh var command</strong></p>
<p>For simple applications such as controlling the value of debugging flags.
Devlopers with more complex expression handling requirements should consider
use of the <strong>cexp</strong> package. The available variables are defined
by the new <code>variable</code> dbd file keyword.</p>
<p><strong>iocshArgPersistentString</strong></p>
<p>Tell iocsh to make a copy of the argument string before passing it to the
handler function.</p>
<p><strong>epicsStrDup</strong></p>
<p>Operating-system independent replacement for strdup().</p>
<p><strong>epicsMessageQueue</strong></p>
<p>The epicsMessageQueue API has been changed. All functions and methods to
receive a message now have an additional argument which specifies the size of
the receiver buffer. The receive functions/methods return -1 and the
received message is discarded if the received message will not fit in the
buffer. See the Application Developer's Guide (libCom OSI) for details.</p>
<p>This is an incompatible change. All R3.14.2 applications which use
epicsMessageQueue must be modified before they can be compiled and used with
R3.14.3</p>
<h4>Error Message Logging</h4>
<p>A bug occurring only in Microsoft Windows port of the error message
logging client was fixed. The symptoms were problems getting a Microsoft
Windows based IOC to make entries in the log file.</p>
<p>A bug occurring in the error message logging server where a partial
message arrives w/o a &lt;CR&gt; and then a &lt;CR&gt; from a previous
message was found in the input buffer was fixed. The problem must have
existed for a long time but probably was not occurring frequently. The
symptom was garbled output in the log file.</p>
<p>An IP kernel deadlock vulnerability occurring when vxWorks's tNetTask
calls logMsg because of a transient mbuf starvation situation has been fixed.
The fix was to not call logFdAdd for the log client's socket and instead
create a specialized vxWorks device driver which calls errlogPrintf for each
incoming message and then call logFdAdd for a file descriptor opened with
that device driver. The desirable functional change being errlogPrintf's
capability to discard messages when it gets behind (because of a transient
mbuf starvation situation). The fix also means that any code that calls
errlogAddListener on vxWorks, e.g. CMLOG, will now receive the logMsg
messages.</p>
<h4>Channel Access Client Library Client Context Cleanup Race Condition</h4>
<p>The symptom is a CA client program that fails with a segmentation
violation on Linux shortly after calling ca_task_exit()or
ca_context_destroy(). A fix will show up in R3.14.3. Regression tests were
updated to detect this type of problem.</p>
<h4>Red Hat 7.3 Linux Process Rundown Bug</h4>
<p>There appears to be a bug in the Red Hat 7.3 process rundown where posix
thread support is defective when file scope destructors are being run. The
symptom was a hang during process exit. A workaround was installed.</p>
<h4>Multiple CA Servers on MAC OSX</h4>
<p>A patch was made to allow multiple CA servers on MAC OSX. OSX is a recent
branch off of BSD and therefore requires socket option SO_REUSEPORT.</p>
<center>
<h2>Changes since 3.14.1</h2>
</center>
<p><strong>Build System</strong></p>
<p>Major changes have been made to the build system. The good news is that
the rules for support and ioc applications are now greatly simplified. The
bad news is that it does mean changes for existing 3.14.1 applications.
Please see:</p>
<p><a
href="ConvertingR3.14.1AppsToR3.14.2.html">ConvertingR3.14.1AppsToR3.14.2</a></p>
<p>for details. If you are using the <strong>function</strong> DBD keyword it
no longer exists. Please read this conversion document for details.</p>
<p><strong>Application Developer's Guide</strong></p>
<p>The old chapter "New Feature's for 3.14" has been replaced by a new
chapter "Getting Started". Please read it. It provides a simplified set of
rules that can be used to build most support and ioc applications. Many minor
changes have also been made.</p>
<p><strong>dbGetLink</strong></p>
<p>A bug in dbGetLink resulted in nRequest not being given the value 0 if the
link is a constant link. This in turn caused the waveform record to always
set NORD=NELEM. Thus if an application trys to write a waveform via the
steps:</p>
<pre> prset-&gt;get_array_info(paddr,&amp;no_elements,&amp;offset);
write nNew elements into array &gt;&gt;
prset-&gt;put_array_info(paddr,nNew);</pre>
<p>This sets NORD = nNew. But because of the dbGetLink bug, the soft device
support attached to the waveform record sets NORD to NELM.</p>
<p>This problem is fixed. The actual bug was in macros in dbAccessDefs.h</p>
<p><strong>Access Security</strong></p>
<p>The host names are now converted to lower case. This fixes
incompatibilities between various platforms.</p>
<p><strong>string records</strong></p>
<p>Both the stringin and stringout records have two new DBF_MENU fields: APST
and MPST. These control whether CA monitors are fired if the new VAL field
string is identical to the old one. The default (zero) menu value is "On
Change" with behaviour identical to before, set to "Always" if you want a
record to fire monitors every time the record is processed (analagous to
setting ADEL/MDEL=-1 for numeric record types).</p>
<p><strong>epicsMessageQueue</strong></p>
<p>A new facility that provides the capabilities of vxWorks msgQLib. See the
Application Developer's Guide (libCom OSI) for details.</p>
<p><strong>epicsStdio and errlogPrintf</strong></p>
<p>A new facility has been added to libCom described by epicsStdio.h. It
contains the functions epicsSnprintf and epicsVsnprintf. These are like the
C99 functions snprintf and vsnprintf, which are like sprintf and vsprintf
except that they accept a argument limiting the number of characters
written.</p>
<p>The errlogPrintf facility has been modified to use this facility. Thus it
is not longer subject to a possible buffer overflow.</p>
<p><strong>scanPeriod</strong></p>
<p>This is a new function provided by the Database Scanning facility. Given
an index for the choices defined by menuScan.h, it returns the scan period in
seconds. The argument can just be the scan field of a database record. If the
index is not associated with a periodic scan rate, the value 0.0 is
returned.</p>
<p><strong>New epicsString.h function</strong></p>
<p>A new function epicsStrCaseCmp has been added. It is like strcmp except
that it ignores case.</p>
<p><strong>macLib</strong></p>
<p>macParseDefns did not check for handle==NULL. The documentation for
macParseDefns was not correct.</p>
<center>
<h2>Changes since beta2</h2>
</center>
<p><strong>function - New Database Definition Keyword</strong></p>
<p>dbStaticLib and related programs now accept a new keyword in DBD files:</p>
<pre>function(name)</pre>
<p>Where <code>name</code> is the name of a function with "C" linkage that is
included in the IOC binary. This function will be automatically registered
with the registry at the same time as the record/device/driver tables, and is
intended to make using subroutine records much easier on non-vxWorks
systems.. Prior R3.14 releases required there to be a static registration
routine for such subroutines.</p>
<p>dbStaticLib has two additional routines to support this, dbDumpFunction()
and dbWriteFunctionFP(). dbDumpFunction has been added to the iocsh command
table.</p>
<p><strong>iocsh</strong></p>
<p>When executing commands from a script file, iocsh now echoes each command
to the terminal before execution. This makes it much easier to see where
errors are being reported.</p>
<p><strong>Solaris build requirement</strong></p>
<p><code>uname</code> must be defined for builds on solaris hosts because it
is used to determine the solaris version.</p>
<p><strong>Linux build note</strong></p>
<p>Under linux-x86 only, when SHARED_LIBRARIES=YES it is now possible to have
one or more directory paths burned into products as run-time locations for
the shared libraries. In configure/os/CONFIG_SITE.Common.linux-x86 add any
such absolute paths to the new make variable SHRLIB_SEARCH_DIRS
(lib/&lt;arch&gt; will be automatically appended to each directory given).</p>
<p><strong>RULES.Db</strong></p>
<p>A <code>*[nn].db</code> file will be created from an
<code>*.template</code> and a <code>*[nn].substitutions</code> file ,where
<code>nn</code> has a value between 0 and 99.</p>
<p><strong>Support for 64 bit long</strong></p>
<p>Many changes were made to support architectures on which a long is a 64
bit integer. The basic change was to change:</p>
<ul>
<li>long =&gt; epicsInt32 for anything that might get transfered to/from
network buffers</li>
<li>unsigned long =&gt; epicsUInt32 for anything that might get transfered
to/from network buffers</li>
</ul>
<p>The changes include the following:</p>
<ul>
<li>cvtFast</li>
<li>xxxRecord.h NOTE: In addition to the changes for long all enum fields
are now epicsEnum16</li>
<li>dbStaticLib</li>
<li>db_access</li>
<li>dbConvert and dbFastLinkConv</li>
</ul>
<p><strong>Hardware Link Definitions</strong></p>
<p>The various parts of hardware link definitions now accept HEX values,
e.g.</p>
<pre>field(INP,"L0 A1 C0 S0xa @")</pre>
<p>NOTES:</p>
<ul>
<li>This may not be compatible with Database Configuration Tools</li>
<li>If records are written via dbStaticLib the falues will NOT be written
in HEX.</li>
</ul>
<p><strong>dbDumpFldDes</strong></p>
<p>A macro has been defined so that client code can be written that is
compatible between 3.13 and 3.14.</p>
<p><span style="font-weight: bold">epicsMutex for posix</span></p>
<ul>
<li>No longer supports epicsMutexLockWithTimeout. This was done to allow a
more efficient posix implementation.</li>
<li>If PTHREAD_MUTEX_RECURSIVE is provided then the implementation uses
only pthread_mutex. This is much faster (2 to 3 times as fast) as the
previous implementation.</li>
</ul>
<p><strong>Mac OS X</strong></p>
<p>Now supported as development platform and as IOC.</p>
<p><strong>RTEMS</strong></p>
<p>Additional RTEMS-pc386 network drivers are available</p>
<p><strong>iocsh</strong></p>
<p>Configurable iocsh command-line editing support (none, readline,
libtecla)</p>
<p><strong>CA Reference Manual</strong></p>
<p>Many additions.</p>
<p><strong>CA Client Library</strong></p>
<p>Bugs related to connection speed when creating new channels and other
channels are not found fixed. Bugs related to proper schedualing in file
descriptor manager based clients fixed. Many other bugs were fixed.
Performance was significantly improved.</p>
<p><strong>Original CA Server Library (still employed in R3.14 by
iocCore)</strong></p>
<p>A bug was fixed where the server was in rare situations using excessive
CPU.</p>
<p><strong>Portable CA Server LIbrary</strong></p>
<p>Several bugs were fixed when performing integration testing with the
channel access gateway.</p>
<p><strong>GDD</strong></p>
<p>Many bugs and missing features fixed.</p>
<center>
<h2>Changes since beta1</h2>
</center>
<p><strong>dbCommon.dbd</strong></p>
<p>Field UDF now has a promptgroup. This allows users to set UDF false via
DCTs.</p>
<p><strong>errlog</strong></p>
<p>errlog no longer contains an atexit that calls errlogFlush. This did not
work on all operating systems. cantProceed, iocsh, and ca_task_exit all call
errlogFlush. Other applications may also have to call if before
terminating.</p>
<p><strong>mbboRecord</strong></p>
<p>mbboRecord now implements method cvt_dbaddr for the VAL field. If no state
vales or state strings are defined then it sets field_type and dbr_field_type
to DBF_USHORT.</p>
<p><strong>timeStamp changes</strong></p>
<p>Changes have been made to:</p>
<ul>
<li>Allow device support to set the time stamp (field TIME) of a
record.</li>
<li>Allow a record to receive it's time stamp from another record,</li>
</ul>
<p>epicsTime.h now has the definitions:</p>
<pre>#define epicsTimeEventBestTime -1
#define epicsTimeEventDeviceTime -2</pre>
<p>These are values for the TSE field of dbCommon.</p>
<ul>
<li><strong>epicsTimeEventBestTime</strong> means that code supplying the
time stamp should get the most accurate time possible. Currently this
only has meaning on vxWorks and if drvTS is supplying the time via some
hardware timing system. It means get the latest time from the hardware
system rather than from the vxWorks tick time. drvTs previously accepted
a hardcoded value of -1.</li>
<li><strong>epicsTimeEventDeviceTime</strong> means that recGblGetTimeStamp
doesn't modify the time field. This allows device support to supply the
time stamp.</li>
</ul>
<p>If the <strong>TSEL</strong> field refers to the <strong>TIME</strong>
field of a record then <strong>recGblGetTimeStamp</strong> sets
<strong>TIME</strong> equal to the time it gets from the record the
<strong>TSEL</strong> references. This works for both database and channel
access links. In this case field TSE is not used.</p>
<pre> </pre>
<p><strong>aiRecord and aoRecord: Setting eoff=egul</strong></p>
<p>Instead of init_record executing code like</p>
<pre> if ((pai-&gt;linr == menuConvertLINEAR) &amp;&amp; pdset-&gt;special_linconv) {
pai-&gt;eoff = pai-&gt;egul;
}</pre>
<p>It now executes:</p>
<pre> if ((pai-&gt;eslo==1.0) &amp;&amp; (pai-&gt;eoff==0.0)) {
pai-&gt;eoff = pai-&gt;egul;
}</pre>
<p>aoRecord has a similar change</p>
<p>This was done so that old device support which does not implement
special_linconv still works.</p>
<p><strong>CA puts to disabled record</strong></p>
<p>If a CA client issues a put to a disabled record then, when the record is
ena bled, database puts to the record will not make the record process until
a CA pu t is again issued. This is fixed.</p>
<p><strong>TPRO - trace processing</strong></p>
<p>If dbProcess is called recursively by different tasks, it did not properly
handle TPRO. Consider the following database:</p>
<pre>record(ao,"mrkao") {
field(OUT,"mrkai CA")
field(TPRO,"1")
}
record(ai,"mrkai") {
field(TPRO,"1")
}</pre>
<p>If a channel access put is sent to mrkao, no message is issued when mrkai
is processed.</p>
<p>This is now fixed.</p>
<p><strong>TSconfigure</strong></p>
<p>If in your st.cmd file you issue the command.</p>
<p>TSconfigure(0,0,0,0,0,0,1)</p>
<p>And set the TSE field of any record to a non zero value, then a crash will
occur when recGblGetTimeStamp is called.</p>
<p>This is now fixed.</p>
<p><strong>calcoutRecord</strong></p>
<p>nsev not sevr must be checked to decide if dbPutLink should be called.</p>
<p><strong>dbCa</strong></p>
<p>Whenever a connection is made, a request to retrieve the control, display,
and alarm linits and the precision and units is automatically issued.
Previously this was only done if dbCaGetAttributes was called. This it is no
longer necessary to call dbCaGetAttributes.</p>
<p><strong>calcPerform</strong></p>
<p>This now returns a non zero value if the result is nan (not a number).</p>
<p><strong>Record Name Length</strong></p>
<p>The size of the name field has been expanded from 29 to 61, i.e. record
names can now have 60 characters.</p>
<p><strong>iocInit</strong></p>
<p>initialProcess is now called before interruptAccept. This means that
initial processing will be done before periodically scanned and I/O Inter
scanned records start processing.</p>
<p><strong>ellLib</strong></p>
<p>Casts have been removed that suppressed valuable error messages</p>
<p><strong>mbbiRecord</strong></p>
<p>All existing manipulations of UDF in process() are removed and udf is set
FALSE when the raw value is successfully read.</p>
<p><strong>selRecord</strong></p>
<p>In do_sel udf is not set false at the beginning. If selm has an invalid
value recGblSetSevr(psel,SOFT_ALARM,MAJOR_ALARM) is called.</p>
<p><strong>cdCommands file</strong></p>
<p>Fixed a bug and revised the use of the IOCS_APPL_TOP setting in an
application's &lt;top&gt;/configure/CONFIG file (which specifies the path to
&lt;top&gt; as seen by the IOC) to apply the same modifications to all paths
output in the cdCommands file.</p>
<p><strong>dbStaticLib</strong></p>
<p>All routines with Recdes of Fielddes in their name are obsolete and
removed. A new routine dbDumpField replaces dbDumpFldDes.</p>
<center>
<h2>Changes since alpha2</h2>
</center>
All changes for release 3.13.5 that also apply to 3.14 have been made.
<p><b>devAiSoftRaw and devAoSoftRaw</b></p>
<p>A new state is defined for the LINR field. The name is "SLOPE", which
allows any device type to be used with manual settings of the EOFF and ESLO
fields. With this setting, the device support's special_linconv() routine is
only called when LINR=LINEAR.</p>
<p>The RTEMS TFTP remote filesystem driver now supports a limited form of the
chdir() system call. One restriction is that all pathnames passed to chdir()
must end in a / character, so IOC shell commands to change directories must
be given as</p>
<p>cd ../db/</p>
<center>
<h1>EPICS Release base 3.14.0alpha2</h1>
</center>
Since the alpha1 release some major changes were made to the build system, to
some of the libCom facilities, and to the iocsh facilities.
<p>The unbundled version of the sequencer has been build and tested with this
release. You must obtain a version of the sequencer that has been built
against alpha2.</p>
<p>A verion of the HPlanGpib support has been built and tested with this
release. Again you must obtain a version that builds with alpha2.</p>
<p>A new update to the Application Developer's Guide is available for this
release.</p>
<h3>Build changes</h3>
<ul>
<li>Operating system independant builds are now done in an O.Common
subdirectory and then installed instead of being performed directly in an
install directory.</li>
<li>Build definition names (e.g. RECTYPES, MENUS, DBDNAME, and BPTS) have
been changed to specify the name of the file to be created and installed
instead of the source file name.</li>
<li>All db and dbd related definitions and rules have been moved into
base/configure/RULES.Db file. The rules now allow multiple dbd files and
registerRecordDeviceDriver files to be created in a single Makefile.</li>
<li>"gnumake depends" no longer depends on a complete buildInstall.</li>
</ul>
<h3>Converting alpha1 applications to alpha2</h3>
Build modifications in alpha2 require the following changes to existing R3.14
applications.
<ul>
<li>Remove the now unused RULES files
<blockquote>
./configure/RULES.Db<br>
./configure/RULES.registerRecordDeviceDriver</blockquote>
</li>
<li>Delete the following line in ./configure/RULES
<blockquote>
include $(TOP)/configure/RULES.registerRecordDeviceDriver</blockquote>
</li>
<li>In &lt;top&gt;/configure/Makefile change
<blockquote>
@$(PERL) $(TOOLS)/makeConfigAppInclude.pl $(T_A) $@ $(TOP)</blockquote>
to
<blockquote>
@$(PERL) $(TOOLS)/makeConfigAppInclude.pl $(EPICS_HOST_ARCH) $(T_A) $@
$(TOP)</blockquote>
and add the line
<blockquote>
depends: install</blockquote>
to the bottom of the Makefile.</li>
<li>In all *App/*Db/Makefiles change
<blockquote>
include $(TOP)/configure/RULES.Db</blockquote>
to
<blockquote>
include $(TOP)/configure/RULES</blockquote>
</li>
<li>In all *App/src/Makefile files change
<blockquote>
DBDNAME = &lt;name&gt;App</blockquote>
to
<blockquote>
DBD += &lt;name&gt;</blockquote>
and remove the line<br>
<blockquote>
DBDEXPAND = &lt;name&gt;Include.dbd &nbsp;</blockquote>
NOTE: If any of your *App/*Db/Makefiles contain "DBDNAME =" lines you
should make these same changes in that *Db dirctory.</li>
<li>In all *App/src/Makefile Makefiles change
<blockquote>
RECTYPES=&lt;name&gt;.h &nbsp;</blockquote>
to
<blockquote>
DBDINC+=&lt;name&gt; &nbsp;</blockquote>
change
<blockquote>
MENUS=&lt;name&gt;.h &nbsp;</blockquote>
to
<blockquote>
DBDINC+=&lt;name&gt; &nbsp;</blockquote>
change
<blockquote>
BPTS &nbsp;</blockquote>
to
<blockquote>
DBD &nbsp;</blockquote>
change
<blockquote>
INSTALLDB &nbsp;</blockquote>
to
<blockquote>
DB &nbsp;</blockquote>
change
<blockquote>
DBDINSTALL &nbsp;</blockquote>
to
<blockquote>
DBD &nbsp;</blockquote>
</li>
<li>In all example *App/src/Makefile files change
<blockquote>
example_SRCS_DEFAULT += registerRecordDeviceDriver.c &nbsp;</blockquote>
to
<blockquote>
example_SRCS_DEFAULT += &lt;name&gt;_registerRecordDeviceDriver.cpp
&nbsp;</blockquote>
where &lt;name&gt; is the base name of a &lt;name&gt;.dbd file which was
created from a &lt;name&gt;Include.dbd file and which will be loaded in a
st.cmd or stcmd.host script (e.g. example).</li>
<li>In ./iocBoot/ioc&lt;name&gt;/st.cmd files change
<blockquote>
dbLoadDatabase("dbd/exampleApp.dbd") &nbsp;</blockquote>
to
<blockquote>
dbLoadDatabase("dbd/example.dbd") &nbsp;</blockquote>
</li>
<li>In &lt;top&gt;/iocBoot/ioc&lt;name&gt;/stcmd.host files change
<blockquote>
dbLoadDatabase("../../dbd/exampleApp.dbd",0,0)</blockquote>
to
<blockquote>
dbLoadDatabase("../../dbd/example.dbd",0,0)</blockquote>
</li>
</ul>
<h3>EPICS_HOST_ARCH changes</h3>
<p>GNU compiler builds are now determined by the value of EPICS_HOST_ARCH and
are no longer specified in CONFIG_SITE.&nbsp; All references to the ANSI
(ACC/GCC) and CPLUSPLUS (CCC/G++) macros have been removed.</p>
<h3>libCom</h3>
<p>Most of the library routines and files starting with the prefix osi have
been changed to start with epics. Several also had major changes to their
user interface. See the latest version of the Application Developer's Guide
for details.</p>
<center>
<h2>EPICS Release base 3.14.0alpha1 Notes</h2>
</center>
<p><br>
</p>
<p>This is the first release of 3.14. This is the first release that supports
iocCore on platforms besides vxWorks.</p>
<p>iocCore is now supported on the following platforms:</p>
<ul>
<li>vxWorks
<blockquote>
Tornado II is required.</blockquote>
</li>
<li>RTEMS
<blockquote>
An open source real time operating system. It has been tested on
MVME167 and MC68360 processors. RTEMS also supports
powerPC.</blockquote>
</li>
<li>solaris
<blockquote>
Has been tested on solaris 2.6 and solaris 8 with Sun workshop 6.0 (C++
5.2). Sun workshop 5.0 (C++ 5.0) will not compile this version of
EPICS.</blockquote>
</li>
<li>Linux
<blockquote>
Has been tested on Redhat x86 platforms.</blockquote>
</li>
<li>winNT
<blockquote>
Testing has been done with visual C++ 6.0.</blockquote>
</li>
</ul>
<p>A new version of the Application Developers Guide is available. The
following gives links to the new Application Developer's Guide and to RTEMS
information.</p>
<blockquote>
<a
href="http://www.aps.anl.gov/epics/modules/base/R3-14.php">http://www.aps.anl.gov/epics/modules/base/R3-14.php</a></blockquote>
<p>Most of the Application Developer's Guide has only minor changes. The
following are new.</p>
<ul>
<li>Chapter 2 describes the new features for 3.14.</li>
<li>Chapter 4 describes the build facility for 3.14</li>
<li>Chapters 19 and 20 describe libCom, which was not previously
documented.</li>
</ul>
<p><br>
It must be emphasized that this is an alpha release.</p>
<ul>
<li>Please don't use it for existing operational systems</li>
<li>Don't build your operational CA clients with it.</li>
<li>The APIs for new components in libCom are still evolving so if you use
them be prepared for changes.</li>
<li>HPUX - No support currently because we could not find good support for
multithreading.</li>
</ul>
<h4>Building Applications</h4>
<ul>
<li>For new applications see Chapters 2 (New Features) and Chapter 4 (Build
Facility) of the Application Developer's Guide.</li>
<li>For existing applications the old config rules are still supported.
Some changes, however, are needed. Documentation is being prepared and
will appear in these release notes sooon.</li>
</ul>
</body>
</html>