Fractal - FPath and FScript

FPath and FScript

FScript is a Domain-Specific Language (DSL) to program dynamic reconfigurations of Fractal architectures. FScript includes the FPath notation to navigate inside Fractal architectures, which can be used by itself as a query language for Fractal.

The FPath notation is inspired by the XPath language for XML navigation and query. If you have some notions of XPath, learning FPath should be easy. FPath makes it trivial to navigate inside even large and complex Fractal architecture with simple and readable queries, where the raw Fractal APIs would requires pages of code.

FScript itself can be thought of as a scripting language dedicated to Fractal components architectural reconfigurations. It builds upon FPath but adds the possibility to define reconfiguration scripts to modify the architecture of a Fractal application. Like FPath, FScript is much more concise the direct API usage. In addition, the FScript interpreter can provide transactional support for architectural reconfigurations by seamlessly integrating with an extended version of Julia (this work is done by Marc Léger at France Télécom).

News

2008-02-28: FScript 2.0 Released

FScript version 2.0 is an almost complete rewrite from version 1.0, with many new features and changes.

  • Languages changes in FPath

    • FPath now (finally!) supports XPath-style shortcuts for common navigation axes.
    • The node-set manipulation functions union(), intersection() and difference() now have direct syntactic support as infix operators |, & and \.
    • The way FPath sees collection interfaces has changed in an incompatible way: collection interfaces are now explicitly represented as nodes even when they have no actual instance.
  • Languages changes in FScript

    • Because of the new shortcuts now supported in FScript, the comments syntax has been changed: // and /*, which were use to start C/C++ style comments before, are now valid FPath syntax. The new comments start with -- (double-dash) and go to the end of the line.
  • Implementation and API changes

    • FScript 2.0 is now implemented as a set of Fractal components. The new architecture is much more modular and extensible.
    • The client-side APIs have changed. The concepts are mostly the same, but the details differ. See the Java APIs tutorial for the details.
    • Most of the implementation is now completely independent on the details of Fractal, and only deal with general concepts of nodes, node properties (e.g. a node's name) and axes to connect nodes. This means both languages can be retargeted to toher component models relatively easily.
    • FScript 2.0 does not implement transactional semantics by itself anymore. Instead, it can connect to an extended version of Julia which provides a much more complete and robust support for reliable ACID reconfigurations. This work is done by Marc Léger at France Télécom, and is independent of FScript, but is not publicly available for now.
    • The new architecture was designed to support various levels of static and dynamic analysis of FScript programs, to ensure the reliability and efficiency of the reconfigurations. As of version 2.0, only the overall structure of the different phases is in place, and not much actual analysis is implemented. These analyses are currently in active research, and the plan is to integrate them in future 2.x releases with minimal changes to the overall architecture.
  • Console application changes

    • The console now supports automatic completion on axes names and global variables using the TAB key.
    • Better result formatting.
    • Several special commands have been renamed, and most have been improved.
    • New special commands:

      • :help provides integrated help on special commands. Invoke as :help cmd (e.g. :help load).
      • :get_interpreter varName can be used to obtain a reference (in variable varName) to the underlying FScript interpreter used by the console (a Fractal component). Note that directly reconfiguring this component from the console is very hazardous and can easily deadlock the console.
      • :set_interpreter $varName can be used to change the FScript interpreter used by the console.
  • New modules

    • A new module named fscript-jade has been added. It provides a slightly extended version of FScript to support features specific to the Jade platform (now part of Jasmine)
  • Missing or deprecated features

    Features from version 1.0 which have not yet been re-implemented in version 2.0.

    • The adl-new() (formerly new()) action used to support a variable number of arguments to specify instantiation context parameters. The FScript 2.0 runtime does not currently support varargs, so adl-new() can only be used in its single argument form (and ADL definition name) at the moment.
    • The new_component() action has not yet been ported to 2.0.
    • Some of the convenience methods provided by the FScriptInterpreter API (for example evaluateFrom()) currently do not have any equivalent in the new APIs.

2008-01-25: FPath and FScript in the TCS Zoo

FPath and FScript have been added to the TCS Zoo, as use cases for the AMMA (ATLAS Model Management Architecture) technologies.

The use cases include syntax definitions for both languages (using TCS), and the corresponding meta-model (in KM3). AMMA technologies can, among other things, generate parsers and Eclipse plugins with structured editors for the languages with these high-level definitions (see the screenshots on the TCS Zoo page).

This work was done by Frédéric Jouault.

Obtaining FScript

Source code

FScript is available in the fscript module of the Fractal project's Subversion repository:

svn co svn://forge.objectweb.org/svnroot/fractal/trunk/fscript

To get a specific release, for example 2.0:

svn co svn://forge.objectweb.org/svnroot/fractal/tags/fscript-2.0

Maven artifacts

Like most Fractal modules, FScript is managed using Maven. The Maven coordinates are the following:

<!-- The main FScript module -->
<dependency>
  <groupId>org.objectweb.fractal.fscript</groupId>
  <artifactId>fscript</artifactId>
  <version>2.0</version>
</dependency>
<!-- The console application (optional) -->
<dependency>
  <groupId>org.objectweb.fractal.fscript</groupId>
  <artifactId>fscript-console</artifactId>
  <version>2.0</version>
</dependency>
<!-- Jade-specific extensions (optional) -->
<dependency>
  <groupId>org.objectweb.fractal.fscript</groupId>
  <artifactId>fscript-console</artifactId>
  <version>2.0</version>
</dependency>

Documentation

Currently, the documentation is only available as part of the Maven-built site, and is not deployed on http://fractal.objectweb.org/. Until more convenient packaging is deployed, the best way to obtain FScript 2.0 documentation is the following:

  • Checkout the main fscript module:

    % svn co svn://forge.objectweb.org/svnroot/fractal/tags/fscript-2.0

    or

    % svn co svn://forge.objectweb.org/svnroot/fractal/trunk/fscript

    to get the latest development version.

  • Build and install the FScript website:

    % cd fscript
    % mvn site
  • Browse the result at target/site/index.html. You will find several tutorials for FPath, FScript and the Java APIs in the Documentation section.

Mailing list

Questions, comments, ideas, etc. related to Fractal can be posted on the Fractal mailing list (preferably prefixing your email subject with [fscript]).

License

Both FPath and FScript are Free Software released under the Lesser General Public License version 2.0. See the source files for the copyright details.

Copyright © 1999-2005, ObjectWeb Consortium | contact | webmaster | Last modified at 2012-12-03 09:57 PM