Skip to main content

Vats: A Safe, Reactive Storage Abstraction

Part of the Lecture Notes in Computer Science book series (LNTCS,volume 9660)


The rise of multicore computers has hastened the advent of multifarious abstractions to facilitate the construction of parallel programs. This paper presents another: the vat. A vat is like a variable, but it has various actions attached to it that can block, transform and react to changes to the vat. Vats can be combined together in various ways, linking the behaviours of the vats together, resulting in various synchronisation mechanisms. Vats are powerful enough to encode (part of) many existing mechanisms including promises, condition variables, LVars and reactive programming.


  • Post Action
  • Transformation Action
  • Dynamic Semantic
  • Reactive Programming
  • Reduction Semantic

These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Partly funded by the EU project FP7-612985 UpScale: From Inherent Concurrency to Massive Parallelism through Type-based Optimisations.

This is a preview of subscription content, access via your institution.

Buying options

USD   29.95
Price excludes VAT (USA)
  • DOI: 10.1007/978-3-319-30734-3_11
  • Chapter length: 15 pages
  • Instant PDF download
  • Readable on all devices
  • Own it forever
  • Exclusive offer for individuals only
  • Tax calculation will be finalised during checkout
USD   59.99
Price excludes VAT (USA)
  • ISBN: 978-3-319-30734-3
  • Instant PDF download
  • Readable on all devices
  • Own it forever
  • Exclusive offer for individuals only
  • Tax calculation will be finalised during checkout
Softcover Book
USD   79.99
Price excludes VAT (USA)
Fig. 1.
Fig. 2.
Fig. 3.


  1. 1.

    For performance, non-blocking synchronous reads and write can be allowed. If used in a multi-threaded setting, these are subject to data races and may observe inconsistent or uninitialised states of vats. Synchronous reads and writes have the following types:

    • sread \({:}{:}\) \(\mathtt {Vat}\ \tau \rightarrow \tau \)

    • swrite \({:}{:}\) \(\mathtt {Vat}\ \tau \rightarrow \tau \rightarrow \texttt {Bool}\) — result indicates whether write succeeded.

  2. 2.

    A better result type for this function would be \(\mathtt {ReadVat}\ \tau \), corresponding to just the read interface of a vat.

  3. 3.

    Vats were originally called Franks.


  1. Arvind, Nikhil, R.S., Pingali, K.: I-structures: data structures for parallel computing. ACM Trans. Program. Lang. Syst. 11(4), 598–632 (1989)

    CrossRef  Google Scholar 

  2. Baker Jr., H.G., Hewitt, C.: The incremental garbage collection of processes. In: Proceedings of the 1977 Symposium on Artificial Intelligence and Programming Languages, pp. 55–59. ACM, New York (1977)

    Google Scholar 

  3. Barabási, A.-L., Albert, R.: Emergence of scaling in random networks. Science 286(5439), 509–512 (1999)

    MathSciNet  CrossRef  MATH  Google Scholar 

  4. Brandauer, S., et al.: Parallel objects for multicores: a glimpse at the parallel language encore. In: Bernardo, M., Johnsen, E.B. (eds.) SFM 2015. LNCS, vol. 9104, pp. 1–56. Springer, Heidelberg (2015)

    Google Scholar 

  5. de Boer, F.S., Clarke, D., Johnsen, E.B.: A complete guide to the future. In: De Nicola, R. (ed.) ESOP 2007. LNCS, vol. 4421, pp. 316–330. Springer, Heidelberg (2007)

    CrossRef  Google Scholar 

  6. Department of Defense. Reference Manual for the Ada Programming Language, ANSI/MIL-STD-1815A (1983)

    Google Scholar 

  7. Dolby, J., Hammer, C., Marino, D., Tip, F., Vaziri, M., Vitek, J.: A data-centric approach to synchronization. ACM Trans. Program. Lang. Syst. 34(1), 4:1–4:48 (2012)

    CrossRef  Google Scholar 

  8. Felleisen, M., Hieb, R.: The revised report on the syntactic theories of sequential control and state. Theor. Comput. Sci. 103(2), 235–271 (1992)

    MathSciNet  CrossRef  MATH  Google Scholar 

  9. Nathan Foster, J., Greenwald, M.B., Moore, J.T., Pierce, B.C., Schmitt, A.: Combinators for bidirectional tree transformations: a linguistic approach to the view-update problem. ACM Trans. Program. Lang. Syst. 29(3), 17 (2007)

    CrossRef  Google Scholar 

  10. Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-oriented Software. Addison-Wesley Longman Publishing Co. Inc., Boston (1995)

    MATH  Google Scholar 

  11. Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C., Loingtier, J.-M., Irwin, J.: Aspect-oriented programming. In: Akşit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 220–242. Springer, Heidelberg (1997)

    Google Scholar 

  12. Kuper, L., Turon, A., Krishnaswami, N.R., Newton, R.R.: Freeze after writing: quasi-deterministic parallel programming with lvars. In: Jagannathan, S., Sewell, P. (eds.) The 41st Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2014, San Diego, CA, USA, 20–21 January 2014, pp. 257–270. ACM (2014)

    Google Scholar 

  13. Liskov, B.H., Shrira, L.: Promises: linguistic support for efficient asynchronous procedure calls in distributed systems. In: Wise, D.S. (ed.) Proceedings of the SIGPLAN Conference on Programming Lanugage Design and Implementation (PLDI 1988), Atlanta, GE, USA, pp. 260–267. ACM, June 1988

    Google Scholar 

  14. Marino, D., Hammer, C., Dolby, J., Vaziri, M., Tip, F., Vitek, J.: Detecting deadlock in programs with data-centric synchronization. In: Proceedings of the 2013 International Conference on Software Engineering, ICSE 2013, Piscataway, NJ, USA, pp. 322–331. IEEE Press (2013)

    Google Scholar 

  15. Meseguer, J.: Rewriting logic as a semantic framework for concurrency: a progress report. In: Sassone, V., Montanari, U. (eds.) CONCUR 1996. LNCS, vol. 1119, pp. 331–372. Springer, Heidelberg (1996)

    Google Scholar 

Download references

Author information

Authors and Affiliations


Corresponding author

Correspondence to Dave Clarke .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and Permissions

Copyright information

© 2016 Springer International Publishing Switzerland

About this chapter

Cite this chapter

Clarke, D., Wrigstad, T. (2016). Vats: A Safe, Reactive Storage Abstraction. In: Ábrahám, E., Bonsangue, M., Johnsen, E. (eds) Theory and Practice of Formal Methods. Lecture Notes in Computer Science(), vol 9660. Springer, Cham.

Download citation

  • DOI:

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-30733-6

  • Online ISBN: 978-3-319-30734-3

  • eBook Packages: Computer ScienceComputer Science (R0)