Fork me on GitHub

Changes in 0.11.0

Release date: 2020-05-31.

1. Major Changes

Number of major changes: 4.

1.1. Janus version 3

Janus is the official SARL run-time environment (aka. SARL virtual machine). This release of SARL provides a MAJOR NEW IMPLEMENTATION of Janus with its version 3.

In the past, the change from version 1 to version 2 was due to a total re-implementation of Janus in order to follow and support the SARL metamodel. This time, Version 3 of Janus is a total re-implementation with the SARL language, i.e. we have written the code with SARL not anymore with Java.

The major benefits of the new implementation with the SARL language are:

In addition to the total re-implementation with SARL language, the software architecture of Janus was re-thinking and optimized in order to improve the global run-time performances of the SRE, and to be more modular in order to extend modules of Janus with new third-party modules (based on Bootique modules).

1.2. New types of participants in spaces

From the SARL metamodel, spaces are entities in which the agents are able to interact or communicate. The agents that are part of a space are named participants.

From our experience during the past years, different types of participants may be involved into a space. First, the agents constitute the largest part of these participants. Second, external software, such as an graphical user interface (GUI), may have to listen for events or emit them into a space in order to setup an interaction with the agents.

Nevertheless, having only a single type of participant defined causes issues into the SARL run-time environment (SRE) when it is time to decide if a space should be destroyed or not. Indeed, the SRE is in charge of destroying the spaces when they are not used anymore (usually when there is no more agent inside).

A problem occurs when all the agents have leaved the space, and only GUI remain. In this case, the SRE was not able to detect this case and to destroy the space. This issue could be seen because the SRE never stops to run, even when all the agents were killed.

In order to solve this issue, two types of participants are defined:

Whatever the type of participant, they have the same level of abilities for using the space. For example, in the case of an event space, the strong and weak participants have all the abilities to emit events, and receive them.

1.3. New agent spawning API

The spawning functions of the agents have encountered a big change: they are not replying anymore the unique identifier of the just spawned agents. Now, the spawning functions return void.

This change was forced by the need to execute in parallel the different spawning processes when multiple agents are spawned at the same time. In this case, it is almost impossible to retreive the unique identifiers of the agents before returning from the spawning function.

In order to use the unique identifier of the just spawned agent after the call to the spawning function, the new guideline is to generate the identifier, give it to the spawning function, and use it after, as illustrated by the following example:

var agentIdentifier = UUID::randomUUID
typeof(MyAgentType).spawnInContextWithID(defaultContext, agentIdentifier)
doSomething(agentIdentifier)

1.4. New tool for SARL contributors: an Eclipse DSL with embedded SARL

In past, it was not so easy to install and set-up an complete and working development environment for the SARL contributors. It was due to the usage of different technologies such as Eclipse DSL, Java, Maven and Xtext.

In order to have a ready-to-use environment, as much as possible, a specific Eclipse product is now available into the SARL project: sarl-dsl. This new product includes:

2. Detailed Changes

2.1. SARL Language

2.1.1. SARL Language Grammar

2.1.2. SARL Core Library

2.2. SARL Development Toolkit (SDK)

2.2.1 Core Library

2.2.2 Utility Library

2.3. SARL User Interface

2.3.1. UI Components

2.3.2. Eclipse Product

2.3.2.1. Launching Configurations
2.3.2.2. UI Components
2.3.2.3. Wizards
2.3.2.4. Maven Integration in Eclipse (m2e)

2.4. External Contributions to SARL

2.4.1. Examples

2.4.2. Experience Index Plugin

2.5. Janus Run-time Environment

2.5.1. General

2.5.2. Event Spaces

2.5.3. Events

2.5.4. Tasks

2.5.5. Skills

2.5.6. Agent Lifecycle

2.5.7. Probe Service

2.5.8. Logging Service

2.5.9. Infrastructure

2.6. Maven Tools

2.6.1. SARL Batch Compiler

2.6.2. Maven SARL Compiler

2.6.3. JavaFX Module

2.6.4. Bootique Utilities

2.7. Command-Line Tools

2.7.1 sarlc

2.7.2 sarldoc

2.7.3 VIM Syntax Highlighting

2.8. SARL Documentation

2.8.1. Documentation of the SARL Language

2.8.2. Documentation of the SARL Core Library

2.8.3. Documentation of the Janus SRE

2.8.4. Documentation Generators

2.9. Tools for SARL Contributors

2.9.1. Coding Convention and Changes

2.9.2. New Eclipse DSL with embedded SARL

2.9.3. Regular SARL Eclipse Product

2.9.4. Generic User Interface

2.9.5. Tests

2.9.6. Continuous Integration

2.9.7. Dependencies

3. Changes in the Previous Versions