]> git.sesse.net Git - casparcg/blob - tbb/CHANGES
Removed GLEE from dependencies.
[casparcg] / tbb / CHANGES
1 TBB 3.0 Update 7 commercial-aligned release
2
3 Changes (w.r.t. TBB 3.0 Update 6 commercial-aligned release):
4
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. 
8
9 Community Preview Features:
10
11 - Graph's dining_philosophers example added
12 - A number of improvements to graph and concurrent_priority_queue
13
14
15 ------------------------------------------------------------------------
16 TBB 3.0 Update 6 commercial-aligned release
17
18 Changes (w.r.t. TBB 3.0 Update 5 commercial-aligned release):
19
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.
25
26 Open-source contributions integrated:
27
28 - Initial NetBSD support by Aleksej Saushev.
29
30 Bugs fixed:
31
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
36     is unloaded.
37 - Stack corruption caused by PIC version of 64-bit CAS compiled by Intel
38     compiler on Linux.
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
46     items to successors
47
48 ------------------------------------------------------------------------
49 TBB 3.0 Update 5 commercial-aligned release
50
51 Changes (w.r.t. TBB 3.0 Update 4 commercial-aligned release):
52
53 - Added Community Preview feature: graph.
54 - Added automatic propagation of master thread FPU settings to
55     TBB worker threads.
56 - Added a public function to perform a sequentially consistent full 
57     memory fence: tbb::atomic_fence() in tbb/atomic.h.
58
59 Bugs fixed:
60
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.
66
67 Open-source contributions integrated:
68
69 - Patch for calls to internal::atomic_do_once() by Andrey Semashev.
70
71 ------------------------------------------------------------------------
72 TBB 3.0 Update 4 commercial-aligned release
73
74 Changes (w.r.t. TBB 3.0 Update 3 commercial-aligned release):
75
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.
84
85 Bugs fixed:
86
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.
95
96 ------------------------------------------------------------------------
97 TBB 3.0 Update 3 commercial-aligned release
98
99 Changes (w.r.t. TBB 3.0 Update 2 commercial-aligned release):
100
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
109   in tbb_thread.
110 - Xcode* projects were added for sudoku and game_of_life examples.
111 - Xcode* projects were updated to work without TBB framework.
112
113 Bugs fixed:
114
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).
118
119 Open-source contributions integrated:
120
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.
125
126 ------------------------------------------------------------------------
127 TBB 3.0 Update 2 commercial-aligned release
128
129 Changes (w.r.t. TBB 3.0 Update 1 commercial-aligned release):
130
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.
137
138 Bugs fixed:
139
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).
144
145 ------------------------------------------------------------------------
146 TBB 3.0 Update 1 commercial-aligned release
147
148 Changes (w.r.t. TBB 3.0 commercial-aligned release):
149
150 - Decreased memory fragmentation by allocations bigger than 8K.
151 - Lazily allocate worker threads, to avoid creating unnecessary stacks.
152
153 Bugs fixed:
154
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.
169
170 ------------------------------------------------------------------------
171 TBB 3.0 commercial-aligned release
172
173 Changes (w.r.t. TBB 2.2 Update 3 commercial-aligned release):
174
175 - All open-source-release changes down to TBB 2.2 U3 below
176     were incorporated into this release.
177
178 ------------------------------------------------------------------------
179 20100406 open-source release
180
181 Changes (w.r.t. 20100310 open-source release):
182
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.
195
196 Bugs fixed:
197
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.
202
203 ------------------------------------------------------------------------
204 20100310 open-source release
205
206 Changes (w.r.t. TBB 2.2 Update 3 commercial-aligned release):
207
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.
244
245 Open-source contributions integrated:
246
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.
251
252 ------------------------------------------------------------------------
253 TBB 2.2 Update 3 commercial-aligned release
254
255 Changes (w.r.t. TBB 2.2 Update 2 commercial-aligned release):
256
257 - PDF documentation updated.
258
259 Bugs fixed:
260
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.
266
267 ------------------------------------------------------------------------
268 TBB 2.2 Update 2 commercial-aligned release
269
270 Changes (w.r.t. TBB 2.2 Update 1 commercial-aligned release):
271
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.
288
289 Open-source contributions integrated:
290
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.
294
295 Bugs fixed:
296
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).
300
301 ------------------------------------------------------------------------
302 TBB 2.2 Update 1 commercial-aligned release
303
304 Changes (w.r.t. TBB 2.2 commercial-aligned release):
305
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
314     (Linux).
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
321     a number of items.
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.
334
335 ------------------------------------------------------------------------
336 20090809 open-source release
337
338 Changes (w.r.t. TBB 2.2 commercial-aligned release):
339
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.
346
347 ------------------------------------------------------------------------
348 TBB 2.2 commercial-aligned release
349
350 Changes (w.r.t. TBB 2.1 U4 commercial-aligned release):
351
352 - Incorporates all changes from open-source releases below.
353 - Architecture folders renamed from em64t to intel64 and from itanium
354     to ia64.
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
362     significantly.
363 - A few other small changes in code and documentation.
364
365 ------------------------------------------------------------------------
366 20090511 open-source release
367
368 Changes (w.r.t. previous open-source release):
369
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.
387
388 Changes affecting backward compatibility:
389
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.
395
396 ------------------------------------------------------------------------
397 TBB 2.1 Update 4 commercial-aligned release
398
399 Changes (w.r.t. TBB 2.1 U3 commercial-aligned release):
400
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.
404
405 Bugs fixed:
406
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).
413
414 ------------------------------------------------------------------------
415 20090313 open-source release
416
417 Changes (w.r.t. 20081109 open-source release):
418
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.
436
437 Bugs fixed:
438
439 - The same list as in TBB 2.1 Update 4 right above.
440
441 ------------------------------------------------------------------------
442 TBB 2.1 Update 3 commercial-aligned release
443
444 Changes (w.r.t. TBB 2.1 U2 commercial-aligned release):
445
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.
455
456 Bugs fixed:
457
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.
464
465 ------------------------------------------------------------------------
466 TBB 2.1 Update 2 commercial-aligned release
467
468 Changes (w.r.t. TBB 2.1 U1 commercial-aligned release):
469
470 - Incorporates all open-source-release changes down to TBB 2.1 U1,
471     except for:
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.
489
490 ------------------------------------------------------------------------
491 20081109 open-source release
492
493 Changes (w.r.t. previous open-source release):
494
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
500     and documents.
501
502 Open-source contributions integrated:
503 - Changes in the memory allocator were partially integrated.
504
505 ------------------------------------------------------------------------
506 20081019 open-source release
507
508 Changes (w.r.t. previous open-source release):
509
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
521     and documents.
522
523 Open-source contributions integrated:
524
525 - linker optimization: /incremental:no .
526
527 ------------------------------------------------------------------------
528 20080925 open-source release
529
530 Changes (w.r.t. previous open-source release):
531
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
536     and documents.
537
538 ------------------------------------------------------------------------
539 TBB 2.1 Update 1 commercial-aligned release
540
541 Changes (w.r.t. TBB 2.1 commercial-aligned release):
542
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;
546
547 ------------------------------------------------------------------------
548 20080825 open-source release
549
550 Changes (w.r.t. previous open-source release):
551
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.
559
560 Bugs fixed:
561
562 - 120, 130 - memset declaration missed in concurrent_hash_map.h
563
564 ------------------------------------------------------------------------
565 20080724 open-source release
566
567 Changes (w.r.t. previous open-source release):
568
569 - Inline assembly for atomic operations improved for gcc 4.3
570 - A few more improvements to the code.
571
572 ------------------------------------------------------------------------
573 20080709 open-source release
574
575 Changes (w.r.t. previous open-source release):
576
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*.
580
581 Bugs fixed:
582
583 - 127 - concurrent_hash_map::range fixed to split correctly.
584
585 Open-source contributions integrated:
586
587 - fix_set_midpoint.diff by jyasskin
588 - SPARC* support in makefiles by Raf Schietekat
589
590 ------------------------------------------------------------------------
591 20080622 open-source release
592
593 Changes (w.r.t. previous open-source release):
594
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.
599
600 ------------------------------------------------------------------------
601 TBB 2.1 commercial-aligned release
602
603 Changes (w.r.t. TBB 2.0 U3 commercial-aligned release):
604
605 - All open-source-release changes down to, and including, TBB 2.0 below,
606     were incorporated into this release.
607
608 ------------------------------------------------------------------------
609 20080605 open-source release
610
611 Changes (w.r.t. previous open-source release):
612
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.
620
621 Open-source contributions integrated:
622
623 - atomics patch (partially).
624 - tick_count warning patch.
625
626 Bugs fixed:
627
628 - 118 - fix for boost compatibility.
629 - 123 - fix for tbb_machine.h.
630
631 ------------------------------------------------------------------------
632 20080512 open-source release
633
634 Changes (w.r.t. previous open-source release):
635
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
648     cv-qualified.
649 - polygon_overlay example added.
650 - A few more improvements to code, tests, examples and Makefiles.
651
652 Open-source contributions integrated:
653
654 - Soname support patch for Bugzilla #112.
655
656 Bugs fixed:
657
658 - 112 - fix for soname support.
659
660 ------------------------------------------------------------------------
661 TBB 2.0 U3 commercial-aligned release (package 017, April 20, 2008)
662
663 Corresponds to commercial 019 (for Linux*, 020; for Mac OS* X, 018)
664 packages.
665
666 Changes (w.r.t. TBB 2.0 U2 commercial-aligned release):
667
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.
672
673 ------------------------------------------------------------------------
674 20080408 open-source release
675
676 Changes (w.r.t. previous open-source release):
677
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.
685
686 Open-source contributions integrated:
687
688 - Two sets of Sun patches for IA Solaris support.
689
690 ------------------------------------------------------------------------
691 20080402 open-source release
692
693 Changes (w.r.t. previous open-source release):
694
695 - Exception handling and cancellation support for tasks and algorithms
696     fully enabled.
697 - Exception safety guaranties defined and fixed for all concurrent
698     containers.
699 - User-defined memory allocator support added to all concurrent
700     containers.
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.
709
710 ------------------------------------------------------------------------
711 20080319 open-source release
712
713 Changes (w.r.t. previous open-source release):
714
715 - Support for gcc version 4.3 was added.
716 - tbb_thread class, near compatible with std::thread expected in C++0x,
717     was added.
718
719 Bugs fixed:
720
721 - 116 - fix for compilation issues with gcc version 4.2.1.
722 - 120 - fix for compilation issues with gcc version 4.3.
723
724 ------------------------------------------------------------------------
725 20080311 open-source release
726
727 Changes (w.r.t. previous open-source release):
728
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.
735
736 ------------------------------------------------------------------------
737 20080304 open-source release
738
739 Changes (w.r.t. previous open-source release):
740
741 - Task-to-thread affinity support, previously kept under a macro,
742     now fully legalized.
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.
746
747 Bugs fixed:
748
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.
752
753 ------------------------------------------------------------------------
754 20080226 open-source release
755
756 Changes (w.r.t. previous open-source release):
757
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.
764
765 ------------------------------------------------------------------------
766 TBB 2.0 U2 commercial-aligned release (package 017, February 14, 2008)
767
768 Corresponds to commercial 017 (for Linux*, 018; for Mac OS* X, 016)
769 packages.
770
771 Changes (w.r.t. TBB 2.0 U1 commercial-aligned release):
772
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.
780
781 Bugs fixed:
782
783 - TR569 - Memory leak in concurrent_queue.
784
785 ------------------------------------------------------------------------
786 20080207 open-source release
787
788 Changes (w.r.t. previous open-source release):
789
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.
794
795 Bugs fixed:
796
797 - 113 - Iterators and ranges should be convertible to their const
798     counterparts.
799 - TR569 - Memory leak in concurrent_queue.
800
801 ------------------------------------------------------------------------
802 20080122 open-source release
803
804 Changes (w.r.t. previous open-source release):
805
806 - Updated examples/parallel_for/seismic to improve the visuals and to
807     use the affinity_partitioner (20071127 and forward) for better
808     performance.
809 - Minor improvements to unittests and performance tests.
810
811 ------------------------------------------------------------------------
812 20080115 open-source release
813
814 Changes (w.r.t. previous open-source release):
815
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
822     parallel_reduce.
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.
826
827 Bugs fixed:
828
829 - 102 - Support for parallel build with gmake -j
830 - 114 - /Wp64 build warning on Windows*.
831
832 ------------------------------------------------------------------------
833 20071218 open-source release
834
835 Changes (w.r.t. previous open-source release):
836
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.
842
843 ------------------------------------------------------------------------
844 20071206 open-source release
845
846 Changes (w.r.t. previous open-source release):
847
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.
855
856 ------------------------------------------------------------------------
857 20071127 open-source release
858
859 Changes (w.r.t. previous open-source release):
860
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
871     version.
872 - TBB libraries added to link line automatically on Microsoft Windows*
873     systems via #pragma comment linker directives.
874
875 Open-source contributions integrated:
876
877 - FreeBSD platform support patches.
878 - AIX weak memory model patch.
879
880 Bugs fixed:
881
882 - 108 - Removed broken affinity.h reference.
883 - 101 - Does not build on Debian Lenny (replaced arch with uname -m).
884
885 ------------------------------------------------------------------------
886 20071030 open-source release
887
888 Changes (w.r.t. previous open-source release):
889
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-
896     ever possible.
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.
901
902 ------------------------------------------------------------------------
903 20070927 open-source release
904
905 Changes (w.r.t. TBB 2.0 U1 commercial-aligned release):
906
907 - Minor update to TBB 2.0 U1 below.
908 - Begin introduction of new concurrent_vector interfaces not released
909     with TBB 2.0 U1.
910
911 ------------------------------------------------------------------------
912 TBB 2.0 U1 commercial-aligned release (package 014, October 1, 2007)
913
914 Corresponds to commercial 014 (for Linux*, 016) packages.
915
916 Changes (w.r.t. TBB 2.0 commercial-aligned release):
917
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:
921     Added Linux* OSs:
922         Asianux* 3, Debian* 4.0, Fedora Core* 6, Fedora* 7,
923         Turbo Linux* 11, Ubuntu* 7.04;
924     Dropped Linux* OSs:
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.
933
934 Open-source contributions integrated:
935
936 - Two small header guard macro patches; it also fixed bug #94.
937 - New blocked_range3d class.
938
939 Bugs fixed:
940
941 - 93 - Removed misleading comments in task.h.
942 - 94 - See above.
943
944 ------------------------------------------------------------------------
945 20070815 open-source release
946
947 Changes:
948
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.
952
953 Open-source contributions integrated:
954
955 - Mac OS* X build warning patch.
956
957 Bugs fixed:
958
959 - 88 - Fixed TBB compilation errors if both VS2005 and Windows SDK are
960     installed.
961
962 ------------------------------------------------------------------------
963 20070719 open-source release
964
965 Changes:
966
967 - Minor update to TBB 2.0 commercial-aligned release below.
968 - Changes to eliminate spurious build warnings.
969
970 ------------------------------------------------------------------------
971 TBB 2.0 commercial-aligned release (package 010, July 19, 2007)
972
973 Corresponds to commercial 010 (for Linux*, 012) packages.
974
975 - TBB open-source debut release.
976
977 ------------------------------------------------------------------------
978 TBB 1.1 commercial release (April 10, 2007)
979
980 Changes (w.r.t. TBB 1.0 commercial release):
981
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.
985
986 ------------------------------------------------------------------------
987 TBB 1.0 Update 2 commercial release
988
989 Changes (w.r.t. TBB 1.0 Update 1 commercial release):
990
991 - Mac OS* X 64-bit support added.
992 - Source packages for commercial releases introduced.
993
994 ------------------------------------------------------------------------
995 TBB 1.0 Update 1 commercial-aligned release
996
997 Changes (w.r.t. TBB 1.0 commercial release):
998
999 - Fix for critical package issue on Mac OS* X.
1000
1001 ------------------------------------------------------------------------
1002 TBB 1.0 commercial release (August 29, 2006)
1003
1004 Changes (w.r.t. TBB 1.0 beta commercial release):
1005
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
1010     if it exists).
1011 - Added parallel_for/tacheon example.
1012 - Removed C-style casts from headers for better C++ compliance.
1013 - Bug fixes.
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().
1021
1022 ------------------------------------------------------------------------
1023 TBB 1.0 beta commercial release
1024
1025 Initial release.
1026
1027 Features / APIs:
1028
1029 - Concurrent containers: ConcurrentHashTable, ConcurrentVector,
1030     ConcurrentQueue.
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
1038     sharing.
1039 - Timers.
1040
1041 Tools Support:
1042 - Thread Checker 3.0.
1043 - Thread Profiler 3.0.
1044
1045 Documentation:
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.
1050     for the examples.
1051
1052 Examples:
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.
1060
1061 Packaging:
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.
1072
1073 ------------------------------------------------------------------------
1074 * Other names and brands may be claimed as the property of others.