20100406 open-source release

Changes (w.r.t. 20100310 open-source release):

- Added support for Microsoft* Visual Studio* 2010, including binaries.
- Added a PDF file with recommended Design Patterns for TBB.
- Added parallel_pipeline function and companion classes and functions
    that provide a strongly typed lambda-friendly pipeline interface.
- Reworked enumerable_thread_specific to use a custom implementation of
    hash map that is more efficient for ETS usage models.
- Added example for class task_group; see examples/task_group/sudoku.
- Removed two examples, as they were long outdated and superceded:
    pipeline/text_filter (use pipeline/square);
    parallel_while/parallel_preorder (use parallel_do/parallel_preorder).
- PDF documentation updated.
- Other fixes and changes in code, tests, and examples.

Bugs fixed: 

- Eliminated build errors with MinGW32.
- Fixed post-build step and other issues in VS projects for examples.
- Fixed discrepancy between scalable_realloc and scalable_msize that 
    caused crashes with malloc replacement on Windows.

------------------------------------------------------------------------
20100310 open-source release

Changes (w.r.t. TBB 2.2 Update 3 commercial-aligned release):

- Version macros changed in anticipation of a future release.
- Directory structure aligned with Intel(R) C++ Compiler;
    now TBB binaries reside in <arch>/<os_key>/[bin|lib]
    (in TBB 2.x, it was [bin|lib]/<arch>/<os_key>).
- Visual Studio projects changed for examples: instead of separate set
    of files for each VS version, now there is single 'msvs' directory
    that contains workspaces for MS C++ compiler (<example>_cl.sln) and
    Intel C++ compiler (<example>_icl.sln). Works with VS 2005 and above.
- The name versioning scheme for backward compatibility was improved;
    now compatibility-breaking changes are done in a separate namespace.
- Added concurrent_unordered_map implementation based on a prototype
    developed in Microsoft for a future version of PPL.
- Added PPL-compatible writer-preference RW lock (reader_writer_lock).
- Added TBB_IMPLEMENT_CPP0X macro to control injection of C++0x names
    implemented in TBB into namespace std.
- Added almost-C++0x-compatible std::condition_variable, plus a bunch
    of other C++0x classes required by condition_variable.
- With TBB_IMPLEMENT_CPP0X, tbb_thread can be also used as std::thread.
- task.cpp was split into several translation units to structure 
    TBB scheduler sources layout. Static data layout and library 
    initialization logic were also updated.
- TBB scheduler reworked to prevent master threads from stealing
    work belonging to other masters.
- Class task was extended with enqueue() method, and slightly changed
    semantics of methods spawn() and destroy(). For exact semantics,
    refer to TBB Reference manual.
- task_group_context now allows for destruction by non-owner threads.
- Added TBB_USE_EXCEPTIONS macro to control use of exceptions in TBB
    headers. It turns off (i.e. sets to 0) automatically if specified
    compiler options disable exception handling.
- TBB is enabled to run on top of Microsoft's Concurrency Runtime
    on Windows* 7 (via our worker dispatcher known as RML).
- Removed old unused busy-waiting code in concurrent_queue.
- Described the advanced build & test options in src/index.html.
- Warning level for GCC raised with -Wextra and a few other options.
- Multiple fixes and improvements in code, tests, examples, and docs.

Open-source contributions integrated:

- Xbox support by Roman Lut (Deep Shadows), though further changes are
    required to make it working; e.g. post-2.1 entry points are missing.
- "Eventcount" by Dmitry Vyukov evolved into concurrent_monitor,
    an internal class used in the implementation of concurrent_queue.

------------------------------------------------------------------------
TBB 2.2 Update 3 commercial-aligned release

Changes (w.r.t. TBB 2.2 Update 2 commercial-aligned release):

- PDF documentation updated.

Bugs fixed: 

- concurrent_hash_map compatibility issue exposed on Linux in case
    two versions of the container were used by different modules.
- enforce 16 byte stack alignment for consistence with GCC; required 
    to work correctly with 128-bit variables processed by SSE.
- construct() methods of allocator classes now use global operator new.

------------------------------------------------------------------------
TBB 2.2 Update 2 commercial-aligned release

Changes (w.r.t. TBB 2.2 Update 1 commercial-aligned release):

