SlideShare a Scribd company logo
SubScript: A Process
Algebra extension
progress and perspectives
Anatolii Kmetiuk
Andre van Delft
Plan
• Introduction of the language
• Examples and features available
• Future development
Introduction of the
language
Meet SubScript
• An extension to Scala programming language
• Adds a syntax for process description inspired by
the Algebra of Communicating Processes
• Aims for simplification of event-driven and
concurrent programming
Brief history
• Started as a library (VM), then the syntax was added by a compiler fork - it was difficult to
get started
• Developed into a preprocessor based on parser combinators to specify the syntax. It is
managed by an SBT plugin - easy to get started and play with the syntax
scalaVersion := "2.11.7"
libraryDependencies += "org.subscript-lang" %% "subscript-swing" % "3.0.3"
SubscriptSbt.projectSettings
addSbtPlugin("org.subscript-lang" %% "subscript-sbt-plugin" % "3.0.3")
build.sbt
project/build.sbt
Examples and
features available
Example: Hello World
import subscript.language
import subscript._
import subscript.Predef._
object Main extends SubScriptApplication {
script live = println("Hello") println("World")
}
Short
Verbose import subscript.language
import subscript._
import subscript.Predef._
object Main {
def main(args: Array[String]): Unit = runScript(live)
script live = {:println("Hello"):} {:println("World"):}
}
Operators
• Sequential: space, line break, “;” - identical
• Parallel: &&, &, ||, | - behaviour inspired by Boolean logic
• Choice: “+” operator selects between its operands
• Disruption: “/“ - left hand side disrupted by the right
hand side
• Conditional: if-then-else (boolean script result values as
a predicate), do-then-else (script success status as a
predicate)
Data Flow
• Each script can have a result value, it can be set
with a special syntax
• The result value can be processed using the
dataflow notation
script..
live = msg ~~(message: String)~~> println(message)
msg = ^"Hello World"
Example application: Eye Test
object Main extends SubScriptApplication {
script..
live = initGui
[ new WaitScreen || initData^ ]~~(repos: Repositories)~~>
[ new MainScreen(repos); let repos.close()]
initGui = javax.swing.UIManager.setLookAndFeel:
"com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"
initData = ^{*new DerbyRepo("eyetest-db")*}
}
Example application: Eye Test
class Test extends Frame with FrameProcess {
script..
live = mainTestProcess^ / cancelBtn
mainTestProcess = eyeTest("Right")^^1
eyeTest("Left" )^^2
eyeTest(eyeName: String) = let testArea.font = new Font("Ariel", ..., 20)
let testArea.text = s"Look with $eyeName eye, OK when ready"
let answerField.enabled = false
sleep: 250
Key.Enter + okBtn
doTest( if(eyeName=="Right") previousScoreRight
else previousScoreLeft )^
}
Future development
Perspective directions
• User-computer interactions specification
• Prototyping & implementing the behaviour of consumer electronics:

TV, cooking plates, ...
• Simulation & verification: railroad interlocking
• SubScriptJS: run in web browser; improve NodeJS
• Preprocessor: ScalaParse & Dotty
https://github.com/scala-subscript/koans
Getting Started: Koans
Getting Started: Cheat Sheet
https://www.cheatography.com/anatoliykmetyuk/cheat-sheets/subscript/
Getting Started: Homepage
• GitHub: 

https://github.com/scala-subscript/subscript
• Official website: http://subscript-lang.org/
Thank you for your
attention!

More Related Content

PPTX
Gatling overview
PDF
Load test REST APIs using gatling
PDF
React meets o OCalm
ODP
Performance Test Automation With Gatling
PPTX
Dynamic in C# 4.0
PDF
Javascript internals
DOCX
PPTX
Airflow 101
Gatling overview
Load test REST APIs using gatling
React meets o OCalm
Performance Test Automation With Gatling
Dynamic in C# 4.0
Javascript internals
Airflow 101

What's hot (20)

