----------------------------------------------------------------------------------
------------------------------- MaDKit 5.3 ----------------------------------
------------------------------- Build ID 20190909-1034 ---------------------------
----------------------------------------------------------------------------------

- Short description:

Multiagent Development Kit (MDK for short) is an open source MAS library which relies on organizational concepts. 
So one can design artificial societies wherein autonomous agents interact using messages. 
It also contains generic MAS simulation authoring tools.


----------------------------------------------------------------------------------
------------------------------- Release notes ------------------------------------
----------------------------------------------------------------------------------


----------------------------------------------------------------------------------
------------------------------- MaDKit 5.3 ---------------------------------------
----------------------------------------------------------------------------------

Changes:
	+ Adding a possibility of defining date-based time simulations
	see madkit.kernel.Scheduler for more information
	+ the test framework has been reworked so that failures are more easy to track


----------------------------------------------------------------------------------
------------------------------- MaDKit 5.2 ---------------------------------------
----------------------------------------------------------------------------------

Changes:
	+ Logging mechanism entirely reworked, see the madkit.kernel.AgentLogger api. 
	The logger field is no longer accessible by subclasses of AbstractAgent. 
	madkit.kernel.AbstractAgent.getLogger() should now be used.

	+ adding the madkit.kernel.Madkit.BooleanOption.debug option to ease debugging

Refactoring:
	- deprecated madkit.kernel.AbstractAgent.setupFrame(JFrame) removed
	- madkit.agr.Organization replaced by 
	+ madkit.agr.DefaultMaDKitRoles


----------------------------------------------------------------------------------
------------------------------- MaDKit 5.1.1 -------------------------------------
----------------------------------------------------------------------------------