- parallel_invoke and parallel_for_each now take function objects
    by const reference, not by value.
- Building TBB with /MT is supported, to avoid dependency on particular
    versions of Visual C++* runtime DLLs. TBB DLLs built with /MT 
    are located in vc_mt directory.
- Class critical_section introduced.
- Improvements in exception support: new exception classes introduced,
    all exceptions are thrown via an out-of-line internal method.
- Improvements and fixes in the TBB allocator and malloc replacement,
    including robust memory identification, and more reliable dynamic
    function substitution on Windows*.
- Method swap() added to class tbb_thread.
- Methods rehash() and bucket_count() added to concurrent_hash_map.
- Added support for Visual Studio* 2010 Beta2. No special binaries 
    provided, but CRT-independent DLLs (vc_mt) should work.
- Other fixes and improvements in code, tests, examples, and docs.

Open-source contributions integrated:

- The fix to build 32-bit TBB on Mac OS X* 10.6.
- GCC-based port for SPARC Solaris by Michailo Matijkiw, with use of
    earlier work by Raf Schietekat.

Bugs fixed: 

- 159 - TBB build for PowerPC* running Mac OS X*.
- 160 - IBM* Java segfault if used with TBB allocator.
- crash in concurrent_queue<char> (1616).

------------------------------------------------------------------------
TBB 2.2 Update 1 commercial-aligned release

Changes (w.r.t. TBB 2.2 commercial-aligned release):

- Incorporates all changes from open-source releases below.
- Documentation was updated.
- TBB scheduler auto-initialization now covers all possible use cases.
- concurrent_queue: made argument types of sizeof used in paddings
  consistent with those actually used.
- Memory allocator was improved: supported corner case of user's malloc 
    calling scalable_malloc (non-Windows), corrected processing of 
    memory allocation requests during tbb memory allocator startup 
    (Linux).
- Windows malloc replacement has got better support for static objects.
- In pipeline setups that do not allow actual parallelism, execution 
    by a single thread is guaranteed, idle spinning eliminated, and 
    performance improved.
- RML refactoring and clean-up.
- New constructor for concurrent_hash_map allows reserving space for 
    a number of items.
- Operator delete() added to the TBB exception classes.
- Lambda support was improved in parallel_reduce.
- gcc 4.3 warnings were fixed for concurrent_queue.
- Fixed possible initialization deadlock in modules using TBB entities
    during construction of global static objects.
- Copy constructor in concurrent_hash_map was fixed.
- Fixed a couple of rare crashes in the scheduler possible before 
    in very specific use cases.
- Fixed a rare crash in the TBB allocator running out of memory.
- New tests were implemented, including test_lambda.cpp that checks 
    support for lambda expressions.
- A few other small changes in code, tests, and documentation.

------------------------------------------------------------------------
20090809 open-source release

Changes (w.r.t. TBB 2.2 commercial-aligned release):

- Fixed known exception safety issues in concurrent_vector.
- Better concurrency of simultaneous grow requests in concurrent_vector.
- TBB allocator further improves performance of large object allocation.
- Problem with source of text relocations was fixed on Linux
- Fixed bugs related to malloc replacement under Windows
- A few other small changes in code and documentation.

------------------------------------------------------------------------
TBB 2.2 commercial-aligned release

Changes (w.r.t. TBB 2.1 U4 commercial-aligned release):

- Incorporates all changes from open-source releases below.
- Architecture folders renamed from em64t to intel64 and from itanium
    to ia64.
- Major Interface version changed from 3 to 4. Deprecated interfaces 
    might be removed in future releases.
- Parallel algorithms that use partitioners have switched to use 
    the auto_partitioner by default.
- Improved memory allocator performance for allocations bigger than 8K.
- Added new thread-bound filters functionality for pipeline.
- New implementation of concurrent_hash_map that improves performance 
    significantly.
- A few other small changes in code and documentation.

------------------------------------------------------------------------
20090511 open-source release

Changes (w.r.t. previous open-source release):

- Basic support for MinGW32 development kit.
- Added tbb::zero_allocator class that initializes memory with zeros.
    It can be used as an adaptor to any STL-compatible allocator class.
