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: "GPCE" 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: "AOSD" 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: "MoDELS" 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: "PEPM" 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" 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: "SIGMOD" 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: "ICSE" 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: "GPCE" 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" 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: "SCP" 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: "ICSE" 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: "PLDI" 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" 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: "TOSEM" 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: "ECOOPW" 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"