publications: - title: "Statically Safe Program Generation with SafeGen" author: - name: "Shan Shan Huang" link: "http://www.freeflygeek.com/" - name: "David Zook" link: "https://researchr.org/alias/david-zook" - name: "Yannis Smaragdakis" link: "http://smaragd.org" year: "2005" doi: "http://dx.doi.org/10.1007/11561347_21" links: doi: "http://dx.doi.org/10.1007/11561347_21" tags: - "program analysis" - "Variability-Aware Analysis" - "analysis" - "static analysis" - "context-aware" researchr: "https://researchr.org/publication/HuangZS05" cites: 0 citedby: 0 pages: "309-326" booktitle: "Generative Programming and Component Engineering, 4th International Conference, GPCE 2005" editor: - name: "Robert Glück" link: "http://www.diku.dk/hjemmesider/ansatte/glueck/" - name: "Michael R. Lowry" link: "https://researchr.org/alias/michael-r.-lowry" volume: "3676" series: "Lecture Notes in Computer Science" address: "Tallinn, Estonia" publisher: "Springer" isbn: "3-540-29138-5" kind: "inproceedings" key: "HuangZS05" - title: "cJ: enhancing java with safe type conditions" author: - name: "Shan Shan Huang" link: "http://www.freeflygeek.com/" - name: "David Zook" link: "https://researchr.org/alias/david-zook" - name: "Yannis Smaragdakis" link: "http://smaragd.org" year: "2007" doi: "http://doi.acm.org/10.1145/1218563.1218584" links: doi: "http://doi.acm.org/10.1145/1218563.1218584" tags: - "Java" - "Variability-Aware Analysis" - "analysis" - "context-aware" researchr: "https://researchr.org/publication/HuangZS07" cites: 0 citedby: 1 pages: "185-198" booktitle: "Proceedings of the 6th International Conference on Aspect-Oriented Software Development, AOSD 2007, Vancouver, British Columbia, Canada, March 12-16, 2007" editor: - name: "Brian M. Barry" link: "https://researchr.org/alias/brian-m.-barry" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" volume: "208" series: "ACM International Conference Proceeding Series" publisher: "ACM" isbn: "1-59593-615-7" kind: "inproceedings" key: "HuangZS07" - title: "Inferring Meta-Models for Runtime System Data from the Client Code of Management APIs" author: - name: "Song" link: "https://researchr.org/alias/song" - name: "Shan Shan Huang" link: "http://www.freeflygeek.com/" - name: "Xiong" link: "https://researchr.org/alias/xiong" - name: "Chauvel" link: "https://researchr.org/alias/chauvel" - name: "Sun" link: "https://researchr.org/alias/sun" - name: "Mei" link: "https://researchr.org/alias/mei" year: "2010" tags: - "meta-model" - "Meta-Environment" - "meta-objects" researchr: "https://researchr.org/publication/Song%3AMoDELS%3A2010" cites: 0 citedby: 0 booktitle: "Model Driven Engineering Languages and Systems, 13th International Conference, MODELS 2010, Oslo, Norway, October 3-8, 2010. Proceedings" editor: - name: "Dorina Petriu" link: "https://researchr.org/alias/dorina-petriu" - name: "Nicolas Rouquette" link: "https://researchr.org/alias/nicolas-rouquette" - name: "Øystein Haugen" link: "https://researchr.org/alias/%C3%B8ystein-haugen" series: "Lecture Notes in Computer Science" publisher: "Springer" kind: "inproceedings" key: "Song:MoDELS:2010" - title: "Program generators and the tools to make them" author: - name: "Yannis Smaragdakis" link: "http://smaragd.org" - name: "Shan Shan Huang" link: "http://www.freeflygeek.com/" - name: "David Zook" link: "https://researchr.org/alias/david-zook" year: "2004" doi: "http://doi.acm.org/10.1145/1014007.1014017" links: doi: "http://doi.acm.org/10.1145/1014007.1014017" researchr: "https://researchr.org/publication/SmaragdakisHZ04" cites: 0 citedby: 0 pages: "92-100" booktitle: "Proceedings of the 2004 ACM SIGPLAN Workshop on Partial Evaluation and Semantics-based Program Manipulation, 2004, Verona, Italy, August 24-25, 2004" editor: - name: "Nevin Heintze" link: "https://researchr.org/alias/nevin-heintze" - name: "Peter Sestoft" link: "https://researchr.org/alias/peter-sestoft" publisher: "ACM" isbn: "1-58113-835-0" kind: "inproceedings" key: "SmaragdakisHZ04" - title: "Morphing: Safely Shaping a Class in the Image of Others" author: - name: "Shan Shan Huang" link: "http://www.freeflygeek.com/" - name: "David Zook" link: "https://researchr.org/alias/david-zook" - name: "Yannis Smaragdakis" link: "http://smaragd.org" year: "2007" doi: "http://dx.doi.org/10.1007/978-3-540-73589-2_19" links: doi: "http://dx.doi.org/10.1007/978-3-540-73589-2_19" researchr: "https://researchr.org/publication/HuangZS07%3A0" cites: 0 citedby: 1 pages: "399-424" booktitle: "ECOOP 2007 - Object-Oriented Programming, 21st European Conference, Berlin, Germany, July 30 - August 3, 2007, Proceedings" editor: - name: "Erik Ernst" link: "http://person.au.dk/eernst@cs" volume: "4609" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-540-73588-5" kind: "inproceedings" key: "HuangZS07:0" - title: "SecureBlox: customizable secure distributed data processing" author: - name: "William R. Marczak" link: "https://researchr.org/alias/william-r.-marczak" - name: "Shan Shan Huang" link: "http://www.freeflygeek.com/" - name: "Martin Bravenboer" link: "https://researchr.org/alias/martin-bravenboer" - name: "Micah Sherr" link: "https://researchr.org/alias/micah-sherr" - name: "Boon Thau Loo" link: "https://researchr.org/alias/boon-thau-loo" - name: "Molham Aref" link: "https://researchr.org/alias/molham-aref" year: "2010" doi: "http://doi.acm.org/10.1145/1807167.1807246" links: doi: "http://doi.acm.org/10.1145/1807167.1807246" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/sigmod/MarczakHBSLA10" tags: - "data-flow" researchr: "https://researchr.org/publication/MarczakHBSLA10" cites: 0 citedby: 0 pages: "723-734" booktitle: "Proceedings of the ACM SIGMOD International Conference on Management of Data, SIGMOD 2010, Indianapolis, Indiana, USA, June 6-10, 2010" editor: - name: "Ahmed K. Elmagarmid" link: "https://researchr.org/alias/ahmed-k.-elmagarmid" - name: "Divyakant Agrawal" link: "https://researchr.org/alias/divyakant-agrawal" publisher: "ACM" isbn: "978-1-4503-0032-2" kind: "inproceedings" key: "MarczakHBSLA10" - title: "Easy language extension with Meta-AspectJ" author: - name: "Shan Shan Huang" link: "http://www.freeflygeek.com/" - name: "Yannis Smaragdakis" link: "http://smaragd.org" year: "2006" doi: "http://doi.acm.org/10.1145/1134436" links: doi: "http://doi.acm.org/10.1145/1134436" tags: - "AspectJ" - "meta-model" - "Meta-Environment" - "meta-objects" researchr: "https://researchr.org/publication/HuangS06" cites: 0 citedby: 1 pages: "865-868" booktitle: "28th International Conference on Software Engineering (ICSE 2006), Shanghai, China, May 20-28, 2006" editor: - name: "Leon J. Osterweil" link: "https://researchr.org/alias/leon-j.-osterweil" - name: "H. Dieter Rombach" link: "https://researchr.org/alias/h.-dieter-rombach" - name: "Mary Lou Soffa" link: "https://researchr.org/alias/mary-lou-soffa" publisher: "ACM" isbn: "1-59593-375-1" kind: "inproceedings" key: "HuangS06" - title: "Generating AspectJ Programs with Meta-AspectJ" author: - name: "David Zook" link: "https://researchr.org/alias/david-zook" - name: "Shan Shan Huang" link: "http://www.freeflygeek.com/" - name: "Yannis Smaragdakis" link: "http://smaragd.org" year: "2004" doi: "http://springerlink.metapress.com/openurl.asp?genre=article&issn=0302-9743&volume=3286&spage=1" links: doi: "http://springerlink.metapress.com/openurl.asp?genre=article&issn=0302-9743&volume=3286&spage=1" tags: - "AspectJ" - "meta programming" - "meta-model" - "Meta-Environment" - "meta-objects" researchr: "https://researchr.org/publication/ZookHS04" cites: 0 citedby: 3 pages: "1-18" booktitle: "Generative Programming and Component Engineering: Third International Conference, GPCE 2004, Vancouver, Canada, October 24-28, 2004. Proceedings" editor: - name: "Gabor Karsai" link: "http://w3.isis.vanderbilt.edu/gabor/" - name: "Eelco Visser" link: "http://eelcovisser.org" volume: "3286" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "3-540-23580-9" kind: "inproceedings" key: "ZookHS04" - title: "An envolutionary path towards virtual shared memory with random access" author: - name: "Jonathan Leighton Brown" link: "https://researchr.org/alias/jonathan-leighton-brown" - name: "Sue Goudy" link: "https://researchr.org/alias/sue-goudy" - name: "Mike Heroux" link: "https://researchr.org/alias/mike-heroux" - name: "Shan Shan Huang" link: "http://www.freeflygeek.com/" - name: "Zhaofang Wen" link: "https://researchr.org/alias/zhaofang-wen" year: "2006" doi: "http://doi.acm.org/10.1145/1148109.1148130" links: doi: "http://doi.acm.org/10.1145/1148109.1148130" researchr: "https://researchr.org/publication/BrownGHHW06" cites: 0 citedby: 0 pages: "117" booktitle: "SPAA 2006: Proceedings of the 18th Annual ACM Symposium on Parallel Algorithms and Architectures, Cambridge, Massachusetts, USA, July 30 - August 2, 2006" editor: - name: "Phillip B. Gibbons" link: "https://researchr.org/alias/phillip-b.-gibbons" - name: "Uzi Vishkin" link: "https://researchr.org/alias/uzi-vishkin" publisher: "ACM" isbn: "1-59593-452-9" kind: "inproceedings" key: "BrownGHHW06" - title: "Statically Safe Program Generation with SafeGen" author: - name: "Shan Shan Huang" link: "http://www.freeflygeek.com/" - name: "David Zook" link: "https://researchr.org/alias/david-zook" - name: "Yannis Smaragdakis" link: "http://smaragd.org" year: "2011" month: "May" doi: "http://dx.doi.org/10.1016/j.scico.2008.09.007" abstract: "SafeGen is a meta-programming language for writing statically safe generators of Java programs. If a program generator written in SafeGen passes the checks of the SafeGen compiler, then the generator will only generate well-formed Java programs, for any generator input. In other words, statically checking the generator guarantees the correctness of any generated program, with respect to static checks commonly performed by a conventional compiler (including type safety, existence of a superclass, etc.). To achieve this guarantee, SafeGen supports only language primitives for reflection over an existing well-formed Java program, primitives for creating program fragments, and a restricted set of constructs for iteration, conditional actions, and name generation. SafeGen’s static checking algorithm is a combination of traditional type checking for Java, and a series of calls to a theorem prover to check the validity of first-order logical sentences constructed to represent well-formedness properties of the generated program under all inputs. The approach has worked quite well in our tests, providing proofs for correct generators or pointing out interesting bugs." links: doi: "http://dx.doi.org/10.1016/j.scico.2008.09.007" tags: - "programming languages" - "Java" - "meta programming" - "model checking" - "meta-model" - "testing" - "writing" - "type checking" - "compiler" - "programming" - "Meta-Environment" - "reflection" - "systematic-approach" - "meta-objects" researchr: "https://researchr.org/publication/HuangZookSmaragdakis2011" cites: 0 citedby: 0 journal: "Science of Computer Programming" volume: "76" number: "5" pages: "376-391" kind: "article" key: "HuangZookSmaragdakis2011" - title: "Building Scalable Libraries with cJ" author: - name: "Shan Shan Huang" link: "http://www.freeflygeek.com/" - name: "Yannis Smaragdakis" link: "http://smaragd.org" year: "2007" doi: "http://doi.ieeecomputersociety.org/10.1109/ICSECOMPANION.2007.26" links: doi: "http://doi.ieeecomputersociety.org/10.1109/ICSECOMPANION.2007.26" researchr: "https://researchr.org/publication/HuangS07" cites: 0 citedby: 0 pages: "45-46" booktitle: "29th International Conference on Software Engineering (ICSE 2007), Minneapolis, MN, USA, May 20-26, 2007, Companion Volume" publisher: "IEEE Computer Society" kind: "inproceedings" key: "HuangS07" - title: "Expressive and safe static reflection with MorphJ" author: - name: "Shan Shan Huang" link: "http://www.freeflygeek.com/" - name: "Yannis Smaragdakis" link: "http://smaragd.org" year: "2008" doi: "http://doi.acm.org/10.1145/1375581.1375592" abstract: "Recently, language extensions have been proposed for Java and C# to support pattern-based reflective declaration. These extensions introduce a disciplined form of meta-programming and aspect-oriented programming to mainstream languages: They allow members of a class (i.e., fields and methods) to be declared by statically iterating over and pattern-matching on members of other classes. Such techniques, however, have been unable to safely express simple, but common, idioms such as declaring getter and setter methods for fields. In this paper, we present a mechanism that addresses the lack of expressiveness in past work without sacrificing safety. Our technique is based on the idea of nested patterns that elaborate the outer-most pattern with blocking or enabling conditions. We implemented this mechanism in a language, MorphJ. We demonstrate the expressiveness of MorphJ with real-world applications. In particular, the MorphJ reimplementation of DSTM2, a software transactional memory library, reduces 1,107 lines of Java reflection and bytecode engineering library calls to just 374 lines of MorphJ code. At the same time, the MorphJ solution is both high level and safer, as MorphJ can separately type check generic classes and catch errors early. We present and formalize the MorphJ type system, and offer a type-checking algorithm." links: doi: "http://doi.acm.org/10.1145/1375581.1375592" tags: - "programming languages" - "object-oriented programming" - "rule-based" - "Java" - "program analysis" - "meta programming" - "pattern language" - "generic programming" - "model checking" - "meta-model" - "Variability-Aware Analysis" - "language engineering" - "software language engineering" - "analysis" - "static analysis" - "type system" - "software engineering" - "model-driven engineering" - "C++" - "pattern matching" - "type checking" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "context-aware" - "Meta-Environment" - "reflection" - "feature-oriented programming" - "meta-objects" researchr: "https://researchr.org/publication/HuangS08" cites: 0 citedby: 1 pages: "79-89" booktitle: "Proceedings of the ACM SIGPLAN 2008 Conference on Programming Language Design and Implementation, Tucson, AZ, USA, June 7-13, 2008" editor: - name: "Rajiv Gupta" link: "https://researchr.org/alias/rajiv-gupta" - name: "Saman P. Amarasinghe" link: "https://researchr.org/alias/saman-p.-amarasinghe" publisher: "ACM" isbn: "978-1-59593-860-2" kind: "inproceedings" key: "HuangS08" - title: "Liquid Metal: Object-Oriented Programming Across the Hardware/Software Boundary" author: - name: "Shan Shan Huang" link: "http://www.freeflygeek.com/" - name: "Amir Hormati" link: "https://researchr.org/alias/amir-hormati" - name: "David F. Bacon" link: "http://domino.research.ibm.com/comm/research_people.nsf/pages/bacon.index.html" - name: "Rodric M. Rabbah" link: "https://researchr.org/alias/rodric-m.-rabbah" year: "2008" doi: "http://dx.doi.org/10.1007/978-3-540-70592-5_5" links: doi: "http://dx.doi.org/10.1007/978-3-540-70592-5_5" tags: - "object-oriented programming" - "programming" - "subject-oriented programming" - "feature-oriented programming" researchr: "https://researchr.org/publication/HuangHBR08" cites: 0 citedby: 2 pages: "76-103" booktitle: "ECOOP 2008 - Object-Oriented Programming, 22nd European Conference, Paphos, Cyprus, July 7-11, 2008, Proceedings" editor: - name: "Jan Vitek" link: "http://www.cs.purdue.edu/homes/jv" volume: "5142" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-540-70591-8" kind: "inproceedings" key: "HuangHBR08" - title: "Domain-specific languages and program generation with Meta-AspectJ" author: - name: "Shan Shan Huang" link: "http://www.freeflygeek.com/" - name: "David Zook" link: "https://researchr.org/alias/david-zook" - name: "Yannis Smaragdakis" link: "http://smaragd.org" year: "2008" doi: "http://doi.acm.org/10.1145/1416563.1416566" abstract: "Meta-AspectJ (MAJ) is a language for generating AspectJ programs using code templates. MAJ itself is an extension of Java, so users can interleave arbitrary Java code with AspectJ code templates. MAJ is a structured metaprogramming tool: a well-typed generator implies a syntactically correct generated program. MAJ promotes a methodology that combines aspect-oriented and generative programming. A valuable application is in implementing small domain-specific language extensions as generators using unobtrusive annotations for syntax extension and AspectJ as a back-end. The advantages of this approach are twofold. First, the generator integrates into an existing software application much as a regular API or library, instead of as a language extension. Second, a mature language implementation is easy to achieve with little effort since AspectJ takes care of the low-level issues of interfacing with the base Java language. In addition to its practical value, MAJ offers valuable insights to metaprogramming tool designers. It is a mature metaprogramming tool for AspectJ (and, by extension, Java): a lot of emphasis has been placed on context-sensitive parsing and error reporting. As a result, MAJ minimizes the number of metaprogramming (quote/unquote) operators and uses type inference to reduce the need to remember type names for syntactic entities." links: doi: "http://doi.acm.org/10.1145/1416563.1416566" tags: - "generative programming" - "programming languages" - "AspectJ" - "object-oriented programming" - "type inference" - "rule-based" - "Java" - "meta programming" - "meta-model" - "little language" - "code generation" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "context-aware" - "Meta-Environment" - "parsing" - "systematic-approach" - "feature-oriented programming" - "meta-objects" - "domain-specific language" researchr: "https://researchr.org/publication/HuangZS08" cites: 0 citedby: 0 journal: "ACM Transactions on Software Engineering Methodology" volume: "18" number: "2" kind: "article" key: "HuangZS08" - title: "Morphing Software for Easier Evolution" author: - name: "Shan Shan Huang" link: "http://www.freeflygeek.com/" - name: "Yannis Smaragdakis" link: "http://smaragd.org" year: "2007" tags: - "software evolution" researchr: "https://researchr.org/publication/HuangS07%3A0" cites: 0 citedby: 0 pages: "71-80" booktitle: "RAM-SE 07-ECOOP 07 Workshop on Reflection, AOP, and Meta-Data for Software Evolution, Proceedings, Berlin, Germany, July 31, 2007" editor: - name: "Walter Cazzola" link: "https://researchr.org/alias/walter-cazzola" - name: "Shigeru Chiba" link: "http://www.csg.is.titech.ac.jp/~chiba/" - name: "Yvonne Coady" link: "https://researchr.org/alias/yvonne-coady" - name: "Stéphane Ducasse" link: "http://stephane.ducasse.free.fr/" - name: "Günter Kniesel" link: "http://www.cs.uni-bonn.de/~gk/" - name: "Manuel Oriol" link: "https://researchr.org/alias/manuel-oriol" - name: "Gunter Saake" link: "https://researchr.org/alias/gunter-saake" publisher: "Fakultät für Informatik, Universität Magdeburg" kind: "inproceedings" key: "HuangS07:0" - title: "Datalog and emerging applications: an interactive tutorial" author: - name: "Shan Shan Huang" link: "http://www.freeflygeek.com/" - name: "Todd Jeffrey Green" link: "https://researchr.org/alias/todd-jeffrey-green" - name: "Boon Thau Loo" link: "https://researchr.org/alias/boon-thau-loo" year: "2011" links: "slides": "http://logicblox.com/research/presentations/sigmod11-tutorial-all.pdf" tags: - "Datalog" researchr: "https://researchr.org/publication/HuangGL11" cites: 0 citedby: 0 pages: "1213-1216" booktitle: "SIGMOD 2011" kind: "inproceedings" key: "HuangGL11"