SePi is a concurrent, message-passing programming language based on the pi-calculus. The language features synchronous, bi-directional channel-based communication.
Programs use primitives to send and receive messages as well as offer and select choices. Channel interactions are statically verified against session types describing the kind and order of messages exchanged, as well as the number of processes that may share a channel.
In order to facilitate a more precise control of program properties, SePi includes assume and assert primitives at the process level and refinements at the type level. Refinements are treated linearly, allowing a finer, resource-oriented use of predicates: each assumption made supports exactly one an assertion.
- A concurrent programming language with refined session types , In Behavioural Types , p. 33–42 , 2013 ,
- A concurrent programming language with session types , Master’s thesis , University of Lisbon , 2013
- Fundamentals of Session Types , Information and Computation , Elsevier , 217:52-70 , 2012 ,
- Linearly Refined Session Types , In Linearity’11 , volume 101 , Electronic Proceedings in Theoretical Computer Science , p. 38–49 , 2012
Download and Installation
Using the Eclipse plugin
An Eclipse IDE for Java and DSL Developers. Browse the list of packages down, looking for ‘Eclipse IDE for Java and DSL Developers’.
Installing the Eclipse SePi Plugin
- In Eclipse go to the Help menu → Install New Software…
- Type in the update site
http://download.gloss.di.fc.ul.pt/sepi/update-site/in the work with field and press Enter;
- Select SePi SDK Feature;
- Press the Next button and follow the installation instructions. Also, trust us and accept the unsigned plugin;
- Restart Eclipse. The installation is now complete.
My first SePi Eclipse project
- Create a new project and a new file with extension
- The editor asks whether you want to add the Xtext nature to your project. Select yes;
- Write your program (some examples);
- In the editor, use left button → Interpret to run your program.
Running SePi in the command line
Running your program