# Release Notes

#### 1.44

Lots of fixes in this version, almost all are by Steven Watanabe.

File descriptor fixes:

- Breaking change: new constructors and `open` methods from file descriptors/handles for `file_descriptor`, `file_descriptor_source` and `file_descriptor_sink`. See the documentation for details. The old methods are still available if you define `BOOST_IOSTREAMS_USE_DEPRECATED` (#3517).
- Add `BOOST_IOSTREAMS_DECL` to `file_descriptor_source` and `file_descriptor_sink` fixing their use in dynamic libraries (#4335).
- Rejigger `file_descriptors` handling of `std::ios_base::openmode` to match `std::fstream`. In particular, truncate existing files, if `std::ios_base::trunc` is passed (#3323).
- Open files in append mode on Windows instead of seeking to the end at every write when `std::ios_base::app` is passed (#3323).

Compression/decompression fixes:

- Don't end the stream produced by a reading through a symmetric_filter prematurely (#2318).
- Allow building zlib 1.2.4+, using a glob to include only source files that actually exist (#4091).
- Fix compressing an empty string.
- Allow bzip2 filters to be closed even if no input has been read (#3348).
- Throw an exception on an unexpected end of file in `bzip2_decompressor` instead of going into an infinite loop (#2783).
- Reset the crc for zlib when we reuse a filter.
- Make `gzip_decompressor` a `DualUseFilter` (#1579).
- Allow `bzip2_decompressor` to process multiple concatenated streams (#3853).

Other fixes:

- Make `aggregate_filter` work with wide characters (#3851).
- Make `symmetric_filter` compile with `wchar_t` (#3279).
- Fix `boost/iostreams/detail/resolve.hpp` compilation on xlc.
- Fix definition of `multichar_dual_use_filter_tag` (#3689).
- Make `concept_adapter` work with custom `char_traits` (#2356).
- On windows, open mapped files with just read/write permissions, rather than full control - which might not be available (#2996).
- Make sure that `direct_streambuf` and `indirect_streambuf` are reset correctly on open (#4102).
- Make `basic_file` and `basic_file_sync` `Flushable` (#2998).
- Several documentation improvements, including documenting private mapping with `mapped_file` (#1612).
- Make the tests more reliable by using Boost.Filesystem's `unique_path` instead of `tmpnam` (#2325).

#### 1.43

More fixes.

- Fix `write_device_impl<ostream_tag>` (#3839).
- Fix error checks after calling SetFilePointer (#3953).
- Gzip filter shouldn't require its source to be peekable (#3723).
- In `position_to_offset`, only cast to `stream_offset` after calculating `_Myoff` (#3969).
- `ptrdiff_t` is in `std` (#2505).

#### 1.42

Fixed many outstanding issues. Thanks to Richard Smith for working on a lot of these changes.

- Allocate exceptions on the stack, not the heap (#3612).
- Fix unthrown exceptions. (#3311).
- Use `boost::throw_exception` to throw exceptions (#2094).
- Add missing include guard (#3010).
- Use the correct type for buffer_size and pback_size parameters (#2894).
- Support `boost::ref(std::istream)` in code_converter (#3011).
- Fix CRC on x64 during gzip decompression (#3352).
- Fix mapped file errors in windows (#3505).
- Improved support for Visual C++ 2010.
- Fix usage requirements in boost build.
- Fix some boundary checks in `restrict` and `slice`.
- Some minor documentation fixes.
- Avoid Apple macro substitutions for `check`.

#### 1.41

Some old unreleased developments. There are still several open issues that should be fixed in the next version.

- Add a grep filter (#1627).
- Support archives with multiple members (#1896).
- Make `tee` work with input streams (#791).
- Improved filesystem interoperability.
- Several warnings fixed or suppressed (including #1618, #1875, #2779).
- Various other fixes (including #1580, #1671).

### 1.35

1. The semantics of `close` has been modified:

- Calling `close` with a `std::ios_base::openmode` other than `in` or `out` is deprecated.
- A new overload of `close` taking a single Device argument has been provided as a convenience.
- DualUseFilters receive only one closure notification.
- Generic streams and stream buffers and filtering streams and stream buffers are now Closable. For filtering streams and stream buffers, `close` calls `pop`.

These changes will break some existing code. They were necessary to resolve inconsistencies in the prior specification that resulted in a number of reported bugs.

2. The function template `slice` has been introduced as an alias of `restrict`, for platforms that treat `restrict` as a keyword.

3. Numerous bugs have been fixed, many relating to `close`, `copy`, and file descriptors.

Revised 02 Feb 2008

© Copyright 2008 CodeRage, LLC
© Copyright 2004-2007 Jonathan Turkanis

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)