forked from boostorg/endian
Remove Release History details that are already covered by Mini-review page. Add FAQ for C++03 compiler support.
This commit is contained in:
@ -53,7 +53,10 @@
|
|||||||
<a href="#Conclusions">Conclusions</a><br>
|
<a href="#Conclusions">Conclusions</a><br>
|
||||||
<a href="#FAQ">Overall FAQ</a><br>
|
<a href="#FAQ">Overall FAQ</a><br>
|
||||||
<a href="#Release-history">Release history</a><br>
|
<a href="#Release-history">Release history</a><br>
|
||||||
<a href="#Changes-since-formal-review">Changes since formal review</a><br>
|
<a href="#Changes-requested-by-formal-review">Changes
|
||||||
|
requested by formal review</a><br>
|
||||||
|
<a href="#Other-changes-since-formal-review">Other changes since
|
||||||
|
formal review</a><br>
|
||||||
<a href="#Acknowledgements">Acknowledgements</a><br>
|
<a href="#Acknowledgements">Acknowledgements</a><br>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -171,7 +174,8 @@ integers. The types may be aligned.</p>
|
|||||||
|
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
<p>Boost Endian is a header-only library.</p>
|
<p>Boost Endian is a header-only library. C++03 compilers are supported. C++11 features
|
||||||
|
affecting interfaces, such as <code>noexcept</code>, are used only if available.</p>
|
||||||
|
|
||||||
<h2><a name="Choosing">Choosing</a> between conversion functions, buffer types,
|
<h2><a name="Choosing">Choosing</a> between conversion functions, buffer types,
|
||||||
and arithmetic types</h2>
|
and arithmetic types</h2>
|
||||||
@ -524,6 +528,14 @@ stores, multiple instructions are required on common platforms.</p>
|
|||||||
|
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
|
<p><b>Are C++03 compilers supported?</b></p>
|
||||||
|
|
||||||
|
<blockquote>
|
||||||
|
|
||||||
|
<p>Yes.</p>
|
||||||
|
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
<p><b>Does the implementation use compiler intrinsic built-in byte swapping?</b></p>
|
<p><b>Does the implementation use compiler intrinsic built-in byte swapping?</b></p>
|
||||||
|
|
||||||
<blockquote>
|
<blockquote>
|
||||||
@ -596,50 +608,33 @@ and 16, 32, and 64-bit aligned integers.</p>
|
|||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
<h2><a name="Release-history">Release history</a></h2>
|
<h2><a name="Release-history">Release history</a></h2>
|
||||||
<h3><a name="Changes-since-formal-review">Changes since formal review</a></h3>
|
<h3><a name="Changes-requested-by-formal-review">Changes requested by formal review</a></h3>
|
||||||
|
<p>The library was reworked from top to bottom to accommodate changes requested
|
||||||
|
during the formal review. See <a href="mini_review_topics.html">Mini-Review</a>
|
||||||
|
page for details.</p>
|
||||||
|
<h3><a name="Other-changes-since-formal-review">Other changes since formal
|
||||||
|
review</a></h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li>The endian types have been decomposed into endian buffer types
|
|
||||||
and endian arithmetic types, as requested. The arithmetic types derive from
|
|
||||||
the buffer types.</li>
|
|
||||||
<li>Headers have been renamed to <code>endian/arithmetic.hpp</code> and
|
<li>Headers have been renamed to <code>endian/arithmetic.hpp</code> and
|
||||||
<code>endian/conversion.hpp</code>. <code>endian/buffers.hpp</code> has been
|
<code>endian/conversion.hpp</code>. <code>endian/buffers.hpp</code> has been
|
||||||
added.
|
added.
|
||||||
Infrastructure file names were changed accordingly.</li>
|
Infrastructure file names were changed accordingly.</li>
|
||||||
<li>The endian buffer and arithmetic types and endian conversion functions now support 32-bit (<code>float)</code> and
|
<li>The endian arithmetic type aliases have been renamed,
|
||||||
64-bit <code>(double)</code> floating point, as requested.</li>
|
using a naming pattern that is consistent for both integer and floating point,
|
||||||
<li>The endian types now have stream inserter and extractor templates, as
|
and a consistent set of aliases supplied for the endian buffer types.</li>
|
||||||
requested.</li>
|
<li>The aligned-type alias names now have the <code>_t</code> suffix, for
|
||||||
<li>Both the endian types and endian conversion functions now support UDTs, as requested.</li>
|
consistency with the standard library integer type aliases and because use of
|
||||||
<li>The endian type aliases have been renamed,
|
aligned types is much more common than unaligned types.</li>
|
||||||
using a naming pattern that is consistent for both integer and floating point, .</li>
|
<li>The unaligned-type alias names now have the <code>_ut</code> suffix. This
|
||||||
<li>The conversion functions have been much revised,
|
is short, yet stands out enough to alert the reader than unusual types are
|
||||||
refactored, and otherwise improved based on review comments.<ul>
|
involved.</li>
|
||||||
<li>Functions have been renamed to clarify their functionality.</li>
|
|
||||||
<li>Both return-by-value and modify-in-place interfaces are provided, as
|
|
||||||
requested.</li>
|
|
||||||
<li>In addition to the named-endianness functions, functions that perform
|
|
||||||
compile-time (via template) and run-time (via function argument) dispatch
|
|
||||||
are now provided, as requested.</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>Compiler (Clang, GCC, VisualC++, etc.) intrinsics and built-in functions
|
|
||||||
are used in the implementation where appropriate, as requested.</li>
|
|
||||||
<li>For the endian types, the implementation uses the endian conversion functions,
|
|
||||||
and thus the intrinsics,
|
|
||||||
as requested.</li>
|
|
||||||
<li><code>order::native</code> is now a synonym for <code>order::big</code>
|
|
||||||
or <code>order::little</code> according to the endianness of the platform, as
|
|
||||||
requested. This reduces the number of template specializations required.</li>
|
|
||||||
<li><code>endian_reverse()</code> overloads for <code>int8_t</code> and <code>
|
<li><code>endian_reverse()</code> overloads for <code>int8_t</code> and <code>
|
||||||
uint8_t</code> have been added for improved generality. (Pierre Talbot)</li>
|
uint8_t</code> have been added for improved generality. (Pierre Talbot)</li>
|
||||||
<li>Overloads of <code>endian_reverse_inplace()</code> have been replaced with a single <code>
|
<li>Overloads of <code>endian_reverse_inplace()</code> have been replaced with a single <code>
|
||||||
endian_reverse_inplace()</code> template. (Pierre Talbot)</li>
|
endian_reverse_inplace()</code> template. (Pierre Talbot)</li>
|
||||||
<li>C++11 features such as <code>noexcept</code> are now used, while still
|
<li>C++11 features affecting interfaces, such as <code>noexcept</code>, are now used.
|
||||||
supporting C++03 compilers.</li>
|
C++03 compilers are still
|
||||||
<li>Headers have been reorganized to make them easier to read,
|
supported.</li>
|
||||||
with a synopsis at the front and implementation following, as requested.</li>
|
|
||||||
<li>Documentation has been revised to address most, but not all, concerns
|
|
||||||
raised during formal review.</li>
|
|
||||||
<li>Acknowledgements have been updated.</li>
|
<li>Acknowledgements have been updated.</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
@ -9,34 +9,60 @@
|
|||||||
<link href="styles.css" rel="stylesheet">
|
<link href="styles.css" rel="stylesheet">
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<p>Here is what needs to be done to get the library ready for a mini-review:
|
<table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
|
||||||
|
<tr>
|
||||||
|
<td width="339">
|
||||||
|
<a href="../../../index.html">
|
||||||
|
<img src="http://www.boost.org/boost.png" alt="Boost logo" align="middle" border="0" width="277" height="86"></a></td>
|
||||||
|
<td align="middle" width="1253">
|
||||||
|
<b>
|
||||||
|
<font size="6">Endian </font></b><font size="6"><b>Mini-Review</b></font></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table border="0" cellpadding="5" cellspacing="0" style="border-collapse: collapse"
|
||||||
|
bordercolor="#111111" bgcolor="#D7EEFF" width="100%">
|
||||||
|
<tr>
|
||||||
|
<td><b>
|
||||||
|
<a href="index.html">Endian Home</a>
|
||||||
|
<a href="conversion.html">Conversion Functions</a>
|
||||||
|
<a href="arithmetic.html">Arithmetic Types</a>
|
||||||
|
<a href="buffers.html">Buffer Types</a>
|
||||||
|
<a href="choosing_approach.html">Choosing Approach</a></b></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<p></p>
|
||||||
|
|
||||||
|
<p>The results of the Boost.Endian formal review included a list of issues to be
|
||||||
|
resolved before a mini-review.</p>
|
||||||
|
|
||||||
</p>
|
<p>The issues are shown in <b>bold</b> below, with the resolution indicated.</p>
|
||||||
|
|
||||||
<p><b>Common use case scenarios should be developed.</b></p>
|
<p><b>1. Common use case scenarios should be developed.</b></p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
|
|
||||||
<p>Done. See <a href="index.html#Use-cases">Use cases</a>.</p>
|
<p>Done. The documentation have been refactored. A page is now devoted to
|
||||||
|
<a href="choosing_approach.html">Choosing the Approach</a> to endianness. See
|
||||||
|
<a href="choosing_approach.html#Use-cases">Use cases</a> for use case
|
||||||
|
scenarios.</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
<p><b>Example programs should be developed for the common use case scenarios.</b></p>
|
<p><b>2. Example programs should be developed for the common use case scenarios.</b></p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<p> </p>
|
<p>Done. See <a href="choosing_approach.html">Choosing the Approach</a>.
|
||||||
|
Example code has been added throughout.</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
<p><b>Documentation should illuminate the differences between endian
|
<p><b>3. Documentation should illuminate the differences between endian
|
||||||
integer/float type and endian conversion approaches to the common use
|
integer/float type and endian conversion approaches to the common use
|
||||||
case scenarios, and provide guidelines for choosing the most appropriate
|
case scenarios, and provide guidelines for choosing the most appropriate
|
||||||
approach in user's applications.</b></p>
|
approach in user's applications.</b></p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<p>Done. See <a href="index.html#Choosing">Choosing between endian conversion
|
<p>Done. See <a href="choosing_approach.html">Choosing the Approach</a>.</p>
|
||||||
functions, endian buffer types, and endian arithmetic types</a>.</p>
|
|
||||||
</blockquote>
|
</blockquote>
|
||||||
<p><b>Conversion functions supplying results via return should be provided.</b></p>
|
<p><b>4 .Conversion functions supplying results via return should be provided.</b></p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<p>Done. See <a href="conversion.html">conversion docs</a>.</p>
|
<p>Done. See <a href="conversion.html">ConversionFunctions</a>.</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
<p><b>Platform specific performance enhancements such as use of compiler intrinsics or relaxed alignment requirements should be supported.</b></p>
|
<p><b>5. Platform specific performance enhancements such as use of compiler intrinsics or relaxed alignment requirements should be supported.</b></p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<p>Done. Compiler (Clang, GCC, VisualC++, etc.) intrinsics and built-in
|
<p>Done. Compiler (Clang, GCC, VisualC++, etc.) intrinsics and built-in
|
||||||
functions are used in the implementation where appropriate, as requested. See
|
functions are used in the implementation where appropriate, as requested. See
|
||||||
@ -44,7 +70,7 @@ approach in user's applications.</b></p>
|
|||||||
<a href="index.html#Timings">Timings for Example 2</a> to gauge the impact of
|
<a href="index.html#Timings">Timings for Example 2</a> to gauge the impact of
|
||||||
intrinsics.</p>
|
intrinsics.</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
<p><b>Endian integer (and floating) types should be implemented via the
|
<p><b>6. Endian integer (and floating) types should be implemented via the
|
||||||
conversion functions. If that can't be done efficiently, consideration
|
conversion functions. If that can't be done efficiently, consideration
|
||||||
should be given to expanding the conversion function signatures to
|
should be given to expanding the conversion function signatures to
|
||||||
resolve the inefficiencies.</b></p>
|
resolve the inefficiencies.</b></p>
|
||||||
@ -52,7 +78,7 @@ resolve the inefficiencies.</b></p>
|
|||||||
<p>Done. For the endian types, the implementation uses the endian conversion
|
<p>Done. For the endian types, the implementation uses the endian conversion
|
||||||
functions, and thus the intrinsics, as requested.</p>
|
functions, and thus the intrinsics, as requested.</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
<p><b>Benchmarks that measure performance should be provided. It should be
|
<p><b>7. Benchmarks that measure performance should be provided. It should be
|
||||||
possible to compare platform specific performance enhancements against
|
possible to compare platform specific performance enhancements against
|
||||||
portable base implementations, and to compare endian integer approaches
|
portable base implementations, and to compare endian integer approaches
|
||||||
against endian conversion approaches for the common use case scenarios.</b></p>
|
against endian conversion approaches for the common use case scenarios.</b></p>
|
||||||
@ -60,7 +86,7 @@ against endian conversion approaches for the common use case scenarios.</b></p>
|
|||||||
<p>Done. See <a href="index.html#Timings">Timings for Example 2</a>. The <code>endian/test</code> directory
|
<p>Done. See <a href="index.html#Timings">Timings for Example 2</a>. The <code>endian/test</code> directory
|
||||||
also contains several additional benchmark and speed test programs.</p>
|
also contains several additional benchmark and speed test programs.</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
<p><b>Float (32-bits) and double (64-bits) should be supported. IEEE 754 is
|
<p><b>8. Float (32-bits) and double (64-bits) should be supported. IEEE 754 is
|
||||||
the primary use case.</b></p>
|
the primary use case.</b></p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<p>Done. The <a href="buffers.html">endian buffer types</a>,
|
<p>Done. The <a href="buffers.html">endian buffer types</a>,
|
||||||
@ -68,12 +94,13 @@ the primary use case.</b></p>
|
|||||||
<a href="conversion.html">endian conversion functions</a> now support 32-bit (<code>float)</code>
|
<a href="conversion.html">endian conversion functions</a> now support 32-bit (<code>float)</code>
|
||||||
and 64-bit <code>(double)</code> floating point, as requested.</p>
|
and 64-bit <code>(double)</code> floating point, as requested.</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
<p><b>Support for user defined types (UDTs) is desirable, and should be
|
<p><b>9. Support for user defined types (UDTs) is desirable, and should be
|
||||||
provided where there would be no conflict with the other concerns.</b></p>
|
provided where there would be no conflict with the other concerns.</b></p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<p>Done. See <a href="conversion.html#Requirements">conversion requirements</a>.</p>
|
<p>Done. See <a href="conversion.html#Customization-points">Customization
|
||||||
|
points for user-defined types (UDTs)</a>.</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
<p><b>There is some concern that endian integer/float arithmetic operations
|
<p><b>10. There is some concern that endian integer/float arithmetic operations
|
||||||
might used inadvertently or inappropriately. The impact of adding an endian_buffer
|
might used inadvertently or inappropriately. The impact of adding an endian_buffer
|
||||||
class without arithmetic operations should be investigated.</b></p>
|
class without arithmetic operations should be investigated.</b></p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
@ -83,23 +110,37 @@ might used inadvertently or inappropriately. The impact of adding an endian_buff
|
|||||||
<code>endian_buffer</code> is a public base class for <code>endian_arithmetic</code>,
|
<code>endian_buffer</code> is a public base class for <code>endian_arithmetic</code>,
|
||||||
and can also be used by users as a stand-alone class.</p>
|
and can also be used by users as a stand-alone class.</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
<p><b>Stream insertion and extraction of the endian integer/float types should
|
<p><b>11. Stream insertion and extraction of the endian integer/float types should
|
||||||
be documented and included in the test coverage.</b></p>
|
be documented and included in the test coverage.</b></p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<p>Done. See <a href="types.html#Stream-inserter">Stream inserter</a> and
|
<p>Done. See <a href="types.html#Stream-inserter">Stream inserter</a> and
|
||||||
<a href="types.html#Stream-extractor">Stream extractor</a>.</p>
|
<a href="types.html#Stream-extractor">Stream extractor</a>.</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
<p><b>Binary I/O support that was investigated during development of the Endian
|
<p><b>12. Binary I/O support that was investigated during development of the Endian
|
||||||
library should be put up for mini-review for inclusion in the Boost I/O
|
library should be put up for mini-review for inclusion in the Boost I/O
|
||||||
library.</b></p>
|
library.</b></p>
|
||||||
|
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<p> </p>
|
<p>Not done yet. Will be handled as a separate min-review soon after the
|
||||||
|
Endian mini-review.</p>
|
||||||
|
|
||||||
|
</blockquote>
|
||||||
|
<p><b>13. Other requested changes.</b></p>
|
||||||
|
|
||||||
|
<blockquote>
|
||||||
|
<ul>
|
||||||
|
<li>In addition to the named-endianness conversion functions, functions that perform
|
||||||
|
compile-time (via template) and run-time (via function argument) dispatch
|
||||||
|
are now provided.</li>
|
||||||
|
<li><code>order::native</code> is now a synonym for <code>order::big</code>
|
||||||
|
or <code>order::little</code> according to the endianness of the platform. This reduces the number of template specializations required.</li>
|
||||||
|
<li>Headers have been reorganized to make them easier to read,
|
||||||
|
with a synopsis at the front and implementation following.</li>
|
||||||
|
</ul>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
<hr>
|
<hr>
|
||||||
<p>Last revised:
|
<p>Last revised:
|
||||||
<!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->17 December, 2014<!--webbot bot="Timestamp" endspan i-checksum="38647" --></p>
|
<!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->02 January, 2015<!--webbot bot="Timestamp" endspan i-checksum="38888" --></p>
|
||||||
<p>© Copyright Beman Dawes, 2014</p>
|
<p>© Copyright Beman Dawes, 2014</p>
|
||||||
<p>Distributed under the Boost Software License, Version 1.0. See
|
<p>Distributed under the Boost Software License, Version 1.0. See
|
||||||
<a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/ LICENSE_1_0.txt</a></p>
|
<a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/ LICENSE_1_0.txt</a></p>
|
||||||
|
Reference in New Issue
Block a user