* Component
* Parameters now have internal get and set methods
* All Components now take kwargs. These are passed all the way through the inheritance hierarchy. Exceptions are raised on illegal kwargs during instantiation of Component class
* Condition
* AtTrialStart added as condition
* Composition
* Node roles can now be specified when nodes are added to a Composition. This is done in the add_node method by passing a tuple in format (node, [required_roles]) (1205)
* Users can now set scheduler_processing
* Added add_backpropgation_learning_pathway method that supports multilayer backpropagation learning, and can be combined to generate any pattern of feedforward networks.
* Learning components can now be shown by show_graph using show_learning argument.
* Parameters specified for control in the constructor of a Mechanism are now assigned ControlSignals on the controller of a Composition when the Mechanism is assigned to that Composition
* If a ControlMechanism is included in add_linear_processing_pathway, and neither the objective_mechanism nor monitor_for_control arguments of its constructor was specified, then it will receive projections to it in the same way as any other Mechanism.
* ControlProjections are now assigned as feedback by default if they form a loop.
* Controller now included in Composition.log (1227)
* Execution id, execution context, and context now consolidated into a single Context class (1300)
* show_graph: now displays Mechanisms that send a feedback projection in their own shape (septagon by default).
* show_graph: can now generate an animated gif of Composition execution (1231)
* show_graph: added show_cim option to show Composition CIMs
* show_graph: ModulatoryProjections now use a distinct arrowhead (square by default)
* retain_old_simulation_data added as parameter
* Nodes with a reinitialize_when condition that is satisfied on current trial now reinitialize (1250)
* Add_back_propagation_pathway now implemented for Compositions (1260)
* Modulation of nested nodes implemented through the use of Parameter CIMs (1269)
* Can now specify a ControlMechanism to be used as the controller for a Composition in the Composition’s constructor (1304)
* AutodiffComposition
* If learning_enabled is False but inputs are provided in format for learning (i.e. with key for targets), the targets are ignored and inputs key of input dict is used as inputs (allows same input_dict to be used for training and testing)
* Feedforward networks can now be run in compiled mode.
* Function
* Concatenate Function added, allowing users to concatenate items of a variable (1238)
* Rearrange Function added, allowing users to rearrange items of variable (1238)
* TransferWithCosts added: has transfer_fct and associated cost functions that are computed based on the result of the transfer_fct
* Added function() method to Function_Base that handles boilerplate operations common to all Functions.
* Renamed method for individual Functions from function() to _function()
* Added _is_identity attribute, which indicates whether, given current parameters, function will return the same value as its variable (used by State: if it returns True during execution, function is skipped and its variable is returned as its result).
* Scheduler
* Default Condition for nodes is now to run only when all nodes that it is dependent on have run. Previously, default Condition was to always run
* ModulatoryMechanism
* Can now be assigned ControlSignals and/or GatingSignals
* ControlMechanism
* Can now be used to modulate any parameter of the function of an InputState or OutputState, in addition (as previously) to ParameterStates
* Instantiation of objective_mechanism is now optional, and must be explicitly specified (either by setting argument = True, an existing ObjectiveMechanism or a constructor for one
* ControlSignal
* Now uses TransferWithCosts as its default function; cost functions have been removed and replaced by aliases to cost functions of TransferWithCosts
* State
* Projection keyword in ModulatorySignal constructor changed from projections to modulates (alias added so that if a user instantiates a ModulatorySignal using the projections keyword it will still work)
* In certain situations where it is possible to determine that a projection will not alter the value of its variable, it will not execute its full Function and instead simply pass its variable as its value (see _is_identity Function attribute above)
* Added full_name property that returns <owner.name>[<self.name>] (1288)
* Renamed update method to _update
* Documentation
* Basics and Sampler has been rewritten to reference Composition rather than System/Process, and sections added on Control, Learning and UserDefinedFunction
* Tutorial
* Rewritten to reference Composition rather than System/Process
* System/Process
* Now deprecated. Will be eliminated from codebase entirely in an upcoming version
* Misc
* Abstract class check now uses abc module
* Many bug fixes, optimizations, updates to documentation, etc.
* Most instances of “execution_id” and “execution_context” have been replaced with just “context”, which supports the same types of arguments