\chapter{Document Revision History}
\label{chap:history}

\section{Changes from 5.0.0 to 5.0.1}
\label{sec:history_50_to_501}

\begin{itemize}
\item Added version tags (\code{\small{}omp\_}\plc{x.y}) in example labels 
and the corresponding source codes for all examples that feature
OpenMP 3.0 and later. 

\item Included additional examples for the 5.0 features:

\begin{itemize}
\item Extension to the \code{defaultmap} clause
(\specref{sec:defaultmap})
\item Transferring noncontiguous data with the \code{target}~\code{update} directive in Fortran (\specref{sec:array-shaping})
\item \code{conditional} modifier for the \code{lastprivate} clause                             (\specref{sec:lastprivate})
\item \code{task} modifier for the \code{reduction} clause                                      (\specref{subsec:task_reduction})
\item Reduction on combined target constructs                                                     (\specref{subsec:target_reduction})
\item Task reduction with target constructs 
   (\specref{subsec:target_task_reduction})
\item \code{scan} directive for returning the \emph{prefix sum} of a reduction                  (\specref{sec:scan})

\end{itemize}

\item Included additional examples for the 4.x features:

\begin{itemize}
\item Dependence for undeferred tasks
(\specref{subsec:depend_undefer_task})
\item \code{ref}, \code{val}, \code{uval} modifiers for \code{linear} clause (\specref{sec:linear_modifier})

\end{itemize}

\item Clarified the description of pointer mapping and pointer attachment in 
\specref{sec:pointer_mapping}.
\item Clarified the description of memory model examples
in \specref{sec:mem_model}.

\end{itemize}


\section{Changes from 4.5.0 to 5.0.0}
\label{sec:history_45_to_50}

\begin{itemize}
\item Added the following examples for the 5.0 features:

\begin{itemize}
\item Extended \code{teams} construct for host execution     (\specref{sec:host_teams})
\item \code{loop} and \code{teams}~\code{loop} constructs specify loop iterations that can execute concurrently 
                                                             (\specref{sec:loop})
\item Task data affinity is indicated by \code{affinity} clause of \code{task} construct
                                                             (\specref{sec: task_affinity})
\item Display thread affinity with \code{OMP\_DISPLAY\_AFFINITY} environment variable or \code{omp\_display\_affinity()} API routine
                                                             (\specref{sec:affinity_display})
\item \code{taskwait} with dependences                       (\specref{subsec:taskwait_depend})
\item \code{mutexinoutset} task dependences                  (\specref{subsec:task_dep_mutexinoutset})
\item Multidependence Iterators (in \code{depend} clauses)   (\specref{subsec:depend_iterator})
\item Combined constructs: \code{parallel}~\code{master}~\code{taskloop} and \code{parallel}~\code{master}~\code{taskloop}~\code{simd}
                                                                                  (\specref{sec:parallel_master_taskloop})
\item Reverse Offload through \plc{ancestor} modifier of \code{device} clause.    (\specref{subsec:target_reverse_offload})
\item Pointer Mapping  - behavior of mapped pointers                              (\specref{sec:pointer_mapping})   %Example_target_ptr_map*
\item Structure Mapping  - behavior of mapped structures                          (\specref{sec:structure_mapping}) %Examples_target_structure_mapping.tex target_struct_map*
\item Array Shaping with the \plc{shape-operator}                                 (\specref{sec:array-shaping})
\item The \code{declare}~\code{mapper} construct                                  (\specref{sec:declare_mapper})
\item Acquire and Release Semantics Synchronization: Memory ordering 
      clauses \code{acquire}, \code{release}, and \code{acq\_rel} were added
      to flush and atomic constructs
                                                                                  (\specref{sec:acquire_and_release_semantics})
\item \code{depobj} construct provides dependence objects for subsequent use in \code{depend} clauses
                                                                                  (\specref{sec:depobj})
