Changes in 0.7.0
Release date: 2018-02-22.
1. SARL Language
1.1. SARL Language Grammar
- Add the
continue
keyword. (details)
- The
continue
keyword enables to break the execution flow for continuing at the begining of the most-internal loop’s block.
- Add number method extensions that are implicitly imported. (details)
- This extension enables to use primitive numbers and object-oriented numbers (
Integer
, etc.) within the same expression without explicit cast.
- Add implicit casting functions for numbers. (details)
- This extension adds autoboxing.
- Autoboxing is the automatic conversion that the SARL compiler makes between the primitive types and their corresponding object wrapper classes. For example, converting an
int
to an Integer
, a double
to a Double
, and so on. If the conversion goes the other way, this is called unboxing.
- Fixing the operator precedence. (details)
- Operator precedence that is implemented within the Xbase library does not corresponds to the expected definition of the operator precedence for the SARL language. For example, the poxer and uniry minus operators have not an obvious precedence within Xbase.
- The grammar of SARL is fixed for applying an obvious definition of the operator precedence, until Xbase team has accepted the provided patch.
- Apply JLS 8.4.8. (details)
- Xtext library partly implements the JLS 8.4.8, related to inheritance mechanisms. SARL compiler includes a patch until Xtext is fixed.
1.2. SARL Validator
- Add detection of the potential field synchronization problems. (details)
- The SARL validator analyzes the usages of the declared fields.
- When a field has read and write accesses outside any synchronized block, the validator outputs a warning.
- A field is not detected as used when it is assigned. (commit 1, commit 2)
- Detecting read and write accesses on fields and local variables is not properly defiend within the Xbase library. A pull request is under evaluation regarding this point into the Xtext project.
- A collection of tests have been added in SARL in order to ensure that the “unused field” and “unused local variable” warnings are output correctly by the SARL compiler.
- Avoid the invalid report of a dupliciate interface or capacity implementation. (details)
- Assuming a capacity C is implemented by an abstract skill A, when a skill B extends A and implements C, the SARL compiler before to the version 0.7.0 generates the error “duplicate capacity implementation”.
- This behavior should not be an error but a warning, as it is done by the Java compiler.
1.3. Java Model Inferrer
- Cloning of type references with full type parameter support. (details)
- The cloning function of the type references did not clone the generic type’s parameters. In this release the generic type’s parameters are cloned.
- Do not create shadow variables for
break
and continue
keywords. (details)
- When generating the Java code, the
break
and continue
keywords must not generate local hidden/shadow variables, because these keywords do not apply any computation.
- Avoid class cast exception in SARLJvmModelAssociations for source elements. (details)
- Output the Ecore data structure when one Ecore element was not found. (details)
- Move early-exit detector within an utility class. (details)
1.4. SARL Core Library
- Programmatic Bootstrap:
- Reminder: The programmatic bootstrap is the part of the SARL API that enables to start agents from a Java application.
- The bootstrap is moved from the SDK to the core language library. (details)
- Enable basic configuration of the SARL bootstrap (offline, etc.) (details)
- Add
startWithoutAgent()
function to the SRE bootstrap utility class. (details)
- Add @DefaultSkill annotation. (details)
- This annotation enables to specify a default skill for a capacity. It could be attached to a capacity in order to give to the SRE the opportunity to create a skill instance of the specified type when there is no explicit mapping defined from the capacity to a skill.
- Fixing the equality tests between
Address
and SpaceID
. (details)
- Testing the equality between addresses and space identifiers have not an expected result.
- Basically, the previous implementation uses
getClass() != obj.getClass()
for the equality test. This test is replaced by !(obj instanceof Address)
or !(obj instanceof SpaceID)
.
- Enable the access to the
getCaller()
function from a skill. (details)
- This function allows to retreive the caller of a skill’s function inside the skill’s code.
- Cleaning the
MapExtensions
for submission to Xtext. (details)
- Change the private API for exhibiting a concurrent map of skills. (details)
- The private API of a skill replied a concurrent map in order to let the caller to apply synchronized accesses on the map content.
- Add
org.eclipse.xtend.lib
to the standard SARL Libraries. (details)
- This inclusions avoids to have linkage errors when using the dynamic annotations on classes.
- Fixing resource names for English version of the SARL libraries (details)
- Enable an empty line before multiline comments. (details)
1.6. SARL Batch Compiler
- Update the messages given by the SARL batch compiler. (details)
- Internal Xtext info messages are logged at debug level within the batch compiler. (details)
2.1. New Features
- Add
io.sarl.javafx
library into the SDK. (details)
- This library provides the basic implementation of a JavaFX-based application that is able to launch SARL agents.
2.2. Logging Capacity
- Add more functions within Logging capacity. (details)
- The new functions have a formal parameter of type
Supplier<String>
. They enables to log messages that are build by a supplier, or a lambda expression.
2.3. Lifecycle Capacity
- Update the API documentation about the parallel execution behavior of the spawning functions. (details)
2.4. ExternalContextAccess Capacity
- Add
getUniverseContext
within ExternalContextAccess
. (details)
- This function enables the agent to retrieve the Universe context, i.e. the root context for all the agents.
2.5. Events
2.6. AgentTask
- The function
setName
of in AgentTask
is now private API. (details)
2.7. Deprecations
- Deprecation of
agentID
field within AgentKilled
. (details)
- This field is replaced by the field
agentIdentifiers
.
- Deprecation of
getSpaceId
in Address
. (details)
- This function is replaced by the function
getSpaceID
.
- Deprecation of the event scoping implementations. (details)
- The definition of a event scoping function with a lambda expression is possible. The
Scopes
utility class provides implementation that are deprecated, and should be replaced by lambda expressions.
3. SARL User Interface
3.1. UI Components
- Remove the imports from the outline to mimic the Java outline component. (details)
- Add “Correct indentation” menu item. (details)
- The “correct indentation” tools is based on the SARL formatter. The associated shortcut is
Ctrl+i
.
3.2. Internal UI Implementation
- Add Eclipse extension for detecting SARL files faster. (details)
- Xtext infrastructure provides this extension to DSL languages in order to obtain a faster detection of a DSL file before opening it. This extension is used for detecting SARL files.
- Use Eclipse platform-uri syntax in image loader. (details)
- The image loader, which is provided by Xtext API supports the specification of a platform-uri for loading an image from another plugin. This update is pull requested to Xtext.
- Add preference accessor for SARL source viewer. (details)
3.3. Eclipse Product
3.3.1. Launching Configurations
- Add SARL application launch configuration. (commit 1, commit 2, commit 3, commit 4, commit 5)
- Until now, launching a SARL program means launching a single agent. The classpath of the application is dynamically updated for replacing the SARL libraries by the SRE’s libraries (for example the Janus framework).
- In several cases, a standard application should be launched before the first agent is created. Then, this application is in charge of launching the agents with the programmatic bootstrap. A standard Java application cannot be used because the need of the dynamic replacement of the SARL libraries by the SRE’s libraries is still present. A new type of launching configuration is introduced: SARL application launching configuration (the previous type is now named SARL agent launching configuration).
- Fixing issue when selecting a project SRE setting in launch configuration. (details)
- Add a provider of SRE, which is based on the defined SRE bootstraps as JRE services. (details)
3.3.2. Preferences
- Add preference page for the SARL editors. (details)
3.3.3. UI Components
- Move the “Open Type Hierarchy” item within the popup menu. (commit 1, commit 2)
- Add the SRE classpath entries to the “Run as SARL application” launch configuration. (details)
- Attach
F4
shortcut to the SARL open type hierarchy command. (details)
- New splash screen with date. (details)
3.3.4. Internal Eclipse Implementation
- Fixing the invalid type of library for SARL Libraries. (details)
- The SARL libraries were defined as system libraries. This choice avoids to detect them within the classpath in order to be replaced by the SRE’s libraries.
- Rename
StandardProjectSREProvider
to EclipseIDEProjectSREProvider
. (details)
- Move implementation from
getName
to getNameNoDefault
in ISREInstall
implementation. (details)
- Remove standalone flag in
ISREInstall
. (details)
4. External Contributions to SARL
4.1. Examples
- Add template for a SARL application using JavaFX. (details)
- An example of SARL code is added for providing a template of a JavaFX-based application to the SARL developers.
- Reimplement the Fireworks example for using the new SARL-JavaFX API and the SARL bootstrap. (details)
- Reimplement the Sierpinski fractals example for using the new SARL-JavaFX API and the SARL bootstrap. (details)
5. Janus Run-time Environment
- Multiple spawned agents have different identifiers. (details)
- Spawning of multiple agents had a buggy assignment of the agent identifier to the spawned agents.
This change ensures that each agent has a unique identifier.
- Force the execution of the rejected tasks. (details)
- In several cases, the Java executor service is not able to assign a task to a thread. It is then rejected.
- In this case, the Janus framework ensures that the task is run by using the thread of the task’s submitted.
- It partly introduces a synchronous execution of the tasks but ensures that all tasks are run by the Janus framework.
- Move the Eclipse integration of Janus into a separate plugin. (details)
- Redefine the logging system for enabling agents to change the logging level. (details)
- Fixing the invalid update of the class path in the Boot. (details)
- Janus command-line shows logo on Unix platforms. (details)
- Fixing the buggy definition of the Janus SRE. (details)
- Show the Janus version when it crashes at start-up. (details)
- Remove reference to Arakhne libraries within sarl-maven-plugin. (details)
- Enable unit tests for the maven-sarl-plugin. (details)
- Update messages on the SARL maven plugin. (details)
- Internal Xtext messages are logged into the Maven CLI compiler’s logger. (details)
7. SARL Documentation
7.1. Documentation of the SARL Language
- Add the documentation on active annotations. (details)
- Validate the documented operator precedence. (commit 1, commit 2)
- Add the documentation of variables’ types. (details)
- Add the missed documentation on the numbers’ extension methods. (details)
7.2. Documentation of the SARL Core Library
- Add documentation on the creation of function-caller-aware space. (details)
- Add documentation on the SRE’s bootstrap. (details)
- Add
@privateapi
within the API documentation. (details)
- This Javadoc annotation marks the annoted element as part of the private API of the SDK.
- Use Java code when explaining the API access from Java. (details)
- Fixing the Logging documentation. (details)
- Fixing the invalid prototype of
spawnInContext
within the documentation. (details)
7.3. FAQ
- Fixing invalid FAQ text on the SARL syntax. (details)
7.4. Documentation for SRE
- Provide explanations on the –jar option for janus. (details)
7.5. Documentation for SARL Contributors
- Add explanation for using the SARL release script. (details)
7.6. Documentation Generators
- Fail when a referenced file is not found into the documentation folder. (details)
- Create a doclet for creating an API documentation with SARL syntax inside. (details)
- Remove references to deprecated classes from Java doclet. (details)
- Prepare for the addition of hyperlinks for generated operation names. (details)
- Remove hidden features from the API documentation. (details)
8.1. Github
8.2. Google Drive
9.1.1. Dependencies
- Upgrade to Xtext 2.13.0. (details)
- Upgrade to checkstyle 8.7. (details)
- Upgrade to AFC lib 14.0. (details)
- Upgrade the Eclipse JDT plugins. (details)
- Downgrade the Maven Java compiler. (details)
- The recent Maven Java Compiler uses a part of the SDK from Java 9. It is incompatible with the Java 8 compiler, and consequently cannot be used for compiling SARL.
- Upgrade to Maven 3.5.2 (details)
- Upgrade the Travis configuration for using Xcode 8.3. (details)
9.1.2. General Changes
- Replace the attributesToString() function by the Xbase ToStringBuilder. (details)
- Do not force to have “T” at the end of the generic type parameters’ names. (details)
- Removing void TODOs and create issues for the remainings. (details)
- Add description of a contributor. (details)
- Reorganize the package structure for the formatter’s tests. (details)
- Update the error message of
assertContains()
to output all the actual and expected elements. (details)
- Downgrade Launch4j version because the latest version has invalid configuration for MacOS. (details)
- Use the StandardLanguage configuration. (details)
- Explicit declaration of the formatter fragment for binding SARLFormatter. (details)
- Fixing invalid plugin’s exported folders. (details)
- Fixing the documentation for the VIM’s formatter. (details)
10. Changes in the Previous Versions