You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							1595 lines
						
					
					
						
							64 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							1595 lines
						
					
					
						
							64 KiB
						
					
					
				
								------------------------------------------------------------------------
							 | 
						|
								The list of most significant changes made over time in
							 | 
						|
								Intel(R) Threading Building Blocks (Intel(R) TBB).
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								
							 | 
						|
								Intel TBB 4.2 Update 3
							 | 
						|
								TBB_INTERFACE_VERSION == 7003
							 | 
						|
								
							 | 
						|
								- Added support for Microsoft* Visual Studio* 2013.
							 | 
						|
								- Improved Microsoft* PPL-compatible form of parallel_for for better 
							 | 
						|
								    support of auto-vectorization.
							 | 
						|
								- Added a new example for cancellation and reset in the flow graph:
							 | 
						|
								    Kohonen self-organizing map (examples/graph/som).
							 | 
						|
								- Various improvements in source code, tests, and makefiles.
							 | 
						|
								
							 | 
						|
								Bugs fixed:
							 | 
						|
								- Added dynamic replacement of _aligned_msize() previously missed.
							 | 
						|
								- Fixed task_group::run_and_wait() to throw invalid_multiple_scheduling
							 | 
						|
								    exception if the specified task handle is already scheduled.
							 | 
						|
								
							 | 
						|
								Open-source contributions integrated:
							 | 
						|
								
							 | 
						|
								- A fix for ARM* processors by Steve Capper.
							 | 
						|
								- Improvements in std::swap calls by Robert Maynard.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 4.2 Update 2
							 | 
						|
								TBB_INTERFACE_VERSION == 7002
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 4.2 Update 1):
							 | 
						|
								
							 | 
						|
								- Enable C++11 features for Microsoft* Visual Studio* 2013 Preview.
							 | 
						|
								- Added a test for compatibility of TBB containers with C++11
							 | 
						|
								    range-based for loop.
							 | 
						|
								
							 | 
						|
								Changes affecting backward compatibility:
							 | 
						|
								
							 | 
						|
								- Internal layout changed for class tbb::flow::limiter_node.
							 | 
						|
								
							 | 
						|
								Bugs fixed:
							 | 
						|
								
							 | 
						|
								- When building for Intel(R) Xeon Phi(tm) coprocessor, TBB programs
							 | 
						|
								    no longer require explicit linking with librt and libpthread.
							 | 
						|
								
							 | 
						|
								Open-source contributions integrated:
							 | 
						|
								
							 | 
						|
								- Fixes for ARM* processors by Steve Capper, Leif Lindholm
							 | 
						|
								    and Steven Noonan.
							 | 
						|
								- Support for Clang on Linux by Raf Schietekat.
							 | 
						|
								- Typo correction in scheduler.cpp by Julien Schueller.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 4.2 Update 1
							 | 
						|
								TBB_INTERFACE_VERSION == 7001
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 4.2):
							 | 
						|
								
							 | 
						|
								- Added project files for Microsoft* Visual Studio* 2010.
							 | 
						|
								- Initial support of Microsoft* Visual Studio* 2013 Preview.
							 | 
						|
								- Enable C++11 features available in Intel(R) C++ Compiler 14.0.
							 | 
						|
								- scalable_allocation_mode(TBBMALLOC_SET_SOFT_HEAP_LIMIT, <size>) can be
							 | 
						|
								    used to urge releasing memory from tbbmalloc internal buffers when
							 | 
						|
								    the given limit is exceeded.
							 | 
						|
								
							 | 
						|
								Community Preview Features:
							 | 
						|
								
							 | 
						|
								- Class task_arena no longer requires linking with a preview library,
							 | 
						|
								    though still remains a community preview feature.
							 | 
						|
								- The method task_arena::wait_until_empty() is removed.
							 | 
						|
								- The method task_arena::current_slot() now returns -1 if 
							 | 
						|
								    the task scheduler is not initialized in the thread.
							 | 
						|
								
							 | 
						|
								Changes affecting backward compatibility:
							 | 
						|
								
							 | 
						|
								- Because of changes in internal layout of graph nodes, the namespace
							 | 
						|
								    interface number of flow::graph has been incremented from 6 to 7.
							 | 
						|
								
							 | 
						|
								Bugs fixed:
							 | 
						|
								
							 | 
						|
								- Fixed a race in lazy initialization of task_arena.
							 | 
						|
								- Fixed flow::graph::reset() to prevent situations where tasks would be
							 | 
						|
								    spawned in the process of resetting the graph to its initial state.
							 | 
						|
								- Fixed decrement bug in limiter_node.
							 | 
						|
								- Fixed a race in arc deletion in the flow graph.
							 | 
						|
								
							 | 
						|
								Open-source contributions integrated:
							 | 
						|
								
							 | 
						|
								- Improved support for IBM* Blue Gene* by Raf Schietekat.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 4.2
							 | 
						|
								TBB_INTERFACE_VERSION == 7000
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 4.1 Update 4):
							 | 
						|
								
							 | 
						|
								- Added speculative_spin_mutex, which uses Intel(R) Transactional
							 | 
						|
								    Synchronization Extensions when they are supported by hardware.
							 | 
						|
								- Binary files linked with libc++ (the C++ standard library in Clang)
							 | 
						|
								    were added on OS X*.
							 | 
						|
								- For OS X* exact exception propagation is supported with Clang;
							 | 
						|
								    it requires use of libc++ and corresponding Intel TBB binaries.
							 | 
						|
								- Support for C++11 initilizer lists in constructor and assigment
							 | 
						|
								    has been added to concurrent_hash_map, concurrent_unordered_set,
							 | 
						|
								    concurrent_unordered_multiset, concurrent_unordered_map,
							 | 
						|
								    concurrent_unordered_multimap.
							 | 
						|
								- The memory allocator may now clean its per-thread memory caches
							 | 
						|
								    when it cannot get more memory.
							 | 
						|
								- Added the scalable_allocation_command() function for on-demand
							 | 
						|
								    cleaning of internal memory caches.
							 | 
						|
								- Reduced the time overhead for freeing memory objects smaller than ~8K.
							 | 
						|
								- Simplified linking with the debug library for applications that use
							 | 
						|
								    Intel TBB in code offloaded to Intel(R) Xeon Phi(tm) coprocessors.
							 | 
						|
								    See an example in
							 | 
						|
								    examples/GettingStarted/sub_string_finder/Makefile.
							 | 
						|
								- Various improvements in source code, scripts and makefiles.
							 | 
						|
								
							 | 
						|
								Changes affecting backward compatibility:
							 | 
						|
								
							 | 
						|
								- tbb::flow::graph has been modified to spawn its tasks;
							 | 
						|
								    the old behaviour (task enqueuing) is deprecated. This change may
							 | 
						|
								    impact applications that expected a flow graph to make progress
							 | 
						|
								    without calling wait_for_all(), which is no longer guaranteed. See
							 | 
						|
								    the documentation for more details.
							 | 
						|
								- Changed the return values of the scalable_allocation_mode() function.
							 | 
						|
								
							 | 
						|
								Bugs fixed:
							 | 
						|
								
							 | 
						|
								- Fixed a leak of parallel_reduce body objects when execution is
							 | 
						|
								    cancelled or an exception is thrown, as suggested by Darcy Harrison.
							 | 
						|
								- Fixed a race in the task scheduler which can lower the effective
							 | 
						|
								    priority despite the existence of higher priority tasks.
							 | 
						|
								- On Linux an error during destruction of the internal thread local
							 | 
						|
								    storage no longer results in an exception.
							 | 
						|
								
							 | 
						|
								Open-source contributions integrated:
							 | 
						|
								
							 | 
						|
								- Fixed task_group_context state propagation to unrelated context trees
							 | 
						|
								    by Raf Schietekat.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 4.1 Update 4
							 | 
						|
								TBB_INTERFACE_VERSION == 6105
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 4.1 Update 3):
							 | 
						|
								
							 | 
						|
								- Use /volatile:iso option with VS 2012 to disable extended
							 | 
						|
								    semantics for volatile variables.
							 | 
						|
								- Various improvements in affinity_partitioner, scheduler,
							 | 
						|
								    tests, examples, makefiles.
							 | 
						|
								- Concurrent_priority_queue class now supports initialization/assignment
							 | 
						|
								    via C++11 initializer list feature (std::initializer_list<T>).
							 | 
						|
								
							 | 
						|
								Bugs fixed:
							 | 
						|
								
							 | 
						|
								- Fixed more possible stalls in concurrent invocations of
							 | 
						|
								    task_arena::execute(), especially waiting for enqueued tasks.
							 | 
						|
								- Fixed requested number of workers for task_arena(P,0).
							 | 
						|
								- Fixed interoperability with Intel(R) VTune(TM) Amplifier XE in
							 | 
						|
								    case of using task_arena::enqueue() from a terminating thread.
							 | 
						|
								
							 | 
						|
								Open-source contributions integrated:
							 | 
						|
								
							 | 
						|
								- Type fixes, cleanups, and code beautification by Raf Schietekat.
							 | 
						|
								- Improvements in atomic operations for big endian platforms
							 | 
						|
								    by Raf Schietekat.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 4.1 Update 3
							 | 
						|
								TBB_INTERFACE_VERSION == 6103
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 4.1 Update 2):
							 | 
						|
								
							 | 
						|
								- Binary files for Android* applications were added to the Linux* OS
							 | 
						|
								    package.
							 | 
						|
								- Binary files for Windows Store* applications were added to the
							 | 
						|
								    Windows* OS package.
							 | 
						|
								- Exact exception propagation (exception_ptr) support on Linux OS is
							 | 
						|
								    now turned on by default for GCC 4.4 and higher.
							 | 
						|
								- Stopped implicit use of large memory pages by tbbmalloc (Linux-only).
							 | 
						|
								    Now use of large pages must be explicitly enabled with
							 | 
						|
								    scalable_allocation_mode() function or TBB_MALLOC_USE_HUGE_PAGES
							 | 
						|
								    environment variable.
							 | 
						|
								
							 | 
						|
								Community Preview Features:
							 | 
						|
								
							 | 
						|
								- Extended class task_arena constructor and method initialize() to
							 | 
						|
								    allow some concurrency to be reserved strictly for application
							 | 
						|
								    threads.
							 | 
						|
								- New methods terminate() and is_active() were added to class
							 | 
						|
								    task_arena.
							 | 
						|
								
							 | 
						|
								Bugs fixed:
							 | 
						|
								
							 | 
						|
								- Fixed initialization of hashing helper constant in the hash
							 | 
						|
								    containers.
							 | 
						|
								- Fixed possible stalls in concurrent invocations of
							 | 
						|
								    task_arena::execute() when no worker thread is available to make
							 | 
						|
								    progress.
							 | 
						|
								- Fixed incorrect calculation of hardware concurrency in the presence
							 | 
						|
								    of inactive processor groups, particularly on systems running
							 | 
						|
								    Windows* 8 and Windows* Server 2012.
							 | 
						|
								
							 | 
						|
								Open-source contributions integrated:
							 | 
						|
								
							 | 
						|
								- The fix for the GUI examples on OS X* systems by Raf Schietekat.
							 | 
						|
								- Moved some power-of-2 calculations to functions to improve readability
							 | 
						|
								    by Raf Schietekat.
							 | 
						|
								- C++11/Clang support improvements by arcata.
							 | 
						|
								- ARM* platform isolation layer by Steve Capper, Leif Lindholm, Leo Lara
							 | 
						|
								    (ARM).
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 4.1 Update 2
							 | 
						|
								TBB_INTERFACE_VERSION == 6102
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 4.1 Update 1):
							 | 
						|
								
							 | 
						|
								- Objects up to 128 MB are now cached by the tbbmalloc. Previously
							 | 
						|
								    the threshold was 8MB. Objects larger than 128 MB are still
							 | 
						|
								    processed by direct OS calls.
							 | 
						|
								- concurrent_unordered_multiset and concurrent_unordered_multimap
							 | 
						|
								    have been added, based on Microsoft* PPL prototype.
							 | 
						|
								- Ability to value-initialize a tbb::atomic<T> variable on construction
							 | 
						|
								    in C++11, with const expressions properly supported.
							 | 
						|
								
							 | 
						|
								Community Preview Features:
							 | 
						|
								
							 | 
						|
								- Added a possibility to wait until all worker threads terminate.
							 | 
						|
								    This is necessary before calling fork() from an application.
							 | 
						|
								
							 | 
						|
								Bugs fixed:
							 | 
						|
								
							 | 
						|
								- Fixed data race in tbbmalloc that might lead to memory leaks
							 | 
						|
								    for large object allocations.
							 | 
						|
								- Fixed task_arena::enqueue() to use task_group_context of target arena.
							 | 
						|
								- Improved implementation of 64 bit atomics on ia32.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 4.1 Update 1
							 | 
						|
								TBB_INTERFACE_VERSION == 6101
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 4.1):
							 | 
						|
								
							 | 
						|
								- concurrent_vector class now supports initialization/assignment
							 | 
						|
								    via C++11 initializer list feature (std::initializer_list<T>)
							 | 
						|
								- Added implementation of the platform isolation layer based on
							 | 
						|
								    Intel compiler atomic built-ins; it is supposed to work on
							 | 
						|
								    any platform supported by compiler version 12.1 and newer.
							 | 
						|
								- Using GetNativeSystemInfo() instead of GetSystemInfo() to support
							 | 
						|
								    more than 32 processors for 32-bit applications under WOW64.
							 | 
						|
								- The following form of parallel_for: 
							 | 
						|
								    parallel_for(first, last, [step,] f[, context]) now accepts an
							 | 
						|
								    optional partitioner parameter after the function f.
							 | 
						|
								
							 | 
						|
								Backward-incompatible API changes:
							 | 
						|
								
							 | 
						|
								- The library no longer injects tuple in to namespace std.
							 | 
						|
								    In previous releases, tuple was injected into namespace std by
							 | 
						|
								    flow_graph.h when std::tuple was not available.  In this release,
							 | 
						|
								    flow_graph.h now uses tbb::flow::tuple.  On platforms where
							 | 
						|
								    std::tuple is available, tbb::flow::tuple is typedef'ed to
							 | 
						|
								    std::tuple.  On all other platforms, tbb::flow::tuple provides
							 | 
						|
								    a subset of the functionality defined by std::tuple. Users of
							 | 
						|
								    flow_graph.h may need to change their uses of std::tuple to
							 | 
						|
								    tbb::flow::tuple to ensure compatibility with non-C++11 compliant
							 | 
						|
								    compilers.
							 | 
						|
								
							 | 
						|
								Bugs fixed:
							 | 
						|
								
							 | 
						|
								- Fixed local observer to be able to override propagated CPU state and
							 | 
						|
								    to provide correct value of task_arena::current_slot() in callbacks.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 4.1
							 | 
						|
								TBB_INTERFACE_VERSION == 6100
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 4.0 Update 5):
							 | 
						|
								
							 | 
						|
								- _WIN32_WINNT must be set to 0x0501 or greater in order to use TBB
							 | 
						|
								    on Microsoft* Windows*.
							 | 
						|
								- parallel_deterministic_reduce template function is fully supported.
							 | 
						|
								- TBB headers can be used with C++0x/C++11 mode (-std=c++0x) of GCC
							 | 
						|
								    and Intel(R) Compiler.
							 | 
						|
								- C++11 std::make_exception_ptr is used where available, instead of
							 | 
						|
								    std::copy_exception from earlier C++0x implementations.
							 | 
						|
								- Improvements in the TBB allocator to reduce extra memory consumption.
							 | 
						|
								- Partial refactoring of the task scheduler data structures.
							 | 
						|
								- TBB examples allow more flexible specification of the thread number,
							 | 
						|
								    including arithmetic and geometric progression.
							 | 
						|
								
							 | 
						|
								Bugs fixed:
							 | 
						|
								
							 | 
						|
								- On Linux & OS X*, pre-built TBB binaries do not yet support exact
							 | 
						|
								    exception propagation via C++11 exception_ptr. To prevent run time
							 | 
						|
								    errors, by default TBB headers disable exact exception propagation
							 | 
						|
								    even if the C++ implementation provides exception_ptr.
							 | 
						|
								
							 | 
						|
								Community Preview Features:
							 | 
						|
								
							 | 
						|
								- Added: class task_arena, for work submission by multiple application
							 | 
						|
								    threads with thread-independent control of concurrency level.
							 | 
						|
								- Added: task_scheduler_observer can be created as local to a master
							 | 
						|
								    thread, to observe threads that work on behalf of that master.
							 | 
						|
								    Local observers may have new on_scheduler_leaving() callback.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 4.0 Update 5
							 | 
						|
								TBB_INTERFACE_VERSION == 6005
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 4.0 Update 4):
							 | 
						|
								
							 | 
						|
								- Parallel pipeline optimization (directly storing small objects in the
							 | 
						|
								    interstage data buffers) limited to trivially-copyable types for
							 | 
						|
								    C++11 and a short list of types for earlier compilers.
							 | 
						|
								- _VARIADIC_MAX switch is honored for TBB tuple implementation
							 | 
						|
								    and flow::graph nodes based on tuple.
							 | 
						|
								- Support of Cocoa framework was added to the GUI examples on OS X*
							 | 
						|
								    systems.
							 | 
						|
								
							 | 
						|
								Bugs fixed:
							 | 
						|
								
							 | 
						|
								- Fixed a tv_nsec overflow bug in condition_variable::wait_for. 
							 | 
						|
								- Fixed execution order of enqueued tasks with different priorities.
							 | 
						|
								- Fixed a bug with task priority changes causing lack of progress
							 | 
						|
								    for fire-and-forget tasks when TBB was initialized to use 1 thread.
							 | 
						|
								- Fixed duplicate symbol problem when linking multiple compilation
							 | 
						|
								    units that include flow_graph.h on VC 10.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 4.0 Update 4
							 | 
						|
								TBB_INTERFACE_VERSION == 6004
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 4.0 Update 3):
							 | 
						|
								
							 | 
						|
								- The TBB memory allocator transparently supports large pages on Linux.
							 | 
						|
								- A new flow_graph example, logic_sim, was added.
							 | 
						|
								- Support for DirectX* 9 was added to GUI examples.
							 | 
						|
								
							 | 
						|
								Community Preview Features:
							 | 
						|
								
							 | 
						|
								- Added: aggregator, a new concurrency control mechanism.
							 | 
						|
								
							 | 
						|
								Bugs fixed:
							 | 
						|
								
							 | 
						|
								- The abort operation on concurrent_bounded_queue now leaves the queue
							 | 
						|
								    in a reusable state. If a bad_alloc or bad_last_alloc exception is
							 | 
						|
								    thrown while the queue is recovering from an abort, that exception
							 | 
						|
								    will be reported instead of user_abort on the thread on which it
							 | 
						|
								    occurred, and the queue will not be reusable.
							 | 
						|
								- Steal limiting heuristic fixed to avoid premature stealing disabling
							 | 
						|
								    when large amount of __thread data is allocated on thread stack.
							 | 
						|
								- Fixed a low-probability leak of arenas in the task scheduler.
							 | 
						|
								- In STL-compatible allocator classes, the method construct() was fixed
							 | 
						|
								    to comply with C++11 requirements.
							 | 
						|
								- Fixed a bug that prevented creation of fixed-size memory pools
							 | 
						|
								    smaller than 2M.
							 | 
						|
								- Significantly reduced the amount of warnings from various compilers.
							 | 
						|
								
							 | 
						|
								Open-source contributions integrated:
							 | 
						|
								
							 | 
						|
								- Multiple improvements by Raf Schietekat.
							 | 
						|
								- Basic support for Clang on OS X* by Blas Rodriguez Somoza.
							 | 
						|
								- Fixes for warnings and corner-case bugs by Blas Rodriguez Somoza
							 | 
						|
								    and Edward Lam.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 4.0 Update 3
							 | 
						|
								TBB_INTERFACE_VERSION == 6003
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 4.0 Update 2):
							 | 
						|
								
							 | 
						|
								- Modifications to the low-level API for memory pools:
							 | 
						|
								    added support for aligned allocations;
							 | 
						|
								    pool policies reworked to allow backward-compatible extensions;
							 | 
						|
								    added a policy to not return memory space till destruction;
							 | 
						|
								    pool_reset() does not return memory space anymore.
							 | 
						|
								- Class tbb::flow::graph_iterator added to iterate over all nodes
							 | 
						|
								    registered with a graph instance.
							 | 
						|
								- multioutput_function_node has been renamed multifunction_node.
							 | 
						|
								    multifunction_node and split_node are now fully-supported features.
							 | 
						|
								- For the tagged join node, the policy for try_put of an item with
							 | 
						|
								    already existing tag has been defined: the item will be rejected.
							 | 
						|
								- Matching the behavior on Windows, on other platforms the optional
							 | 
						|
								    shared libraries (libtbbmalloc, libirml) now are also searched
							 | 
						|
								    only in the directory where libtbb is located.
							 | 
						|
								- The platform isolation layer based on GCC built-ins is extended.
							 | 
						|
								
							 | 
						|
								Backward-incompatible API changes:
							 | 
						|
								
							 | 
						|
								- a graph reference parameter is now required to be passed to the
							 | 
						|
								    constructors of the following flow graph nodes: overwrite_node, 
							 | 
						|
								    write_once_node, broadcast_node, and the CPF or_node.
							 | 
						|
								- the following tbb::flow node methods and typedefs have been renamed:
							 | 
						|
								       Old                             New
							 | 
						|
								    join_node and or_node:
							 | 
						|
								       inputs()                 ->     input_ports()
							 | 
						|
								       input_ports_tuple_type   ->     input_ports_type
							 | 
						|
								    multifunction_node and split_node:
							 | 
						|
								       ports_type               ->     output_ports_type
							 | 
						|
								
							 | 
						|
								Bugs fixed:
							 | 
						|
								
							 | 
						|
								- Not all logical processors were utilized on systems with more than
							 | 
						|
								    64 cores split by Windows into several processor groups.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 4.0 Update 2 commercial-aligned release
							 | 
						|
								TBB_INTERFACE_VERSION == 6002
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 4.0 Update 1 commercial-aligned release):
							 | 
						|
								
							 | 
						|
								- concurrent_bounded_queue now has an abort() operation that releases 
							 | 
						|
								    threads involved in pending push or pop operations. The released 
							 | 
						|
								    threads will receive a tbb::user_abort exception.
							 | 
						|
								- Added Community Preview Feature:  concurrent_lru_cache container, 
							 | 
						|
								    a concurrent implementation of LRU (least-recently-used) cache.
							 | 
						|
								
							 | 
						|
								Bugs fixed:
							 | 
						|
								
							 | 
						|
								- fixed a race condition in the TBB scalable allocator.
							 | 
						|
								- concurrent_queue counter wraparound bug was fixed, which occurred when
							 | 
						|
								    the number of push and pop operations exceeded ~>4 billion on IA32.
							 | 
						|
								- fixed races in the TBB scheduler that could put workers asleep too
							 | 
						|
								    early, especially in presense of affinitized tasks.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 4.0 Update 1 commercial-aligned release
							 | 
						|
								TBB_INTERFACE_VERSION == 6000 (forgotten to increment)
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 4.0 commercial-aligned release):
							 | 
						|
								
							 | 
						|
								- Memory leaks fixed in binpack example.
							 | 
						|
								- Improvements and fixes in the TBB allocator.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 4.0 commercial-aligned release
							 | 
						|
								TBB_INTERFACE_VERSION == 6000
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 3.0 Update 8 commercial-aligned release):
							 | 
						|
								
							 | 
						|
								- concurrent_priority_queue is now a fully supported feature.
							 | 
						|
								    Capacity control methods were removed.
							 | 
						|
								- Flow graph is now a fully supported feature.
							 | 
						|
								- A new memory backend has been implemented in the TBB allocator.
							 | 
						|
								    It can reuse freed memory for both small and large objects, and
							 | 
						|
								    returns unused memory blocks to the OS more actively.
							 | 
						|
								- Improved partitioning algorithms for parallel_for and parallel_reduce
							 | 
						|
								    to better handle load imbalance.
							 | 
						|
								- The convex_hull example has been refactored for reproducible
							 | 
						|
								    performance results.
							 | 
						|
								- The major interface version has changed from 5 to 6.
							 | 
						|
								    Deprecated interfaces might be removed in future releases.
							 | 
						|
								
							 | 
						|
								Community Preview Features:
							 | 
						|
								
							 | 
						|
								- Added: serial subset, i.e. sequential implementations of TBB generic
							 | 
						|
								    algorithms (currently, only provided for parallel_for).
							 | 
						|
								- Preview of new flow graph nodes:
							 | 
						|
								    or_node (accepts multiple inputs, forwards each input separately
							 | 
						|
								      to all successors),
							 | 
						|
								    split_node (accepts tuples, and forwards each element of a tuple
							 | 
						|
								      to a corresponding successor), and
							 | 
						|
								    multioutput_function_node (accepts one input, and passes the input
							 | 
						|
								    and a tuple of output ports to the function body to support outputs
							 | 
						|
								    to multiple successors).
							 | 
						|
								- Added: memory pools for more control on memory source, grouping,
							 | 
						|
								    and collective deallocation.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 3.0 Update 8 commercial-aligned release
							 | 
						|
								TBB_INTERFACE_VERSION == 5008
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 3.0 Update 7 commercial-aligned release):
							 | 
						|
								
							 | 
						|
								- Task priorities become an official feature of TBB,
							 | 
						|
								    not community preview as before.
							 | 
						|
								- Atomics API extended, and implementation refactored.
							 | 
						|
								- Added task::set_parent() method.
							 | 
						|
								- Added concurrent_unordered_set container.
							 | 
						|
								
							 | 
						|
								Open-source contributions integrated:
							 | 
						|
								
							 | 
						|
								- PowerPC support by Raf Schietekat.
							 | 
						|
								- Fix of potential task pool overrun and other improvements
							 | 
						|
								    in the task scheduler by Raf Schietekat.
							 | 
						|
								- Fix in parallel_for_each to work with std::set in Visual* C++ 2010.
							 | 
						|
								
							 | 
						|
								Community Preview Features:
							 | 
						|
								
							 | 
						|
								- Graph community preview feature was renamed to flow graph.
							 | 
						|
								    Multiple improvements in the implementation.
							 | 
						|
								    Binpack example was added for the feature.
							 | 
						|
								- A number of improvements to concurrent_priority_queue.
							 | 
						|
								    Shortpath example was added for the feature.
							 | 
						|
								- TBB runtime loaded functionality was added (Windows*-only).
							 | 
						|
								    It allows to specify which versions of TBB should be used,
							 | 
						|
								    as well as to set directories for the library search.
							 | 
						|
								- parallel_deterministic_reduce template function was added.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 3.0 Update 7 commercial-aligned release
							 | 
						|
								TBB_INTERFACE_VERSION == 5006 (forgotten to increment)
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 3.0 Update 6 commercial-aligned release):
							 | 
						|
								
							 | 
						|
								- Added implementation of the platform isolation layer based on 
							 | 
						|
								    GCC atomic built-ins; it is supposed to work on any platform 
							 | 
						|
								    where GCC has these built-ins.
							 | 
						|
								
							 | 
						|
								Community Preview Features:
							 | 
						|
								
							 | 
						|
								- Graph's dining_philosophers example added.
							 | 
						|
								- A number of improvements to graph and concurrent_priority_queue.
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 3.0 Update 6 commercial-aligned release
							 | 
						|
								TBB_INTERFACE_VERSION == 5006
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 3.0 Update 5 commercial-aligned release):
							 | 
						|
								
							 | 
						|
								- Added Community Preview feature: task and task group priority, and
							 | 
						|
								    Fractal example demonstrating it.
							 | 
						|
								- parallel_pipeline optimized for data items of small and large sizes.
							 | 
						|
								- Graph's join_node is now parametrized with a tuple of up to 10 types.
							 | 
						|
								- Improved performance of concurrent_priority_queue.
							 | 
						|
								
							 | 
						|
								Open-source contributions integrated:
							 | 
						|
								
							 | 
						|
								- Initial NetBSD support by Aleksej Saushev.
							 | 
						|
								
							 | 
						|
								Bugs fixed:
							 | 
						|
								
							 | 
						|
								- Failure to enable interoperability with Intel(R) Cilk(tm) Plus runtime
							 | 
						|
								    library, and a crash caused by invoking the interoperability layer
							 | 
						|
								    after one of the libraries was unloaded.
							 | 
						|
								- Data race that could result in concurrent_unordered_map structure
							 | 
						|
								    corruption after call to clear() method.
							 | 
						|
								- Stack corruption caused by PIC version of 64-bit CAS compiled by Intel
							 | 
						|
								    compiler on Linux.
							 | 
						|
								- Inconsistency of exception propagation mode possible when application
							 | 
						|
								    built with Microsoft* Visual Studio* 2008 or earlier uses TBB built
							 | 
						|
								    with Microsoft* Visual Studio* 2010.
							 | 
						|
								- Affinitizing master thread to a subset of available CPUs after TBB
							 | 
						|
								    scheduler was initialized tied all worker threads to the same CPUs.
							 | 
						|
								- Method is_stolen_task() always returned 'false' for affinitized tasks.
							 | 
						|
								- write_once_node and overwrite_node did not immediately send buffered
							 | 
						|
								    items to successors
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 3.0 Update 5 commercial-aligned release
							 | 
						|
								TBB_INTERFACE_VERSION == 5005
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 3.0 Update 4 commercial-aligned release):
							 | 
						|
								
							 | 
						|
								- Added Community Preview feature: graph.
							 | 
						|
								- Added automatic propagation of master thread FPU settings to
							 | 
						|
								    TBB worker threads.
							 | 
						|
								- Added a public function to perform a sequentially consistent full
							 | 
						|
								    memory fence: tbb::atomic_fence() in tbb/atomic.h.
							 | 
						|
								
							 | 
						|
								Bugs fixed:
							 | 
						|
								
							 | 
						|
								- Data race that could result in scheduler data structures corruption
							 | 
						|
								    when using fire-and-forget tasks.
							 | 
						|
								- Potential referencing of destroyed concurrent_hash_map element after
							 | 
						|
								    using erase(accessor&A) method with A acquired as const_accessor.
							 | 
						|
								- Fixed a correctness bug in the convex hull example.
							 | 
						|
								
							 | 
						|
								Open-source contributions integrated:
							 | 
						|
								
							 | 
						|
								- Patch for calls to internal::atomic_do_once() by Andrey Semashev.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 3.0 Update 4 commercial-aligned release
							 | 
						|
								TBB_INTERFACE_VERSION == 5004
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 3.0 Update 3 commercial-aligned release):
							 | 
						|
								
							 | 
						|
								- Added Community Preview feature: concurrent_priority_queue.
							 | 
						|
								- Fixed library loading to avoid possibility for remote code execution,
							 | 
						|
								    see http://www.microsoft.com/technet/security/advisory/2269637.mspx.
							 | 
						|
								- Added support of more than 64 cores for appropriate Microsoft*
							 | 
						|
								    Windows* versions. For more details, see 
							 | 
						|
								    http://msdn.microsoft.com/en-us/library/dd405503.aspx.
							 | 
						|
								- Default number of worker threads is adjusted in accordance with 
							 | 
						|
								    process affinity mask.
							 | 
						|
								
							 | 
						|
								Bugs fixed:
							 | 
						|
								
							 | 
						|
								- Calls of scalable_* functions from inside the allocator library
							 | 
						|
								    caused issues if the functions were overridden by another module.
							 | 
						|
								- A crash occurred if methods run() and wait() were called concurrently
							 | 
						|
								    for an empty tbb::task_group (1736).
							 | 
						|
								- The tachyon example exhibited build problems associated with
							 | 
						|
								    bug 554339 on Microsoft* Visual Studio* 2010. Project files were
							 | 
						|
								    modified as a partial workaround to overcome the problem. See
							 | 
						|
								    http://connect.microsoft.com/VisualStudio/feedback/details/554339.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 3.0 Update 3 commercial-aligned release
							 | 
						|
								TBB_INTERFACE_VERSION == 5003
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 3.0 Update 2 commercial-aligned release):
							 | 
						|
								
							 | 
						|
								- cache_aligned_allocator class reworked to use scalable_aligned_malloc.
							 | 
						|
								- Improved performance of count() and equal_range() methods
							 | 
						|
								    in concurrent_unordered_map.
							 | 
						|
								- Improved implementation of 64-bit atomic loads and stores on 32-bit
							 | 
						|
								    platforms, including compilation with VC 7.1.
							 | 
						|
								- Added implementation of atomic operations on top of OSAtomic API
							 | 
						|
								    provided by OS X*.
							 | 
						|
								- Removed gratuitous try/catch blocks surrounding thread function calls
							 | 
						|
								  in tbb_thread.
							 | 
						|
								- Xcode* projects were added for sudoku and game_of_life examples.
							 | 
						|
								- Xcode* projects were updated to work without TBB framework.
							 | 
						|
								
							 | 
						|
								Bugs fixed:
							 | 
						|
								
							 | 
						|
								- Fixed a data race in task scheduler destruction that on rare occasion
							 | 
						|
								    could result in memory corruption.
							 | 
						|
								- Fixed idle spinning in thread bound filters in tbb::pipeline (1670).
							 | 
						|
								
							 | 
						|
								Open-source contributions integrated:
							 | 
						|
								
							 | 
						|
								- MinGW-64 basic support by brsomoza (partially).
							 | 
						|
								- Patch for atomic.h by Andrey Semashev.
							 | 
						|
								- Support for AIX & GCC on PowerPC by Giannis Papadopoulos.
							 | 
						|
								- Various improvements by Raf Schietekat.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 3.0 Update 2 commercial-aligned release
							 | 
						|
								TBB_INTERFACE_VERSION == 5002
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 3.0 Update 1 commercial-aligned release):
							 | 
						|
								
							 | 
						|
								- Destructor of tbb::task_group class throws missing_wait exception
							 | 
						|
								    if there are tasks running when it is invoked.
							 | 
						|
								- Interoperability layer with Intel Cilk Plus runtime library added
							 | 
						|
								    to protect TBB TLS in case of nested usage with Intel Cilk Plus.
							 | 
						|
								- Compilation fix for dependent template names in concurrent_queue.
							 | 
						|
								- Memory allocator code refactored to ease development and maintenance.
							 | 
						|
								
							 | 
						|
								Bugs fixed:
							 | 
						|
								
							 | 
						|
								- Improved interoperability with other Intel software tools on Linux in
							 | 
						|
								    case of dynamic replacement of memory allocator (1700)
							 | 
						|
								- Fixed install issues that prevented installation on
							 | 
						|
								    Mac OS* X 10.6.4 (1711).
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 3.0 Update 1 commercial-aligned release
							 | 
						|
								TBB_INTERFACE_VERSION == 5000 (forgotten to increment)
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 3.0 commercial-aligned release):
							 | 
						|
								
							 | 
						|
								- Decreased memory fragmentation by allocations bigger than 8K.
							 | 
						|
								- Lazily allocate worker threads, to avoid creating unnecessary stacks.
							 | 
						|
								
							 | 
						|
								Bugs fixed:
							 | 
						|
								
							 | 
						|
								- TBB allocator used much more memory than malloc (1703) - see above.
							 | 
						|
								- Deadlocks happened in some specific initialization scenarios
							 | 
						|
								    of the TBB allocator (1701, 1704).
							 | 
						|
								- Regression in enumerable_thread_specific: excessive requirements
							 | 
						|
								    for object constructors.
							 | 
						|
								- A bug in construction of parallel_pipeline filters when body instance
							 | 
						|
								    was a temporary object.
							 | 
						|
								- Incorrect usage of memory fences on PowerPC and XBOX360 platforms.
							 | 
						|
								- A subtle issue in task group context binding that could result
							 | 
						|
								    in cancelation signal being missed by nested task groups.
							 | 
						|
								- Incorrect construction of concurrent_unordered_map if specified
							 | 
						|
								    number of buckets is not power of two.
							 | 
						|
								- Broken count() and equal_range() of concurrent_unordered_map.
							 | 
						|
								- Return type of postfix form of operator++ for hash map's iterators.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 3.0 commercial-aligned release
							 | 
						|
								TBB_INTERFACE_VERSION == 5000
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 2.2 Update 3 commercial-aligned release):
							 | 
						|
								
							 | 
						|
								- All open-source-release changes down to TBB 2.2 U3 below
							 | 
						|
								    were incorporated into this release.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								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. Intel 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.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 2.2 Update 3 commercial-aligned release
							 | 
						|
								TBB_INTERFACE_VERSION == 4003
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel 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.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 2.2 Update 2 commercial-aligned release
							 | 
						|
								TBB_INTERFACE_VERSION == 4002
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel 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).
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 2.2 Update 1 commercial-aligned release
							 | 
						|
								TBB_INTERFACE_VERSION == 4001
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel 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. Intel 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.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 2.2 commercial-aligned release
							 | 
						|
								TBB_INTERFACE_VERSION == 4000
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel 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.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 2.1 Update 4 commercial-aligned release
							 | 
						|
								TBB_INTERFACE_VERSION == 3016
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel 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.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 2.1 Update 3 commercial-aligned release
							 | 
						|
								TBB_INTERFACE_VERSION == 3015
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel 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.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 2.1 Update 2 commercial-aligned release
							 | 
						|
								TBB_INTERFACE_VERSION == 3014
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel 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.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 2.1 Update 1 commercial-aligned release
							 | 
						|
								TBB_INTERFACE_VERSION == 3013
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 2.1 commercial-aligned release):
							 | 
						|
								
							 | 
						|
								- Fixed small memory leak in the memory allocator.
							 | 
						|
								- Incorporates all open-source-release changes since TBB 2.1,
							 | 
						|
								    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.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 2.1 commercial-aligned release
							 | 
						|
								TBB_INTERFACE_VERSION == 3011
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 2.0 U3 commercial-aligned release):
							 | 
						|
								
							 | 
						|
								- All open-source-release changes down to, and including, TBB 2.0 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.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel 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. Intel 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.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel 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. Intel 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 (w.r.t. Intel TBB 2.0 U1 commercial-aligned release):
							 | 
						|
								
							 | 
						|
								- Minor update to TBB 2.0 U1 below.
							 | 
						|
								- Begin introduction of new concurrent_vector interfaces not released
							 | 
						|
								    with TBB 2.0 U1.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 2.0 U1 commercial-aligned release (package 014, October 1, 2007)
							 | 
						|
								
							 | 
						|
								Corresponds to commercial 014 (for Linux*, 016) packages.
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 2.0 commercial-aligned release):
							 | 
						|
								
							 | 
						|
								- All open-source-release changes down to, and including, TBB 2.0
							 | 
						|
								    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 commercial-aligned release below.
							 | 
						|
								- Changes to eliminate spurious build warnings.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 2.0 commercial-aligned release (package 010, July 19, 2007)
							 | 
						|
								
							 | 
						|
								Corresponds to commercial 010 (for Linux*, 012) packages.
							 | 
						|
								
							 | 
						|
								- TBB open-source debut release.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 1.1 commercial release (April 10, 2007)
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 1.0 commercial release):
							 | 
						|
								
							 | 
						|
								- auto_partitioner which offered an automatic alternative to specifying
							 | 
						|
								    a grain size parameter to estimate the best granularity for tasks.
							 | 
						|
								- The release was added to the Intel(R) C++ Compiler 10.0 Pro.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 1.0 Update 2 commercial release
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 1.0 Update 1 commercial release):
							 | 
						|
								
							 | 
						|
								- Mac OS* X 64-bit support added.
							 | 
						|
								- Source packages for commercial releases introduced.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 1.0 Update 1 commercial-aligned release
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 1.0 commercial release):
							 | 
						|
								
							 | 
						|
								- Fix for critical package issue on Mac OS* X.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 1.0 commercial release (August 29, 2006)
							 | 
						|
								
							 | 
						|
								Changes (w.r.t. Intel TBB 1.0 beta commercial release):
							 | 
						|
								
							 | 
						|
								- New namespace (and compatibility headers for old namespace).
							 | 
						|
								    Namespaces are tbb and tbb::internal and all classes are in the
							 | 
						|
								    underscore_style not the WindowsStyle.
							 | 
						|
								- New class: scalable_allocator (and cache_aligned_allocator using that
							 | 
						|
								    if it exists).
							 | 
						|
								- Added parallel_for/tacheon example.
							 | 
						|
								- Removed C-style casts from headers for better C++ compliance.
							 | 
						|
								- Bug fixes.
							 | 
						|
								- Documentation improvements.
							 | 
						|
								- Improved performance of the concurrent_hash_map class.
							 | 
						|
								- Upgraded parallel_sort() to support STL-style random-access iterators
							 | 
						|
								    instead of just pointers.
							 | 
						|
								- The Windows vs7_1 directories renamed to vs7.1 in examples.
							 | 
						|
								- New class: spin version of reader-writer lock.
							 | 
						|
								- Added push_back() interface to concurrent_vector().
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel TBB 1.0 beta commercial release
							 | 
						|
								
							 | 
						|
								Initial release.
							 | 
						|
								
							 | 
						|
								Features / APIs:
							 | 
						|
								
							 | 
						|
								- Concurrent containers: ConcurrentHashTable, ConcurrentVector,
							 | 
						|
								    ConcurrentQueue.
							 | 
						|
								- Parallel algorithms: ParallelFor, ParallelReduce, ParallelScan,
							 | 
						|
								    ParallelWhile, Pipeline, ParallelSort.
							 | 
						|
								- Support: AlignedSpace, BlockedRange (i.e., 1D), BlockedRange2D
							 | 
						|
								- Task scheduler with multi-master support.
							 | 
						|
								- Atomics: read, write, fetch-and-store, fetch-and-add, compare-and-swap.
							 | 
						|
								- Locks: spin, reader-writer, queuing, OS-wrapper.
							 | 
						|
								- Memory allocation: STL-style memory allocator that avoids false
							 | 
						|
								    sharing.
							 | 
						|
								- Timers.
							 | 
						|
								
							 | 
						|
								Tools Support:
							 | 
						|
								- Intel(R) Thread Checker 3.0.
							 | 
						|
								- Intel(R) Thread Profiler 3.0.
							 | 
						|
								
							 | 
						|
								Documentation:
							 | 
						|
								- First Use Documents: README.txt, INSTALL.txt, Release_Notes.txt,
							 | 
						|
								    Doc_Index.html, Getting_Started.pdf, Tutorial.pdf, Reference.pdf.
							 | 
						|
								- Class hierarchy HTML pages (Doxygen).
							 | 
						|
								- Tree of index.html pages for navigating the installed package, esp.
							 | 
						|
								    for the examples.
							 | 
						|
								
							 | 
						|
								Examples:
							 | 
						|
								- One for each of these TBB features: ConcurrentHashTable, ParallelFor,
							 | 
						|
								    ParallelReduce, ParallelWhile, Pipeline, Task.
							 | 
						|
								- Live copies of examples from Getting_Started.pdf.
							 | 
						|
								- TestAll example that exercises every class and header in the package
							 | 
						|
								    (i.e., a "liveness test").
							 | 
						|
								- Compilers: see Release_Notes.txt.
							 | 
						|
								- APIs: OpenMP, WinThreads, Pthreads.
							 | 
						|
								
							 | 
						|
								Packaging:
							 | 
						|
								- Package for Windows installs IA-32 and EM64T bits.
							 | 
						|
								- Package for Linux installs IA-32, EM64T and IPF bits.
							 | 
						|
								- Package for Mac OS* X installs IA-32 bits.
							 | 
						|
								- All packages support Intel(R) software setup assistant (ISSA) and
							 | 
						|
								    install-time FLEXlm license checking.
							 | 
						|
								- ISSA support allows license file to be specified directly in case of
							 | 
						|
								    no Internet connection or problems with IRC or serial #s.
							 | 
						|
								- Linux installer allows root or non-root, RPM or non-RPM installs.
							 | 
						|
								- FLEXlm license servers (for those who need floating/counted licenses)
							 | 
						|
								    are provided separately on Intel(R) Premier.
							 | 
						|
								
							 | 
						|
								------------------------------------------------------------------------
							 | 
						|
								Intel and Cilk are registered trademarks or trademarks of Intel Corporation or its
							 | 
						|
								subsidiaries in the United States and other countries.
							 | 
						|
								
							 | 
						|
								* Other names and brands may be claimed as the property of others.
							 |