1 TBB 3.0 Update 7 commercial-aligned release
3 Changes (w.r.t. TBB 3.0 Update 6 commercial-aligned release):
5 - Added implementation of the platform isolation layer based on
6 GCC atomic built-ins; it is supposed to work on any platform
7 where GCC has these built-ins.
9 Community Preview Features:
11 - Graph's dining_philosophers example added
12 - A number of improvements to graph and concurrent_priority_queue
15 ------------------------------------------------------------------------
16 TBB 3.0 Update 6 commercial-aligned release
18 Changes (w.r.t. TBB 3.0 Update 5 commercial-aligned release):
20 - Added Community Preview feature: task and task group priority, and
21 Fractal example demonstrating it.
22 - parallel_pipeline optimized for data items of small and large sizes.
23 - Graph's join_node is now parametrized with a tuple of up to 10 types.
24 - Improved performance of concurrent_priority_queue.
26 Open-source contributions integrated:
28 - Initial NetBSD support by Aleksej Saushev.
32 - Failure to locate Cilk runtime library to enable Cilk/TBB interop.
33 - Data race that could result in concurrent_unordered_map structure
34 corruption after call to clear() method.
35 - Crash caused by invoking Cilk/TBB interop after one of the libraries
37 - Stack corruption caused by PIC version of 64-bit CAS compiled by Intel
39 - Inconsistency of exception propagation mode possible when application
40 built with Microsoft* Visual Studio* 2008 or earlier uses TBB built
41 with Microsoft* Visual Studio* 2010.
42 - Affinitizing master thread to a subset of available CPUs after TBB
43 scheduler was initialized tied all worker threads to the same CPUs.
44 - Method is_stolen_task() always returned 'false' for affinitized tasks.
45 - write_once_node and overwrite_node did not immediately send buffered
48 ------------------------------------------------------------------------
49 TBB 3.0 Update 5 commercial-aligned release
51 Changes (w.r.t. TBB 3.0 Update 4 commercial-aligned release):
53 - Added Community Preview feature: graph.
54 - Added automatic propagation of master thread FPU settings to
56 - Added a public function to perform a sequentially consistent full
57 memory fence: tbb::atomic_fence() in tbb/atomic.h.
61 - Data race that could result in scheduler data structures corruption
62 when using fire-and-forget tasks.
63 - Potential referencing of destroyed concurrent_hash_map element after
64 using erase(accessor&A) method with A acquired as const_accessor.
65 - Fixed a correctness bug in the convex hull example.
67 Open-source contributions integrated:
69 - Patch for calls to internal::atomic_do_once() by Andrey Semashev.
71 ------------------------------------------------------------------------
72 TBB 3.0 Update 4 commercial-aligned release
74 Changes (w.r.t. TBB 3.0 Update 3 commercial-aligned release):
76 - Added Community Preview feature: concurrent_priority_queue.
77 - Fixed library loading to avoid possibility for remote code execution,
78 see http://www.microsoft.com/technet/security/advisory/2269637.mspx.
79 - Added support of more than 64 cores for appropriate Microsoft*
80 Windows* versions. For more details, see
81 http://msdn.microsoft.com/en-us/library/dd405503.aspx.
82 - Default number of worker threads is adjusted in accordance with
83 process affinity mask.
87 - Calls of scalable_* functions from inside the allocator library
88 caused issues if the functions were overridden by another module.
89 - A crash occurred if methods run() and wait() were called concurrently
90 for an empty tbb::task_group (1736).
91 - The tachyon example exhibited build problems associated with
92 bug 554339 on Microsoft* Visual Studio* 2010. Project files were
93 modified as a partial workaround to overcome the problem. See
94 http://connect.microsoft.com/VisualStudio/feedback/details/554339.
96 ------------------------------------------------------------------------
97 TBB 3.0 Update 3 commercial-aligned release
99 Changes (w.r.t. TBB 3.0 Update 2 commercial-aligned release):
101 - cache_aligned_allocator class reworked to use scalable_aligned_malloc.
102 - Improved performance of count() and equal_range() methods
103 in concurrent_unordered_map.
104 - Improved implementation of 64-bit atomic loads and stores on 32-bit
105 platforms, including compilation with VC 7.1.
106 - Added implementation of atomic operations on top of OSAtomic API
107 provided by Mac OS* X.
108 - Removed gratuitous try/catch blocks surrounding thread function calls
110 - Xcode* projects were added for sudoku and game_of_life examples.
111 - Xcode* projects were updated to work without TBB framework.
115 - Fixed a data race in task scheduler destruction that on rare occasion
116 could result in memory corruption.
117 - Fixed idle spinning in thread bound filters in tbb::pipeline (1670).
119 Open-source contributions integrated:
121 - MinGW-64 basic support by brsomoza (partially).
122 - Patch for atomic.h by Andrey Semashev.
123 - Support for AIX & GCC on PowerPC by Giannis Papadopoulos.
124 - Various improvements by Raf Schietekat.
126 ------------------------------------------------------------------------
127 TBB 3.0 Update 2 commercial-aligned release
129 Changes (w.r.t. TBB 3.0 Update 1 commercial-aligned release):
131 - Destructor of tbb::task_group class throws missing_wait exception
132 if there are tasks running when it is invoked.
133 - Cilk-TBB interop layer added to protect TBB TLS in case of
134 "Cilk-TBB-Cilk nesting" usage model.
135 - Compilation fix for dependent template names in concurrent_queue.
136 - Memory allocator code refactored to ease development and maintenance.
140 - Improved interoperability with other Intel software tools on Linux in
141 case of dynamic replacement of memory allocator (1700)
142 - Fixed install issues that prevented installation on
143 Mac OS* X 10.6.4 (1711).
145 ------------------------------------------------------------------------
146 TBB 3.0 Update 1 commercial-aligned release
148 Changes (w.r.t. TBB 3.0 commercial-aligned release):
150 - Decreased memory fragmentation by allocations bigger than 8K.
151 - Lazily allocate worker threads, to avoid creating unnecessary stacks.
155 - TBB allocator used much more memory than malloc (1703) - see above.
156 - Deadlocks happened in some specific initialization scenarios
157 of the TBB allocator (1701, 1704).
158 - Regression in enumerable_thread_specific: excessive requirements
159 for object constructors.
160 - A bug in construction of parallel_pipeline filters when body instance
161 was a temporary object.
162 - Incorrect usage of memory fences on PowerPC and XBOX360 platforms.
163 - A subtle issue in task group context binding that could result
164 in cancelation signal being missed by nested task groups.
165 - Incorrect construction of concurrent_unordered_map if specified
166 number of buckets is not power of two.
167 - Broken count() and equal_range() of concurrent_unordered_map.
168 - Return type of postfix form of operator++ for hash map's iterators.
170 ------------------------------------------------------------------------
171 TBB 3.0 commercial-aligned release
173 Changes (w.r.t. TBB 2.2 Update 3 commercial-aligned release):
175 - All open-source-release changes down to TBB 2.2 U3 below
176 were incorporated into this release.
178 ------------------------------------------------------------------------
179 20100406 open-source release
181 Changes (w.r.t. 20100310 open-source release):
183 - Added support for Microsoft* Visual Studio* 2010, including binaries.
184 - Added a PDF file with recommended Design Patterns for TBB.
185 - Added parallel_pipeline function and companion classes and functions
186 that provide a strongly typed lambda-friendly pipeline interface.
187 - Reworked enumerable_thread_specific to use a custom implementation of
188 hash map that is more efficient for ETS usage models.
189 - Added example for class task_group; see examples/task_group/sudoku.
190 - Removed two examples, as they were long outdated and superceded:
191 pipeline/text_filter (use pipeline/square);
192 parallel_while/parallel_preorder (use parallel_do/parallel_preorder).
193 - PDF documentation updated.
194 - Other fixes and changes in code, tests, and examples.
198 - Eliminated build errors with MinGW32.
199 - Fixed post-build step and other issues in VS projects for examples.
200 - Fixed discrepancy between scalable_realloc and scalable_msize that
201 caused crashes with malloc replacement on Windows.
203 ------------------------------------------------------------------------
204 20100310 open-source release
206 Changes (w.r.t. TBB 2.2 Update 3 commercial-aligned release):
208 - Version macros changed in anticipation of a future release.
209 - Directory structure aligned with Intel(R) C++ Compiler;
210 now TBB binaries reside in <arch>/<os_key>/[bin|lib]
211 (in TBB 2.x, it was [bin|lib]/<arch>/<os_key>).
212 - Visual Studio projects changed for examples: instead of separate set
213 of files for each VS version, now there is single 'msvs' directory
214 that contains workspaces for MS C++ compiler (<example>_cl.sln) and
215 Intel C++ compiler (<example>_icl.sln). Works with VS 2005 and above.
216 - The name versioning scheme for backward compatibility was improved;
217 now compatibility-breaking changes are done in a separate namespace.
218 - Added concurrent_unordered_map implementation based on a prototype
219 developed in Microsoft for a future version of PPL.
220 - Added PPL-compatible writer-preference RW lock (reader_writer_lock).
221 - Added TBB_IMPLEMENT_CPP0X macro to control injection of C++0x names
222 implemented in TBB into namespace std.
223 - Added almost-C++0x-compatible std::condition_variable, plus a bunch
224 of other C++0x classes required by condition_variable.
225 - With TBB_IMPLEMENT_CPP0X, tbb_thread can be also used as std::thread.
226 - task.cpp was split into several translation units to structure
227 TBB scheduler sources layout. Static data layout and library
228 initialization logic were also updated.
229 - TBB scheduler reworked to prevent master threads from stealing
230 work belonging to other masters.
231 - Class task was extended with enqueue() method, and slightly changed
232 semantics of methods spawn() and destroy(). For exact semantics,
233 refer to TBB Reference manual.
234 - task_group_context now allows for destruction by non-owner threads.
235 - Added TBB_USE_EXCEPTIONS macro to control use of exceptions in TBB
236 headers. It turns off (i.e. sets to 0) automatically if specified
237 compiler options disable exception handling.
238 - TBB is enabled to run on top of Microsoft's Concurrency Runtime
239 on Windows* 7 (via our worker dispatcher known as RML).
240 - Removed old unused busy-waiting code in concurrent_queue.
241 - Described the advanced build & test options in src/index.html.
242 - Warning level for GCC raised with -Wextra and a few other options.
243 - Multiple fixes and improvements in code, tests, examples, and docs.
245 Open-source contributions integrated:
247 - Xbox support by Roman Lut (Deep Shadows), though further changes are
248 required to make it working; e.g. post-2.1 entry points are missing.
249 - "Eventcount" by Dmitry Vyukov evolved into concurrent_monitor,
250 an internal class used in the implementation of concurrent_queue.
252 ------------------------------------------------------------------------
253 TBB 2.2 Update 3 commercial-aligned release
255 Changes (w.r.t. TBB 2.2 Update 2 commercial-aligned release):
257 - PDF documentation updated.
261 - concurrent_hash_map compatibility issue exposed on Linux in case
262 two versions of the container were used by different modules.
263 - enforce 16 byte stack alignment for consistence with GCC; required
264 to work correctly with 128-bit variables processed by SSE.
265 - construct() methods of allocator classes now use global operator new.
267 ------------------------------------------------------------------------
268 TBB 2.2 Update 2 commercial-aligned release
270 Changes (w.r.t. TBB 2.2 Update 1 commercial-aligned release):
272 - parallel_invoke and parallel_for_each now take function objects
273 by const reference, not by value.
274 - Building TBB with /MT is supported, to avoid dependency on particular
275 versions of Visual C++* runtime DLLs. TBB DLLs built with /MT
276 are located in vc_mt directory.
277 - Class critical_section introduced.
278 - Improvements in exception support: new exception classes introduced,
279 all exceptions are thrown via an out-of-line internal method.
280 - Improvements and fixes in the TBB allocator and malloc replacement,
281 including robust memory identification, and more reliable dynamic
282 function substitution on Windows*.
283 - Method swap() added to class tbb_thread.
284 - Methods rehash() and bucket_count() added to concurrent_hash_map.
285 - Added support for Visual Studio* 2010 Beta2. No special binaries
286 provided, but CRT-independent DLLs (vc_mt) should work.
287 - Other fixes and improvements in code, tests, examples, and docs.
289 Open-source contributions integrated:
291 - The fix to build 32-bit TBB on Mac OS* X 10.6.
292 - GCC-based port for SPARC Solaris by Michailo Matijkiw, with use of
293 earlier work by Raf Schietekat.
297 - 159 - TBB build for PowerPC* running Mac OS* X.
298 - 160 - IBM* Java segfault if used with TBB allocator.
299 - crash in concurrent_queue<char> (1616).
301 ------------------------------------------------------------------------
302 TBB 2.2 Update 1 commercial-aligned release
304 Changes (w.r.t. TBB 2.2 commercial-aligned release):
306 - Incorporates all changes from open-source releases below.
307 - Documentation was updated.
308 - TBB scheduler auto-initialization now covers all possible use cases.
309 - concurrent_queue: made argument types of sizeof used in paddings
310 consistent with those actually used.
311 - Memory allocator was improved: supported corner case of user's malloc
312 calling scalable_malloc (non-Windows), corrected processing of
313 memory allocation requests during tbb memory allocator startup
315 - Windows malloc replacement has got better support for static objects.
316 - In pipeline setups that do not allow actual parallelism, execution
317 by a single thread is guaranteed, idle spinning eliminated, and
318 performance improved.
319 - RML refactoring and clean-up.
320 - New constructor for concurrent_hash_map allows reserving space for
322 - Operator delete() added to the TBB exception classes.
323 - Lambda support was improved in parallel_reduce.
324 - gcc 4.3 warnings were fixed for concurrent_queue.
325 - Fixed possible initialization deadlock in modules using TBB entities
326 during construction of global static objects.
327 - Copy constructor in concurrent_hash_map was fixed.
328 - Fixed a couple of rare crashes in the scheduler possible before
329 in very specific use cases.
330 - Fixed a rare crash in the TBB allocator running out of memory.
331 - New tests were implemented, including test_lambda.cpp that checks
332 support for lambda expressions.
333 - A few other small changes in code, tests, and documentation.
335 ------------------------------------------------------------------------
336 20090809 open-source release
338 Changes (w.r.t. TBB 2.2 commercial-aligned release):
340 - Fixed known exception safety issues in concurrent_vector.
341 - Better concurrency of simultaneous grow requests in concurrent_vector.
342 - TBB allocator further improves performance of large object allocation.
343 - Problem with source of text relocations was fixed on Linux
344 - Fixed bugs related to malloc replacement under Windows
345 - A few other small changes in code and documentation.
347 ------------------------------------------------------------------------
348 TBB 2.2 commercial-aligned release
350 Changes (w.r.t. TBB 2.1 U4 commercial-aligned release):
352 - Incorporates all changes from open-source releases below.
353 - Architecture folders renamed from em64t to intel64 and from itanium
355 - Major Interface version changed from 3 to 4. Deprecated interfaces
356 might be removed in future releases.
357 - Parallel algorithms that use partitioners have switched to use
358 the auto_partitioner by default.
359 - Improved memory allocator performance for allocations bigger than 8K.
360 - Added new thread-bound filters functionality for pipeline.
361 - New implementation of concurrent_hash_map that improves performance
363 - A few other small changes in code and documentation.
365 ------------------------------------------------------------------------
366 20090511 open-source release
368 Changes (w.r.t. previous open-source release):
370 - Basic support for MinGW32 development kit.
371 - Added tbb::zero_allocator class that initializes memory with zeros.
372 It can be used as an adaptor to any STL-compatible allocator class.
373 - Added tbb::parallel_for_each template function as alias to parallel_do.
374 - Added more overloads for tbb::parallel_for.
375 - Added support for exact exception propagation (can only be used with
376 compilers that support C++0x std::exception_ptr).
377 - tbb::atomic template class can be used with enumerations.
378 - mutex, recursive_mutex, spin_mutex, spin_rw_mutex classes extended
379 with explicit lock/unlock methods.
380 - Fixed size() and grow_to_at_least() methods of tbb::concurrent_vector
381 to provide space allocation guarantees. More methods added for
382 compatibility with std::vector, including some from C++0x.
383 - Preview of a lambda-friendly interface for low-level use of tasks.
384 - scalable_msize function added to the scalable allocator (Windows only).
385 - Rationalized internal auxiliary functions for spin-waiting and backoff.
386 - Several tests undergo decent refactoring.
388 Changes affecting backward compatibility:
390 - Improvements in concurrent_queue, including limited API changes.
391 The previous version is deprecated; its functionality is accessible
392 via methods of the new tbb::concurrent_bounded_queue class.
393 - grow* and push_back methods of concurrent_vector changed to return
394 iterators; old semantics is deprecated.
396 ------------------------------------------------------------------------
397 TBB 2.1 Update 4 commercial-aligned release
399 Changes (w.r.t. TBB 2.1 U3 commercial-aligned release):
401 - Added tests for aligned memory allocations and malloc replacement.
402 - Several improvements for better bundling with Intel(R) C++ Compiler.
403 - A few other small changes in code and documentaion.
407 - 150 - request to build TBB examples with debug info in release mode.
408 - backward compatibility issue with concurrent_queue on Windows.
409 - dependency on VS 2005 SP1 runtime libraries removed.
410 - compilation of GUI examples under Xcode* 3.1 (1577).
411 - On Windows, TBB allocator classes can be instantiated with const types
412 for compatibility with MS implementation of STL containers (1566).
414 ------------------------------------------------------------------------
415 20090313 open-source release
417 Changes (w.r.t. 20081109 open-source release):
419 - Includes all changes introduced in TBB 2.1 Update 2 & Update 3
420 commercial-aligned releases (see below for details).
421 - Added tbb::parallel_invoke template function. It runs up to 10
422 user-defined functions in parallel and waits for them to complete.
423 - Added a special library providing ability to replace the standard
424 memory allocation routines in Microsoft* C/C++ RTL (malloc/free,
425 global new/delete, etc.) with the TBB memory allocator.
426 Usage details are described in include/tbb/tbbmalloc_proxy.h file.
427 - Task scheduler switched to use new implementation of its core
428 functionality (deque based task pool, new structure of arena slots).
429 - Preview of Microsoft* Visual Studio* 2005 project files for
430 building the library is available in build/vsproject folder.
431 - Added tests for aligned memory allocations and malloc replacement.
432 - Added parallel_for/game_of_life.net example (for Windows only)
433 showing TBB usage in a .NET application.
434 - A number of other fixes and improvements to code, tests, makefiles,
435 examples and documents.
439 - The same list as in TBB 2.1 Update 4 right above.
441 ------------------------------------------------------------------------
442 TBB 2.1 Update 3 commercial-aligned release
444 Changes (w.r.t. TBB 2.1 U2 commercial-aligned release):
446 - Added support for aligned allocations to the TBB memory allocator.
447 - Added a special library to use with LD_PRELOAD on Linux* in order to
448 replace the standard memory allocation routines in C/C++ with the
449 TBB memory allocator.
450 - Added null_mutex and null_rw_mutex: no-op classes interface-compliant
451 to other TBB mutexes.
452 - Improved performance of parallel_sort, to close most of the serial gap
453 with std::sort, and beat it on 2 and more cores.
454 - A few other small changes.
458 - the problem where parallel_for hanged after exception throw
459 if affinity_partitioner was used (1556).
460 - get rid of VS warnings about mbstowcs deprecation (1560),
461 as well as some other warnings.
462 - operator== for concurrent_vector::iterator fixed to work correctly
463 with different vector instances.
465 ------------------------------------------------------------------------
466 TBB 2.1 Update 2 commercial-aligned release
468 Changes (w.r.t. TBB 2.1 U1 commercial-aligned release):
470 - Incorporates all open-source-release changes down to TBB 2.1 U1,
472 - 20081019 addition of enumerable_thread_specific;
473 - Warning level for Microsoft* Visual C++* compiler raised to /W4 /Wp64;
474 warnings found on this level were cleaned or suppressed.
475 - Added TBB_runtime_interface_version API function.
476 - Added new example: pipeline/square.
477 - Added exception handling and cancellation support
478 for parallel_do and pipeline.
479 - Added copy constructor and [begin,end) constructor to concurrent_queue.
480 - Added some support for beta version of Intel(R) Parallel Amplifier.
481 - Added scripts to set environment for cross-compilation of 32-bit
482 applications on 64-bit Linux with Intel(R) C++ Compiler.
483 - Fixed semantics of concurrent_vector::clear() to not deallocate
484 internal arrays. Fixed compact() to perform such deallocation later.
485 - Fixed the issue with atomic<T*> when T is incomplete type.
486 - Improved support for PowerPC* Macintosh*, including the fix
487 for a bug in masked compare-and-swap reported by a customer.
488 - As usual, a number of other improvements everywhere.
490 ------------------------------------------------------------------------
491 20081109 open-source release
493 Changes (w.r.t. previous open-source release):
495 - Added new serial out of order filter for tbb::pipeline.
496 - Fixed the issue with atomic<T*>::operator= reported at the forum.
497 - Fixed the issue with using tbb::task::self() in task destructor
498 reported at the forum.
499 - A number of other improvements to code, tests, makefiles, examples
502 Open-source contributions integrated:
503 - Changes in the memory allocator were partially integrated.
505 ------------------------------------------------------------------------
506 20081019 open-source release
508 Changes (w.r.t. previous open-source release):
510 - Introduced enumerable_thread_specific<T>. This new class provides a
511 wrapper around native thread local storage as well as iterators and
512 ranges for accessing the thread local copies (1533).
513 - Improved support for Intel(R) Threading Analysis Tools
514 on Intel(R) 64 architecture.
515 - Dependency from Microsoft* CRT was integrated to the libraries using
516 manifests, to avoid issues if called from code that uses different
517 version of Visual C++* runtime than the library.
518 - Introduced new defines TBB_USE_ASSERT, TBB_USE_DEBUG,
519 TBB_USE_PERFORMANCE_WARNINGS, TBB_USE_THREADING_TOOLS.
520 - A number of other improvements to code, tests, makefiles, examples
523 Open-source contributions integrated:
525 - linker optimization: /incremental:no .
527 ------------------------------------------------------------------------
528 20080925 open-source release
530 Changes (w.r.t. previous open-source release):
532 - Same fix for a memory leak in the memory allocator as in TBB 2.1 U1.
533 - Improved support for lambda functions.
534 - Fixed more concurrent_queue issues reported at the forum.
535 - A number of other improvements to code, tests, makefiles, examples
538 ------------------------------------------------------------------------
539 TBB 2.1 Update 1 commercial-aligned release
541 Changes (w.r.t. TBB 2.1 commercial-aligned release):
543 - Fixed small memory leak in the memory allocator.
544 - Incorporates all open-source-release changes since TBB 2.1, except for:
545 - 20080825 changes for parallel_do;
547 ------------------------------------------------------------------------
548 20080825 open-source release
550 Changes (w.r.t. previous open-source release):
552 - Added exception handling and cancellation support for parallel_do.
553 - Added default HashCompare template argument for concurrent_hash_map.
554 - Fixed concurrent_queue.clear() issues due to incorrect assumption
555 about clear() being private method.
556 - Added the possibility to use TBB in applications that change
557 default calling conventions (Windows* only).
558 - Many improvements to code, tests, examples, makefiles and documents.
562 - 120, 130 - memset declaration missed in concurrent_hash_map.h
564 ------------------------------------------------------------------------
565 20080724 open-source release
567 Changes (w.r.t. previous open-source release):
569 - Inline assembly for atomic operations improved for gcc 4.3
570 - A few more improvements to the code.
572 ------------------------------------------------------------------------
573 20080709 open-source release
575 Changes (w.r.t. previous open-source release):
577 - operator=() was added to the tbb_thread class according to
578 the current working draft for std::thread.
579 - Recognizing SPARC* in makefiles for Linux* and Sun Solaris*.
583 - 127 - concurrent_hash_map::range fixed to split correctly.
585 Open-source contributions integrated:
587 - fix_set_midpoint.diff by jyasskin
588 - SPARC* support in makefiles by Raf Schietekat
590 ------------------------------------------------------------------------
591 20080622 open-source release
593 Changes (w.r.t. previous open-source release):
595 - Fixed a hang that rarely happened on Linux
596 during deinitialization of the TBB scheduler.
597 - Improved support for Intel(R) Thread Checker.
598 - A few more improvements to the code.
600 ------------------------------------------------------------------------
601 TBB 2.1 commercial-aligned release
603 Changes (w.r.t. TBB 2.0 U3 commercial-aligned release):
605 - All open-source-release changes down to, and including, TBB 2.0 below,
606 were incorporated into this release.
608 ------------------------------------------------------------------------
609 20080605 open-source release
611 Changes (w.r.t. previous open-source release):
613 - Explicit control of exported symbols by version scripts added on Linux.
614 - Interfaces polished for exception handling & algorithm cancellation.
615 - Cache behavior improvements in the scalable allocator.
616 - Improvements in text_filter, polygon_overlay, and other examples.
617 - A lot of other stability improvements in code, tests, and makefiles.
618 - First release where binary packages include headers/docs/examples, so
619 binary packages are now self-sufficient for using TBB.
621 Open-source contributions integrated:
623 - atomics patch (partially).
624 - tick_count warning patch.
628 - 118 - fix for boost compatibility.
629 - 123 - fix for tbb_machine.h.
631 ------------------------------------------------------------------------
632 20080512 open-source release
634 Changes (w.r.t. previous open-source release):
636 - Fixed a problem with backward binary compatibility
637 of debug Linux builds.
638 - Sun* Studio* support added.
639 - soname support added on Linux via linker script. To restore backward
640 binary compatibility, *.so -> *.so.2 softlinks should be created.
641 - concurrent_hash_map improvements - added few new forms of insert()
642 method and fixed precondition and guarantees of erase() methods.
643 Added runtime warning reporting about bad hash function used for
644 the container. Various improvements for performance and concurrency.
645 - Cancellation mechanism reworked so that it does not hurt scalability.
646 - Algorithm parallel_do reworked. Requirement for Body::argument_type
647 definition removed, and work item argument type can be arbitrarily
649 - polygon_overlay example added.
650 - A few more improvements to code, tests, examples and Makefiles.
652 Open-source contributions integrated:
654 - Soname support patch for Bugzilla #112.
658 - 112 - fix for soname support.
660 ------------------------------------------------------------------------
661 TBB 2.0 U3 commercial-aligned release (package 017, April 20, 2008)
663 Corresponds to commercial 019 (for Linux*, 020; for Mac OS* X, 018)
666 Changes (w.r.t. TBB 2.0 U2 commercial-aligned release):
668 - Does not contain open-source-release changes below; this release is
669 only a minor update of TBB 2.0 U2.
670 - Removed spin-waiting in pipeline and concurrent_queue.
671 - A few more small bug fixes from open-source releases below.
673 ------------------------------------------------------------------------
674 20080408 open-source release
676 Changes (w.r.t. previous open-source release):
678 - count_strings example reworked: new word generator implemented, hash
679 function replaced, and tbb_allocator is used with std::string class.
680 - Static methods of spin_rw_mutex were replaced by normal member
681 functions, and the class name was versioned.
682 - tacheon example was renamed to tachyon.
683 - Improved support for Intel(R) Thread Checker.
684 - A few more minor improvements.
686 Open-source contributions integrated:
688 - Two sets of Sun patches for IA Solaris support.
690 ------------------------------------------------------------------------
691 20080402 open-source release
693 Changes (w.r.t. previous open-source release):
695 - Exception handling and cancellation support for tasks and algorithms
697 - Exception safety guaranties defined and fixed for all concurrent
699 - User-defined memory allocator support added to all concurrent
701 - Performance improvement of concurrent_hash_map, spin_rw_mutex.
702 - Critical fix for a rare race condition during scheduler
703 initialization/de-initialization.
704 - New methods added for concurrent containers to be closer to STL,
705 as well as automatic filters removal from pipeline
706 and __TBB_AtomicAND function.
707 - The volatile keyword dropped from where it is not really needed.
708 - A few more minor improvements.
710 ------------------------------------------------------------------------
711 20080319 open-source release
713 Changes (w.r.t. previous open-source release):
715 - Support for gcc version 4.3 was added.
716 - tbb_thread class, near compatible with std::thread expected in C++0x,
721 - 116 - fix for compilation issues with gcc version 4.2.1.
722 - 120 - fix for compilation issues with gcc version 4.3.
724 ------------------------------------------------------------------------
725 20080311 open-source release
727 Changes (w.r.t. previous open-source release):
729 - An enumerator added for pipeline filter types (serial vs. parallel).
730 - New task_scheduler_observer class introduced, to observe when
731 threads start and finish interacting with the TBB task scheduler.
732 - task_scheduler_init reverted to not use internal versioned class;
733 binary compatibility guaranteed with stable releases only.
734 - Various improvements to code, tests, examples and Makefiles.
736 ------------------------------------------------------------------------
737 20080304 open-source release
739 Changes (w.r.t. previous open-source release):
741 - Task-to-thread affinity support, previously kept under a macro,
743 - Work-in-progress on cache_aligned_allocator improvements.
744 - Pipeline really supports parallel input stage; it's no more serialized.
745 - Various improvements to code, tests, examples and Makefiles.
749 - 119 - fix for scalable_malloc sometimes failing to return a big block.
750 - TR575 - fixed a deadlock occurring on Windows in startup/shutdown
751 under some conditions.
753 ------------------------------------------------------------------------
754 20080226 open-source release
756 Changes (w.r.t. previous open-source release):
758 - Introduced tbb_allocator to select between standard allocator and
759 tbb::scalable_allocator when available.
760 - Removed spin-waiting in pipeline and concurrent_queue.
761 - Improved performance of concurrent_hash_map by using tbb_allocator.
762 - Improved support for Intel(R) Thread Checker.
763 - Various improvements to code, tests, examples and Makefiles.
765 ------------------------------------------------------------------------
766 TBB 2.0 U2 commercial-aligned release (package 017, February 14, 2008)
768 Corresponds to commercial 017 (for Linux*, 018; for Mac OS* X, 016)
771 Changes (w.r.t. TBB 2.0 U1 commercial-aligned release):
773 - Does not contain open-source-release changes below; this release is
774 only a minor update of TBB 2.0 U1.
775 - Add support for Microsoft* Visual Studio* 2008, including binary
776 libraries and VS2008 projects for examples.
777 - Use SwitchToThread() not Sleep() to yield threads on Windows*.
778 - Enhancements to Doxygen-readable comments in source code.
779 - A few more small bug fixes from open-source releases below.
783 - TR569 - Memory leak in concurrent_queue.
785 ------------------------------------------------------------------------
786 20080207 open-source release
788 Changes (w.r.t. previous open-source release):
790 - Improvements and minor fixes in VS2008 projects for examples.
791 - Improvements in code for gating worker threads that wait for work,
792 previously consolidated under #if IMPROVED_GATING, now legalized.
793 - Cosmetic changes in code, examples, tests.
797 - 113 - Iterators and ranges should be convertible to their const
799 - TR569 - Memory leak in concurrent_queue.
801 ------------------------------------------------------------------------
802 20080122 open-source release
804 Changes (w.r.t. previous open-source release):
806 - Updated examples/parallel_for/seismic to improve the visuals and to
807 use the affinity_partitioner (20071127 and forward) for better
809 - Minor improvements to unittests and performance tests.
811 ------------------------------------------------------------------------
812 20080115 open-source release
814 Changes (w.r.t. previous open-source release):
816 - Cleanup, simplifications and enhancements to the Makefiles for
817 building the libraries (see build/index.html for high-level
818 changes) and the examples.
819 - Use SwitchToThread() not Sleep() to yield threads on Windows*.
820 - Engineering work-in-progress on exception safety/support.
821 - Engineering work-in-progress on affinity_partitioner for
823 - Engineering work-in-progress on improved gating for worker threads
824 (idle workers now block in the OS instead of spinning).
825 - Enhancements to Doxygen-readable comments in source code.
829 - 102 - Support for parallel build with gmake -j
830 - 114 - /Wp64 build warning on Windows*.
832 ------------------------------------------------------------------------
833 20071218 open-source release
835 Changes (w.r.t. previous open-source release):
837 - Full support for Microsoft* Visual Studio* 2008 in open-source.
838 Binaries for vc9/ will be available in future stable releases.
839 - New recursive_mutex class.
840 - Full support for 32-bit PowerMac including export files for builds.
841 - Improvements to parallel_do.
843 ------------------------------------------------------------------------
844 20071206 open-source release
846 Changes (w.r.t. previous open-source release):
848 - Support for Microsoft* Visual Studio* 2008 in building libraries
849 from source as well as in vc9/ projects for examples.
850 - Small fixes to the affinity_partitioner first introduced in 20071127.
851 - Small fixes to the thread-stack size hook first introduced in 20071127.
852 - Engineering work in progress on concurrent_vector.
853 - Engineering work in progress on exception behavior.
854 - Unittest improvements.
856 ------------------------------------------------------------------------
857 20071127 open-source release
859 Changes (w.r.t. previous open-source release):
861 - Task-to-thread affinity support (affinity partitioner) first appears.
862 - More work on concurrent_vector.
863 - New parallel_do algorithm (function-style version of parallel while)
864 and parallel_do/parallel_preorder example.
865 - New task_scheduler_init() hooks for getting default_num_threads() and
866 for setting thread stack size.
867 - Support for weak memory consistency models in the code base.
868 - Futex usage in the task scheduler (Linux).
869 - Started adding 32-bit PowerMac support.
870 - Intel(R) 9.1 compilers are now the base supported Intel(R) compiler
872 - TBB libraries added to link line automatically on Microsoft Windows*
873 systems via #pragma comment linker directives.
875 Open-source contributions integrated:
877 - FreeBSD platform support patches.
878 - AIX weak memory model patch.
882 - 108 - Removed broken affinity.h reference.
883 - 101 - Does not build on Debian Lenny (replaced arch with uname -m).
885 ------------------------------------------------------------------------
886 20071030 open-source release
888 Changes (w.r.t. previous open-source release):
890 - More work on concurrent_vector.
891 - Better support for building with -Wall -Werror (or not) as desired.
892 - A few fixes to eliminate extraneous warnings.
893 - Begin introduction of versioning hooks so that the internal/API
894 version is tracked via TBB_INTERFACE_VERSION. The newest binary
895 libraries should always work with previously-compiled code when-
897 - Engineering work in progress on using futex inside the mutexes (Linux).
898 - Engineering work in progress on exception behavior.
899 - Engineering work in progress on a new parallel_do algorithm.
900 - Unittest improvements.
902 ------------------------------------------------------------------------
903 20070927 open-source release
905 Changes (w.r.t. TBB 2.0 U1 commercial-aligned release):
907 - Minor update to TBB 2.0 U1 below.
908 - Begin introduction of new concurrent_vector interfaces not released
911 ------------------------------------------------------------------------
912 TBB 2.0 U1 commercial-aligned release (package 014, October 1, 2007)
914 Corresponds to commercial 014 (for Linux*, 016) packages.
916 Changes (w.r.t. TBB 2.0 commercial-aligned release):
918 - All open-source-release changes down to, and including, TBB 2.0 below,
919 were incorporated into this release.
920 - Made a number of changes to the officially supported OS list:
922 Asianux* 3, Debian* 4.0, Fedora Core* 6, Fedora* 7,
923 Turbo Linux* 11, Ubuntu* 7.04;
925 Asianux* 2, Fedora Core* 4, Haansoft* Linux 2006 Server,
926 Mandriva/Mandrake* 10.1, Miracle Linux* 4.0,
927 Red Flag* DC Server 5.0;
928 Only Mac OS* X 10.4.9 (and forward) and Xcode* tool suite 2.4.1 (and
929 forward) are now supported.
930 - Commercial installers on Linux* fixed to recommend the correct
931 binaries to use in more cases, with less unnecessary warnings.
932 - Changes to eliminate spurious build warnings.
934 Open-source contributions integrated:
936 - Two small header guard macro patches; it also fixed bug #94.
937 - New blocked_range3d class.
941 - 93 - Removed misleading comments in task.h.
944 ------------------------------------------------------------------------
945 20070815 open-source release
949 - Changes to eliminate spurious build warnings.
950 - Engineering work in progress on concurrent_vector allocator behavior.
951 - Added hooks to use the Intel(R) compiler code coverage tools.
953 Open-source contributions integrated:
955 - Mac OS* X build warning patch.
959 - 88 - Fixed TBB compilation errors if both VS2005 and Windows SDK are
962 ------------------------------------------------------------------------
963 20070719 open-source release
967 - Minor update to TBB 2.0 commercial-aligned release below.
968 - Changes to eliminate spurious build warnings.
970 ------------------------------------------------------------------------
971 TBB 2.0 commercial-aligned release (package 010, July 19, 2007)
973 Corresponds to commercial 010 (for Linux*, 012) packages.
975 - TBB open-source debut release.
977 ------------------------------------------------------------------------
978 TBB 1.1 commercial release (April 10, 2007)
980 Changes (w.r.t. TBB 1.0 commercial release):
982 - auto_partitioner which offered an automatic alternative to specifying
983 a grain size parameter to estimate the best granularity for tasks.
984 - The release was added to the Intel(R) C++ Compiler 10.0 Pro.
986 ------------------------------------------------------------------------
987 TBB 1.0 Update 2 commercial release
989 Changes (w.r.t. TBB 1.0 Update 1 commercial release):
991 - Mac OS* X 64-bit support added.
992 - Source packages for commercial releases introduced.
994 ------------------------------------------------------------------------
995 TBB 1.0 Update 1 commercial-aligned release
997 Changes (w.r.t. TBB 1.0 commercial release):
999 - Fix for critical package issue on Mac OS* X.
1001 ------------------------------------------------------------------------
1002 TBB 1.0 commercial release (August 29, 2006)
1004 Changes (w.r.t. TBB 1.0 beta commercial release):
1006 - New namespace (and compatibility headers for old namespace).
1007 Namespaces are tbb and tbb::internal and all classes are in the
1008 underscore_style not the WindowsStyle.
1009 - New class: scalable_allocator (and cache_aligned_allocator using that
1011 - Added parallel_for/tacheon example.
1012 - Removed C-style casts from headers for better C++ compliance.
1014 - Documentation improvements.
1015 - Improved performance of the concurrent_hash_map class.
1016 - Upgraded parallel_sort() to support STL-style random-access iterators
1017 instead of just pointers.
1018 - The Windows vs7_1 directories renamed to vs7.1 in examples.
1019 - New class: spin version of reader-writer lock.
1020 - Added push_back() interface to concurrent_vector().
1022 ------------------------------------------------------------------------
1023 TBB 1.0 beta commercial release
1029 - Concurrent containers: ConcurrentHashTable, ConcurrentVector,
1031 - Parallel algorithms: ParallelFor, ParallelReduce, ParallelScan,
1032 ParallelWhile, Pipeline, ParallelSort.
1033 - Support: AlignedSpace, BlockedRange (i.e., 1D), BlockedRange2D
1034 - Task scheduler with multi-master support.
1035 - Atomics: read, write, fetch-and-store, fetch-and-add, compare-and-swap.
1036 - Locks: spin, reader-writer, queuing, OS-wrapper.
1037 - Memory allocation: STL-style memory allocator that avoids false
1042 - Thread Checker 3.0.
1043 - Thread Profiler 3.0.
1046 - First Use Documents: README.txt, INSTALL.txt, Release_Notes.txt,
1047 Doc_Index.html, Getting_Started.pdf, Tutorial.pdf, Reference.pdf.
1048 - Class hierarchy HTML pages (Doxygen).
1049 - Tree of index.html pages for navigating the installed package, esp.
1053 - One for each of these TBB features: ConcurrentHashTable, ParallelFor,
1054 ParallelReduce, ParallelWhile, Pipeline, Task.
1055 - Live copies of examples from Getting_Started.pdf.
1056 - TestAll example that exercises every class and header in the package
1057 (i.e., a "liveness test").
1058 - Compilers: see Release_Notes.txt.
1059 - APIs: OpenMP, WinThreads, Pthreads.
1062 - Package for Windows installs IA-32 and EM64T bits.
1063 - Package for Linux installs IA-32, EM64T and IPF bits.
1064 - Package for Mac OS* X installs IA-32 bits.
1065 - All packages support Intel(R) software setup assistant (ISSA) and
1066 install-time FLEXlm license checking.
1067 - ISSA support allows license file to be specified directly in case of
1068 no Internet connection or problems with IRC or serial #s.
1069 - Linux installer allows root or non-root, RPM or non-RPM installs.
1070 - FLEXlm license servers (for those who need floating/counted licenses)
1071 are provided separately on Intel(R) Premier.
1073 ------------------------------------------------------------------------
1074 * Other names and brands may be claimed as the property of others.