1. Changes:
	+ MaDKit now retains some preferences over different executions:
		Debug mode on or off
		Agent frames size, location and color (based on the agent's default name)
		Agent log level (based on the agent's name)
	
	+ Adding a printing feature to agent frames

	- madkit.kernel.AbstractAgent.setupFrame(JFrame) has been deprecated.
		Change it to madkit.kernel.AbstractAgent.setupFrame(AgentFrame) for
		avoiding unexpected UI behaviors.


----------------------------------------------------------------------------------
------------------------------- MaDKit 5.1 ---------------------------------------
----------------------------------------------------------------------------------

1. Changes:
	+ MaDKit is now distributed under the CeCILL-C open source license
	+ Java 8 is now required


----------------------------------------------------------------------------------
------------------------------- MaDKit 5.0.5.3 (beta-5.3) ------------------------
----------------------------------------------------------------------------------

1. Changes:
	+ Java 8 fix and minor changes


----------------------------------------------------------------------------------
------------------------------- MaDKit 5.0.5.2 (beta-5.2) ------------------------
----------------------------------------------------------------------------------

1. API changes:
	+ madkit.kernel.AbstractAgent.getLastReceivedMessage()
	+ madkit.kernel.AbstractAgent.getLastReceivedMessage(MessageFilter)
	+ madkit.simulation.probe.PropertyProbe.getAverageValue()
	~ madkit.kernel.MadkitClassLoader.loadJarsFromDirectory(String) : now return true if something new was found
	~ madkit.kernel.MadkitClassLoader.loadUrl(URL) : idem


----------------------------------------------------------------------------------
------------------------------- MaDKit 5.0.5.1 (beta-5.1) ----------------------------
----------------------------------------------------------------------------------

1. Changes:
	- minor changes in the GUI of Scheduler and SwingViewer agents
	
2. API changes:
	+ madkit.simulation.viewer.SwingViewer.getOptionsMenu()
	~ madkit.kernel.AbstractAgent.executeThisAgent()



----------------------------------------------------------------------------------
------------------------------- MaDKit 5.0.5 (beta-5) ----------------------------
----------------------------------------------------------------------------------

1. Changes:
	- now, if --desktop is set to false, there will be no desktop even if there is no agent to launch and no config file
	
2. Bug fixes:
	- fix the desktop java web start demo.

3. API changes:
	- Remove the java.io.Serializable from madkit.kernel.AbstractAgent: not functional and thus misleading.



----------------------------------------------------------------------------------
------------------------------- MaDKit 5.0.4 (beta-4) ----------------------------
----------------------------------------------------------------------------------


1. Improvements and changes:
	- the mailbox now can be queried using custom message filters, see API changes.  

2. Bug fixes:
	- fix bugs that could appear when using the replying methods in a distributed mode
	- fix a bug appearing when an uncommon jar with no manifest is on the classpath

3. API changes:
	- madkit.message.hook.CGREvent.getSourceAgentID() was useless considering madkit.kernel.AgentAddress.getAgentNetworkID() 
	- madkit.kernel.AgentAddress.exists() semantic was unclear -> use madkit.kernel.AbstractAgent.checkAgentAddress(AgentAddress)
	- madkit.kernel.AgentAddress.isLocal() semantic was unclear -> use madkit.kernel.AgentAddress.isFrom(KernelAddress)
	+ madkit.message.MessageFilter
	+ madkit.message.SenderRoleFilter
	+ madkit.message.ConversationFilter
	+ madkit.kernel.AbstractAgent.nextMessage(MessageFilter)
	+ madkit.kernel.AbstractAgent.nextMessages(MessageFilter)
	+ madkit.kernel.Agent.waitNextMessage(MessageFilter)
	+ madkit.kernel.Agent.waitNextMessage(Integer, MessageFilter)
	+ madkit.kernel.Agent.waitAnswer(Message)
	+ madkit.kernel.Agent.waitAnswer(Message, Integer)
	

----------------------------------------------------------------------------------
------------------------------- MaDKit 5.0.3.2 (beta-3.2) ------------------------
----------------------------------------------------------------------------------

Fix a Java web start issue that appeared with jdk 7u45

   API changes:
	+ madkit.kernel.AbstractAgent.getMyRoles(String, String)


----------------------------------------------------------------------------------
------------------------------- MaDKit 5.0.3.1 (beta-3.1) ------------------------
----------------------------------------------------------------------------------

Fix a Windows 7 issue related to network resources access


----------------------------------------------------------------------------------
------------------------------- MaDKit 5.0.3 (beta-3) ----------------------------
----------------------------------------------------------------------------------

1. Improvements and changes:
	- The uniqueness of the kernel address is now guaranteed in all cases

2. API changes:
	- WARNING : the semantic of madkit.kernel.AbstractAgent.bucketModeCreateGroup(String, String, boolean, Gatekeeper)
	 and madkit.kernel.AbstractAgent.bucketModeRequestRole(String, String, String, Object) has changed. 
	 see Javadoc for more details
	+ madkit.kernel.AbstractAgent.hasRole(String, String, String)
	+ madkit.kernel.AbstractAgent.getMyGroups(String)
	+ madkit.kernel.AbstractAgent.getMadkitProperty(E)
	+ madkit.kernel.AbstractAgent.isMadkitPropertyTrue(E)

----------------------------------------------------------------------------------
------------------------------- MaDKit 5.0.2 (beta-2) ----------------------------
----------------------------------------------------------------------------------

1. Improvements and changes:
	- A default tool bar for the SwingViewer is now included 
	- XML files could be used to define configuration files. They then can be used to launch and 
	initialize agents using --config file.xml at launch time or using the desktop corresponding menu.
	An example of specification is available in the docs directory.
	- The debug feature now also operates on all the active agents.   

2. API changes:
	+ madkit.kernel.AbstractAgent.launchAgentBucket(List<? extends AbstractAgent>, int, String...)
	+ madkit.kernel.AbstractAgent.launchAgentBucket(String, int, int, String...)
	WARNING: The above methods now require to write "community,group,role" instead of "community;group;role" 
	for consistency with other MaDKit parts. 
	+ madkit.kernel.AbstractAgent.bucketModeRequestRole(String, String, String, Object)
	+ madkit.kernel.AbstractAgent.bucketModeCreateGroup(String, String, boolean, Gatekeeper)
	
	

----------------------------------------------------------------------------------
------------------------------- MaDKit 5.0.1 (beta-1) ----------------------------
----------------------------------------------------------------------------------

1. Improvements and changes:
	- Now requires Java 7
	- Add 'Debug' and 'Create log files' actions and gui related features
	- Add a menu containing all the agents having a main method

2. API changes:
	+ madkit.kernel.Agent.setThreadPriority(int)
	+ madkit.kernel.Agent.getThreadPriority()
	+ madkit.kernel.AgentLogger.createLogFiles()
	+ madkit.kernel.AgentLogger.setAllLogLevels(Level)
	+ madkit.action.GlobalAction
	+ madkit.gui.menu.LaunchMain
	+ madkit.message.ObjectMessage .max(Collection<M>) .min(Collection<M>) .sort(List<M>)
	~ madkit.kernel.Activator.execute(Object...)
	- madkit.kernel.MadkitClassLoader.getNewestClassVersion(String)
	

----------------------------------------------------------------------------------
------------------------------- MaDKit 5.0.0.22 (alpha-22)------------------------
----------------------------------------------------------------------------------

1. Improvements and changes:
	- Connection of two MaDKit instances over Internet 
	- fix a bug preventing ant building of jars under seven

2. API changes:
	+ madkit.kernel.AbstractAgent.getServerInfo()
	+ madkit.gui.SwingUtil.addMaDKitActionsTo(JComponent, AbstractAgent)
	+ madkit.gui.MDKDesktopFrame
	+ madkit.gui.menu.AgentClassFilter
	- madkit.action.GUIManagerAction.addAllActionsTo(JComponent, AbstractAgent)
	

----------------------------------------------------------------------------------
------------------------------- MaDKit 5.0.0.21 (alpha-21)------------------------
----------------------------------------------------------------------------------

1. Improvements and changes:
	- boot time reduced
	- fix a bug related to network kernel connections under Windows
	- fix the encoding of FR files under Windows
	- The hook system has been reworked and refactored

2. API changes:
	+ madkit.kernel.AbstractAgent.getNetworkID()
	+ madkit.kernel.AbstractAgent.getSimpleNetworkID()
	+ madkit.kernel.AgentAddress.getAgentNetworkID()
	+ madkit.kernel.AgentAddress.getSimpleAgentNetworkID()
	+ madkit.message.hook.CGREvent

----------------------------------------------------------------------------------
------------------------------- MaDKit 5.0.0.20 (alpha-20)------------------------
----------------------------------------------------------------------------------

1. Improvements and changes:
	- fix some bugs appearing under Windows (class path scan, jconsole, reload, etc.)
	- fix the default package case
	- ensure log directories uniqueness
	- allow security of groups over the network

2. API changes:
	~ madkit.kernel.Gatekeeper.allowAgentToTakeRole(String, Object) -> madkit.kernel.Gatekeeper.allowAgentToTakeRole(String, String, Object)
	+ madkit.kernel.AbstractAgent.getExistingCommunities()
	+ madkit.kernel.AbstractAgent.getExistingGroups(String)
	+ madkit.kernel.AbstractAgent.getExistingRoles(String, String)
	+ madkit.kernel.AbstractAgent.getDistantAgentWithRole(String, String, String, KernelAddress)
	
----------------------------------------------------------------------------------
------------------------------- MaDKit 5.0.0.19 (alpha-19)------------------------
----------------------------------------------------------------------------------

1. Improvements and changes:
	- The hook system has been reworked and refactored.
	- The simulation API has been slightly reworked

2. API changes:
	+ madkit.message.hook package
	+ madkit.simulation.model package
	- madkit.kernel.Scheduler.triggerActivator()



----------------------------------------------------------------------------------
------------------------------- MaDKit 5.0.0.18 (alpha-18)------------------------
----------------------------------------------------------------------------------

1. Improvements and changes:
	- Add support for third party libraries when using ant (build.xml) for producing executable jars.
	- A new probe has been added: SingleAgentProbe which is designed for probing one agent at a time.
	- fix a regression bug that made launch and reload to disappear from the agent's GUI menu.

2. API changes:
	~ madkit.action.MKAbstractAction has been renamed madkit.action.MDKAbstractAction
	+ madkit.simulation.viewer.SwingViewer .getFrame() .setFrame() 
	+ madkit.simulation.probe.SingleAgentProbe<A, T>	


----------------------------------------------------------------------------------
------------------------------- MaDKit 5.0.0.17 (alpha-17)------------------------
----------------------------------------------------------------------------------

1. Improvements and changes:
	- MaDKit is GPL licensed from now on.
	- An ant build.xml template is now available in the distribution, providing various deployment facilities.
	- Agents can now create their own log file as will, using the AgentLogger API.
	- fix jnlp startup speed.
	 
2. API changes:
	~ madkit.simulation has been split, adding madkit.simulation.activator and madkit.simulation.probe. Use organize imports in your IDE to ease the refactoring.
	+ madkit.simulation.viewer.SwingViewer
	+ madkit.kernel.AgentLogger.createLogFile()
	+ madkit.kernel.MadkitClassLoader.getClassSimpleName(String)
	+ madkit.kernel.MadkitClassLoader.getClassPackageName(String)
	

----------------------------------------------------------------------------------
------------------------------- MadKit 5.0.0.16 (alpha-16)------------------------
----------------------------------------------------------------------------------

1. Improvements and changes:
	- if the JDK (from Oracle) is installed, a menu shortcut to jconsole is provided for monitoring.
	- MaDKit works also when there is no graphic environment at all.
	- the library has been renamed for simplicity and legibility : madkitkernel -> madkit
	 
2. API changes:
	+ madkit.kernel.AgentLogger.createLogFile()
	+ madkit.kernel.AbstractAgent.launchAgentBucket(List<AbstractAgent>, String...)
	+ madkit.kernel.Madkit.Madkit(String...)
	+ madkit.kernel.Madkit.doAction(KernelAction, Object...)
	+ madkit.gui.SwingUtil
	
	- madkit.gui.OutputPanel.print(String)
	
	~ madkit.kernel.AbstractAgent.executeThisAgent(String[], int, boolean) -> madkit.kernel.AbstractAgent.executeThisAgent(int, boolean, String...)
	~ madkit.kernel.AbstractAgent.launchAgentBucketWithRoles(String, int, String...) -> madkit.kernel.AbstractAgent.launchAgentBucket(String, int, String...)
	~ madkit.kernel.Scheduler.State -> madkit.kernel.Scheduler.SimulationState
	~ madkit.gui.menu.LaunchSessionMenu -> madkit.gui.menu.LaunchMAS


----------------------------------------------------------------------------------
------------------------------- MadKit 5.0.0.15 (alpha-15)------------------------
----------------------------------------------------------------------------------

1. Improvements:
	- add The MadKit Tutorials
	- add docs/src.zip for easing the development under an IDE
	- Avoid an annoying bug of the open JDK that prevents MDK executable jar files to work properly 

2. API changes:
	+ madkit.kernel.AbstractAgent.getAgentAddressIn(String, String, String)
	+ madkit.kernel.AbstractAgent.proceedEnumMessage(EnumMessage<E>)
	+ madkit.kernel.AbstractAgent.ReturnCode.IGNORED
	+ madkit.kernel.AbstractAgent.createGUIOnStartUp()
	+ madkit.kernel.AbstractAgent.purgeMailbox()
	+ madkit.kernel.Scheduler.setState(State)
	+ madkit.action.SchedulingAction.PAUSE
	+ madkit.simulation.SimulationException
	+ madkit.i18n.ErrorMessages.MUST_BE_LAUNCHED
	
	- madkit.kernel.AbstractAgent.getMostRecentMessage()
	- madkit.kernel.AbstractAgent.ReturnCode.TERMINATED_AGENT
	- madkit.kernel.AbstractAgent.ReturnCode.NOT_AN_AGENT_CLASS
	- madkit.kernel.AbstractAgent.ReturnCode.NETWORK_DOWN
	- madkit.kernel.Scheduler.Scheduler(double, double)
	- madkit.kernel.Scheduler.getStartTime()
	- madkit.kernel.Scheduler.setStartTime(double)
	
	~ madkit.kernel.AbstractAgent.ReturnCode.INVALID_AA -> madkit.kernel.AbstractAgent.ReturnCode.INVALID_AGENT_ADDRESS


----------------------------------------------------------------------------------
------------------------------- MadKit 5.0.0.14 (alpha-14)------------------------
----------------------------------------------------------------------------------

1. Improvements:	
	- fix kernel logs on Agents' exceptions
	- add an easy way to launch one agent class with a main (see 2.)
	- Action building and related enum have been reworked and refactored
	- starting time improved
	- basic activators and probes are faster
	- madkit.action.* can be used to easily build GUI
	- a hook system has been added like in MadKit 4
	- A console agent redirecting console messages has been added (displaying message from System.out and .err)

2. API new features:
	- madkit.message. StringMessage, AgentHookMessage, EnumMessage, KernelMessage classes have been added.
	- The madkit.kernel.AbstractAgent.executeThisAgent(String[], int) method has been added

3. API Refactoring:
	- madkit.simulation.PropertyProbe has been refactored
	- madkit.messages package renamed to madkit.message
	- madkit.gui.action package moved to madkit.action
	- madkit.gui.menus package renamed to madkit.menu
	- madkit.gui.toolbars package renamed to madkit.toolbar
	- madkit.kernel.MadkitClassLoader is now visible
	Tip: To do your refactoring work at once, right click your project and select source->Organize imports

----------------------------------------------------------------------------------
------------------------------- MadKit 5.0.0.13 (alpha-13)------------------------
----------------------------------------------------------------------------------

1. Improvements:	
	- Desktop reworked (icons)
	- Java web start handling reworked
	- Probes now work on private fields 

2. API Refactoring:
	+ madkit.kernel.Activator.findMethodOn(Class<? extends A>, String)
	+ madkit.kernel.Probe.findFieldOn(Class<? extends A>, String)
	

----------------------------------------------------------------------------------
------------------------------- MadKit 5.0.0.12 (alpha-12)------------------------
----------------------------------------------------------------------------------

1. Improvements:	
	- Desktop has been slightly reworked
	- more javadoc on the kill/launch methods and other previously uncommented methods
	- the agent's menu does not propose unachievable launch operations (agents with no default constructor)
	- The life cycle management of Agents has been reworked

2. API Refactoring:
	- madkit.gui.actions.MadkitActions has been changed to madkit.gui.actions.MadkitAction
	- the API related to multicore features has been a bit refactored
	

----------------------------------------------------------------------------------
------------------------------- MadKit 5.0.0.11 (alpha-11)------------------------
----------------------------------------------------------------------------------

1. Improvements:	
	- The jar file now correctly displays the name of the parameters when using an IDE.
	- more javadoc

2. API new features:
	- madkit.simulation.GenericBehaviorActivator.multicoreExecute() has been introduced.
	  and provides an easy way of using multicore architectures when simulating.
	  Basically it does distribute all the calls on the available processors. 


----------------------------------------------------------------------------------
------------------------------- MadKit 5.0.0.10 (alpha-10)------------------------
----------------------------------------------------------------------------------

1. Improvements:	
	- The log system has been improved again (log files, message formatting, etc.)
	- The i18n system has been reworked

2. API Refactoring:
	- madkit.kernel.GroupIdentifier has been changed to madkit.kernel.Gatekeeper
	- madkit.kernel.AbstractAgent.ReturnCode.TIME_OUT is now TIMEOUT
	
3. API new features:
	- madkit.kernel.Madkit .Option .LevelOption .BooleanOption enumerations have been created
	- the madkit.i18n package has been added
	- madkit.kernel.AbstractAgent.destroyCommunity .destroyGroup .destroyRole mesthods added
	- the madkit.agr package has been added: It defines the default communities, groups and roles of MadKit 5.

4. bug fixes :
	- a network bug which happened on group creation
	- log file creation has been fixed

----------------------------------------------------------------------------------
------------------------------- MadKit 5.0.0.9 (alpha-9)--------------------------
----------------------------------------------------------------------------------

1. Desktop mode available using --desktop
	- Offers a GUI front end with various features for the agents 

2. the log system has been fixed and works better
	- Especially, it could be used in the Agent's constructor

3. GUI tools (madkit.gui) :
	- class Utils renamed GUIToolKit
	- Actions are encapsulated in enumerations and are more easy to create and use.
	- The MKToolKit class could be used to create personalized GUI easily. 
	- New UI components: 
		- MadkitMenu (exit, restart, etc.), MadkitToolbar (used in desktop mode)

4. Building lib jar file :
	- project ant build files can now use a target named create-lib-jar which creates light jar which could be used with the MadKit desktop for instance. 
	
5. jar file could be loaded programmatically or using the Desktop.

6. API :
	- new packages under madkit.gui : actions, toolbars, menus.
	- madkit.kernel.Agent.isDaemon() has been reintroduced
	- madkit.gui.MadkitToolBar class added
	- madkit.gui.menus.MadkitMenu class added
	


----------------------------------------------------------------------------------
------------------------------- MadKit 5.0.0.8 (alpha-8)--------------------------
----------------------------------------------------------------------------------

1. API :
	- madkit.kernel.AgentAddress.getKernelAddress() has been reintroduced
	- madkit.kernel.AbstractAgent.getKernelAddress() has been created
	- madkit.kernel.Agent.broadcastMessageWithRoleAndWaitForReplies() has been created

2. GUI tools :
	- package madkit.kernel.gui has been renamed madkit.gui
	- default GUI mechanism has been completely reworked and  
		is more flexible now. See the MadKit GUI tutorial for more information

3. Logging :
	- Default warning log level value is now "FINE" instead of "INFO"
	
4. Building executable jar file :
	- project ant build files now only need the madkitkernel jar file to work
	
5. Class reloading :
	- It is now possible to reload a class, programmatically, so that new instances reflect compilation changes.
		This is convenient when designing an agent with Eclipse for instance. Just use the reload action in the agent menu. 
	
----------------------------------------------------------------------------------
------------------------------- MadKit 5.0.0.7 (alpha-7)--------------------------
----------------------------------------------------------------------------------

New features :

1. MadKit options for creating log files and directory have been reworked :
	- a boolean option named "createLogFiles" could now be used :
	public static void main(String[] args) {
		String[] argss = {"--createLogFiles","--launchAgents","mypackage.myagentClass;mypackage.myOtherAgentClass"};
		Madkit.main(argss);
	}
	This will produce log files, for each session, in the "logs" directory.
	
	This directory could be changed using the parameterized option "logDirectory" : 
	public static void main(String[] args) {
		String[] argss = {"--logDirectory","myLogDir",--createLogFiles","--launchAgents","mypackage.myagentClass;mypackage.myOtherAgentClass"};
		Madkit.main(argss);
	}

2. Agent default GUI now has various menus (log level, launching).
	These menus can be obtained for any GUI using the madkit.kernel.gui.Utils API

3. The scheduler agent now has a default GUI which could be used to do basic simulation
	controls (run, stop, speed, etc.). So, this GUI is started when using a code such as 
	launchAgent(new myScheduler(),true); 
	
----------------------------------------------------------------------------------
------------------------------- MadKit 5.0.0.6 (alpha-6)--------------------------
----------------------------------------------------------------------------------

New features :

1. The archive file of the distribution has been reworked so that it includes more
material to begin with MadKit

2. The build.xml file now also produces a jnlp file if possible so that project
can be ran online with Java Web Start

----------------------------------------------------------------------------------
------------------------------- MadKit 5.0.0.5 (alpha-5)--------------------------
----------------------------------------------------------------------------------

New features :

1. There is a new class : madkit.kernel.AgentLogger
It extends java.util.logging.Logger in order to define a new log level, namely TALK: This
one is intended to be use when you want that the message does not contain any formatting.

2. More internationalized messages.

3. The kernel jar file is now tagged with its corresponding version so that it will
be more easy to test different versions of the kernel.

----------------------------------------------------------------------------------
------------------------------- MadKit 5 alpha-4 ---------------------------------
----------------------------------------------------------------------------------

first version 5 distributed online on October 2010.
New features are detailed in the javadoc in the Madkit class 