- Added tbb::parallel_for_each template function as alias to parallel_do.
- Added more overloads for tbb::parallel_for.
- Added support for exact exception propagation (can only be used with 
    compilers that support C++0x std::exception_ptr).
- tbb::atomic template class can be used with enumerations.
- mutex, recursive_mutex, spin_mutex, spin_rw_mutex classes extended
    with explicit lock/unlock methods.
- Fixed size() and grow_to_at_least() methods of tbb::concurrent_vector
    to provide space allocation guarantees. More methods added for
    compatibility with std::vector, including some from C++0x.
- Preview of a lambda-friendly interface for low-level use of tasks.
- scalable_msize function added to the scalable allocator (Windows only).
- Rationalized internal auxiliary functions for spin-waiting and backoff.
- Several tests undergo decent refactoring.

Changes affecting backward compatibility:

- Improvements in concurrent_queue, including limited API changes. 
    The previous version is deprecated; its functionality is accessible 
    via methods of the new tbb::concurrent_bounded_queue class.
- grow* and push_back methods of concurrent_vector changed to return
    iterators; old semantics is deprecated. 

------------------------------------------------------------------------
TBB 2.1 Update 4 commercial-aligned release

Changes (w.r.t. TBB 2.1 U3 commercial-aligned release):

- Added tests for aligned memory allocations and malloc replacement.
- Several improvements for better bundling with Intel(R) C++ Compiler.
- A few other small changes in code and documentaion.

Bugs fixed: 

- 150 - request to build TBB examples with debug info in release mode.
- backward compatibility issue with concurrent_queue on Windows.
- dependency on VS 2005 SP1 runtime libraries removed.
- compilation of GUI examples under XCode* 3.1 (1577).
- On Windows, TBB allocator classes can be instantiated with const types 
    for compatibility with MS implementation of STL containers (1566).

------------------------------------------------------------------------
20090313 open-source release

Changes (w.r.t. 20081109 open-source release):

- Includes all changes introduced in TBB 2.1 Update 2 & Update 3
    commercial-aligned releases (see below for details).
- Added tbb::parallel_invoke template function. It runs up to 10 
    user-defined functions in parallel and waits for them to complete.
- Added a special library providing ability to replace the standard
    memory allocation routines in Microsoft* C/C++ RTL (malloc/free,
    global new/delete, etc.) with the TBB memory allocator. 
    Usage details are described in include/tbb/tbbmalloc_proxy.h file.
- Task scheduler switched to use new implementation of its core 
    functionality (deque based task pool, new structure of arena slots).
- Preview of Microsoft* Visual Studio* 2005 project files for 
    building the library is available in build/vsproject folder.
- Added tests for aligned memory allocations and malloc replacement.
- Added parallel_for/game_of_life.net example (for Windows only) 
    showing TBB usage in a .NET application.
- A number of other fixes and improvements to code, tests, makefiles,
    examples and documents.

Bugs fixed: 

- The same list as in TBB 2.1 Update 4 right above.

------------------------------------------------------------------------
TBB 2.1 Update 3 commercial-aligned release

Changes (w.r.t. TBB 2.1 U2 commercial-aligned release):

- Added support for aligned allocations to the TBB memory allocator.
- Added a special library to use with LD_PRELOAD on Linux* in order to 
    replace the standard memory allocation routines in C/C++ with the 
    TBB memory allocator.
- Added null_mutex and null_rw_mutex: no-op classes interface-compliant 
    to other TBB mutexes.
- Improved performance of parallel_sort, to close most of the serial gap
    with std::sort, and beat it on 2 and more cores.
- A few other small changes.

Bugs fixed:

- the problem where parallel_for hanged after exception throw 
    if affinity_partitioner was used (1556).
- get rid of VS warnings about mbstowcs deprecation (1560),
    as well as some other warnings.
- operator== for concurrent_vector::iterator fixed to work correctly
    with different vector instances.

------------------------------------------------------------------------
TBB 2.1 Update 2 commercial-aligned release

Changes (w.r.t. TBB 2.1 U1 commercial-aligned release):

- Incorporates all open-source-release changes down to TBB 2.1 U1,
    except for:
    - 20081019 addition of enumerable_thread_specific;
- Warning level for Microsoft* Visual C++* compiler raised to /W4 /Wp64;
    warnings found on this level were cleaned or suppressed.