PPTX
Gatling Tool in Action at Devoxx 2012
PPTX
End to end testing a web application with Clojure
PDF
So you want to write a cloud function
PDF
Concourse ci container based ci for the cloud
PDF
Monitoring Kubernetes with Prometheus
PDF
Three Lessons about Gatling and Microservices
PDF
Reactive cocoa
PDF
Gatling @ Scala.Io 2013
PDF
KFServing and Kubeflow Pipelines
PDF
Powering machine learning workflows with Apache Airflow and Python
PPTX
Introduction to Reactive programming
PPTX
Load Testing with Taurus using Jenkins and AWS
PPTX
Spring batch in action
PDF
Introducing Apache Airflow and how we are using it
PDF
Engineering Efficiency in LINE
PDF
9th docker meetup 2016.07.13
PDF
KVO implementation
PDF
Event driven-arch
PDF
Building your first aplication using Apache Apex
PDF
Orchestrating workflows Apache Airflow on GCP & AWS
Gatling Tool in Action at Devoxx 2012
End to end testing a web application with Clojure
So you want to write a cloud function
Concourse ci container based ci for the cloud
Monitoring Kubernetes with Prometheus
Three Lessons about Gatling and Microservices
Reactive cocoa
Gatling @ Scala.Io 2013
KFServing and Kubeflow Pipelines
Powering machine learning workflows with Apache Airflow and Python
Introduction to Reactive programming
Load Testing with Taurus using Jenkins and AWS
Spring batch in action
Introducing Apache Airflow and how we are using it
Engineering Efficiency in LINE
9th docker meetup 2016.07.13
KVO implementation
Event driven-arch
Building your first aplication using Apache Apex
Orchestrating workflows Apache Airflow on GCP & AWS
Ad

Similar to SubScript: A Process Algebra extension progress and perspectives (20)

ODP
BaseX user-group-talk XML Prague 2013
PPTX
Advance java prasentation
PPTX
concept of server-side JavaScript / JS Framework: NODEJS
ODP
Developing Microservices using Spring - Beginner's Guide
PDF
Java ScriptingJava Scripting: One VM, Many Languages
ODP
Building Server Applications Using Objective C And Gn Ustep
ODP
Building Server Applications Using ObjectiveC And GNUstep
DOC
Ankit Chohan - Java
PPT
basic_java.ppt
PDF
Aggregate Programming in Scala
PDF
Kubernetes for the PHP developer
PDF
JavaScript and jQuery for SharePoint Developers
PDF
Cannibalising The Google App Engine
PPTX
Liferay (DXP) 7 Tech Meetup for Developers
PDF
Java 8 Overview
PPTX
Road to sbt 1.0 paved with server
PDF
(1) c sharp introduction_basics_dot_net
PPTX
Necto 16 training 20 component mode & java script
PPTX
Advance Java Topics (J2EE)
PDF
Apache Samza 1.0 - What's New, What's Next
BaseX user-group-talk XML Prague 2013
Advance java prasentation
concept of server-side JavaScript / JS Framework: NODEJS
Developing Microservices using Spring - Beginner's Guide
Java ScriptingJava Scripting: One VM, Many Languages
Building Server Applications Using Objective C And Gn Ustep
Building Server Applications Using ObjectiveC And GNUstep
Ankit Chohan - Java
basic_java.ppt
Aggregate Programming in Scala
Kubernetes for the PHP developer
JavaScript and jQuery for SharePoint Developers
Cannibalising The Google App Engine
Liferay (DXP) 7 Tech Meetup for Developers
Java 8 Overview
Road to sbt 1.0 paved with server
(1) c sharp introduction_basics_dot_net
Necto 16 training 20 component mode & java script
Advance Java Topics (J2EE)
Apache Samza 1.0 - What's New, What's Next
Ad

Recently uploaded (20)

PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PPTX
Reimagine Home Health with the Power of Agentic AI​
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PPTX
Odoo POS Development Services by CandidRoot Solutions
PDF
System and Network Administration Chapter 2
PPTX
Operating system designcfffgfgggggggvggggggggg
PPTX
L1 - Introduction to python Backend.pptx
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PPTX
Essential Infomation Tech presentation.pptx
PDF
System and Network Administraation Chapter 3
PDF
Nekopoi APK 2025 free lastest update
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Reimagine Home Health with the Power of Agentic AI​
CHAPTER 2 - PM Management and IT Context
Navsoft: AI-Powered Business Solutions & Custom Software Development
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
Design an Analysis of Algorithms I-SECS-1021-03
Adobe Illustrator 28.6 Crack My Vision of Vector Design
2025 Textile ERP Trends: SAP, Odoo & Oracle
Odoo POS Development Services by CandidRoot Solutions
System and Network Administration Chapter 2
Operating system designcfffgfgggggggvggggggggg
L1 - Introduction to python Backend.pptx
How Creative Agencies Leverage Project Management Software.pdf
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
Odoo Companies in India – Driving Business Transformation.pdf
Essential Infomation Tech presentation.pptx
System and Network Administraation Chapter 3
Nekopoi APK 2025 free lastest update
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus

SubScript: A Process Algebra extension progress and perspectives

  • 1. SubScript: A Process Algebra extension progress and perspectives Anatolii Kmetiuk Andre van Delft
  • 2. Plan • Introduction of the language • Examples and features available • Future development
  • 4. Meet SubScript • An extension to Scala programming language • Adds a syntax for process description inspired by the Algebra of Communicating Processes • Aims for simplification of event-driven and concurrent programming
  • 5. Brief history • Started as a library (VM), then the syntax was added by a compiler fork - it was difficult to get started • Developed into a preprocessor based on parser combinators to specify the syntax. It is managed by an SBT plugin - easy to get started and play with the syntax scalaVersion := "2.11.7" libraryDependencies += "org.subscript-lang" %% "subscript-swing" % "3.0.3" SubscriptSbt.projectSettings addSbtPlugin("org.subscript-lang" %% "subscript-sbt-plugin" % "3.0.3") build.sbt project/build.sbt
  • 7. Example: Hello World import subscript.language import subscript._ import subscript.Predef._ object Main extends SubScriptApplication { script live = println("Hello") println("World") } Short Verbose import subscript.language import subscript._ import subscript.Predef._ object Main { def main(args: Array[String]): Unit = runScript(live) script live = {:println("Hello"):} {:println("World"):} }
  • 8. Operators • Sequential: space, line break, “;” - identical • Parallel: &&, &, ||, | - behaviour inspired by Boolean logic • Choice: “+” operator selects between its operands • Disruption: “/“ - left hand side disrupted by the right hand side • Conditional: if-then-else (boolean script result values as a predicate), do-then-else (script success status as a predicate)
  • 9. Data Flow • Each script can have a result value, it can be set with a special syntax • The result value can be processed using the dataflow notation script.. live = msg ~~(message: String)~~> println(message) msg = ^"Hello World"
  • 10. Example application: Eye Test object Main extends SubScriptApplication { script.. live = initGui [ new WaitScreen || initData^ ]~~(repos: Repositories)~~> [ new MainScreen(repos); let repos.close()] initGui = javax.swing.UIManager.setLookAndFeel: "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel" initData = ^{*new DerbyRepo("eyetest-db")*} }
  • 11. Example application: Eye Test class Test extends Frame with FrameProcess { script.. live = mainTestProcess^ / cancelBtn mainTestProcess = eyeTest("Right")^^1 eyeTest("Left" )^^2 eyeTest(eyeName: String) = let testArea.font = new Font("Ariel", ..., 20) let testArea.text = s"Look with $eyeName eye, OK when ready" let answerField.enabled = false sleep: 250 Key.Enter + okBtn doTest( if(eyeName=="Right") previousScoreRight else previousScoreLeft )^ }
  • 13. Perspective directions • User-computer interactions specification • Prototyping & implementing the behaviour of consumer electronics:
 TV, cooking plates, ... • Simulation & verification: railroad interlocking • SubScriptJS: run in web browser; improve NodeJS • Preprocessor: ScalaParse & Dotty
  • 15. Getting Started: Cheat Sheet https://www.cheatography.com/anatoliykmetyuk/cheat-sheets/subscript/
  • 16. Getting Started: Homepage • GitHub: 
 https://github.com/scala-subscript/subscript • Official website: http://subscript-lang.org/
  • 17. Thank you for your attention!