ABSTRACT
Sig is the prototype of a purely declarative programming language and system for the processing of discrete, clocked synchronous, potentially real-time data streams. It aspires to combine good static safety, scalability and platform independence, with semantics that are precise, concise and suitable for domain experts. Its semantical and operational core has been formalized. Here we discuss the general strategy for making Sig programs executable, and describe the current state of a prototype compiler. The compiler is implemented in Java and targets the JVM. By careful cooperation with the JVM just-in-time compiler, it provides immediate executability in a simple and quickly extensible runtime environment, with code performance suitable for moderate real-time applications such as interactive audio synthesis.
- B. Armstrong and R. Eigenmann. Challenges in the automatic parallelization of large-scale computational applications. In Proc. of SPIE 4528, pp. 50--60, 2001.Google Scholar
- J. Backus. Can programming be liberated from the von Neumann style? Comm. ACM, 21(8), 1978. Google ScholarDigital Library
- P. Bjesse, K. Claessen, M. Sheeran, and S. Singh. Lava: Hardware design in haskell. In Proc. ICFP 1998, pp. 174--184, 1998. Google ScholarDigital Library
- G. Bollella, el al. Programming with non-heap memory in the real-time specification for Java. In Proc. OOPSLA 2003, pp. 361--369, ACM, 2003. Google ScholarDigital Library
- P. Caspi, D. Pilaud, N. Halbwachs, and J. Plaice. Lustre: A declarative language for programming synchronous systems. In Proc. POPL 1987, pp. 178--188. ACM, 1987. Google ScholarDigital Library
- P. Caspi and M. Pouzet. A co-iterative characterization of synchronous stream functions. ENTCS, 11:1--21, 1998. Google ScholarDigital Library
- P. Caspi and M. Pouzet. Lucid Synchrone, a functional extension of Lustre. Tech. rep., Université Pierre et Marie Curie, Laboratoire LIP6, 2000.Google Scholar
- W. Citrin, R. Hall, C. Santiago, and B. Zorn. Addressing the scalability problem in visual programming through containment, zooming and fisheyeing. In Proc. Aerospace Conf., volume 4, pp. 189--202. IEEE, 1998.Google ScholarCross Ref
- ESA. ARIANE 5 Flight 501 Failure Report by the Inquiry Board, 1996.Google Scholar
- A. Gal, et al. Trace-based just-in-time type specialization for dynamic languages. SIGPLAN Not., 44(6):465--478, 2009. Google ScholarDigital Library
- K. Hammond and G. Michaelson. The design of Hume: A high-level language for the real-time embedded systems domain. In LNCS 3016, pp. 127--142. Springer-Verlag, 2003.Google Scholar
- P. Hudak, A. Courtney, H. Nilsson, and J. Peterson. Arrows, robots, and functional reactive programming. In LNCS 2638, pp. 159--187. Springer-Verlag, 2003.Google ScholarCross Ref
- J. Hughes. Why functional programming matters. Computer Journal, 32(2), 1989. Google ScholarDigital Library
- J. Hughes. Programming with arrows. In LNCS 3622, pp. 73--129. Springer-Verlag, 2005. Google ScholarDigital Library
- O. Kiselyov, C.-C. Shan, and Y. Kameyama. Bridging the theory of staged programming languages and the practice of high-performance computing. Tech. Rep. 2012--4, National Institute of Informatics, Japan, 2012.Google Scholar
- M. Lepper and B. Trancón y Widemann. Optimization of visitor performance by reflection-based analysis. In LNCS 6707, pp. 15--30. Springer-Verlag, 2011. Google ScholarDigital Library
- H. Liu, E. Cheng, and P. Hudak. Causal commutative arrows. J. Funct. Program., pp. 467--496, 2011. Google ScholarDigital Library
- A. Loth. Synthese von Kontrollfluss für eine synchrone Datenflusssprache. Master's thesis, Ilmenau University of Technology, 2015.Google Scholar
- H. Nilsson, A. Courtney, and J. Peterson. Functional reactive programming, continued. In Proc. Haskell Workshop, pp. 51--64. ACM, 2002. Google ScholarDigital Library
- J. O'Donnell. Hydra: hardware description in a functional language using recursion equations and high order combining forms. In The Fusion of Hardware Design and Verification, pp. 309--328. North-Holland, 1988.Google Scholar
- Y. Orlarey, D. Fober, and S. Letz. Syntactical and semantical aspects of Faust. Soft Comput., 8(9):623--632, 2004. Google ScholarDigital Library
- F. Pizlo, D. Frampton, and A. L. Hosking. Fine-grained adaptive biased locking. In Proc. PPPJ 2011, pp. 171--181, ACM, 2011. Google ScholarDigital Library
- G. Rouleau and S. Popinchalk. Initializing parameters. Matlab Central Blog, 2008. Retrieved 2013-12-31.Google Scholar
- J. M. Spivey. The Z Notation: a reference manual. International Series in Computer Science. Prentice Hall, 1988. Google ScholarDigital Library
- W. Taha and T. Sheard. MetaML and multi-stage programming with explicit annotations. Theor. Comput. Sci., 248(1-2):211--242, 2000. Google ScholarDigital Library
- B. Trancón y Widemann and M. Lepper. Foundations of total functional data-flow programming. In EPTCS 153, pp. 143--167, 2014.Google ScholarCross Ref
- B. Trancón y Widemann and M. Lepper. Sound and soundness -- practical total functional data-flow programming {demo}. In Proc. FARM 2014, pp. 35--36. ACM Digital Library, 2014. Google ScholarDigital Library
- B. Trancón y Widemann and M. Lepper. Laminar data flow: On the role of slicing in functional data-flow programming. In Draft Proc. TFP 2015. INRIA, 2015.Google Scholar
- B. Trancón y Widemann and M. Lepper. The Shepard Tone and Higher-Order Multi-Rate Synchronous Data-Flow Programming in Sig. In Proc. FARM 2015, ACM Digital Library, to appear 2015. Google ScholarDigital Library
- T. Uustalu and V. Vene. The essence of dataflow programming. In LNCS 3780, pp. 2--18. Springer-Verlag, 2005. Google ScholarDigital Library
- Z. Wan and P. Hudak. Functional reactive programming from first principles. SIGPLAN Not., 35(5):242--252, 2000. Google ScholarDigital Library
Index Terms
- On-Line Synchronous Total Purely Functional Data-Flow Programming on the Java Virtual Machine with Sig
Recommendations
Futhark: purely functional GPU-programming with nested parallelism and in-place array updates
PLDI '17Futhark is a purely functional data-parallel array language that offers a machine-neutral programming model and an optimising compiler that generates OpenCL code for GPUs.
This paper presents the design and implementation of three key features of ...
Compiling Lazy Functional Programs Based on the Spineless Tagless G-Machine for the Java Virtual Machine
FLOPS '01: Proceedings of the 5th International Symposium on Functional and Logic ProgrammingA systematic method of compiling lazy functional programs based on the Spineless Tagless G-machine (STGM) is presented for the Java Virtual Machine (JVM). A new specification of the STGM, which consists of a compiler and a reduction machine, is ...
Futhark: purely functional GPU-programming with nested parallelism and in-place array updates
PLDI 2017: Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and ImplementationFuthark is a purely functional data-parallel array language that offers a machine-neutral programming model and an optimising compiler that generates OpenCL code for GPUs.
This paper presents the design and implementation of three key features of ...
Comments