This is an old revision of the document!
AspectScript is an extension JavaScript for Aspect-Oriented Software Development (AOSD) that is currently working over Mozilla Firefox Browser. This extension is an aspect language, which integrates (with) main !JavaScript features such as first-class and higher-order functions, dynamic typing, and prototyped-based programming. AspectScript is based on the pointcut-advice mechanism and considers the followings hot state-of-the-art AOP features:
* An extensible join model: The join point model is similar to the one found in [http://en.wikipedia.org/wiki/AspectJ AspectJ].However, it is possible to extend this
join point model to identify other points of interest through customizable join points, similar to [http://www.cs.iastate.edu/~ptolemy/ Ptolemy] .
* 'Higher-Order Aspects': Like [http://www.cs.usask.ca/~cjd032/downloads/AspectScheme/ AspectScheme], !AspectScript aspects are first-class values, which are pairs of pointcut-advice. Pointcuts and advices are !JavaScript functions, which are first-class values as well. This feature allows programmers to use the full power of higher-order programming to define and manipulate aspects.
* 'Aspects in Order': By default !AspectScript, the base code is executed in base level (level 0) and aspects (pointcuts and advices) are executing in a high level (level 1), which observe the the base level. However, !AspectScript permits to modify execution levels of base code and aspects using the semantics [http://www.pleiad.cl/research/scope#higher-order_aspects_in_order higher-order aspects in Order], that is to say, developers can choose in what level the base code is executed and what levels aspects see.
* 'Dynamic deployment of aspect with scoping strategies': Aspects of !AspectScript are dynamically deployed like in [http://caesarj.org/ CaesarJ] and !AspectScheme. In addition, the
deployment of aspects can be managed using expressive [http://www.pleiad.cl/research/scope#expressive_scoping_of_dynamically-deployed_aspects scoping strategies] .
* 'Control of aspect reentrancy': As in most aspect languages, it is possible to have aspect reentrancy problems. As a result, !AspectScript allows programmers to [http://www.pleiad.cl/research/scope#controlling_aspect_reentrancy control aspect reentrancy] in a fine-grained manner.
Despite !AspectScript features, this aspect language has a scalable easiness of use. For instance, we just need to define an aspect that shows a message before that function 'foo' is called, we need to write down:
}
Do you need more examples? You can find [wiki:examples here].
!AspectScript can download and install from [wiki:here download]
We do not have a tutorial yet, we think that this [wiki:paper technical report] can be useful for this purpose.