- Added TBB_runtime_interface_version API function.
- Added new example: pipeline/square.
- Added exception handling and cancellation support
    for parallel_do and pipeline.
- Added copy constructor and [begin,end) constructor to concurrent_queue.
- Added some support for beta version of Intel(R) Parallel Amplifier.
- Added scripts to set environment for cross-compilation of 32-bit 
    applications on 64-bit Linux with Intel(R) C++ Compiler.
- Fixed semantics of concurrent_vector::clear() to not deallocate
    internal arrays. Fixed compact() to perform such deallocation later.
- Fixed the issue with atomic<T*> when T is incomplete type.
- Improved support for PowerPC* Macintosh*, including the fix 
    for a bug in masked compare-and-swap reported by a customer.
- As usual, a number of other improvements everywhere.

------------------------------------------------------------------------
20081109 open-source release

Changes (w.r.t. previous open-source release):

- Added new serial out of order filter for tbb::pipeline.
- Fixed the issue with atomic<T*>::operator= reported at the forum.
- Fixed the issue with using tbb::task::self() in task destructor 
    reported at the forum.
- A number of other improvements to code, tests, makefiles, examples 
    and documents.

Open-source contributions integrated: 
- Changes in the memory allocator were partially integrated.

------------------------------------------------------------------------
20081019 open-source release

Changes (w.r.t. previous open-source release):

- Introduced enumerable_thread_specific<T>.  This new class provides a 
    wrapper around native thread local storage as well as iterators and 
    ranges for accessing the thread local copies (1533).
- Improved support for Intel(R) Threading Analysis Tools
    on Intel(R) 64 architecture.
- Dependency from Microsoft* CRT was integrated to the libraries using 
    manifests, to avoid issues if called from code that uses different 
    version of Visual C++* runtime than the library.
- Introduced new defines TBB_USE_ASSERT, TBB_USE_DEBUG, 
    TBB_USE_PERFORMANCE_WARNINGS, TBB_USE_THREADING_TOOLS.
- A number of other improvements to code, tests, makefiles, examples 
    and documents.

Open-source contributions integrated:

- linker optimization: /incremental:no .

------------------------------------------------------------------------
20080925 open-source release

Changes (w.r.t. previous open-source release):

- Same fix for a memory leak in the memory allocator as in TBB 2.1 U1.
- Improved support for lambda functions.
- Fixed more concurrent_queue issues reported at the forum.
- A number of other improvements to code, tests, makefiles, examples 
    and documents.

------------------------------------------------------------------------
TBB 2.1 Update 1 commercial-aligned release

Changes (w.r.t. TBB 2.1 Gold commercial-aligned release):

- Fixed small memory leak in the memory allocator.
- Incorporates all open-source-release changes down to TBB 2.1 GOLD,
    except for:
    - 20080825 changes for parallel_do;

------------------------------------------------------------------------
20080825 open-source release

Changes (w.r.t. previous open-source release):

- Added exception handling and cancellation support for parallel_do.
- Added default HashCompare template argument for concurrent_hash_map.
- Fixed concurrent_queue.clear() issues due to incorrect assumption
    about clear() being private method.
- Added the possibility to use TBB in applications that change
    default calling conventions (Windows* only).
- Many improvements to code, tests, examples, makefiles and documents.

Bugs fixed:

- 120, 130 - memset declaration missed in concurrent_hash_map.h

------------------------------------------------------------------------
20080724 open-source release

Changes (w.r.t. previous open-source release):

- Inline assembly for atomic operations improved for gcc 4.3
- A few more improvements to the code.

------------------------------------------------------------------------
20080709 open-source release

Changes (w.r.t. previous open-source release):

- operator=() was added to the tbb_thread class according to
    the current working draft for std::thread.
- Recognizing SPARC* in makefiles for Linux* and Sun Solaris*.

Bugs fixed:

- 127 - concurrent_hash_map::range fixed to split correctly.

Open-source contributions integrated:

- fix_set_midpoint.diff by jyasskin
- SPARC* support in makefiles by Raf Schietekat

------------------------------------------------------------------------
20080622 open-source release

Changes (w.r.t. previous open-source release):

