mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-04-27 16:51:06 -07:00
208 lines
No EOL
14 KiB
HTML
208 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>46. 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="Old design" href="old.html" />
|
|
<link rel="next" title="47. Software versions" href="version.html" />
|
|
<link rel="prev" title="45. General MPS types" href="type.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="version.html" title="47. Software versions"
|
|
accesskey="N">next</a> |</li>
|
|
<li class="right" >
|
|
<a href="type.html" title="45. General MPS types"
|
|
accesskey="P">previous</a> |</li>
|
|
<li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> »</li>
|
|
<li><a href="old.html" accesskey="U">Old design</a> »</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="document">
|
|
<div class="documentwrapper">
|
|
<div class="bodywrapper">
|
|
<div class="body">
|
|
|
|
<span class="target" id="design-version-library"></span><div class="section" id="library-version-mechanism">
|
|
<span id="index-0"></span><h1>46. Library version mechanism<a class="headerlink" href="#library-version-mechanism" title="Permalink to this headline">¶</a></h1>
|
|
<div class="section" id="introduction">
|
|
<span id="design.mps.version-library"></span><h2>46.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="readership">
|
|
<h2>46.2. 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>46.3. 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
|
|
<a class="reference external" href="https://info.ravenbrook.com/project/mps/import/2001-11-05/mmprevol/request/epcore/160021">request.epcore.160021</a>: There is no way to tell which version and
|
|
release of the MM one is using.</p>
|
|
</div>
|
|
<div class="section" id="overview">
|
|
<h2>46.4. 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>46.5. 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>46.6. 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="xref c c-macro 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="xref c c-macro 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 <a class="reference internal" href="../topic/platform.html#MPS_PF_STRING" title="MPS_PF_STRING"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_PF_STRING</span></tt></a> 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="xref c c-macro 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="xref c c-macro 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="#">46. Library version mechanism</a><ul>
|
|
<li><a class="reference internal" href="#introduction">46.1. Introduction</a></li>
|
|
<li><a class="reference internal" href="#readership">46.2. Readership</a></li>
|
|
<li><a class="reference internal" href="#source">46.3. Source</a></li>
|
|
<li><a class="reference internal" href="#overview">46.4. Overview</a></li>
|
|
<li><a class="reference internal" href="#architecture">46.5. Architecture</a></li>
|
|
<li><a class="reference internal" href="#implementation">46.6. Implementation</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
|
|
<h4>Previous topic</h4>
|
|
<p class="topless"><a href="type.html"
|
|
title="previous chapter">45. General MPS types</a></p>
|
|
<h4>Next topic</h4>
|
|
<p class="topless"><a href="version.html"
|
|
title="next chapter">47. Software versions</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="version.html" title="47. Software versions"
|
|
>next</a> |</li>
|
|
<li class="right" >
|
|
<a href="type.html" title="45. General MPS types"
|
|
>previous</a> |</li>
|
|
<li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> »</li>
|
|
<li><a href="old.html" >Old 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> |