FlowR: Aspect oriented programming for information flow control in ruby

Thomas F.J.M. Pasquier, Jean Bacon, Brian Shand

Research output: Contribution to conferenceConference Paperpeer-review

11 Citations (Scopus)


This paper reports on our experience with providing Information Flow Control (IFC) as a library. Our aim was to support the use of an unmodified Platform as a Service (PaaS) cloud infrastructure by IFC-aware web applications. We discuss how Aspect Oriented Programming (AOP) overcomes the limitations of RubyTrack, our first approach. Although use of AOP has been mentioned as a possibility in past IFC literature we believe this paper to be the first illustration of how such an implementation can be attempted. We discuss how we built FlowR (Information Flow Control for Ruby), a library extending Ruby to provide IFC primitives using AOP via the Aquarium open source library. Previous attempts at providing IFC as a language extension required either modification of an interpreter or significant code rewriting. FlowR provides a strong separation between functional implementation and security constraints which supports easier development and maintenance; we illustrate with practical examples. In addition, we provide new primitives to describe IFC constraints on objects, classes and methods that, to our knowledge, are not present in related work and take full advantage of an object oriented language (OO language). The experience reported here makes us confident that the techniques we use for Ruby can be applied to provide IFC for any Object Oriented Program (OOP) whose implementation language has an AOP library.

Original languageEnglish
Number of pages12
Publication statusPublished - 1 Jan 2014
Event13th International Conference on Modularity, MODULARITY 2014 (Formerly AOSD) - Lugano, Switzerland
Duration: 22 Apr 201426 Apr 2014


Conference13th International Conference on Modularity, MODULARITY 2014 (Formerly AOSD)


  • Aspect Oriented Programming
  • Information Flow Control
  • Security


Dive into the research topics of 'FlowR: Aspect oriented programming for information flow control in ruby'. Together they form a unique fingerprint.

Cite this