- Fixed a hang that rarely happened on Linux
    during deinitialization of the TBB scheduler.
- Improved support for Intel(R) Thread Checker.
- A few more improvements to the code.

------------------------------------------------------------------------
TBB 2.1 GOLD commercial-aligned release

Changes (w.r.t. TBB 2.0 U3 commercial-aligned release):

- All open-source-release changes down to, and including, TBB 2.0 GOLD
    below, were incorporated into this release.

------------------------------------------------------------------------
20080605 open-source release

Changes (w.r.t. previous open-source release):

- Explicit control of exported symbols by version scripts added on Linux.
- Interfaces polished for exception handling & algorithm cancellation.
- Cache behavior improvements in the scalable allocator.
- Improvements in text_filter, polygon_overlay, and other examples.
- A lot of other stability improvements in code, tests, and makefiles.
- First release where binary packages include headers/docs/examples, so
    binary packages are now self-sufficient for using TBB.

Open-source contributions integrated:

- atomics patch (partially).
- tick_count warning patch.

Bugs fixed:

- 118 - fix for boost compatibility.
- 123 - fix for tbb_machine.h.

------------------------------------------------------------------------
20080512 open-source release

Changes (w.r.t. previous open-source release):

- Fixed a problem with backward binary compatibility
    of debug Linux builds.
- Sun* Studio* support added.
- soname support added on Linux via linker script. To restore backward 
    binary compatibility, *.so -> *.so.2 softlinks should be created.
- concurrent_hash_map improvements - added few new forms of insert() 
    method and fixed precondition and guarantees of erase() methods.   
    Added runtime warning reporting about bad hash function used for 
    the container. Various improvements for performance and concurrency.
- Cancellation mechanism reworked so that it does not hurt scalability.
- Algorithm parallel_do reworked. Requirement for Body::argument_type 
    definition removed, and work item argument type can be arbitrarily 
    cv-qualified.
- polygon_overlay example added.
- A few more improvements to code, tests, examples and Makefiles.

Open-source contributions integrated:

- Soname support patch for Bugzilla #112.

Bugs fixed:

- 112 - fix for soname support.

------------------------------------------------------------------------
TBB 2.0 U3 commercial-aligned release (package 017, April 20, 2008)

Corresponds to commercial 019 (for Linux*, 020; for Mac OS* X, 018)
packages.

Changes (w.r.t. TBB 2.0 U2 commercial-aligned release):

- Does not contain open-source-release changes below; this release is
    only a minor update of TBB 2.0 U2.
- Removed spin-waiting in pipeline and concurrent_queue.
- A few more small bug fixes from open-source releases below.

------------------------------------------------------------------------
20080408 open-source release

Changes (w.r.t. previous open-source release):

- count_strings example reworked: new word generator implemented, hash 
    function replaced, and tbb_allocator is used with std::string class.
- Static methods of spin_rw_mutex were replaced by normal member 
    functions, and the class name was versioned.
- tacheon example was renamed to tachyon.
- Improved support for Intel(R) Thread Checker.
- A few more minor improvements.

Open-source contributions integrated:

- Two sets of Sun patches for IA Solaris support.

------------------------------------------------------------------------
20080402 open-source release

Changes (w.r.t. previous open-source release):

- Exception handling and cancellation support for tasks and algorithms 
    fully enabled.
- Exception safety guaranties defined and fixed for all concurrent 
    containers.
- User-defined memory allocator support added to all concurrent 
    containers.
- Performance improvement of concurrent_hash_map, spin_rw_mutex.
- Critical fix for a rare race condition during scheduler 
    initialization/de-initialization.
- New methods added for concurrent containers to be closer to STL,
    as well as automatic filters removal from pipeline
    and __TBB_AtomicAND function.
- The volatile keyword dropped from where it is not really needed.
- A few more minor improvements.

------------------------------------------------------------------------
20080319 open-source release

Changes (w.r.t. previous open-source release):

- Support for gcc version 4.3 was added.
- tbb_thread class, near compatible with std::thread expected in C++0x, 
    was added.

Bugs fixed:

- 116 - fix for compilation issues with gcc version 4.2.1.
- 120 - fix for compilation issues with gcc version 4.3.
 
------------------------------------------------------------------------
20080311 open-source release

