boost-react-native-bundle
Version:
Boost library as in https://sourceforge.net/projects/boost/files/boost/1.57.0/
717 lines • 90.4 kB
HTML
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Acknowledgements, notes and links</title>
<link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
<link rel="up" href="../interprocess.html" title="Chapter 14. Boost.Interprocess">
<link rel="prev" href="customizing_interprocess.html" title="Customizing Boost.Interprocess">
<link rel="next" href="indexes_reference.html" title="Indexes and Reference">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td>
<td align="center"><a href="../../../index.html">Home</a></td>
<td align="center"><a href="../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="customizing_interprocess.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../interprocess.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="indexes_reference.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="interprocess.acknowledgements_notes"></a><a class="link" href="acknowledgements_notes.html" title="Acknowledgements, notes and links">Acknowledgements,
notes and links</a>
</h2></div></div></div>
<div class="toc"><dl class="toc">
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.notes_windows">Notes
for Windows users</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.notes_linux">Notes
for Linux users</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.thanks_to">Thanks
to...</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes">Release
Notes</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.books_and_links">Books
and interesting links</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.future_improvements">Future
improvements...</a></span></dt>
</dl></div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="interprocess.acknowledgements_notes.notes_windows"></a><a class="link" href="acknowledgements_notes.html#interprocess.acknowledgements_notes.notes_windows" title="Notes for Windows users">Notes
for Windows users</a>
</h3></div></div></div>
<div class="toc"><dl class="toc">
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.notes_windows.notes_windows_com_init">COM
Initialization</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.notes_windows.notes_windows_shm_folder">Shared
memory emulation folder</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.notes_windows.boost_use_windows_h">BOOST_USE_WINDOWS_H
support</a></span></dt>
</dl></div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="interprocess.acknowledgements_notes.notes_windows.notes_windows_com_init"></a><a class="link" href="acknowledgements_notes.html#interprocess.acknowledgements_notes.notes_windows.notes_windows_com_init" title="COM Initialization">COM
Initialization</a>
</h4></div></div></div>
<p>
<span class="bold"><strong>Boost.Interprocess</strong></span> uses the Windows COM
library to implement some features and initializes it with concurrency
model <code class="computeroutput"><span class="identifier">COINIT_APARTMENTTHREADED</span></code>.
If the COM library was already initialized by the calling thread for another
concurrency model, <span class="bold"><strong>Boost.Interprocess</strong></span>
handles this gracefully and uses COM calls for the already initialized
model. If for some reason, you want <span class="bold"><strong>Boost.Interprocess</strong></span>
to initialize the COM library with another model, define the macro <code class="computeroutput"><span class="identifier">BOOST_INTERPROCESS_WINDOWS_COINIT_MODEL</span></code>
before including <span class="bold"><strong>Boost.Interprocess</strong></span> to
one of these values:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
<code class="computeroutput"><span class="identifier">COINIT_APARTMENTTHREADED_BIPC</span></code>
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">COINIT_MULTITHREADED_BIPC</span></code>
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">COINIT_DISABLE_OLE1DDE_BIPC</span></code>
</li>
<li class="listitem">
<code class="computeroutput"><span class="identifier">COINIT_SPEED_OVER_MEMORY_BIPC</span></code>
</li>
</ul></div>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="interprocess.acknowledgements_notes.notes_windows.notes_windows_shm_folder"></a><a class="link" href="acknowledgements_notes.html#interprocess.acknowledgements_notes.notes_windows.notes_windows_shm_folder" title="Shared memory emulation folder">Shared
memory emulation folder</a>
</h4></div></div></div>
<p>
Shared memory (<code class="computeroutput"><span class="identifier">shared_memory_object</span></code>)
is implemented in windows using memory mapped files, placed in a shared
directory in the shared documents folder (<code class="computeroutput"><span class="identifier">SOFTWARE</span><span class="special">\</span><span class="identifier">Microsoft</span><span class="special">\</span><span class="identifier">Windows</span><span class="special">\</span><span class="identifier">CurrentVersion</span><span class="special">\</span><span class="identifier">Explorer</span><span class="special">\</span><span class="identifier">Shell</span> <span class="identifier">Folders</span><span class="special">\</span><span class="identifier">Common</span> <span class="identifier">AppData</span></code>).
This directory name is the last bootup time obtained via COM calls (if
<code class="computeroutput"><span class="identifier">BOOST_INTERPROCESS_BOOTSTAMP_IS_LASTBOOTUPTIME</span></code>)
defined or searching the system log for a startup event (the default implementation),
so that each bootup shared memory is created in a new folder obtaining
kernel persistence shared memory.
</p>
<p>
If using <code class="computeroutput"><span class="identifier">BOOST_INTERPROCESS_BOOTSTAMP_IS_LASTBOOTUPTIME</span></code>,
due to COM implementation related errors, in Boost 1.48 & Boost 1.49
the bootup-time folder was dumped and files were directly created in shared
documents folder, reverting to filesystem persistence shared memory. Boost
1.50 fixed those issues and recovered bootup time directory and kernel
persistence. If you need to reproduce Boost 1.48 & Boost 1.49 behaviour
to communicate with applications compiled with that version, comment <code class="computeroutput"><span class="preprocessor">#define</span> <span class="identifier">BOOST_INTERPROCESS_HAS_KERNEL_BOOTTIME</span></code>
directive in the Windows configuration part of <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interprocess</span><span class="special">/</span><span class="identifier">detail</span><span class="special">/</span><span class="identifier">workaround</span><span class="special">.</span><span class="identifier">hpp</span></code>.
</p>
<p>
If using the default implementation, (<code class="computeroutput"><span class="identifier">BOOST_INTERPROCESS_BOOTSTAMP_IS_LASTBOOTUPTIME</span></code>
undefined) and the Startup Event is not found, this might be due to some
buggy software that floods or erases the event log.
</p>
<p>
In any error case (shared documents folder is not defined or bootup time
could not be obtained, the library throws an error. You still can use
<span class="bold"><strong>Boost.Interprocess</strong></span> definining your own
directory as the shared directory. Just define <code class="computeroutput"><span class="identifier">BOOST_INTERPROCESS_SHARED_DIR_PATH</span></code>
when using the library and that path will be used to place shared memory
files.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="interprocess.acknowledgements_notes.notes_windows.boost_use_windows_h"></a><a class="link" href="acknowledgements_notes.html#interprocess.acknowledgements_notes.notes_windows.boost_use_windows_h" title="BOOST_USE_WINDOWS_H support">BOOST_USE_WINDOWS_H
support</a>
</h4></div></div></div>
<p>
If <code class="computeroutput"><span class="identifier">BOOST_USE_WINDOWS_H</span></code>
is defined, <windows.h> and other windows SDK files are included,
otherwise the library declares needed functions and structures to reduce
the impact of including those heavy headers.
</p>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="interprocess.acknowledgements_notes.notes_linux"></a><a class="link" href="acknowledgements_notes.html#interprocess.acknowledgements_notes.notes_linux" title="Notes for Linux users">Notes
for Linux users</a>
</h3></div></div></div>
<div class="toc"><dl class="toc">
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.notes_linux.notes_linux_shm_folder">Shared
memory emulation folder</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.notes_linux.notes_linux_overcommit">Overcommit</a></span></dt>
</dl></div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="interprocess.acknowledgements_notes.notes_linux.notes_linux_shm_folder"></a><a class="link" href="acknowledgements_notes.html#interprocess.acknowledgements_notes.notes_linux.notes_linux_shm_folder" title="Shared memory emulation folder">Shared
memory emulation folder</a>
</h4></div></div></div>
<p>
On systems without POSIX shared memory support shared memory objects are
implemented as memory mapped files, using a directory placed in "/tmp"
that can include (if <code class="computeroutput"><span class="identifier">BOOST_INTERPROCESS_HAS_KERNEL_BOOTTIME</span></code>
is defined) the last bootup time (if the Os supports it). As in Windows,
in any error case obtaining this directory the library throws an error
. You still can use <span class="bold"><strong>Boost.Interprocess</strong></span>
definining your own directory as the shared directory. Just define <code class="computeroutput"><span class="identifier">BOOST_INTERPROCESS_SHARED_DIR_PATH</span></code> when
using the library and that path will be used to place shared memory files.
</p>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="interprocess.acknowledgements_notes.notes_linux.notes_linux_overcommit"></a><a class="link" href="acknowledgements_notes.html#interprocess.acknowledgements_notes.notes_linux.notes_linux_overcommit" title="Overcommit">Overcommit</a>
</h4></div></div></div>
<p>
The committed address space is the total amount of virtual memory (swap
or physical memory/RAM) that the kernel might have to supply if all applications
decide to access all of the memory they've requested from the kernel. By
default, Linux allows processes to commit more virtual memory than available
in the system. If that memory is not accessed, no physical memory + swap
is actually used.
</p>
<p>
The reason for this behaviour is that Linux tries to optimize memory usage
on forked processes; fork() creates a full copy of the process space, but
with overcommitted memory, in this new forked instance only pages which
have been written to actually need to be allocated by the kernel. If applications
access more memory than available, then the kernel must free memory in
the hard way: the OOM (Out Of Memory)-killer picks some processes to kill
in order to recover memory.
</p>
<p>
<span class="bold"><strong>Boost.Interprocess</strong></span> has no way to change
this behaviour and users might suffer the OOM-killer when accessing shared
memory. According to the <a href="http://www.kernel.org/doc/Documentation/vm/overcommit-accounting" target="_top">Kernel
documentation</a>, the Linux kernel supports several overcommit modes.
If you need non-kill guarantees in your application, you should change
this overcommit behaviour.
</p>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="interprocess.acknowledgements_notes.thanks_to"></a><a class="link" href="acknowledgements_notes.html#interprocess.acknowledgements_notes.thanks_to" title="Thanks to...">Thanks
to...</a>
</h3></div></div></div>
<p>
Many people have contributed with ideas and revisions, so this is the place
to thank them:
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Thanks to all people who have shown interest in the library and have
downloaded and tested the snapshots.
</li>
<li class="listitem">
Thanks to <span class="bold"><strong>Francis Andre</strong></span> and <span class="bold"><strong>Anders Hybertz</strong></span> for their ideas and suggestions.
Many of them are not implemented yet but I hope to include them when
library gets some stability.
</li>
<li class="listitem">
Thanks to <span class="bold"><strong>Matt Doyle</strong></span>, <span class="bold"><strong>Steve
LoBasso</strong></span>, <span class="bold"><strong>Glenn Schrader</strong></span>,
<span class="bold"><strong>Hiang Swee Chiang</strong></span>, <span class="bold"><strong>Phil
Endecott</strong></span>, <span class="bold"><strong>Rene Rivera</strong></span>, <span class="bold"><strong>Harold Pirtle</strong></span>, <span class="bold"><strong>Paul Ryan</strong></span>,
<span class="bold"><strong>Shumin Wu</strong></span>, <span class="bold"><strong>Michal
Wozniak</strong></span>, <span class="bold"><strong>Peter Johnson</strong></span>,
<span class="bold"><strong>Alex Ott</strong></span>, <span class="bold"><strong>Shane
Guillory</strong></span>, <span class="bold"><strong>Steven Wooding</strong></span>
and <span class="bold"><strong>Kim Barrett</strong></span> for their bug fixes
and library testing.
</li>
<li class="listitem">
Thanks to <span class="bold"><strong>Martin Adrian</strong></span> who suggested
the use of Interprocess framework for user defined buffers.
</li>
<li class="listitem">
Thanks to <span class="bold"><strong>Synge Todo</strong></span> for his boostbook-doxygen
patch to improve Interprocess documentation.
</li>
<li class="listitem">
Thanks to <span class="bold"><strong>Olaf Krzikalla</strong></span> for his Intrusive
library. I have taken some ideas to improve red black tree implementation
from his library.
</li>
<li class="listitem">
Thanks to <span class="bold"><strong>Daniel James</strong></span> for his unordered_map/set
family and his help with allocators. His great unordered implementation
has been a reference to design exception safe containers.
</li>
<li class="listitem">
Thanks to <span class="bold"><strong>Howard Hinnant</strong></span> for his amazing
help, specially explaining allocator swapping, move semantics and for
developing upgradable mutex and lock transfer features.
</li>
<li class="listitem">
Thanks to <span class="bold"><strong>Pavel Vozenilek</strong></span> for his continuous
review process, suggestions, code and help. He is the major supporter
of Interprocess library. The library has grown with his many and great
advices.
</li>
<li class="listitem">
And finally, thank you to all Boosters. <span class="bold"><strong>Long live
to C++!</strong></span>
</li>
</ul></div>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="interprocess.acknowledgements_notes.release_notes"></a><a class="link" href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes" title="Release Notes">Release
Notes</a>
</h3></div></div></div>
<div class="toc"><dl class="toc">
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_57_00">Boost
1.57 Release</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_56_00">Boost
1.56 Release</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_55_00">Boost
1.55 Release</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_54_00">Boost
1.54 Release</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_53_00">Boost
1.53 Release</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_52_00">Boost
1.52 Release</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_51_00">Boost
1.51 Release</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_50_00">Boost
1.50 Release</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_49_00">Boost
1.49 Release</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_48_00">Boost
1.48 Release</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_46_00">Boost
1.46 Release</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_45_00">Boost
1.45 Release</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_41_00">Boost
1.41 Release</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_40_00">Boost
1.40 Release</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_39_00">Boost
1.39 Release</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_38_00">Boost
1.38 Release</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_37_00">Boost
1.37 Release</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_36_00">Boost
1.36 Release</a></span></dt>
<dt><span class="section"><a href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_35_00">Boost
1.35 Release</a></span></dt>
</dl></div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_57_00"></a><a class="link" href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_57_00" title="Boost 1.57 Release">Boost
1.57 Release</a>
</h4></div></div></div>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Removed <code class="computeroutput"><span class="identifier">unique_ptr</span></code>,
now forwards boost::interprocess::unique_ptr to the general purpose
<code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">movelib</span><span class="special">::</span><span class="identifier">unique_ptr</span></code> class from <span class="bold"><strong>Boost.Move</strong></span>.
This implementation is closer to the standard <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">unique_ptr</span></code>
implementation and it's better maintained.
</li>
<li class="listitem">
Fixed bugs:
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
<a href="https://svn.boost.org/trac/boost/ticket/10262" target="_top">Trac
#10262 (<span class="emphasis"><em>"AIX 6.1 bug with variable definition
hz"</em></span>)</a>.
</li>
<li class="listitem">
<a href="https://svn.boost.org/trac/boost/ticket/10229" target="_top">Trac
#10229 (<span class="emphasis"><em>"Compiling errors in interprocess\detail\os_file_functions.hpp"</em></span>)</a>.
</li>
<li class="listitem">
<a href="https://svn.boost.org/trac/boost/ticket/10506" target="_top">Trac
#10506 (<span class="emphasis"><em>"Infinite loop in create_or_open_file"</em></span>)</a>.
</li>
<li class="listitem">
<a href="https://github.com/boostorg/interprocess/pull/11" target="_top">GitHub
Pull #11 (<span class="emphasis"><em>"Compile fix for BOOST_USE_WINDOWS_H"</em></span>)</a>.
</li>
</ul></div>
</li>
<li class="listitem">
Reorganized Doxygen marks to obtain a better header reference.
</li>
</ul></div>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_56_00"></a><a class="link" href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_56_00" title="Boost 1.56 Release">Boost
1.56 Release</a>
</h4></div></div></div>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Fixed bugs:
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
<li class="listitem">
<a href="https://svn.boost.org/trac/boost/ticket/9221" target="_top">Trac
#9221 (<span class="emphasis"><em>"message_queue deadlock on linux"</em></span>)</a>.
</li>
<li class="listitem">
<a href="https://svn.boost.org/trac/boost/ticket/9226" target="_top">Trac
#9226 (<span class="emphasis"><em>"On some computers, Common Appdata is empty
in registry, so boost interprocess cannot work"</em></span>)</a>.
</li>
<li class="listitem">
<a href="https://svn.boost.org/trac/boost/ticket/9262" target="_top">Trac
#9262 (<span class="emphasis"><em>"windows_intermodule_singleton breaks when
calling a Debug dll from a Release executable"</em></span>)</a>.
</li>
<li class="listitem">
<a href="https://svn.boost.org/trac/boost/ticket/9284" target="_top">Trac
#9284 (<span class="emphasis"><em>"WaitForSingleObject(mutex) must handle
WAIT_ABANDONED"</em></span>)</a>.
</li>
<li class="listitem">
<a href="https://svn.boost.org/trac/boost/ticket/9285" target="_top">Trac
#9285 (<span class="emphasis"><em>"CreateMutex returns NULL if fails"</em></span>)</a>.
</li>
<li class="listitem">
<a href="https://svn.boost.org/trac/boost/ticket/9288" target="_top">Trac
#9288 (<span class="emphasis"><em>"timed_wait does not check if it has expired"</em></span>)</a>.
</li>
<li class="listitem">
<a href="https://svn.boost.org/trac/boost/ticket/9408" target="_top">Trac
#9408 (<span class="emphasis"><em>"Android does not support XSI_SHARED_MEMORY_OBJECTS"</em></span></a>).
</li>
<li class="listitem">
<a href="https://svn.boost.org/trac/boost/ticket/9729" target="_top">Trac
#9729 (<span class="emphasis"><em>"crash on managed_external_buffer object
construction"</em></span></a>).
</li>
<li class="listitem">
<a href="https://svn.boost.org/trac/boost/ticket/9767" target="_top">Trac
#9767 (<span class="emphasis"><em>"bootstamp generation causes error in case
of corrupt Windows Event Log"</em></span>)</a>.
</li>
<li class="listitem">
<a href="https://svn.boost.org/trac/boost/ticket/9835" target="_top">Trac
#9835 (<span class="emphasis"><em>"Boost Interprocess fails to compile with
Android NDK GCC 4.8, -Werror=unused-variable"</em></span>)</a>.
</li>
<li class="listitem">
<a href="https://svn.boost.org/trac/boost/ticket/9911" target="_top">Trac
#9911 (<span class="emphasis"><em>"get_tmp_base_dir(...) failure"</em></span>)</a>.
</li>
<li class="listitem">
<a href="https://svn.boost.org/trac/boost/ticket/9946" target="_top">Trac
#9946 (<span class="emphasis"><em>"ret_ptr uninitialized in init_atomic_func,
fini_atomic_func"</em></span>)</a>.
</li>
<li class="listitem">
<a href="https://svn.boost.org/trac/boost/ticket/10011" target="_top">Trac
#10011 (<span class="emphasis"><em>"segment_manager::find( unique_instance_t*
) fails to compile"</em></span>)</a>.
</li>
<li class="listitem">
<a href="https://svn.boost.org/trac/boost/ticket/10021" target="_top">Trac
#10021 (<span class="emphasis"><em>"Interprocess and BOOST_USE_WINDOWS_H"</em></span>)</a>.
</li>
<li class="listitem">
<a href="https://svn.boost.org/trac/boost/ticket/10230" target="_top">Trac
#10230 (<span class="emphasis"><em>"No Sleep in interprocess::winapi"</em></span>)</a>.
</li>
<li class="listitem">
<a href="https://github.com/boostorg/interprocess/pull/2" target="_top">GitHub
Pull #2</a> (<span class="emphasis"><em>"Provide support for the Cray
C++ compiler. The Cray compiler defines __GNUC__"</em></span>]).
</li>
<li class="listitem">
<a href="https://github.com/boostorg/interprocess/pull/3" target="_top">GitHub
Pull #3</a> (<span class="emphasis"><em>"Fix/mingw interprocess_exception
throw in file_wrapper::priv_open_or_create"</em></span>]).
</li>
</ul></div>
</li>
<li class="listitem">
<span class="bold"><strong>ABI breaking</strong></span>: <a href="https://svn.boost.org/trac/boost/ticket/9221" target="_top">#9221</a>
showed that <code class="computeroutput"><span class="identifier">BOOST_INTERPROCESS_MSG_QUEUE_CIRCULAR_INDEX</span></code>
option of message queue, was completely broken so an ABI break was
necessary to have a working implementation.
</li>
<li class="listitem">
Simplified, refactored and unified (timed_)lock code based on try_lock().
There were several bugs when handling timeout expirations.
</li>
<li class="listitem">
Changed the implementation of condition variables' destructors to allow
POSIX semantics (the condition variable can be destroyed after all
waiting threads have been woken up)..
</li>
<li class="listitem">
Added <code class="computeroutput"><span class="identifier">BOOST_INTERPROCESS_SHARED_DIR_PATH</span></code>
option to define the shared directory used to place shared memory objects
when implemented as memory mapped files.
</li>
<li class="listitem">
Added support for <code class="computeroutput"><span class="identifier">BOOST_USE_WINDOWS_H</span></code>.
When this macro is defined Interprocess does not declare used Windows
API function and types, includes all needed windows SDK headers and
uses types and functions declared by the Windows SDK.
</li>
<li class="listitem">
Added <code class="computeroutput"><span class="identifier">get_size</span></code> to
<code class="computeroutput">::boost:interprocess:windows_shared_memory</code>.
</li>
</ul></div>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_55_00"></a><a class="link" href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_55_00" title="Boost 1.55 Release">Boost
1.55 Release</a>
</h4></div></div></div>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Fixed bugs <a href="https://svn.boost.org/trac/boost/ticket/7156" target="_top">#7156</a>
(<span class="emphasis"><em>"interprocess buffer streams leak memory on construction"</em></span>]).
<a href="https://svn.boost.org/trac/boost/ticket/7164" target="_top">#7164</a>
(<span class="emphasis"><em>"Two potential bugs with b::int::vector of b::i::weak_ptr"</em></span>]).
<a href="https://svn.boost.org/trac/boost/ticket/7860" target="_top">#7860</a>
(<span class="emphasis"><em>"smart_ptr's yield_k and spinlock utilities can improve
spinlock-based sychronization primitives"</em></span>]). <a href="https://svn.boost.org/trac/boost/ticket/8277" target="_top">#8277</a> (<span class="emphasis"><em>"docs
for named_mutex erroneously refer to interprocess_mutex"</em></span>]).
<a href="https://svn.boost.org/trac/boost/ticket/8976" target="_top">#8976</a>
(<span class="emphasis"><em>"shared_ptr fails to compile if used with a scoped_allocator"</em></span>]).
<a href="https://svn.boost.org/trac/boost/ticket/9008" target="_top">#9008</a>
(<span class="emphasis"><em>"conditions variables fast enough only when opening
a multiprocess browser"</em></span>]). <a href="https://svn.boost.org/trac/boost/ticket/9065" target="_top">#9065</a>
(<span class="emphasis"><em>"atomic_cas32 inline assembly wrong on ppc32"</em></span>]).
<a href="https://svn.boost.org/trac/boost/ticket/9073" target="_top">#9073</a>
(<span class="emphasis"><em>"Conflict names 'realloc'"</em></span>]).
</li></ul></div>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_54_00"></a><a class="link" href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_54_00" title="Boost 1.54 Release">Boost
1.54 Release</a>
</h4></div></div></div>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Added support for platform-specific flags to mapped_region (ticket
#8030)
</li>
<li class="listitem">
Fixed bugs <a href="https://svn.boost.org/trac/boost/ticket/7484" target="_top">#7484</a>,
<a href="https://svn.boost.org/trac/boost/ticket/7598" target="_top">#7598</a>,
<a href="https://svn.boost.org/trac/boost/ticket/7682" target="_top">#7682</a>,
<a href="https://svn.boost.org/trac/boost/ticket/7923" target="_top">#7923</a>,
<a href="https://svn.boost.org/trac/boost/ticket/7924" target="_top">#7924</a>,
<a href="https://svn.boost.org/trac/boost/ticket/7928" target="_top">#7928</a>,
<a href="https://svn.boost.org/trac/boost/ticket/7936" target="_top">#7936</a>,
<a href="https://svn.boost.org/trac/boost/ticket/8521" target="_top">#8521</a>,
<a href="https://svn.boost.org/trac/boost/ticket/8595" target="_top">#8595</a>.
</li>
<li class="listitem">
<span class="bold"><strong>ABI breaking</strong></span>: Changed bootstamp function
in Windows to use EventLog service start time as system bootup time.
Previously used <code class="computeroutput"><span class="identifier">LastBootupTime</span></code>
from WMI was unstable with time synchronization and hibernation and
unusable in practice. If you really need to obtain pre Boost 1.54 behaviour
define <code class="computeroutput"><span class="identifier">BOOST_INTERPROCESS_BOOTSTAMP_IS_LASTBOOTUPTIME</span></code>
from command line or <code class="computeroutput"><span class="identifier">detail</span><span class="special">/</span><span class="identifier">workaround</span><span class="special">.</span><span class="identifier">hpp</span></code>.
</li>
</ul></div>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_53_00"></a><a class="link" href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_53_00" title="Boost 1.53 Release">Boost
1.53 Release</a>
</h4></div></div></div>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Fixed GCC -Wshadow warnings.
</li>
<li class="listitem">
Experimental multiple allocation interface improved and changed again.
Still unstable.
</li>
<li class="listitem">
Replaced deprecated BOOST_NO_XXXX with newer BOOST_NO_CXX11_XXX macros.
</li>
<li class="listitem">
<span class="bold"><strong>ABI breaking</strong></span>: changed node pool allocators
internals for improved efficiency.
</li>
<li class="listitem">
Fixed bug <a href="https://svn.boost.org/trac/boost/ticket/7795" target="_top">#7795</a>.
</li>
</ul></div>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_52_00"></a><a class="link" href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_52_00" title="Boost 1.52 Release">Boost
1.52 Release</a>
</h4></div></div></div>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Added <code class="computeroutput"><span class="identifier">shrink_by</span></code> and
<code class="computeroutput"><span class="identifier">advise</span></code> functions in
<code class="computeroutput"><span class="identifier">mapped_region</span></code>.
</li>
<li class="listitem">
<span class="bold"><strong>ABI breaking:</strong></span> Reimplemented <code class="computeroutput"><span class="identifier">message_queue</span></code> with a circular buffer
index (the old behavior used an ordered array, leading to excessive
copies). This should greatly increase performance but breaks ABI. Old
behaviour/ABI can be used undefining macro <code class="computeroutput"><span class="identifier">BOOST_INTERPROCESS_MSG_QUEUE_CIRCULAR_INDEX</span></code>
in <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">interprocess</span><span class="special">/</span><span class="identifier">detail</span><span class="special">/</span><span class="identifier">workaround</span><span class="special">.</span><span class="identifier">hpp</span></code>
</li>
<li class="listitem">
Improved <code class="computeroutput"><span class="identifier">message_queue</span></code>
insertion time avoiding priority search for common cases (both array
and circular buffer configurations).
</li>
<li class="listitem">
Implemented <code class="computeroutput"><span class="identifier">interproces_sharable_mutex</span></code>
and <code class="computeroutput"><span class="identifier">interproces_condition_any</span></code>.
</li>
<li class="listitem">
Improved <code class="computeroutput"><span class="identifier">offset_ptr</span></code>
performance.
</li>
<li class="listitem">
Added integer overflow checks.
</li>
</ul></div>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_51_00"></a><a class="link" href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_51_00" title="Boost 1.51 Release">Boost
1.51 Release</a>
</h4></div></div></div>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Synchronous and asynchronous flushing for <code class="computeroutput"><span class="identifier">mapped_region</span><span class="special">::</span><span class="identifier">flush</span></code>.
</li>
<li class="listitem">
<span class="bold"><strong>Source & ABI breaking</strong></span>: Removed
<code class="computeroutput"><span class="identifier">get_offset</span></code> method from
<code class="computeroutput"><span class="identifier">mapped_region</span></code> as it
has no practical utility and <code class="computeroutput"><span class="identifier">m_offset</span></code>
member was not for anything else.
</li>
<li class="listitem">
<span class="bold"><strong>Source & ABI breaking</strong></span>: Removed
<code class="computeroutput"><span class="identifier">flush</span></code> from <code class="computeroutput"><span class="identifier">managed_shared_memory</span></code>. as it is unspecified
according to POSIX: <a href="http://pubs.opengroup.org/onlinepubs/009695399/functions/msync.html" target="_top"><span class="emphasis"><em>"The
effect of msync() on a shared memory object or a typed memory object
is unspecified"</em></span> </a>.
</li>
<li class="listitem">
Fixed bug <a href="https://svn.boost.org/trac/boost/ticket/7152" target="_top">#7152</a>,
</li>
</ul></div>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_50_00"></a><a class="link" href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_50_00" title="Boost 1.50 Release">Boost
1.50 Release</a>
</h4></div></div></div>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Fixed bugs <a href="https://svn.boost.org/trac/boost/ticket/3750" target="_top">#3750</a>,
<a href="https://svn.boost.org/trac/boost/ticket/6727" target="_top">#6727</a>,
<a href="https://svn.boost.org/trac/boost/ticket/6648" target="_top">#6648</a>,
</li>
<li class="listitem">
Shared memory in windows has again kernel persistence: kernel bootstamp
and WMI has received some fixes and optimizations. This causes incompatibility
with Boost 1.48 and 1.49 but the user can comment <code class="computeroutput"><span class="preprocessor">#define</span>
<span class="identifier">BOOST_INTERPROCESS_HAS_KERNEL_BOOTTIME</span></code>
in the windows configuration part to get Boost 1.48 & Boost 1.49
behaviour.
</li>
</ul></div>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_49_00"></a><a class="link" href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_49_00" title="Boost 1.49 Release">Boost
1.49 Release</a>
</h4></div></div></div>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Fixed bugs <a href="https://svn.boost.org/trac/boost/ticket/6531" target="_top">#6531</a>,
<a href="https://svn.boost.org/trac/boost/ticket/6412" target="_top">#6412</a>,
<a href="https://svn.boost.org/trac/boost/ticket/6398" target="_top">#6398</a>,
<a href="https://svn.boost.org/trac/boost/ticket/6340" target="_top">#6340</a>,
<a href="https://svn.boost.org/trac/boost/ticket/6319" target="_top">#6319</a>,
<a href="https://svn.boost.org/trac/boost/ticket/6287" target="_top">#6287</a>,
<a href="https://svn.boost.org/trac/boost/ticket/6265" target="_top">#6265</a>,
<a href="https://svn.boost.org/trac/boost/ticket/6233" target="_top">#6233</a>,
<a href="https://svn.boost.org/trac/boost/ticket/6147" target="_top">#6147</a>,
<a href="https://svn.boost.org/trac/boost/ticket/6134" target="_top">#6134</a>,
<a href="https://svn.boost.org/trac/boost/ticket/6058" target="_top">#6058</a>,
<a href="https://svn.boost.org/trac/boost/ticket/6054" target="_top">#6054</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5772" target="_top">#5772</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5738" target="_top">#5738</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5622" target="_top">#5622</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5552" target="_top">#5552</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5518" target="_top">#5518</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4655" target="_top">#4655</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4452" target="_top">#4452</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4383" target="_top">#4383</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4297" target="_top">#4297</a>.
</li>
<li class="listitem">
Fixed timed functions in mutex implementations to fulfill POSIX requirements:
<span class="emphasis"><em>Under no circumstance shall the function fail with a timeout
if the mutex can be locked immediately. The validity of the abs_timeout
parameter need not be checked if the mutex can be locked immediately.</em></span>
</li>
</ul></div>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_48_00"></a><a class="link" href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_48_00" title="Boost 1.48 Release">Boost
1.48 Release</a>
</h4></div></div></div>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
Fixed bugs <a href="https://svn.boost.org/trac/boost/ticket/2796" target="_top">#2796</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4031" target="_top">#4031</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4251" target="_top">#4251</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4452" target="_top">#4452</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4895" target="_top">#4895</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5077" target="_top">#5077</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5120" target="_top">#5120</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5123" target="_top">#5123</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5230" target="_top">#5230</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5197" target="_top">#5197</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5287" target="_top">#5287</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5294" target="_top">#5294</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5306" target="_top">#5306</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5308" target="_top">#5308</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5392" target="_top">#5392</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5409" target="_top">#5409</a>,
</li>
<li class="listitem">
Added support to customize offset_ptr and allow creating custom managed
segments that might be shared between 32 and 64 bit processes.
</li>
<li class="listitem">
Shared memory in windows has again filesystem lifetime: kernel bootstamp
and WMI use to get a reliable timestamp was causing a lot of trouble.
</li>
</ul></div>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_46_00"></a><a class="link" href="acknowledgements_notes.html#interprocess.acknowledgements_notes.release_notes.release_notes_boost_1_46_00" title="Boost 1.46 Release">Boost
1.46 Release</a>
</h4></div></div></div>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Fixed bugs <a href="https://svn.boost.org/trac/boost/ticket/4557" target="_top">#4557</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4979" target="_top">#4979</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4907" target="_top">#4907</a>,
<a href="https://svn.boost.org/trac/boost/ticket/4895" target="_top">#4895</a>.
</li></ul