1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-13 06:50:39 -08:00
emacs/mps/manual/html/design/version-library.html
Gareth Rees c5f77afc19 Bring html up to date for the mps manual.
Copied from Perforce
 Change: 181433
 ServerID: perforce.ravenbrook.com
2013-04-24 12:21:37 +01:00

217 lines
No EOL
14 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>19. Library version mechanism &mdash; Memory Pool System 1.111.0 documentation</title>
<link rel="stylesheet" href="../_static/mps.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '1.111.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<link rel="copyright" title="Copyright" href="../copyright.html" />
<link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
<link rel="up" title="Design" href="index.html" />
<link rel="next" title="Introduction to memory management" href="../mmref/index.html" />
<link rel="prev" title="18. Software versions" href="version.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../mmref/index.html" title="Introduction to memory management"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="version.html" title="18. Software versions"
accesskey="P">previous</a> |</li>
<li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
<li><a href="index.html" accesskey="U">Design</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="library-version-mechanism">
<span id="design.mps.version-library"></span><h1>19. Library version mechanism<a class="headerlink" href="#library-version-mechanism" title="Permalink to this headline"></a></h1>
<div class="section" id="introduction">
<h2>19.1. Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline"></a></h2>
<p><span class="target" id="design.mps.version-library.intro"></span><a class="mpstag reference internal" href="#design.mps.version-library.intro">.intro:</a> This describes the design of a mechanism to be used
to determine the version (that is, product, version, and release) of
an MPS library.</p>
</div>
<div class="section" id="history">
<h2>19.2. History<a class="headerlink" href="#history" title="Permalink to this headline"></a></h2>
<p><span class="target" id="design.mps.version-library.hist.0"></span><a class="mpstag reference internal" href="#design.mps.version-library.hist.0">.hist.0:</a> Incomplete document. David Jones, 1998-08-19.</p>
<p><span class="target" id="design.mps.version-library.hist.1"></span><a class="mpstag reference internal" href="#design.mps.version-library.hist.1">.hist.1:</a> Converted from MMInfo database design document.
Richard Brooksby, 2002-06-07.</p>
<p><span class="target" id="design.mps.version-library.hist.2"></span><a class="mpstag reference internal" href="#design.mps.version-library.hist.2">.hist.2:</a> Converted to reStructuredText. Gareth Rees,
2013-03-11.</p>
</div>
<div class="section" id="readership">
<h2>19.3. Readership<a class="headerlink" href="#readership" title="Permalink to this headline"></a></h2>
<p><span class="target" id="design.mps.version-library.readership"></span><a class="mpstag reference internal" href="#design.mps.version-library.readership">.readership:</a> Any MPS developer.</p>
</div>
<div class="section" id="source">
<h2>19.4. Source<a class="headerlink" href="#source" title="Permalink to this headline"></a></h2>
<p><span class="target" id="design.mps.version-library.source"></span><a class="mpstag reference internal" href="#design.mps.version-library.source">.source:</a> Various requirements demand such a mechanism. See
request.epcore.160021: There is no way to tell which version and
release of the MM one is using.</p>
</div>
<div class="section" id="overview">
<h2>19.5. Overview<a class="headerlink" href="#overview" title="Permalink to this headline"></a></h2>
<p><span class="target" id="design.mps.version-library.overview"></span><a class="mpstag reference internal" href="#design.mps.version-library.overview">.overview:</a> See design.mps.version for discussion
and design of versions of other aspects of the software. This document
concentrates on a design for determining which version of the library
one has linked with. There are two aspects to the design, allowing
humans to determine the version of an MPS library, and allowing
programs to determine the version of an MPS library. Only the former
is currently designed (a method for humans to determine which version
of an MPS library is being used).</p>
<p><span class="target" id="design.mps.version-library.overview.impl"></span><a class="mpstag reference internal" href="#design.mps.version-library.overview.impl">.overview.impl:</a> The overall design is to have a distinctive
string compiled into the library binary. Various programs and tools
will be able to extract the string and display it. The string will
identify the version of the MPS begin used.</p>
</div>
<div class="section" id="architecture">
<h2>19.6. Architecture<a class="headerlink" href="#architecture" title="Permalink to this headline"></a></h2>
<p><span class="target" id="design.mps.version-library.arch.structure"></span><a class="mpstag reference internal" href="#design.mps.version-library.arch.structure">.arch.structure:</a> The design consists of three components:</p>
<ol class="arabic simple">
<li><span class="target" id="design.mps.version-library.arch.string"></span><a class="mpstag reference internal" href="#design.mps.version-library.arch.string">.arch.string:</a> A string embedded into any delivered library
binaries (which will encode the necessary information).</li>
<li><span class="target" id="design.mps.version-library.arch.proc"></span><a class="mpstag reference internal" href="#design.mps.version-library.arch.proc">.arch.proc:</a> A process by which the string is modified
appropriately whenever releases are made.</li>
<li><span class="target" id="design.mps.version-library.arch.tool"></span><a class="mpstag reference internal" href="#design.mps.version-library.arch.tool">.arch.tool:</a> A tool and its documentation (it is expected
that standard tools can be used). The tool will be used to extract
the version string from a delivered library or an executable linked
with the library.</li>
</ol>
<p><span class="target" id="design.mps.version-library.arch.not-here"></span><a class="mpstag reference internal" href="#design.mps.version-library.arch.not-here">.arch.not-here:</a> Only the string component
(arch.string) is directly described here. The other
components are described elsewhere. (where?)</p>
<p>The string will contain information to identify the following items:</p>
<ol class="arabic simple">
<li><span class="target" id="design.mps.version-library.arch.string.platform"></span><a class="mpstag reference internal" href="#design.mps.version-library.arch.string.platform">.arch.string.platform:</a> the platform being used.</li>
<li><span class="target" id="design.mps.version-library.arch.string.product"></span><a class="mpstag reference internal" href="#design.mps.version-library.arch.string.product">.arch.string.product:</a> the name of the product.</li>
<li><span class="target" id="design.mps.version-library.arch.string.variety"></span><a class="mpstag reference internal" href="#design.mps.version-library.arch.string.variety">.arch.string.variety:</a> the variety of the product.</li>
<li><span class="target" id="design.mps.version-library.arch.string.version"></span><a class="mpstag reference internal" href="#design.mps.version-library.arch.string.version">.arch.string.version:</a> the version and release of the product.</li>
</ol>
</div>
<div class="section" id="implementation">
<h2>19.7. Implementation<a class="headerlink" href="#implementation" title="Permalink to this headline"></a></h2>
<p><span class="target" id="design.mps.version-library.impl.file"></span><a class="mpstag reference internal" href="#design.mps.version-library.impl.file">.impl.file:</a> The string itself is a declared C object in the
file <tt class="docutils literal"><span class="pre">version.c</span></tt> (impl.c.version). It consists of a
concatenation of various strings which are defined in other modules.</p>
<p><span class="target" id="design.mps.version-library.impl.variety"></span><a class="mpstag reference internal" href="#design.mps.version-library.impl.variety">.impl.variety:</a> The string containing the name of the variety
is the expansion of the macro <tt class="docutils literal"><span class="pre">MPS_VARIETY_STRING</span></tt> defined by
<tt class="docutils literal"><span class="pre">config.h</span></tt> (impl.h.config).</p>
<p><span class="target" id="design.mps.version-library.impl.product"></span><a class="mpstag reference internal" href="#design.mps.version-library.impl.product">.impl.product:</a> The string containing the name of the product
is the expansion of the macro <tt class="docutils literal"><span class="pre">MPS_PROD_STRING</span></tt> defined by
<tt class="docutils literal"><span class="pre">config.h</span></tt> (impl.h.config).</p>
<p><span class="target" id="design.mps.version-library.impl.platform"></span><a class="mpstag reference internal" href="#design.mps.version-library.impl.platform">.impl.platform:</a> The string containing the name of the
platform is the expansion of the macro <tt class="docutils literal"><span class="pre">MPS_PF_STRING</span></tt> defined by
<tt class="docutils literal"><span class="pre">mpstd.h</span></tt> (impl.h.mpstd).</p>
<p><span class="target" id="design.mps.version-library.impl.date"></span><a class="mpstag reference internal" href="#design.mps.version-library.impl.date">.impl.date:</a> The string contains the date and time of
compilation by using the <tt class="docutils literal"><span class="pre">__DATE__</span></tt> and <tt class="docutils literal"><span class="pre">__TIME__</span></tt> macros defined
by ISO C §6.8.8.</p>
<p><span class="target" id="design.mps.version-library.impl.version"></span><a class="mpstag reference internal" href="#design.mps.version-library.impl.version">.impl.version:</a> The string contains the version and release of
the product. This is by the expansion of the macro <tt class="docutils literal"><span class="pre">MPS_RELEASE</span></tt>
which is defined in this module (<tt class="docutils literal"><span class="pre">version.c</span></tt>).</p>
<p><span class="target" id="design.mps.version-library.impl.usage"></span><a class="mpstag reference internal" href="#design.mps.version-library.impl.usage">.impl.usage:</a> To make a release, the <tt class="docutils literal"><span class="pre">MPS_RELEASE</span></tt> macro
(see impl.c.version.release) is edited to contain the
release name (for example, <tt class="docutils literal"><span class="pre">&quot;release.epcore.brisling&quot;</span></tt>), and then
changed back immediately after the release checkpoint is made.</p>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/logo.png" alt="Logo"/>
</a></p>
<h3><a href="../index.html">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">19. Library version mechanism</a><ul>
<li><a class="reference internal" href="#introduction">19.1. Introduction</a></li>
<li><a class="reference internal" href="#history">19.2. History</a></li>
<li><a class="reference internal" href="#readership">19.3. Readership</a></li>
<li><a class="reference internal" href="#source">19.4. Source</a></li>
<li><a class="reference internal" href="#overview">19.5. Overview</a></li>
<li><a class="reference internal" href="#architecture">19.6. Architecture</a></li>
<li><a class="reference internal" href="#implementation">19.7. Implementation</a></li>
</ul>
</li>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="version.html"
title="previous chapter">18. Software versions</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="../mmref/index.html"
title="next chapter">Introduction to memory management</a></p><h4>Downloads</h4>
<p class="topless">
<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br>
<a href="http://www.ravenbrook.com/project/mps/release/">All MPS Kit releases</a>
</p>
<h4>Issues</h4>
<p class="topless">
<a href="http://www.ravenbrook.com/project/mps/issue/?action=list&amp;view=status%3dopen&amp;display=Job:Priority:Title&amp;sort=Priority">Known issues</a><br>
<a href="http://www.ravenbrook.com/project/mps/issue/?action=fixed&release_fixed=1.111.0">Issues fixed in release 1.111.0</a>
</p><h4>Contact us</h4>
<p class="topless"><a href="mailto:mps-questions@ravenbrook.com">mps-questions@ravenbrook.com</a></p>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../mmref/index.html" title="Introduction to memory management"
>next</a> |</li>
<li class="right" >
<a href="version.html" title="18. Software versions"
>previous</a> |</li>
<li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
<li><a href="index.html" >Design</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; <a href="../copyright.html">Copyright</a> 2013, Ravenbrook Limited.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>