Changes (w.r.t. previous open-source release):

- An enumerator added for pipeline filter types (serial vs. parallel).
- New task_scheduler_observer class introduced, to observe when
    threads start and finish interacting with the TBB task scheduler.
- task_scheduler_init reverted to not use internal versioned class;
    binary compatibility guaranteed with stable releases only.
- Various improvements to code, tests, examples and Makefiles.
 
------------------------------------------------------------------------
20080304 open-source release

Changes (w.r.t. previous open-source release):

- Task-to-thread affinity support, previously kept under a macro,
    now fully legalized.
- Work-in-progress on cache_aligned_allocator improvements.
- Pipeline really supports parallel input stage; it's no more serialized.
- Various improvements to code, tests, examples and Makefiles.
 
Bugs fixed:

- 119 - fix for scalable_malloc sometimes failing to return a big block.
- TR575 - fixed a deadlock occurring on Windows in startup/shutdown
    under some conditions.

------------------------------------------------------------------------
20080226 open-source release

Changes (w.r.t. previous open-source release):

- Introduced tbb_allocator to select between standard allocator and
    tbb::scalable_allocator when available.
- Removed spin-waiting in pipeline and concurrent_queue.
- Improved performance of concurrent_hash_map by using tbb_allocator.
- Improved support for Intel(R) Thread Checker.
- Various improvements to code, tests, examples and Makefiles.

------------------------------------------------------------------------
TBB 2.0 U2 commercial-aligned release (package 017, February 14, 2008)

Corresponds to commercial 017 (for Linux*, 018; for Mac OS* X, 016)
packages.

Changes (w.r.t. TBB 2.0 U1 commercial-aligned release):

- Does not contain open-source-release changes below; this release is
    only a minor update of TBB 2.0 U1.
- Add support for Microsoft* Visual Studio* 2008, including binary
    libraries and VS2008 projects for examples.
- Use SwitchToThread() not Sleep() to yield threads on Windows*.
- Enhancements to Doxygen-readable comments in source code.
- A few more small bug fixes from open-source releases below.

Bugs fixed:

- TR569 - Memory leak in concurrent_queue.

------------------------------------------------------------------------
20080207 open-source release

Changes (w.r.t. previous open-source release):

- Improvements and minor fixes in VS2008 projects for examples.
- Improvements in code for gating worker threads that wait for work,
  previously consolidated under #if IMPROVED_GATING, now legalized.
- Cosmetic changes in code, examples, tests.

Bugs fixed:

- 113 - Iterators and ranges should be convertible to their const
    counterparts.
- TR569 - Memory leak in concurrent_queue.

------------------------------------------------------------------------
20080122 open-source release

Changes (w.r.t. previous open-source release):

- Updated examples/parallel_for/seismic to improve the visuals and to
    use the affinity_partitioner (20071127 and forward) for better
    performance.
- Minor improvements to unittests and performance tests.

------------------------------------------------------------------------
20080115 open-source release

Changes (w.r.t. previous open-source release):

- Cleanup, simplifications and enhancements to the Makefiles for
    building the libraries (see build/index.html for high-level
    changes) and the examples.
- Use SwitchToThread() not Sleep() to yield threads on Windows*.
- Engineering work-in-progress on exception safety/support.
- Engineering work-in-progress on affinity_partitioner for
    parallel_reduce.
- Engineering work-in-progress on improved gating for worker threads
    (idle workers now block in the OS instead of spinning).
- Enhancements to Doxygen-readable comments in source code.

Bugs fixed:

- 102 - Support for parallel build with gmake -j
- 114 - /Wp64 build warning on Windows*.

------------------------------------------------------------------------
20071218 open-source release

Changes (w.r.t. previous open-source release):

- Full support for Microsoft* Visual Studio* 2008 in open-source.
    Binaries for vc9/ will be available in future stable releases.
- New recursive_mutex class.
- Full support for 32-bit PowerMac including export files for builds.
- Improvements to parallel_do.

------------------------------------------------------------------------
20071206 open-source release

Changes (w.r.t. previous open-source release):

- Support for Microsoft* Visual Studio* 2008 in building libraries
    from source as well as in vc9/ projects for examples.
