mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-13 06:50:39 -08:00
217 lines
No EOL
14 KiB
HTML
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 — 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> »</li>
|
|
<li><a href="index.html" accesskey="U">Design</a> »</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">"release.epcore.brisling"</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&view=status%3dopen&display=Job:Priority:Title&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> »</li>
|
|
<li><a href="index.html" >Design</a> »</li>
|
|
</ul>
|
|
</div>
|
|
<div class="footer">
|
|
© <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> |