Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
research:software:effscript [2015/06/08 15:15] – [The implementation] mtoro | research:software:effscript [2015/08/19 14:02] (current) – mtoro | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== EffScript: Practical Effects for Scala ====== | ====== EffScript: Practical Effects for Scala ====== | ||
+ | |||
+ | {{bib> | ||
EffScript is a small domain-specific language for writing tailored effect disciplines for Scala. In addition to being customizable, | EffScript is a small domain-specific language for writing tailored effect disciplines for Scala. In addition to being customizable, | ||
Line 14: | Line 16: | ||
The code and examples can be downloaded {{: | The code and examples can be downloaded {{: | ||
- | Alternatively | + | Alternatively, a virtual box image can be downloaded [[http:// |
+ | Access with username: ubuntu | ||
To run the examples, you need to have installed Scala (http:// | To run the examples, you need to have installed Scala (http:// | ||
Line 55: | Line 58: | ||
bottom: @simpleNoIO | bottom: @simpleNoIO | ||
- | pointcuts: | + | effspecs: |
def views.html.dummy.apply() prod @simpleNoIO | def views.html.dummy.apply() prod @simpleNoIO | ||
def views.html.foo.apply[T]() prod @simpleNoIO | def views.html.foo.apply[T]() prod @simpleNoIO | ||
Line 76: | Line 79: | ||
chmod +x copyCompilerLibs.sh #make sure the file has execution permissions | chmod +x copyCompilerLibs.sh #make sure the file has execution permissions | ||
./ | ./ | ||
- | </ | + | </ |
- Creating the symbolic links manually \\ Alternatively we can create the symbolic links manually. The '' | - Creating the symbolic links manually \\ Alternatively we can create the symbolic links manually. The '' | ||
cd playground | cd playground | ||
Line 184: | Line 187: | ||
====== Step by Step Instructions ====== | ====== Step by Step Instructions ====== | ||
===== Architectural Constraints in Play ===== | ===== Architectural Constraints in Play ===== | ||
- | The effscript | + | The effscript |
To modify the discipline, just edit the '' | To modify the discipline, just edit the '' | ||
Line 368: | Line 371: | ||
sbt "run 2" | sbt "run 2" | ||
</ | </ | ||
+ | |||
+ | ===== Plotting the results ===== | ||
+ | To plot the benchmark results we have provided a zip file with the required files [[http:// | ||
+ | |||
+ | |||
+ | You will need the following python libraries (I recommend install them using " | ||
+ | - numpy | ||
+ | - matplotlib | ||
+ | |||
+ | Place the content of the zip file inside the benchmark folder. Then, edit '' | ||
+ | |||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | n=1 | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | <p style=" | ||
+ | Before running the benchmarks we recommend re packaging the CollsSimple project. The reason for this is that at the moment of the artifact submission, CollsSimple was compiled and packaged using the bit vector version of the compiler plugins. Later we updated the effect compiler plugins but we did not repackage the project.</ | ||
+ | </ | ||
+ | <code bash> | ||
+ | cd CollsSimple | ||
+ | sbt package | ||
+ | </ | ||
+ | |||
+ | To run the benchmarks, at the root of the benchmarks folder run: | ||
+ | <code bash> | ||
+ | ./ | ||
+ | </ | ||
+ | |||
+ | The execution will output the results in '' | ||
+ | |||
+ | To plot the results just run: | ||
+ | <code bash> | ||
+ | python buildGraph.py | ||
+ | </ | ||
+ | It will generate a '' | ||
+ | |||
+ |