Fork me on GitHub

Changes in 0.14.0

Release date: 2024-11-06.

Major Changes

Number of major changes: 4

Definition of Type Parameters for Events

Generics are a facility of generic programming that were added in several programming languages such as Java. They were designed to extend SARL type system to allow “a type or method to operate on objects of various types while providing compile-time type safety”.

A type parameter is an unqualified identifier. Type parameters are introduced by generic declarations, e.g. of events, classes, interfaces or actions/methods.

A event is generic if it declares one or more type parameters. A generic event declaration defines a set of parameterized types, one for each possible invocation of the type parameter section. All of these parameterized types share the same class at runtime.

Documentation: in official documentation

Change details: 1, 2, 3, 4, 5, 6

Transition from Java 17 to Java 21

Since the beginning of its life, SARL supports version 8 (before 2021) and 17 (after 2021) of Java. However, several modules from Eclipse are now requiring the version 21 of Java. Consequently, the SARL development team as decided in 2024 to apply to SARL a transition from Java 17 to Java 21.

Version 0.14.0 requires Java 21 as a minimum requirement.

New Product for MacOS Silicon

From version 0.14.0 of SARL, a new OS architecture is officially supported: MacOS Silicon on ARM architecture. In additional to the previous products for Linux, Windows and MacOS on Intel, the product for MacOS on ARM (Silicon) is now available for download. [more details]

Make easier the scoping of emitted events

From the SARL API, it is possible to scope the receivers of SARL events, with a guard associated to the emit function. For example, the following code emit the event MyEvent only to the agents that have there identifier equals to the identifier value.

emit(new MyEvent) [it.UUID == value]

To make the scope coding more easy, operators have been introduction for comparing Address (the argument of the scope) to UUID value, and for comparing Address to SpaceID. Therefore the previous code could be simplified to:

emit(new MyEvent) [it == value]

Detailed Changes

1. SARL Language

1.1. SARL Language and Grammar

1.2. SARL Validator

1.3. Java Model Inferrer

2. SARL Development Toolkit (SDK)

3. SARL User Interface

3.1. Eclipse Products

4. Janus Run-time Environment

5. Command-Line Tools

5.1. janus

6. SARL Documentation

6.1. Documentation of the SARL SDK

6.2. Documentation of tutorials

7. Tools for SARL Contributors

8. Changes in the Previous Versions