\item \code{reduction} clause for \code{task} construct                           (\specref{subsec:task_reduction})
\item \code{reduction} clause for \code{taskloop} construct                       (\specref{subsec:taskloop_reduction})
\item \code{reduction} clause for \code{taskloop}~\code{simd} construct           (\specref{subsec:taskloop_reduction})
\item Memory Allocators for making OpenMP memory requests with traits             (\specref{sec:allocators})
\item \code{requires} directive specifies required features of implementation     (\specref{sec:requires})
\item \code{declare}~\code{variant} directive - for function variants             (\specref{sec:declare_variant})
\item \code{metadirective} directive  - for directive variants                    (\specref{sec:metadirective})
\item \code{OMP\_TARGET\_OFFLOAD} Environment Variable  - controls offload behavior (\specref{sec:target_offload})
\end{itemize}

\item Included the following additional examples for the 4.x features:
\begin{itemize}
\item more taskloop examples (\specref{sec:taskloop})
\item user-defined reduction (UDR) (\specref{subsec:UDR})
%NEW 5.0
%\item \code{target} \code{enter} and \code{exit} \code{data} unstructured data constructs  (\specref{sec:target_enter_exit_data}) %Example_target_unstructured_data.* ?

\end{itemize}
\end{itemize}

\section{Changes from 4.0.2 to 4.5.0}
\begin{itemize}
\item Reorganized into chapters of major topics
\item Included file extensions in example labels to indicate source type
\item Applied the explicit \code{map(tofrom)} for scalar variables 
      in a number of examples to comply with 
      the change of the default behavior for scalar variables from 
      \code{map(tofrom)} to \code{firstprivate} in the 4.5 specification
\item Added the following new examples:

\begin{itemize}
\item \code{linear} clause in loop constructs     (\specref{sec:linear_in_loop})
\item \code{priority} clause for \code{task} construct (\specref{sec:task_priority})
\item \code{taskloop} construct                   (\specref{sec:taskloop})
\item \plc{directive-name} modifier in multiple \code{if} clauses on
a combined construct                              (\specref{subsec:target_if})
\item unstructured data mapping                   (\specref{sec:target_enter_exit_data})
\item \code{link} clause for \code{declare}~\code{target} directive 
                                                  (\specref{subsec:declare_target_link})
\item asynchronous target execution with \code{nowait} clause (\specref{sec:async_target_exec_depend})
\item device memory routines and device pointers  (\specref{subsec:target_mem_and_device_ptrs})
\item doacross loop nest                          (\specref{sec:doacross})
\item locks with hints                            (\specref{sec:locks})
\item C/C++ array reduction                       (\specref{subsec:reduction})
\item C++ reference types in data sharing clauses (\specref{sec:cpp_reference})
\end{itemize}

\end{itemize}

\section{Changes from 4.0.1 to 4.0.2}

\begin{itemize}
\item Names of examples were changed from numbers to mnemonics
\item Added SIMD examples                         (\specref{sec:SIMD})
\item Applied miscellaneous fixes in several source codes
\item Added the revision history
\end{itemize}

\section{Changes from 4.0 to 4.0.1}

Added the following new examples:
\begin{itemize}
\item the \code{proc\_bind} clause   (\specref{sec:affinity})
\item the \code{taskgroup} construct (\specref{sec:taskgroup})
\end{itemize}

\section{Changes from 3.1 to 4.0}

\begin{itemize}
\item Beginning with OpenMP 4.0, examples were placed in a separate document
      from the specification document.
\item Version 4.0 added the following new examples:

\begin{itemize}
\item task dependences                       (\specref{sec:task_depend})
\item \code{target} construct                (\specref{sec:target})
\item array sections in device constructs    (\specref{sec:array_sections})
\item \code{target}~\code{data} construct    (\specref{sec:target_data})
\item \code{target}~\code{update} construct  (\specref{sec:target_update})
\item \code{declare}~\code{target} construct (\specref{sec:declare_target})
\item \code{teams} constructs                (\specref{sec:teams})
\item asynchronous execution of a \code{target} region using tasks (\specref{subsec:async_target_with_tasks})
\item device runtime routines                (\specref{sec:device})
\item Fortran ASSOCIATE construct            (\specref{sec:associate})
\item cancellation constructs                (\specref{sec:cancellation})
\end{itemize}

\end{itemize}