- Small fixes to the affinity_partitioner first introduced in 20071127.
- Small fixes to the thread-stack size hook first introduced in 20071127.
- Engineering work in progress on concurrent_vector.
- Engineering work in progress on exception behavior.
- Unittest improvements.

------------------------------------------------------------------------
20071127 open-source release

Changes (w.r.t. previous open-source release):

- Task-to-thread affinity support (affinity partitioner) first appears.
- More work on concurrent_vector.
- New parallel_do algorithm (function-style version of parallel while)
    and parallel_do/parallel_preorder example.
- New task_scheduler_init() hooks for getting default_num_threads() and
    for setting thread stack size.
- Support for weak memory consistency models in the code base.
- Futex usage in the task scheduler (Linux).
- Started adding 32-bit PowerMac support.
- Intel(R) 9.1 compilers are now the base supported Intel(R) compiler
    version.
- TBB libraries added to link line automatically on Microsoft Windows*
    systems via #pragma comment linker directives.

Open-source contributions integrated:

- FreeBSD platform support patches.
- AIX weak memory model patch.

Bugs fixed:

- 108 - Removed broken affinity.h reference.
- 101 - Does not build on Debian Lenny (replaced arch with uname -m).

------------------------------------------------------------------------
20071030 open-source release

Changes (w.r.t. previous open-source release):

- More work on concurrent_vector.
- Better support for building with -Wall -Werror (or not) as desired.
- A few fixes to eliminate extraneous warnings.
- Begin introduction of versioning hooks so that the internal/API
    version is tracked via TBB_INTERFACE_VERSION.  The newest binary
    libraries should always work with previously-compiled code when-
    ever possible.
- Engineering work in progress on using futex inside the mutexes (Linux).
- Engineering work in progress on exception behavior.
- Engineering work in progress on a new parallel_do algorithm.
- Unittest improvements.

------------------------------------------------------------------------
20070927 open-source release

Changes:

- Minor update to TBB 2.0 U1 below.
- Begin introduction of new concurrent_vector interfaces not released
    with TBB 2.0 U1.

------------------------------------------------------------------------
TBB 2.0 U1 commercial-aligned release (package 014, October 1, 2007)

Corresponds to commercial 014 (for Linux*, 016) packages.

Changes (w.r.t. previous commercial-aligned release):

- All open-source-release changes down to, and including, TBB 2.0 GOLD
    below, were incorporated into this release.
- Made a number of changes to the officially supported OS list:
    Added Linux* OSs:
	Asianux* 3, Debian* 4.0, Fedora Core* 6, Fedora* 7,
	Turbo Linux* 11, Ubuntu* 7.04;
    Dropped Linux* OSs:
	Asianux* 2, Fedora Core* 4, Haansoft* Linux 2006 Server,
	Mandriva/Mandrake* 10.1, Miracle Linux* 4.0,
	Red Flag* DC Server 5.0;
    Only Mac OS* X 10.4.9 (and forward) and Xcode* tool suite 2.4.1 (and
	forward) are now supported.
- Commercial installers on Linux* fixed to recommend the correct
    binaries to use in more cases, with less unnecessary warnings.
- Changes to eliminate spurious build warnings.

Open-source contributions integrated:

- Two small header guard macro patches; it also fixed bug #94.
- New blocked_range3d class.

Bugs fixed:

- 93 - Removed misleading comments in task.h.
- 94 - See above.

------------------------------------------------------------------------
20070815 open-source release

Changes:

- Changes to eliminate spurious build warnings.
- Engineering work in progress on concurrent_vector allocator behavior.
- Added hooks to use the Intel(R) compiler code coverage tools.

Open-source contributions integrated:

- Mac OS* X build warning patch.

Bugs fixed:

- 88 - Fixed TBB compilation errors if both VS2005 and Windows SDK are
    installed.

------------------------------------------------------------------------
20070719 open-source release

Changes:

- Minor update to TBB 2.0 GOLD below.
- Changes to eliminate spurious build warnings.

------------------------------------------------------------------------
TBB 2.0 GOLD commercial-aligned release (package 010, July 19, 2007)

Corresponds to commercial 010 (for Linux*, 012) packages.

- TBB open-source debut release.

------------------------------------------------------------------------
* Other names and brands may be claimed as the property of others.
