The Design of Hume: A High-Level Language for the Real-Time Embedded Systems Domain

  • Kevin Hammond
  • Greg Michaelson
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3016)


This chapter describes the design of Hume: a domain-specific language targeting real-time embedded systems. Hume provides a number of high level features including higher-order functions, polymorphic types, arbitrary but sized user-defined data structures, asynchronous processes, lightweight exception handling, automatic memory management and domain-specific meta-programming features, whilst seeking to guarantee strong space/time behaviour and maintaining overall determinacy.


Embed System Language Design Abstract Machine Exception Handler Functional Language 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Amey, P.: Correctness by Construction: Better can also be Cheaper. CrossTalk: the Journal of Defense Software Engineering, 24–28 (March 2002)Google Scholar
  2. 2.
    Armstrong, J., Virding, S.R., Williams, M.C.: Concurrent Programming in Erlang. Prentice-Hall, Englewood Cliffs (1993)zbMATHGoogle Scholar
  3. 3.
    Barabanov, M.: A Linux-based Real-Time Operating System, M.S. Thesis, Dept. of Comp. Sci., New Mexico Institute of Mining and Technology ( June 1997)Google Scholar
  4. 4.
    Barnes, J.: High Integrity Ada: the Spark Approach. Addison-Wesley, Reading (1997)zbMATHGoogle Scholar
  5. 5.
    Benveniste, A., Guernic, P.L.: Synchronous Programming with Events and Relations: the Signal Language and its Semantics. Science of Computer Programming 16, 103–149 (1991)zbMATHCrossRefMathSciNetGoogle Scholar
  6. 6.
    Berry, G.: The Foundations of Esterel. Proof, Language, and Interaction. MIT Press, Cambridge (2000)Google Scholar
  7. 7.
    Bollela, G., et al.: The Real-Time Specification for Java. Addison-Wesley, Reading (2000)Google Scholar
  8. 8.
    Caspi, P., Pouzet, M.: Synchronous Kahn Networks. SIGPLAN Notices 31(6), 226–238 (1996)CrossRefGoogle Scholar
  9. 9.
    Chakravarty, M. (ed.), Finne, S.O., Henderson, F., Kowalczyk, M., Leijen, D., Marlow, S., Meijer, E., Panne, S., Peyton Jones, S.L., Reid, A., Wallace, M., Weber, M.: The Haskell 98 Foreign Function Interface 1.0 (December 2003),
  10. 10.
    Corbet, J., Rubini, A.: Linux Device Drivers, 2nd edn. O’Reilly, Sebastopol (2001)Google Scholar
  11. 11.
    The Ganssle Group. Perfecting the Art of Building Embedded Systems (May 2003),
  12. 12.
    Halbwachs, N., Pilaud, D., Ouabdesselam, F.: Specificying, Programming and Verifying Real-Time Systems using a Synchronous Declarative Language. In: Sifakis, J. (ed.) CAV 1989. LNCS, vol. 407, pp. 213–231. Springer, Heidelberg (1990)Google Scholar
  13. 13.
    Hammond, K.: An Abstract Machine Implementation for Embedded Systems Applications in Hume. Submitted to 2003 Workshop on Implementations of Functional Languages (IFL 2003), Edinburgh (2003)Google Scholar
  14. 14.
    Hammond, K., Michaelson, G.J.: Predictable Space Behaviour in FSM-Hume. In: Peña, R., Arts, T. (eds.) IFL 2002. LNCS, vol. 2670. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  15. 15.
    Hammond, K., Michaelson, G.J.: Hume: A Domain-Specific Language for Real-Time Embedded Systems. In: Pfenning, F., Smaragdakis, Y. (eds.) GPCE 2003. LNCS, vol. 2830, pp. 37–56. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  16. 16.
    Hammond, K., Loidl, H.-W., Rebón Portillo, A.J., Vasconcelos, P.: A Type-and- Effect System for Determining Time and Space Bounds of Recursive Functional Programs (2003) (in Preparation)Google Scholar
  17. 17.
    Harel, D.: Statecharts: a Visual Formalism for Complex Systems. Science of Computer Programming 8, 231–274 (1987)zbMATHCrossRefMathSciNetGoogle Scholar
  18. 18.
    Hofmann, M.: A Type System for Bounded Space and Functional In-place Update. Nordic Journal of Computing 7(4), 258–289 (2000)zbMATHMathSciNetGoogle Scholar
  19. 19.
    Hofmann, M., Jost, S.: Static Prediction of Heap Space Usage for First-Order Functional Programs. In: Proc. POPL 2003 — Symposium on Principles of Programming Languages, New Orleans, LA, USA, January 2003. ACM Press, New York (2003)Google Scholar
  20. 20.
    Hughes, R.J.M., Pareto, L., Sabry, A.: Proving the Correctness of Reactive Systems Using Sized Types. In: Proc. POPL 1996 — ACM Symp. on Principles of Programming Languages, St. Petersburg Beach, FL (January 1996)Google Scholar
  21. 21.
    Hughes, R.J.M., Pareto, L.: Recursion and Dynamic Data Structures in Bounded Space: Towards Embedded ML Programming. In: Proc. 1999 ACM Intl. Conf. on Functional Programming (ICFP 1999), Paris, France, pp. 70–81 (1999)Google Scholar
  22. 22.
    Johnson, S.D.: Synthesis of Digital Designs from Recursive Equations. MIT Press, Cambridge (1984); ISBN 0-262-10029-0Google Scholar
  23. 23.
    McDermid, J.: Engineering Safety-Critical Systems. In: Wand, I., Milner, R. (eds.) Computing Tomorrow: Future Research Directions in Computer Science, pp. 217–245. Cambridge University Press, Cambridge (1996)CrossRefGoogle Scholar
  24. 24.
    O’Donnell, J.T.: The Hydra Hardware Description Language. In: Lengauer, C., Batory, D., Consel, C., Odersky, M. (eds.) Domain-Specific Program Generation. LNCS, vol. 3016, pp. 143–164. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  25. 25.
    Peyton Jones, S.L. (ed.), Augustsson, L., Boutel, B., Burton, F.W., Fasel, J.H., Gordon, A.D., Hammond, K., Hughes, R.J.M., Hudak, P., Johnsson, T., Jones, M.P., Peterson, J.C., Reid, A., Wadler, P.L.: Report on the Non-Strict Functional Language, Haskell (Haskell 1998). Yale University (1999)Google Scholar
  26. 26.
    Peyton Jones, S.L., Gordon, A.D., Finne, S.O.: Concurrent Haskell. In: Proc. ACM Symp. on Princ. of Prog. Langs., St Petersburg Beach, Fl, January 1996, pp. 295–308 (1996)Google Scholar
  27. 27.
    Pointon, R.: A Rate Analysis for Hume. Heriot-Watt University (2004) (in preparation)Google Scholar
  28. 28.
    Portillo, A.J.R., Hammond, K., Loidl, H.-W., Vasconcelos, P.: Automatic Size and Time Inference. In: Peña, R., Arts, T. (eds.) IFL 2002. LNCS, vol. 2670. Springer, Heidelberg (2003)Google Scholar
  29. 29.
    Sakkinen, M.: The Darker Side of C++ Revisited, Technical Report 1993-I-13 (1993),
  30. 30.
    Sayeed, T., Shaylor, N., Taivalsaari, A.: Connected, Limited Device Configuration (CLDC) for the J2ME Platform and the K Virtual Machine (KVM). In: Proc. JavaOne – Sun’s World wide 2000 Java Developers Conf., San Francisco (June 2000)Google Scholar
  31. 31.
    Shaylor, N.: A Just-In-Time Compiler for Memory Constrained Low-Power Devices. In: Proc. 2nd Usenix Symposium on Java Virtual Machine Research and Technlog (JVM 2002), San Francisco (August 2002)Google Scholar
  32. 32.
    Schoitsch, E.: Embedded Systems – Introduction. ERCIM News 52, 10–11 (2003)Google Scholar
  33. 33.
    Wan, Z., Taha, W., Hudak, P.: Event-driven FRP. In: Krishnamurthi, S., Ramakrishnan, C.R. (eds.) PADL 2002. LNCS, vol. 2257, p. 155. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  34. 34.
    Tofte, M., Talpin, J.-P.: Region-based Memory Management. Information and Control 132(2), 109–176 (1997)zbMATHMathSciNetGoogle Scholar
  35. 35.
    Vasconcelos, P.B., Hammond, K.: Inferring Cost Equations for Recursive, Polymorphic and Higher-Order Functional Programs. In: Trinder, P., Michaelson, G.J., Peña, R. (eds.) IFL 2003. LNCS, vol. 3145, pp. 86–101. Springer, Heidelberg (2004)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2004

Authors and Affiliations

  • Kevin Hammond
    • 1
  • Greg Michaelson
    • 2
  1. 1.School of Computer ScienceUniversity of St AndrewsSt AndrewsScotland
  2. 2.Dept. of Mathematics and Computer ScienceHeriot-Watt UniversityEdinburghScotland

Personalised recommendations