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.
		
		
		
		
		
			
		
			
				
					
					
						
							1430 lines
						
					
					
						
							58 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							1430 lines
						
					
					
						
							58 KiB
						
					
					
				| ------------------------------------------------------------------------ | |
| The list of most significant changes made over time in | |
| Intel(R) Threading Bulding Blocks (Intel(R) TBB). | |
| ------------------------------------------------------------------------ | |
| 
 | |
| 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. | |
| 
 | |
| 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.
 |