Experience with SC: transformation-based implementation of various extensions to C

We have proposed the SC language system which facilitates language extensions by translation into C. In this paper, we present our experience with the SC language system and discuss its design, implementation, applications and improvements. In particular, we present the improvement to the design of transformation rules for implementing translations, which includes the feature to extend an existing transformation phase (rule-set). This enables us to implement many transformation rule-sets only by describing the difference, and helps us to use commonly-used rule-sets as part of the entire transformation. We also show several actual examples of extensions to C: garbage collection, multithreading and load balancing.

[1]  Tasuku Hiraishi,et al.  Implementing S-Expression Based Extended Languages in Lisp Tasuku Hiraishi , 2005 .

[2]  Matteo Frigo,et al.  The implementation of the Cilk-5 multithreaded language , 1998, PLDI.

[3]  Eelco Visser,et al.  Building program optimizers with rewriting strategies , 1998, ICFP '98.

[4]  Robert H. Halstead,et al.  Lazy task creation: a technique for increasing the granularity of parallel programs , 1990, LISP and Functional Programming.

[5]  Fergus Henderson Accurate garbage collection in an uncooperative environment , 2002, ISMM '02.

[6]  Hans-Juergen Boehm,et al.  Garbage collection in an uncooperative environment , 1988, Softw. Pract. Exp..

[7]  Taiichi Yuasa,et al.  Language Extension by Rule-based Transformation for S-expression-based C Languages , 2005 .

[8]  Taiichi Yuasa,et al.  Efficient and Portable Implementation of Java-style Exception Handling in C , 2006 .

[9]  Taiichi Yuasa,et al.  A Transformation-Based Implementation of Lightweight Nested Functions , 2006 .

[10]  David R. Hanson,et al.  A Machine-independent Debugger , 1996, Softw. Pract. Exp..

[11]  Eelco Visser,et al.  Stratego: A Language for Program Transformation Based on Rewriting Strategies , 2001, RTA.

[12]  Daniel G. Bobrow,et al.  Expert systems: perils and promise , 1986, CACM.

[13]  Theo D'Hondt,et al.  Disentangling the implementation of local-to-global transformations in a rewrite rule transformation system , 2005, SAC '05.

[14]  Taiichi Yuasa,et al.  Lightweight Lexical Closures for Legitimate Execution Stack Access , 2006, CC.

[15]  M. Yasugi,et al.  An Efficient Load-Balancing Framework Based on Lazy Partitioning of Sequential Programs , 2004 .

[16]  Taiichi Yuasa,et al.  Implementation of Multiple Threads by Using Nested Functions , 2002 .