forked from boostorg/endian
Document permanent removal of floating point types.
This commit is contained in:
@ -88,27 +88,9 @@ formal review</a><br>
|
|||||||
|
|
||||||
</li>
|
</li>
|
||||||
<li>Secondary use: Minimizing data size via sizes and/or alignments not supported by the
|
<li>Secondary use: Minimizing data size via sizes and/or alignments not supported by the
|
||||||
standard C++ arithmetic types.<br>
|
standard C++ integer types.</li>
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div align="center">
|
|
||||||
<center>
|
|
||||||
<table border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="90%">
|
|
||||||
<tr>
|
|
||||||
<td width="100%">
|
|
||||||
<p align="center"><b><font size="4">Notice</font></b></p>
|
|
||||||
<p align="left">This first release (1.58.0) of the Endian library as an
|
|
||||||
official Boost library removes for floating point type support that was
|
|
||||||
present in the mini-review pre-release. Floating point types will be
|
|
||||||
supported in the Boost 1.59.0 release with a slightly modified floating
|
|
||||||
point conversion interface and implementation that addresses reliability
|
|
||||||
concerns.</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</center>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h2><a name="Introduction-to-endianness">Introduction to endianness</a></h2>
|
<h2><a name="Introduction-to-endianness">Introduction to endianness</a></h2>
|
||||||
|
|
||||||
<p>Consider the following code:</p>
|
<p>Consider the following code:</p>
|
||||||
@ -414,12 +396,12 @@ large array saves a lot of space compared to one of the 64-bit types.</p>
|
|||||||
<p><b>Why bother with binary I/O? Why not just use C++ Standard Library stream
|
<p><b>Why bother with binary I/O? Why not just use C++ Standard Library stream
|
||||||
inserters and extractors?</b></p>
|
inserters and extractors?</b></p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<p>Data interchange formats often specify binary arithmetic data.</p>
|
<p>Data interchange formats often specify binary integer data.</p>
|
||||||
<p>Binary arithmetic data is smaller and therefore I/O is faster and file sizes
|
<p>Binary integer data is smaller and therefore I/O is faster and file sizes
|
||||||
are smaller. Transfer between systems is less expensive.</p>
|
are smaller. Transfer between systems is less expensive.</p>
|
||||||
<p dir="ltr">Furthermore, binary arithmetic data is of fixed size, and so fixed-size disk
|
<p >Furthermore, binary integer data is of fixed size, and so fixed-size disk
|
||||||
records are possible without padding, easing sorting and allowing random access.</p>
|
records are possible without padding, easing sorting and allowing random access.</p>
|
||||||
<p dir="ltr">Disadvantages, such as the inability to use text utilities on the
|
<p >Disadvantages, such as the inability to use text utilities on the
|
||||||
resulting files, limit usefulness to applications where the binary I/O
|
resulting files, limit usefulness to applications where the binary I/O
|
||||||
advantages are paramount.</p>
|
advantages are paramount.</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
@ -453,7 +435,7 @@ that would be lost if the inheritance hierarchy were collapsed.</p>
|
|||||||
requested during formal review by those wishing total control over when
|
requested during formal review by those wishing total control over when
|
||||||
conversion occurs. They also felt that buffer types would be less likely to be
|
conversion occurs. They also felt that buffer types would be less likely to be
|
||||||
misused by maintenance programmers not familiar with the implications of
|
misused by maintenance programmers not familiar with the implications of
|
||||||
performing a lot of arithmetic operations on the endian arithmetic types.</p>
|
performing a lot of integer operations on the endian arithmetic integer types.</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
<p><b>What is gained by using the buffer types rather than always just using the
|
<p><b>What is gained by using the buffer types rather than always just using the
|
||||||
arithmetic types?</b></p>
|
arithmetic types?</b></p>
|
||||||
@ -466,22 +448,6 @@ same design patterns or idioms that would be used for buffer types, resulting in
|
|||||||
the same code being generated for either types.</p>
|
the same code being generated for either types.</p>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
<p><b>What are the limitations of floating point support?</b></p>
|
|
||||||
|
|
||||||
<blockquote>
|
|
||||||
|
|
||||||
<p><strike>The only supported types are four-byte <code>float</code> and eight-byte
|
|
||||||
<code>double</code>. The only supported format is
|
|
||||||
<a href="http://en.wikipedia.org/wiki/IEEE_floating_point">IEEE 754</a> (also
|
|
||||||
know as ISO/IEC/IEEE 60559). Systems on which integer endianness differs from floating point
|
|
||||||
endianness are not supported.</strike></p>
|
|
||||||
|
|
||||||
<p>Support for floating point types was removed from Boost 1.58.0 because there
|
|
||||||
was not enough time to resolve reliability concerns. It is expected that
|
|
||||||
floating point support will be available in Boost 1.59.0.</p>
|
|
||||||
|
|
||||||
</blockquote>
|
|
||||||
|
|
||||||
<p><b>What are the limitations of integer support?</b></p>
|
<p><b>What are the limitations of integer support?</b></p>
|
||||||
|
|
||||||
<blockquote>
|
<blockquote>
|
||||||
@ -494,6 +460,26 @@ and 8, 16, 32, and 64-bit aligned integers.</p>
|
|||||||
|
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
|
<p><b>Why is there no floating point support?</b></p>
|
||||||
|
|
||||||
|
<blockquote>
|
||||||
|
|
||||||
|
<p>An attempt was made to support four-byte <code>float</code>s and eight-byte
|
||||||
|
<code>double</code>s, limited to
|
||||||
|
<a href="http://en.wikipedia.org/wiki/IEEE_floating_point">IEEE 754</a> (also
|
||||||
|
know as ISO/IEC/IEEE 60559) floating point and further limited to systems where
|
||||||
|
floating point endianness does not differ from integer
|
||||||
|
endianness.</p>
|
||||||
|
|
||||||
|
<p>Even with those limitations, support for floating point types was not
|
||||||
|
reliable and was removed. For example, simply reversing the endianness of a
|
||||||
|
floating point number can result in a signaling-NAN. For all practical purposes,
|
||||||
|
binary serialization and endianness for integers are one and the same problem.
|
||||||
|
That is not true for floating point numbers, so binary serialization interfaces
|
||||||
|
and formats for floating point does not fit well in an endian-based library.</p>
|
||||||
|
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
<h2><a name="Release-history">Release history</a></h2>
|
<h2><a name="Release-history">Release history</a></h2>
|
||||||
<h3><a name="Changes-requested-by-formal-review">Changes requested by 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
|
<p>The library was reworked from top to bottom to accommodate changes requested
|
||||||
@ -610,7 +596,7 @@ Blechmann, Tim Moore, tymofey, Tomas Puverle, Vincente Botet, Yuval Ronen and
|
|||||||
Vitaly Budovsk. Apologies if anyone has been missed.</p>
|
Vitaly Budovsk. Apologies if anyone has been missed.</p>
|
||||||
<hr>
|
<hr>
|
||||||
<p>Last revised:
|
<p>Last revised:
|
||||||
<!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->16 October, 2015<!--webbot bot="Timestamp" endspan i-checksum="38878" --></p>
|
<!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->05 April, 2016<!--webbot bot="Timestamp" endspan i-checksum="29990" --></p>
|
||||||
<p>© Copyright Beman Dawes, 2011, 2013</p>
|
<p>© Copyright Beman Dawes, 2011, 2013</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