%%% -*-BibTeX-*- %%% /u/sy/beebe/tex/bib/sigplan2000.bib, Thu Sep 21 08:17:16 2006 %%% Edit by Nelson H. F. Beebe %%% ==================================================================== %%% BibTeX-file{ %%% author = "Nelson H. F. Beebe", %%% version = "1.84", %%% date = "08 November 2023", %%% time = "11:52:33 MST", %%% filename = "sigplan2000.bib", %%% address = "University of Utah %%% Department of Mathematics, 110 LCB %%% 155 S 1400 E RM 233 %%% Salt Lake City, UT 84112-0090 %%% USA", %%% telephone = "+1 801 581 5254", %%% FAX = "+1 801 581 4148", %%% URL = "https://www.math.utah.edu/~beebe", %%% checksum = "02923 77613 359321 3507102", %%% email = "beebe at math.utah.edu, beebe at acm.org, %%% beebe at computer.org (Internet)", %%% codetable = "ISO/ASCII", %%% keywords = "bibliography, BibTeX, programming languages, %%% SIGPLAN", %%% license = "public domain", %%% supported = "yes", %%% docstring = "This is a bibliography of ACM SIGPLAN %%% Notices, covering 2000--2009. %%% %%% There are World Wide Web sites for the %%% journal at %%% %%% http://www.acm.org/sigplan/ %%% https://dl.acm.org/loi/sigplan %%% %%% and %%% %%% http://www.rowan.edu/sigplan/ %%% %%% and coverage of about a dozen volumes can be found at %%% %%% http://ftp.informatik.rwth-aachen.de/dblp/db/journals/sigplan/index.html %%% %%% Several conference proceedings are published %%% as volumes of SIGPLAN Notices. Many of them %%% can also be found via the ACM proceedings Web %%% sites: %%% %%% http://www.acm.org/pubs/contents/proceedings/ %%% http://www.acm.org/pubs/contents/proceedings/asplos/ %%% http://www.acm.org/pubs/contents/proceedings/plan/ %%% http://www.acm.org/pubs/contents/proceedings/pldi/ %%% %%% At version 1.84, the year coverage looks like %%% this: %%% %%% 1990 ( 2) 1997 ( 0) 2004 ( 343) %%% 1991 ( 0) 1998 ( 0) 2005 ( 181) %%% 1992 ( 0) 1999 ( 0) 2006 ( 221) %%% 1993 ( 0) 2000 ( 224) 2007 ( 210) %%% 1994 ( 0) 2001 ( 283) 2008 ( 243) %%% 1995 ( 0) 2002 ( 235) 2009 ( 290) %%% 1996 ( 0) 2003 ( 253) %%% %%% Article: 2457 %%% InProceedings: 18 %%% Proceedings: 10 %%% %%% Total entries: 2485 %%% %%% Some of the bibliography entries in this %%% file contain abstracts. These are governed %%% by the ACM Copyright Notice for ACM SIGPLAN %%% Notices, which says: %%% %%% ``Permission to copy without fee all %%% or part of this material is granted %%% provided that the copies are not made %%% or distributed for commercial %%% advantage, the ACM copyright notice %%% and the title of the publication and %%% its date appear, and notice is given %%% that copying is by permission of the %%% Association for Computing Machinery. %%% To copy otherwise, or to republish, %%% requires a fee and/or specific %%% permission.'' %%% %%% Inasmuch as this bibliography, and its %%% companion files in the master collection, %%% is freely distributed without charge, %%% inclusion of article abstracts clearly %%% falls within the copyright permissions, and %%% this author considers that ACM has given %%% the required permission under the terms of %%% the above Copyright Notice. %%% %%% BibTeX citation tags are uniformly chosen %%% as name:year:abbrev, where name is the %%% family name of the first author or editor, %%% year is a 4-digit number, and abbrev is a %%% 3-letter condensation of important title %%% words. Citation tags were automatically %%% generated by software developed for the %%% BibNet Project. %%% %%% In this bibliography, entries are sorted in %%% publication order, using bibsort -byvolume. %%% %%% The checksum field above contains a CRC-16 %%% checksum as the first value, followed by the %%% equivalent of the standard UNIX wc (word %%% count) utility output of lines, words, and %%% characters. This is produced by Robert %%% Solovay's checksum utility.", %%% } %%% ==================================================================== @Preamble{ "\input bibnames.sty " # "\input path.sty " # "\def \TM {${}^{\sc TM}$} " # "\hyphenation{ }" } %%% ==================================================================== %%% Acknowledgement abbreviations: @String{ack-nhfb = "Nelson H. F. Beebe, University of Utah, Department of Mathematics, 110 LCB, 155 S 1400 E RM 233, Salt Lake City, UT 84112-0090, USA, Tel: +1 801 581 5254, FAX: +1 801 581 4148, e-mail: \path|beebe@math.utah.edu|, \path|beebe@acm.org|, \path|beebe@computer.org| (Internet), URL: \path|https://www.math.utah.edu/~beebe/|"} %%% ==================================================================== %%% Journal abbreviations: @String{j-SIGPLAN = "ACM SIG{\-}PLAN Notices"} %%% ==================================================================== %%% Publisher abbreviations: @String{pub-ACM = "ACM Press"} @String{pub-ACM:adr = "New York, NY, USA"} @String{pub-AW = "Ad{\-d}i{\-s}on-Wes{\-l}ey"} @String{pub-AW:adr = "Reading, MA, USA"} %%% ==================================================================== %%% Series abbreviations: @String{ser-SIGPLAN = "ACM SIG{\-}PLAN Notices"} %%% ==================================================================== %%% Bibliography entries, in publication order: @Article{Clinger:1990:HRF, author = "William D. Clinger", title = "How to Read Floating Point Numbers Accurately", journal = j-SIGPLAN, volume = "25", number = "6", pages = "92--101", month = jun, year = "1990", CODEN = "SINODQ", ISBN = "0-89791-364-7", ISBN-13 = "978-0-89791-364-5", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:15:53 MST 2003", bibsource = "Compendex database; garbo.uwasa.fi:/pc/doc-soft/fpbiblio.txt; http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/pldi/93542/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "See also output algorithms in \cite{Knuth:1990:SPW,Steele:1990:HPF,Burger:1996:PFP,Abbott:1999:ASS,Steele:2004:RHP}.", URL = "http://www.acm.org:80/pubs/citations/proceedings/pldi/93542/p92-clinger/", abstract = "Consider the problem of converting decimal scientific notation for a number into the best binary floating point approximation to that number, for some fixed precision. This problem cannot be solved using arithmetic of any fixed precision. Hence the IEEE Standard for Binary Floating-Point Arithmetic does not require the result of such a conversion to be the best approximation. This paper presents an efficient algorithm that always finds the best approximation. The algorithm uses a few extra bits of precision to compute an IEEE-conforming approximation while testing an intermediate result to determine whether the approximation could be other than the best. If the approximation might not be the best, then the best approximation is determined by a few simple operations on multiple-precision integers, where the precision is determined by the input. When using 64 bits of precision to compute IEEE double precision results, the algorithm avoids higher-precision arithmetic over 99\% of the time.", acknowledgement = ack-nhfb # " and " # ack-nj, affiliation = "Oregon Univ., Eugene, OR, USA", annote = "Published as part of the Proceedings of PLDI'90.", classification = "722; 723; C1160 (Combinatorial mathematics); C5230 (Digital arithmetic methods); C7310 (Mathematics)", confdate = "20-22 June 1990", conference = "Proceedings of the ACM SIGPLAN '90 Conference on Programming Language Design and Implementation", conferenceyear = "1990", conflocation = "White Plains, NY, USA", confsponsor = "ACM", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", journalabr = "SIGPLAN Not", keywords = "algorithms; Best binary floating point approximation; Computer Programming Languages; Computers, Digital --- Computational Methods; Decimal scientific notation; Design; Efficient algorithm; experimentation; Fixed precision; Floating point numbers; Floating Point Numbers; Higher-precision arithmetic; IEEE double precision results; IEEE Standard; IEEE-conforming approximation; Intermediate result; Multiple-precision integers", meetingaddress = "White Plains, NY, USA", meetingdate = "Jun 20--22 1990", meetingdate2 = "06/20--22/90", sponsor = "Assoc for Computing Machinery, Special Interest Group on Programming Languages", subject = "{\bf F.2.1} Theory of Computation, ANALYSIS OF ALGORITHMS AND PROBLEM COMPLEXITY, Numerical Algorithms and Problems. {\bf G.1.0} Mathematics of Computing, NUMERICAL ANALYSIS, General, Computer arithmetic. {\bf G.1.2} Mathematics of Computing, NUMERICAL ANALYSIS, Approximation.", thesaurus = "Digital arithmetic; Mathematics computing; Number theory; Standards", } @Article{Steele:1990:HPF, author = "Guy L. {Steele, Jr.} and Jon L. White", title = "How to Print Floating-Point Numbers Accurately", journal = j-SIGPLAN, volume = "25", number = "6", pages = "112--126", month = jun, year = "1990", CODEN = "SINODQ", ISBN = "0-89791-364-7", ISBN-13 = "978-0-89791-364-5", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:15:53 MST 2003", bibsource = "Compendex database; http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/pldi/93542/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "See also input algorithm in \cite{Clinger:1990:HRF,Clinger:2004:RHR}, and a faster output algorithm in \cite{Burger:1996:PFP} and \cite{Knuth:1990:SPW}, IBM S/360 algorithms in \cite{Abbott:1999:ASS} for both IEEE 754 and S/360 formats, and a twenty-year retrospective in \cite{Steele:2004:RHP}. In electronic mail dated Wed, 27 Jun 1990 11:55:36 EDT, Guy Steele reported that an intrepid pre-SIGPLAN 90 conference implementation of what is stated in the paper revealed 3 mistakes: \begin{itemize} \item[1.] Table~5 (page 124):\par \noindent insert {\tt k <-- 0} after assertion, and also delete {\tt k <-- 0} from Table~6. \item[2.] Table~9 (page 125):\par \noindent \begin{tabular} {ll} for & {\tt -1:USER!({"}{"});} \\ substitute & {\tt -1:USER!({"}0{"});} \end{tabular}\par \noindent and delete the comment. \item[3.] Table~10 (page 125):\par \noindent \begin{tabular}{ll} for & {\tt fill(-k, {"}0{"})}\\ substitute & {\tt fill(-k-1, {"}0{"})} \end{tabular} \end{itemize} \def\EatBibTeXPeriod#1{\ifx#1.\else#1\fi}\EatBibTeXPeriod", URL = "http://www.acm.org:80/pubs/citations/proceedings/pldi/93542/p112-steele/", abstract = "Algorithms are presented for accurately converting floating-point numbers to decimal representation. The key idea is to carry along with the computation an explicit representation of the required rounding accuracy. The authors begin with the simpler problem of converting fixed-point fractions. A modification of the well-known algorithm for radix-conversion of fixed-point fractions by multiplication explicitly determines when to terminate the conversion process; a variable number of digits are produced. They derive two algorithms for free-format output of floating-point numbers. Finally, they modify the free-format conversion algorithm for use in fixed-format applications. Information may be lost if the fixed format provides too few digit positions, but the output is always correctly rounded. On the other hand, no `garbage digits' are ever produced, even if the fixed format specifies too many digit positions (intuitively, the `4/3 prints as 1.333333328366279602' problem does not occur).", acknowledgement = ack-nhfb, affiliation = "Thinking Machines Corp", affiliationaddress = "Cambridge, MA, USA", classification = "722; 723; C5230 (Digital arithmetic methods); C7310 (Mathematics)", confdate = "20-22 June 1990", conference = "Proceedings of the ACM SIGPLAN '90 Conference on Programming Language Design and Implementation", conferenceyear = "1990", conflocation = "White Plains, NY, USA", confsponsor = "ACM", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", journalabr = "SIGPLAN Not", keywords = "algorithms; computer programming languages; computers, digital --- computational methods; conversion process; decimal representation; design; digit positions; explicit representation; fixed-format applications; fixed-point fractions; floating point numbers; floating-point numbers; free-format conversion algorithm; free-format output; garbage digits; performance; radix-conversion; rounding accuracy; verification", remark = "Published as part of the Proceedings of PLDI'90.", sponsor = "Assoc for Computing Machinery, Special Interest Group on Programming Languages", subject = "{\bf F.2.1} Theory of Computation, ANALYSIS OF ALGORITHMS AND PROBLEM COMPLEXITY, Numerical Algorithms and Problems. {\bf G.1.0} Mathematics of Computing, NUMERICAL ANALYSIS, General, Computer arithmetic.", thesaurus = "Digital arithmetic; Mathematics computing", xxabstract = "We present algorithms for accurately converting floating-point numbers to decimal representation. The key idea is to carry along with the computation an explicit representation of the required rounding accuracy. We begin with the simpler problem of converting fixed-point fractions. A modification of the well-known algorithm for radix-conversion of fixed-point fractions by multiplication explicitly determines when to terminate the conversion process; a variable number of digits are produced. We then derive two algorithms for free-format output of floating-point numbers. Finally, we modify the free-format conversion algorithm for use in fixed-format applications.", } @Article{Sirer:2000:UPG, author = "Emin G{\"u}n Sirer and Brian N. Bershad", title = "Using Production Grammars in Software Testing", journal = j-SIGPLAN, volume = "35", number = "1", pages = "1--13", month = jan, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:13 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Nakatani:2000:JDE, author = "Lloyd H. Nakatani and Mark A. Ardis and Robert G. Olsen and Paul M. Pontrelli", title = "Jargons for Domain Engineering", journal = j-SIGPLAN, volume = "35", number = "1", pages = "15--24", month = jan, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:13 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Reichwein:2000:SSI, author = "James Reichwein and Gregg Rothermel and Margaret Burnett", title = "Slicing Spreadsheets: An Integrated Methodology for Spreadsheet Testing and Debugging", journal = j-SIGPLAN, volume = "35", number = "1", pages = "25--38", month = jan, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:13 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Guyer:2000:ALO, author = "Samuel Z. Guyer and Calvin Lin", title = "An Annotation Language for Optimizing Software Libraries", journal = j-SIGPLAN, volume = "35", number = "1", pages = "39--52", month = jan, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:13 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "PLAPACK", } @Article{Menon:2000:CSL, author = "Vijay Menon and Keshav Pingali", title = "A Case for Source-Level Transformations in {MATLAB}", journal = j-SIGPLAN, volume = "35", number = "1", pages = "53--65", month = jan, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:13 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Parson:2000:UJR, author = "Dale E. Parson", title = "Using {Java} Reflection to Automate Extension Language Parsing", journal = j-SIGPLAN, volume = "35", number = "1", pages = "67--80", month = jan, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:13 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sheard:2000:DIU, author = "Tim Sheard and Zine-el-abidine Benaissa and Emir Pasalic", title = "{DSL} Implementation Using Staging and Monads", journal = j-SIGPLAN, volume = "35", number = "1", pages = "81--94", month = jan, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:13 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Peterson:2000:MR, author = "John Peterson and Greg Hager", title = "Monadic Robotics", journal = j-SIGPLAN, volume = "35", number = "1", pages = "95--108", month = jan, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:13 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Leijen:2000:DSE, author = "Daan Leijen and Erik Meijer", title = "Domain-Specific Embedded Compilers", journal = j-SIGPLAN, volume = "35", number = "1", pages = "109--122", month = jan, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:13 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Jennings:2000:VVE, author = "James Jennings and Eric Beuscher", title = "{Verischemelog}: {Verilog} Embedded in {Scheme}", journal = j-SIGPLAN, volume = "35", number = "1", pages = "123--134", month = jan, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:13 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fernandez:2000:DSD, author = "Mary Fern{\'a}ndez and Dan Suciu and Igor Tatarinov", title = "Declarative Specification of Data-Intensive {Web} Sites", journal = j-SIGPLAN, volume = "35", number = "1", pages = "135--148", month = jan, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:13 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Li:2000:CSL, author = "Du Li and Richard R. Muntz", title = "A Collaboration Specification Language", journal = j-SIGPLAN, volume = "35", number = "1", pages = "149--162", month = jan, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:13 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bonachea:2000:HLP, author = "Dan Bonachea and Kathleen Fisher and Anne Rogers and Frederick Smith", title = "{Hancock}: {A} Language for Processing Very Large-Scale Data", journal = j-SIGPLAN, volume = "35", number = "1", pages = "163--176", month = jan, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:13 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ryder:2000:CCP, author = "Barbara G. Ryder", title = "Conference Corner: {PLDI} '99: Programming Language Design and Implementation (Report)", journal = j-SIGPLAN, volume = "35", number = "2", pages = "9--9", month = feb, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 26 17:06:07 MDT 2000", bibsource = "http://ftp.informatik.rwth-aachen.de/dblp/db/journals/sigplan/sigplan35.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://ftp.informatik.rwth-aachen.de/dblp/db/indices/a-tree/r/Ryder:Barbara_G=.html", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ryder:2000:PPL, author = "Barbara Ryder", title = "{PLDI '99}: {Programming} language design and implementation", journal = j-SIGPLAN, volume = "35", number = "2", pages = "9--10", year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:14 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Clark:2000:PPPa, author = "Chis Clark", title = "Practical Parsing Patterns: Uniform Abstract Syntax Trees", journal = j-SIGPLAN, volume = "35", number = "2", pages = "11--16", month = feb, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 26 17:06:07 MDT 2000", bibsource = "http://ftp.informatik.rwth-aachen.de/dblp/db/journals/sigplan/sigplan35.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://ftp.informatik.rwth-aachen.de/dblp/db/indices/a-tree/c/Clark:Chis.html", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Clark:2000:UAS, author = "Chris Clark", title = "Uniform abstract syntax trees", journal = j-SIGPLAN, volume = "35", number = "2", pages = "11--16", year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:14 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2000:FUR, author = "Paul Frenger", title = "{Forth}: The Ultimate {RISC}: {A} Zero-Instruction Computer", journal = j-SIGPLAN, volume = "35", number = "2", pages = "17--23", month = feb, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 26 17:06:07 MDT 2000", bibsource = "http://ftp.informatik.rwth-aachen.de/dblp/db/journals/sigplan/sigplan35.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://ftp.informatik.rwth-aachen.de/dblp/db/indices/a-tree/f/Frenger:Paul.html", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2000:URZ, author = "Paul Frenger", title = "The {Ultimate RISC}: {A} zero-instruction computer", journal = j-SIGPLAN, volume = "35", number = "2", pages = "17--24", year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:14 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Reinholtz:2000:JWF, author = "Kirk Reinholtz", title = "{Java} will be faster than {C++}", journal = j-SIGPLAN, volume = "35", number = "2", pages = "25--28", year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:14 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Reinholtz:2000:TCJ, author = "Kirk Reinholtz", title = "Technical Correspondence: {Java} will be faster than {C++}", journal = j-SIGPLAN, volume = "35", number = "2", pages = "25--28", month = feb, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 26 17:06:07 MDT 2000", bibsource = "http://ftp.informatik.rwth-aachen.de/dblp/db/journals/sigplan/sigplan35.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://ftp.informatik.rwth-aachen.de/dblp/db/indices/a-tree/r/Reinholtz:Kirk.html", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Davis:2000:OOA, author = "Matthew S. Davis", title = "An Object Oriented Approach to Constructing Recursive Descent Parsers", journal = j-SIGPLAN, volume = "35", number = "2", pages = "29--35", month = feb, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:14 MST 2003", bibsource = "http://ftp.informatik.rwth-aachen.de/dblp/db/journals/sigplan/sigplan35.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://ftp.informatik.rwth-aachen.de/dblp/db/indices/a-tree/d/Davis:Matthew_S=.html", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Milicev:2000:SPS, author = "Dragan Milicev and Zoran Jovanovic", title = "Sources of parallelism in software pipelining loops with conditional branches", journal = j-SIGPLAN, volume = "35", number = "2", pages = "36--45", year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:14 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Milicev:2000:SSP, author = "Dragan Milicev and Zoran Jovanovic", title = "Sources in Software Pipelining Loops with Conditions Branches", journal = j-SIGPLAN, volume = "35", number = "2", pages = "36--45", month = feb, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 26 17:06:07 MDT 2000", bibsource = "http://ftp.informatik.rwth-aachen.de/dblp/db/journals/sigplan/sigplan35.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://ftp.informatik.rwth-aachen.de/dblp/db/indices/a-tree/j/Jovanovic:Zoran.html; http://ftp.informatik.rwth-aachen.de/dblp/db/indices/a-tree/m/Milicev:Dragan.html", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Simonis:2000:ABO, author = "Volker Simonis", title = "Adapters and Binders --- Overcoming Problems in the Design and Implementation of the {C++-STL}", journal = j-SIGPLAN, volume = "35", number = "2", pages = "46--53", month = feb, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:14 MST 2003", bibsource = "http://ftp.informatik.rwth-aachen.de/dblp/db/journals/sigplan/sigplan35.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://ftp.informatik.rwth-aachen.de/dblp/db/indices/a-tree/s/Simonis:Volker.html", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Xie:2000:CST, author = "Gaoyan Xie and Yongsen Xu and Yu Li and Qian Li", title = "{Codebugger}: a software tool for cooperative debugging", journal = j-SIGPLAN, volume = "35", number = "2", pages = "54--60", month = feb, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:14 MST 2003", bibsource = "http://ftp.informatik.rwth-aachen.de/dblp/db/journals/sigplan/sigplan35.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://ftp.informatik.rwth-aachen.de/dblp/db/indices/a-tree/l/Li:Qian.html; http://ftp.informatik.rwth-aachen.de/dblp/db/indices/a-tree/l/Li:Yu.html; http://ftp.informatik.rwth-aachen.de/dblp/db/indices/a-tree/x/Xie:Gaooyan.html; http://ftp.informatik.rwth-aachen.de/dblp/db/indices/a-tree/x/Xu:YongSen.html", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Swen:2000:OOP, author = "Bing Swen", title = "Object-Oriented Programming with Induction", journal = j-SIGPLAN, volume = "35", number = "2", pages = "61--67", month = feb, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:14 MST 2003", bibsource = "http://ftp.informatik.rwth-aachen.de/dblp/db/journals/sigplan/sigplan35.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://ftp.informatik.rwth-aachen.de/dblp/db/indices/a-tree/s/Swen:Bing.html", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2000:IIA, author = "Anonymous", title = "Important Information for {ACM SIGPLAN Notices} Authors", journal = j-SIGPLAN, volume = "35", number = "3", pages = "1--1", month = mar, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Soffa:2000:ECN, author = "Mary Lou Soffa", title = "{Executive Committee} News: 1999 {SIGPLAN} Awards", journal = j-SIGPLAN, volume = "35", number = "3", pages = "2--3", month = mar, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bergmann:2000:CCCa, author = "Seth Bergmann", title = "Conference Corner: Calendar", journal = j-SIGPLAN, volume = "35", number = "3", pages = "4--15", month = mar, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Pontelli:2000:CCC, author = "Enrico Pontelli and Vitor Santos Costa", title = "Conference Corner: Conference Report: {PADL '00: Workshop on Practical Aspects of Declarative Languages}", journal = j-SIGPLAN, volume = "35", number = "3", pages = "16--17", month = mar, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chalk:2000:CCC, author = "Peter Chalk", title = "Conference Corner: Conference Report: {JICC4: Java in the Computing Curricula}", journal = j-SIGPLAN, volume = "35", number = "3", pages = "18--19", month = mar, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chalk:2000:JJC, author = "Peter Chalk", title = "{JICC4}: {Java} in the computing curricula", journal = j-SIGPLAN, volume = "35", number = "3", pages = "18--19", month = mar, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:14 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2000:CPI, author = "Anonymous", title = "Call for Papers: {2000 International Symposium on Memory Management (ISMM), Minneapolis, Minnesota, October 15--16, 2000}", journal = j-SIGPLAN, volume = "35", number = "3", pages = "20--20", month = mar, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Benson:2000:JRS, author = "Brent W. {Benson, Jr.}", title = "{Java} Reflections: Servlets: {Web}-Based Applications You Can Live With", journal = j-SIGPLAN, volume = "35", number = "3", pages = "21--24", month = mar, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Benson:2000:WBA, author = "Brent W. {Benson, Jr.}", title = "{Web}-based applications you can live with", journal = j-SIGPLAN, volume = "35", number = "3", pages = "21--24", month = mar, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:14 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2000:FRL, author = "Paul Frenger", title = "{Forth} Report: Learning {Forth} with {Modular Forth}", journal = j-SIGPLAN, volume = "35", number = "3", pages = "25--30", month = mar, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2000:LFM, author = "Paul Frenger", title = "Learning {Forth} with {Modular Forth}", journal = j-SIGPLAN, volume = "35", number = "3", pages = "25--30", month = mar, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:14 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bergin:2000:HPL, author = "Tim Bergin", title = "History of Programming Languages and Software Engineering: {A} {Web}-Based Tool", journal = j-SIGPLAN, volume = "35", number = "3", pages = "31--31", month = mar, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:14 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Padua:2000:CIA, author = "David Padua and Ron Cytron", title = "Compilers and Interpreters Archive", journal = j-SIGPLAN, volume = "35", number = "3", pages = "32--32", month = mar, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:14 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bergmann:2000:IA, author = "A. Michael Bergmann", title = "Information for Authors", journal = j-SIGPLAN, volume = "35", number = "3", pages = "33--33", month = mar, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Li:2000:SPN, author = "Yu Li and Gaoyan Xie and Yongsen Xu and Yi Yang", title = "The Security Problem of Nested Classes", journal = j-SIGPLAN, volume = "35", number = "3", pages = "34--38", month = mar, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Yu:2000:SPN, author = "Li Yu and Xie Gaoyan and Xu Yongsen and Yang Yi", title = "The security problem of nested classes", journal = j-SIGPLAN, volume = "35", number = "3", pages = "34--38", month = mar, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:14 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Heering:2000:SPL, author = "Jan Heering and Paul Klint", title = "Semantics of Programming Languages: {A} Tool-Oriented Approach", journal = j-SIGPLAN, volume = "35", number = "3", pages = "39--48", month = mar, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:14 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Naik:2000:EMD, author = "Mayur Naik and Rajeev Kumar", title = "Efficient Message Dispatch in Object-Oriented Systems", journal = j-SIGPLAN, volume = "35", number = "3", pages = "49--58", month = mar, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:14 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kokol:2000:RCN, author = "Peter Kokol and Vili Podgorelec", title = "Ranking the Complexity of {NIAM} Conceptual Schemas by Alpha Metric", journal = j-SIGPLAN, volume = "35", number = "3", pages = "59--64", month = mar, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:14 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Li:2000:INN, author = "Tao Li and XiaoJie Liu", title = "An Intelligent {Neural Network Programming System (NNPS)}", journal = j-SIGPLAN, volume = "35", number = "3", pages = "65--72", month = mar, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:14 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ramsey:2000:IPC, author = "Norman Ramsey and Kevin Scott", title = "The 1999 {ICFP} Programming Contest", journal = j-SIGPLAN, volume = "35", number = "3", pages = "73--83", month = mar, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:14 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Berman:2000:LEW, author = "A. Michael Berman", title = "Letter from the Editor; Welcome ever smiles \slash{} And farewell goes out sighing", journal = j-SIGPLAN, volume = "35", number = "4", pages = "1--1", month = apr, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Berman:2000:IIA, author = "A. Michael Berman", title = "Important Information for {ACM SIGPLAN Notices} Authors", journal = j-SIGPLAN, volume = "35", number = "4", pages = "2--2", month = apr, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bergmann:2000:CCCb, author = "Seth Bergmann", title = "Conference Corner: Calendar", journal = j-SIGPLAN, volume = "35", number = "4", pages = "3--16", month = apr, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2000:CPA, author = "Anonymous", title = "Call for Papers: {The 28th Annual ACM-SIGACT Symposium Principles of Programming Languages, London, January 17--19, 2001 (POPL'01)}", journal = j-SIGPLAN, volume = "35", number = "4", pages = "17--17", month = apr, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Clark:2000:NLS, author = "Chris Clark", title = "Newlines and lexer states", journal = j-SIGPLAN, volume = "35", number = "4", pages = "18--24", month = apr, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:16 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Clark:2000:PPPb, author = "Chris Clark", title = "Practical Parsing Patterns: Newlines and Lexer States", journal = j-SIGPLAN, volume = "35", number = "4", pages = "18--24", month = apr, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Norris:2000:IA, author = "Cindy Norris", title = "Information for Authors", journal = j-SIGPLAN, volume = "35", number = "4", pages = "25--25", month = apr, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bruce:2000:CDF, author = "Kim B. Bruce", title = "{Curriculum 2001} Draft Found Lacking in Programming Languages", journal = j-SIGPLAN, volume = "35", number = "4", pages = "26--28", month = apr, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:16 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2000:PKU, author = "Anonymous", title = "Proposed knowledge units for programming languages for {Curriculum 2001}", journal = j-SIGPLAN, volume = "35", number = "4", pages = "29--43", month = apr, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:16 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Group:2000:PKU, author = "{Programming Language Knowledge Focus Group}", title = "Proposed Knowledge Units for Programming Languages for {Curriculum 2001}", journal = j-SIGPLAN, volume = "35", number = "4", pages = "29--43", month = apr, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Manjunath:2000:SHJ, author = "Geetha Manjunath and Venkatesh Krishnan", title = "A {{\em Small\/}} Hybrid {JIT} for Embedded Systems", journal = j-SIGPLAN, volume = "35", number = "4", pages = "44--50", month = apr, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:16 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sakharov:2000:HSM, author = "Alexander Sakharov", title = "A Hybrid State Machine Notation for Component Specification", journal = j-SIGPLAN, volume = "35", number = "4", pages = "51--56", month = apr, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:16 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bala:2000:DTDa, author = "Vasanth Bala and Evelyn Duesterwald and Sanjeev Banerjia", title = "{Dynamo}: a transparent dynamic optimization system", journal = j-SIGPLAN, volume = "35", number = "5", pages = "1--12", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p1-bala/p1-bala.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p1-bala/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cierniak:2000:PJJ, author = "Micha{\l} Cierniak and Guei-Yuan Lueh and James M. Stichnoth", title = "Practicing {JUDO}: {Java} under dynamic optimizations", journal = j-SIGPLAN, volume = "35", number = "5", pages = "13--26", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p13-cierniak/p13-cierniak.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p13-cierniak/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lucco:2000:SSD, author = "Steven Lucco", title = "Split-stream dictionary program compression", journal = j-SIGPLAN, volume = "35", number = "5", pages = "27--34", month = may, year = "2000", CODEN = "SINODQ", DOI = "https://doi.org/10.1145.349307", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://delivery.acm.org/10.1145/350000/349307/p27-lucco.pdf; http://www.acm.org/pubs/articles/proceedings/pldi/349299/p27-lucco/p27-lucco.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p27-lucco/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "IA-64", } @Article{Das:2000:UBP, author = "Manuvir Das", title = "Unification-based pointer analysis with directional assignments", journal = j-SIGPLAN, volume = "35", number = "5", pages = "35--46", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p35-das/p35-das.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p35-das/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Rountev:2000:LVS, author = "Atanas Rountev and Satish Chandra", title = "Off-line variable substitution for scaling points-to analysis", journal = j-SIGPLAN, volume = "35", number = "5", pages = "47--56", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p47-rountev/p47-rountev.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p47-rountev/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cheng:2000:MIP, author = "Ben-Chung Cheng and Wen-mei W. Hwu", title = "Modular interprocedural pointer analysis using access paths: design, implementation, and evaluation", journal = j-SIGPLAN, volume = "35", number = "5", pages = "57--69", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p57-cheng/p57-cheng.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p57-cheng/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Xu:2000:SCM, author = "Zhichen Xu and Barton P. Miller and Thomas Reps", title = "Safety checking of machine code", journal = j-SIGPLAN, volume = "35", number = "5", pages = "70--82", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p70-xu/p70-xu.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p70-xu/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Necula:2000:TVO, author = "George C. Necula", title = "Translation validation for an optimizing compiler", journal = j-SIGPLAN, volume = "35", number = "5", pages = "83--94", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p83-necula/p83-necula.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p83-necula/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Colby:2000:CCJ, author = "Christopher Colby and Peter Lee and George C. Necula and Fred Blau and Mark Plesko and Kenneth Cline", title = "A certifying compiler for {Java}", journal = j-SIGPLAN, volume = "35", number = "5", pages = "95--107", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p95-colby/p95-colby.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p95-colby/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Stephenson:2000:BAA, author = "Mark Stephenson and Jonathan Babb and Saman Amarasinghe", title = "Bidwidth analysis with application to silicon compilation", journal = j-SIGPLAN, volume = "35", number = "5", pages = "108--120", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p108-stephenson/p108-stephenson.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p108-stephenson/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wilken:2000:OIS, author = "Kent Wilken and Jack Liu and Mark Heffernan", title = "Optimal instruction scheduling using integer programming", journal = j-SIGPLAN, volume = "35", number = "5", pages = "121--133", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p121-wilken/p121-wilken.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p121-wilken/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zalamea:2000:ISC, author = "Javier Zalamea and Josep Llosa and Eduard Ayguad{\'e} and Mateo Valero", title = "Improved spill code generation for software pipelined loops", journal = j-SIGPLAN, volume = "35", number = "5", pages = "134--144", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p134-zalamea/p134-zalamea.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p134-zalamea/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Larsen:2000:ESL, author = "Samuel Larsen and Saman Amarasinghe", title = "Exploiting superword level parallelism with multimedia instruction sets", journal = j-SIGPLAN, volume = "35", number = "5", pages = "145--156", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p145-larsen/p145-larsen.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p145-larsen/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lin:2000:CAI, author = "Yuan Lin and David Padua", title = "Compiler analysis of irregular memory accesses", journal = j-SIGPLAN, volume = "35", number = "5", pages = "157--168", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p157-lin/p157-lin.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p157-lin/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Yi:2000:TLR, author = "Qing Yi and Vikram Adve and Ken Kennedy", title = "Transforming loops to recursion for multi-level memory hierarchies", journal = j-SIGPLAN, volume = "35", number = "5", pages = "169--181", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p169-yi/p169-yi.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p169-yi/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Rugina:2000:SBA, author = "Radu Rugina and Martin Rinard", title = "Symbolic bounds analysis of pointers, array indices, and accessed memory regions", journal = j-SIGPLAN, volume = "35", number = "5", pages = "182--195", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p182-rugina/p182-rugina.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p182-rugina/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sreedhar:2000:FIO, author = "Vugranam C. Sreedhar and Michael Burke and Jong-Deok Choi", title = "A framework for interprocedural optimization in the presence of dynamic class loading", journal = j-SIGPLAN, volume = "35", number = "5", pages = "196--207", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p196-sreedhar/p196-sreedhar.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p196-sreedhar/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ruf:2000:ESR, author = "Erik Ruf", title = "Effective synchronization removal for {Java}", journal = j-SIGPLAN, volume = "35", number = "5", pages = "208--218", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p208-ruf/p208-ruf.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p208-ruf/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Flanagan:2000:TBR, author = "Cormac Flanagan and Stephen N. Freund", title = "Type-based race detection for {Java}", journal = j-SIGPLAN, volume = "35", number = "5", pages = "219--232", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p219-flanagan/p219-flanagan.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p219-flanagan/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ramalingam:2000:LDD, author = "G. Ramalingam", title = "On loops, dominators, and dominance frontier", journal = j-SIGPLAN, volume = "35", number = "5", pages = "233--241", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p233-ramalingam/p233-ramalingam.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p233-ramalingam/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wan:2000:FRP, author = "Zhanyong Wan and Paul Hudak", title = "Functional reactive programming from first principles", journal = j-SIGPLAN, volume = "35", number = "5", pages = "242--252", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p242-wan/p242-wan.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p242-wan/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fahndrich:2000:SCS, author = "Manuel F{\"a}hndrich and Jakob Rehof and Manuvir Das", title = "Scalable context-sensitive flow analysis using instantiation constraints", journal = j-SIGPLAN, volume = "35", number = "5", pages = "253--263", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p253-fahndrich/p253-fahndrich.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p253-fahndrich/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cannarozzi:2000:CGC, author = "Dante J. Cannarozzi and Michael P. Plezbert and Ron K. Cytron", title = "Contaminated garbage collection", journal = j-SIGPLAN, volume = "35", number = "5", pages = "264--273", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p264-cannarozzi/p264-cannarozzi.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p264-cannarozzi/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Domani:2000:GFG, author = "Tamar Domani and Elliot K. Kolodner and Erez Petrank", title = "A generational on-the-fly garbage collector for {Java}", journal = j-SIGPLAN, volume = "35", number = "5", pages = "274--284", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p274-domani/p274-domani.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p274-domani/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ramsey:2000:SIL, author = "Norman Ramsey and Simon Peyton Jones", title = "A single intermediate language that supports multiple implementations of exceptions", journal = j-SIGPLAN, volume = "35", number = "5", pages = "285--298", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p285-ramsey/p285-ramsey.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p285-ramsey/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Boothe:2000:EAB, author = "Bob Boothe", title = "Efficient algorithms for bidirectional debugging", journal = j-SIGPLAN, volume = "35", number = "5", pages = "299--310", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p299-boothe/p299-boothe.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p299-boothe/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Heydon:2000:CFC, author = "Allan Heydon and Roy Levin and Yuan Yu", title = "Caching function calls using precise dependencies", journal = j-SIGPLAN, volume = "35", number = "5", pages = "311--320", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p311-heydon/p311-heydon.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p311-heydon/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bodik:2000:AEA, author = "Rastislav Bod{\'\i}k and Rajiv Gupta and Vivek Sarkar", title = "{ABCD}: eliminating array bounds checks on demand", journal = j-SIGPLAN, volume = "35", number = "5", pages = "321--333", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p321-bodik/p321-bodik.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p321-bodik/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ghemawat:2000:FAG, author = "Sanjay Ghemawat and Keith H. Randall and Daniel J. Scales", title = "Field analysis: getting useful and low-cost interprocedural information", journal = j-SIGPLAN, volume = "35", number = "5", pages = "334--344", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p334-ghemawat/p334-ghemawat.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p334-ghemawat/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Dolby:2000:AOI, author = "Julian Dolby and Andrew Chien", title = "An automatic object inlining optimization and its evaluation", journal = j-SIGPLAN, volume = "35", number = "5", pages = "345--357", month = may, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/pldi/349299/p345-dolby/p345-dolby.pdf; http://www.acm.org/pubs/citations/proceedings/pldi/349299/p345-dolby/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cytron:2000:LC, author = "Ron Cytron", title = "Letter from the {Chair}", journal = j-SIGPLAN, volume = "35", number = "6", pages = "1--1", month = jun, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bergmann:2000:CCCc, author = "Seth Bergmann", title = "Conference Corner: Calendar", journal = j-SIGPLAN, volume = "35", number = "6", pages = "2--14", month = jun, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Clark:2000:PPPc, author = "Chris Clark", title = "Practical Parsing Patterns: Off-and-On Tokens", journal = j-SIGPLAN, volume = "35", number = "6", pages = "15--20", month = jun, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Clark:2000:T, author = "Chris Clark", title = "Off-and-on tokens", journal = j-SIGPLAN, volume = "35", number = "6", pages = "15--20", month = jun, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:17 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2000:FRG, author = "Paul Frenger", title = "{Forth} Report: The {GOTO} Machine", journal = j-SIGPLAN, volume = "35", number = "6", pages = "21--24", month = jun, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2000:GM, author = "Paul Frenger", title = "{GOTO} machine", journal = j-SIGPLAN, volume = "35", number = "6", pages = "21--24", month = jun, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:17 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fenwick:2000:IAa, author = "Jan Fenwick and Cindy Norris", title = "Information for Authors", journal = j-SIGPLAN, volume = "35", number = "6", pages = "25--25", month = jun, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{vanDeursen:2000:DSL, author = "Arie van Deursen and Paul Klint and Joost Visser", title = "Domain-Specific Languages: An Annotated Bibliography", journal = j-SIGPLAN, volume = "35", number = "6", pages = "26--36", month = jun, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:17 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Srikant:2000:EPA, author = "Y. N. Srikant and D. V. Ravindra", title = "Effective Parametrization of Architectural Registers for Register Allocation Algorithms", journal = j-SIGPLAN, volume = "35", number = "6", pages = "37--46", month = jun, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:17 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", xxauthor = "{Srikant Y. N.} and {Ravindra D. V.}", xxtitle = "Effective parameterization of architectural registers for register allocation algorithms", } @Article{Schupp:2000:LLC, author = "Sibylle Schupp", title = "Lazy Lists in {C++}", journal = j-SIGPLAN, volume = "35", number = "6", pages = "47--54", month = jun, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:17 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Smith:2000:OCF, author = "Michael D. Smith", title = "Overcoming the challenges to feedback-directed optimization (Keynote Talk)", journal = j-SIGPLAN, volume = "35", number = "7", pages = "1--11", month = jul, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:18 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Engler:2000:DTA, author = "Dawson R. Engler and Wilson C. Hsieh", title = "{Derive}: a tool that automatically reverse-engineers instruction encodings", journal = j-SIGPLAN, volume = "35", number = "7", pages = "12--22", month = jul, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:18 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Johansson:2000:PGO, author = "Erik Johansson and Sven-olof Nystr{\"o}m", title = "Profile-Guided Optimization Across Process Boundaries", journal = j-SIGPLAN, volume = "35", number = "7", pages = "23--31", month = jul, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:18 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Voss:2000:FRD, author = "Michael J. Voss and Rudolf Eigenmann", title = "A Framework for Remote Dynamic Program Optimization", journal = j-SIGPLAN, volume = "35", number = "7", pages = "32--40", month = jul, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:18 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ung:2000:MAD, author = "David Ung and Cristina Cifuentes", title = "Machine-Adaptable Dynamic Binary Translation", journal = j-SIGPLAN, volume = "35", number = "7", pages = "41--51", month = jul, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:18 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Arnold:2000:CSS, author = "Matthew Arnold and Stephen Fink and Vivek Sarkar and Peter F. Sweeney", title = "A Comparative Study of Static and Profile-Based Heuristics for Inlining", journal = j-SIGPLAN, volume = "35", number = "7", pages = "52--64", month = jul, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:18 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Mehofer:2000:PDF, author = "Eduard Mehofer and Bernhard Scholz", title = "Probabilistic Data Flow System with Two-Edge Profiling", journal = j-SIGPLAN, volume = "35", number = "7", pages = "65--72", month = jul, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:18 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chambers:2000:D, author = "Craig Chambers", title = "{DyC}", journal = j-SIGPLAN, volume = "35", number = "7", pages = "73--74", month = jul, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chambers:2000:DPS, author = "Craig Chambers", title = "{DyC} (Panel Session)", journal = j-SIGPLAN, volume = "35", number = "7", pages = "73--74", month = jul, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:18 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bala:2000:DTDb, author = "Vasanth Bala", title = "{Dynamo}: {A} Transparent, Dynamic, Native Binary Optimizer", journal = j-SIGPLAN, volume = "35", number = "7", pages = "75--75", month = jul, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cytron:2000:DPS, author = "Ron Cytron and Vasanth Bala", title = "Dynamo (Panel Session): a transparent, dynamic, native binary optimizer", journal = j-SIGPLAN, volume = "35", number = "7", pages = "75--75", month = jul, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:18 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cytron:2000:TPS, author = "Ron Cytron and Renaud Marlet", title = "{Tempo}, a program specializer for {C} (Panel Session)", journal = j-SIGPLAN, volume = "35", number = "7", pages = "76--77", month = jul, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:18 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Marlet:2000:TPS, author = "Renaud Marlet", title = "Tempo, a program specializer for {C}", journal = j-SIGPLAN, volume = "35", number = "7", pages = "76--77", month = jul, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cytron:2000:DCJ, author = "Ron Cytron and Vivek Sarkar", title = "Dynamic compilation in {Jalape{\~n}o} (Panel Session)", journal = j-SIGPLAN, volume = "35", number = "7", pages = "78--78", month = jul, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:18 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sarkar:2000:DCJ, author = "Vivek Sarkar", title = "Dynamic Compilation in {Jalape{\~n}o}", journal = j-SIGPLAN, volume = "35", number = "7", pages = "78--78", month = jul, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chung:2000:SDP, author = "Yoo C. Chung and Michael J. Voss", title = "Summary of the {Dynamo '00} Panel Discussion", journal = j-SIGPLAN, volume = "35", number = "7", pages = "79--81", month = jul, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cytron:2000:SDP, author = "Ron Cytron and Yoo C. Chung and Michael J. Voss", title = "Summary of the {Dynamo '00} panel discussion (Panel Session)", journal = j-SIGPLAN, volume = "35", number = "7", pages = "79--81", month = jul, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:18 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cytron:2000:ECN, author = "Ron Cytron", title = "{Executive Committee} News: {SIGPLAN} Awards", journal = j-SIGPLAN, volume = "35", number = "8", pages = "1--2", month = aug, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bergmann:2000:CCCd, author = "Seth Bergmann", title = "Conference Corner: Calendar", journal = j-SIGPLAN, volume = "35", number = "8", pages = "3--14", month = aug, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2000:FFB, author = "Paul Frenger", title = "{Forth} and the {FreeBSD} bootloader", journal = j-SIGPLAN, volume = "35", number = "8", pages = "15--17", month = aug, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2000:FRF, author = "Paul Frenger", title = "{Forth} Report: {Forth} and the {FreeBSD} Bootloader", journal = j-SIGPLAN, volume = "35", number = "8", pages = "15--17", month = aug, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fenwick:2000:IAb, author = "Jan Fenwick and Cindy Norris", title = "Information for Authors", journal = j-SIGPLAN, volume = "35", number = "8", pages = "18--18", month = aug, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fenwick:2000:IPAa, author = "Jan Fenwick and Cindy Norris", title = "Information for Past Authors", journal = j-SIGPLAN, volume = "35", number = "8", pages = "19--19", month = aug, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fereira:2000:UPL, author = "Ulisses Fereira", title = "{\em uu\/} for Programming Languages", journal = j-SIGPLAN, volume = "35", number = "8", pages = "20--30", month = aug, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ferreira:2000:UPL, author = "Ulisses Ferreira", title = "uu for programming languages", journal = j-SIGPLAN, volume = "35", number = "8", pages = "20--30", month = aug, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Juric:2000:JDO, author = "Matjaz B. Juric and Ivan Rozman and Simon Nash", title = "{Java 2} Distributed Object Middleware Performance Analysis and Optimization", journal = j-SIGPLAN, volume = "35", number = "8", pages = "31--40", month = aug, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wong:2000:FGK, author = "Limsoon Wong", title = "The functional guts of the {Kleisli} query system", journal = j-SIGPLAN, volume = "35", number = "9", pages = "1--10", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p1-wong/p1-wong.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p1-wong/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hosoya:2000:RET, author = "Haruo Hosoya and J{\'e}r{\^o}me Vouillon and Benjamin C. Pierce", title = "Regular expression types for {XML}", journal = j-SIGPLAN, volume = "35", number = "9", pages = "11--22", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p11-hosoya/p11-hosoya.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p11-hosoya/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Queinnec:2000:IBE, author = "Christian Queinnec", title = "The influence of browsers on evaluators or, continuations to program {Web} servers", journal = j-SIGPLAN, volume = "35", number = "9", pages = "23--33", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p23-queinnec/p23-queinnec.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p23-queinnec/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Skalka:2000:SES, author = "Christian Skalka and Scott Smith", title = "Static enforcement of security with types", journal = j-SIGPLAN, volume = "35", number = "9", pages = "34--45", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p34-skalka/p34-skalka.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p34-skalka/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Pottier:2000:IFI, author = "Fran{\c{c}}ois Pottier and Sylvain Conchon", title = "Information flow inference for free", journal = j-SIGPLAN, volume = "35", number = "9", pages = "46--57", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p46-pottier/p46-pottier.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p46-pottier/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Weirich:2000:TSC, author = "Stephanie Weirich", title = "Type-safe cast: (functional pearl)", journal = j-SIGPLAN, volume = "35", number = "9", pages = "58--67", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p58-weirich/p58-weirich.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p58-weirich/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Crary:2000:TCI, author = "Karl Crary", title = "Typed compilation of inclusive subtyping", journal = j-SIGPLAN, volume = "35", number = "9", pages = "68--81", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p68-crary/p68-crary.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p68-crary/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Trifonov:2000:FRI, author = "Valery Trifonov and Bratin Saha and Zhong Shao", title = "Fully reflexive intensional type analysis", journal = j-SIGPLAN, volume = "35", number = "9", pages = "82--93", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p82-trifonov/p82-trifonov.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p82-trifonov/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chakravarty:2000:MTN, author = "Manuel M. T. Chakravarty and Gabriele Keller", title = "More types for nested data parallel programming", journal = j-SIGPLAN, volume = "35", number = "9", pages = "94--105", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p94-chakravarty/p94-chakravarty.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p94-chakravarty/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sage:2000:FDG, author = "Meurig Sage", title = "{FranTk} --- a declarative {GUI} language for {Haskell}", journal = j-SIGPLAN, volume = "35", number = "9", pages = "106--117", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p106-sage/p106-sage.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p106-sage/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{McNamara:2000:FPC, author = "Brian McNamara and Yannis Smaragdakis", title = "Functional programming in {C++}", journal = j-SIGPLAN, volume = "35", number = "9", pages = "118--129", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p118-mcnamara/p118-mcnamara.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p118-mcnamara/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Harper:2000:AMS, author = "Robert Harper and Benjamin C. Pierce", title = "Advanced module systems (invited talk): a guide for the perplexed", journal = j-SIGPLAN, volume = "35", number = "9", pages = "130--130", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p130-harper/p130-harper.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p130-harper/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Okasaki:2000:BFN, author = "Chris Okasaki", title = "Breadth-first numbering: lessons from a small exercise in algorithm design", journal = j-SIGPLAN, volume = "35", number = "9", pages = "131--136", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p131-okasaki/p131-okasaki.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p131-okasaki/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sasano:2000:MIP, author = "Isao Sasano and Zhenjiang Hu and Masato Takeichi and Mizuhito Ogawa", title = "Make it practical: a generic linear-time algorithm for solving maximum-weightsum problems", journal = j-SIGPLAN, volume = "35", number = "9", pages = "137--149", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p137-sasano/p137-sasano.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p137-sasano/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Faxen:2000:CES, author = "Karl-Filip Fax{\'e}n", title = "Cheap eagerness: speculative evaluation in a lazy functional language", journal = j-SIGPLAN, volume = "35", number = "9", pages = "150--161", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p150-faxen/p150-faxen.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p150-faxen/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Baker-Finch:2000:OSP, author = "Clem Baker-Finch and David J. King and Phil Trinder", title = "An operational semantics for parallel lazy evaluation", journal = j-SIGPLAN, volume = "35", number = "9", pages = "162--173", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/fp/351240/p162-baker-finch/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Erkok:2000:RMB, author = "Levent Erk{\"o}k and John Launchbury", title = "Recursive monadic bindings", journal = j-SIGPLAN, volume = "35", number = "9", pages = "174--185", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p174-erkok/p174-erkok.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p174-erkok/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hinze:2000:DBM, author = "Ralf Hinze", title = "Deriving backtracking monad transformers", journal = j-SIGPLAN, volume = "35", number = "9", pages = "186--197", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p186-hinze/p186-hinze.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p186-hinze/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Davies:2000:ITC, author = "Rowan Davies and Frank Pfenning", title = "Intersection types and computational effects", journal = j-SIGPLAN, volume = "35", number = "9", pages = "198--208", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p198-davies/p198-davies.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p198-davies/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Damian:2000:SAP, author = "Daniel Damian and Olivier Danvy", title = "Syntactic accidents in program analysis: on the impact of the {CPS} transformation", journal = j-SIGPLAN, volume = "35", number = "9", pages = "209--220", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/fp/351240/p209-damian/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gapeyev:2000:RSR, author = "Vladimir Gapeyev and Michael Y. Levin and Benjamin C. Pierce", title = "Recursive subtyping revealed: (functional pearl)", journal = j-SIGPLAN, volume = "35", number = "9", pages = "221--231", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p221-gapeyev/p221-gapeyev.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p221-gapeyev/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Curien:2000:DC, author = "Pierre-Louis Curien and Hugo Herbelin", title = "The duality of computation", journal = j-SIGPLAN, volume = "35", number = "9", pages = "233--243", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p233-curien/p233-curien.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p233-curien/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Seger:2000:CFP, author = "Carl Seger", title = "Combining functional programming and hardware verification (invited talk)", journal = j-SIGPLAN, volume = "35", number = "9", pages = "244--244", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p244-seger/p244-seger.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p244-seger/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Serrano:2000:UMA, author = "Manuel Serrano and Hans-J. Boehm", title = "Understanding memory allocation of scheme programs", journal = j-SIGPLAN, volume = "35", number = "9", pages = "245--256", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p245-serrano/p245-serrano.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p245-serrano/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cheadle:2000:NSH, author = "A. M. Cheadle and A. J. Field and S. Marlow and S. L. Peyton Jones and R. L. While", title = "Non-stop {Haskell}", journal = j-SIGPLAN, volume = "35", number = "9", pages = "257--267", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p257-cheadle/p257-cheadle.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p257-cheadle/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Claessen:2000:QLT, author = "Koen Claessen and John Hughes", title = "{QuickCheck}: a lightweight tool for random testing of {Haskell} programs", journal = j-SIGPLAN, volume = "35", number = "9", pages = "268--279", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p268-claessen/p268-claessen.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p268-claessen/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Jones:2000:CCA, author = "Simon Peyton Jones and Jean-Marc Eber and Julian Seward", title = "Composing contracts: an adventure in financial engineering (functional pearl)", journal = j-SIGPLAN, volume = "35", number = "9", pages = "280--292", month = sep, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/icfp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/fp/351240/p280-jones/p280-jones.pdf; http://www.acm.org/pubs/citations/proceedings/fp/351240/p280-jones/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Maessen:2000:IJM, author = "Jan-Willem Maessen and Xiaowei Shen", title = "Improving the {Java} memory model using {CRF}", journal = j-SIGPLAN, volume = "35", number = "10", pages = "1--12", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p1-maessen/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Noble:2000:ECO, author = "James Noble and David Holmes and John Potter", title = "Exclusion for composite objects", journal = j-SIGPLAN, volume = "35", number = "10", pages = "13--28", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p13-noble/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Buhr:2000:OOR, author = "Peter A. Buhr and Ashif S. Harji and Philipp E. Lim and Jiongxiong Chen", title = "Object-oriented real-time concurrency", journal = j-SIGPLAN, volume = "35", number = "10", pages = "29--46", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p29-buhr/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Arnold:2000:AOJ, author = "Matthew Arnold and Stephen Fink and David Grove and Michael Hind and Peter F. Sweeney", title = "Adaptive optimization in the {Jalape{\~n}o} {JVM}", journal = j-SIGPLAN, volume = "35", number = "10", pages = "47--65", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p47-arnold/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Serrano:2000:QQS, author = "Mauricio Serrano and Rajesh Bordawekar and Sam Midkiff and Manish Gupta", title = "{Quicksilver}: a quasi-static compiler for {Java}", journal = j-SIGPLAN, volume = "35", number = "10", pages = "66--82", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p66-serrano/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zaks:2000:SCJ, author = "Ayal Zaks and Vitaly Feldman and Nava Aizikowitz", title = "Sealed calls in {Java} packages", journal = j-SIGPLAN, volume = "35", number = "10", pages = "83--92", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p83-zaks/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lee:2000:RWO, author = "Ji Y. Lee and Hye J. Kim and Kyo C. Kang", title = "A real world object modeling method for creating simulation environment of real-time systems", journal = j-SIGPLAN, volume = "35", number = "10", pages = "93--104", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p93-lee/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bastide:2000:FSC, author = "R{\'e}mi Bastide and Philippe Palanque and Ousmane Sy and David Navarre", title = "Formal specification of {CORBA} services: experience and lessons learned", journal = j-SIGPLAN, volume = "35", number = "10", pages = "105--117", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p105-bastide/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kiernan:2000:MOQ, author = "Jerry Kiernan and Michael J. Carey", title = "Middleware object query processing with deferred updates and autonomous sources", journal = j-SIGPLAN, volume = "35", number = "10", pages = "118--129", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p118-kiernan/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Clifton:2000:MMO, author = "Curtis Clifton and Gary T. Leavens and Craig Chambers and Todd Millstein", title = "{MultiJava}: modular open classes and symmetric multiple dispatch for {Java}", journal = j-SIGPLAN, volume = "35", number = "10", pages = "130--145", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p130-clifton/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Viroli:2000:PPJ, author = "Mirko Viroli and Antonio Natali", title = "Parametric polymorphism in {Java}: an approach to translation based on reflective features", journal = j-SIGPLAN, volume = "35", number = "10", pages = "146--165", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p146-viroli/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Demeyer:2000:FRC, author = "Serge Demeyer and St{\'e}phane Ducasse and Oscar Nierstrasz", title = "Finding refactorings via change metrics", journal = j-SIGPLAN, volume = "35", number = "10", pages = "166--177", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p166-demeyer/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Harrison:2000:MUD, author = "William Harrison and Charles Barton and Mukund Raghavachari", title = "Mapping {UML} designs to {Java}", journal = j-SIGPLAN, volume = "35", number = "10", pages = "178--187", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p178-harrison/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Herrmann:2000:PCS, author = "Stephan Herrmann and Mira Mezini", title = "{PIROL}: a case study for multidimensional separation of concerns in software engineering environments", journal = j-SIGPLAN, volume = "35", number = "10", pages = "188--207", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p188-herrmann/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ruby:2000:SCC, author = "Clyde Ruby and Gary T. Leavens", title = "Safely creating correct subclasses without seeing superclass code", journal = j-SIGPLAN, volume = "35", number = "10", pages = "208--228", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p208-ruby/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lujan:2000:OOO, author = "Mikel Luj{\'a}n and T. L. Freeman and John R. Gurd", title = "{OoLALA}: an object oriented analysis and design of numerical linear algebra", journal = j-SIGPLAN, volume = "35", number = "10", pages = "229--252", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p229-lujan/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "Fortran BLAS; Java", } @Article{Ortigosa:2000:TAO, author = "Alvaro Ortigosa and Marcelo Campo and Roberto Moriy{\'o}n", title = "Towards agent-oriented assistance for framework instantiation", journal = j-SIGPLAN, volume = "35", number = "10", pages = "253--263", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p253-ortigosa/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sundaresan:2000:PVM, author = "Vijay Sundaresan and Laurie Hendren and Chrislain Razafimahefa and Raja Vall{\'e}e-Rai and Patrick Lam and Etienne Gagnon and Charles Godin", title = "Practical virtual method call resolution for {Java}", journal = j-SIGPLAN, volume = "35", number = "10", pages = "264--280", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p264-sundaresan/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Tip:2000:SPB, author = "Frank Tip and Jens Palsberg", title = "Scalable propagation-based call graph construction algorithms", journal = j-SIGPLAN, volume = "35", number = "10", pages = "281--293", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p281-tip/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ishizaki:2000:SDT, author = "Kazuaki Ishizaki and Motohiro Kawahito and Toshiaki Yasue and Hideaki Komatsu and Toshio Nakatani", title = "A study of devirtualization techniques for a {Java$^{TM}$} {Just-In-Time} compiler", journal = j-SIGPLAN, volume = "35", number = "10", pages = "294--310", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p294-ishizaki/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Glew:2000:ECO, author = "Neal Glew", title = "An efficient class and object encoding", journal = j-SIGPLAN, volume = "35", number = "10", pages = "311--324", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p311-glew/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Qian:2000:FSJ, author = "Zhenyu Qian and Allen Goldberg and Alessandro Coglio", title = "A formal specification of {Java$^{TM}$} class loading", journal = j-SIGPLAN, volume = "35", number = "10", pages = "325--336", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p325-qian/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Rayside:2000:AUO, author = "Derek Rayside and Gerard T. Campbell", title = "An {Aristotelian} understanding of object-oriented programming", journal = j-SIGPLAN, volume = "35", number = "10", pages = "337--353", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p337-rayside/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Czajkowski:2000:AIJ, author = "Grzegorz Czajkowski", title = "Application isolation in the {Java$^{TM}$} {Virtual} {Machine}", journal = j-SIGPLAN, volume = "35", number = "10", pages = "354--366", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p354-czajkowski/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bryce:2000:ASO, author = "Ciar{\'a}n Bryce and Chrislain Razafimahefa", title = "An approach to safe object sharing", journal = j-SIGPLAN, volume = "35", number = "10", pages = "367--381", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p367-bryce/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bacon:2000:GDJ, author = "David F. Bacon and Robert E. Strom and Ashis Tarafdar", title = "{Guava}: a dialect of {Java} without data races", journal = j-SIGPLAN, volume = "35", number = "10", pages = "382--400", month = oct, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/oopsla/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/oops/353171/p382-bacon/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Nagle:2000:DCS, author = "David Nagle and Steven Schlosser and John Linwood Griffin and Gregory Ganger", title = "Designing Computer Systems with {MEMS}-based Storage", journal = j-SIGPLAN, volume = "35", number = "11", pages = "1--12", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Schlosser:2000:DCS, author = "Steven W. Schlosser and John Linwood Griffin and David F. Nagle and Gregory R. Ganger", title = "Designing computer systems with {MEMS}-based storage", journal = j-SIGPLAN, volume = "35", number = "11", pages = "1--12", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gharachorloo:2000:ADA, author = "Kourosh Gharachorloo and Madhu Sharma and Simon Steely and Stephen {Van Doren}", title = "Architecture and Design of {AlphaServer GS320}", journal = j-SIGPLAN, volume = "35", number = "11", pages = "13--24", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Martin:2000:TSA, author = "Milo M. K. Martin and Daniel J. Sorin and Anastassia Ailamaki and Alaa R. Alameldeen and Ross M. Dickson and Carl J. Mauer and Kevin E. Moore and Manoj Plakal and Mark D. Hill and David A. Wood", title = "Timestamp Snooping: An Approach for Extending {SMPs}", journal = j-SIGPLAN, volume = "35", number = "11", pages = "25--36", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Nanda:2000:MPR, author = "Ashwini Nanda and Kwok-Ken Mak and Krishnan Sugavanam and Ramendra K. Sahoo and Vijayaraghavan Soundararajan and T. Basil Smith", title = "{MemorIES}: {A} Programmable, Real-Time Hardware Emulation Tool for Multiprocessor Server Design", journal = j-SIGPLAN, volume = "35", number = "11", pages = "37--48", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gibson:2000:FVS, author = "Jeff Gibson and Robert Kunz and David Ofelt and Mark Horowitz and John Hennessy and Mark Heinrich", title = "{FLASH} vs. (simulated) {FLASH}: closing the simulation loop", journal = j-SIGPLAN, volume = "35", number = "11", pages = "49--58", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Heinrich:2000:SAA, author = "Mark Heinrich and Jeff Givson and Robert Kunz and David Ofelt and Mark Horowitz and John Hennessy", title = "{FLASH} vs. (Simulated) {FLASH}: Closing the Simulation Loop", journal = j-SIGPLAN, volume = "35", number = "11", pages = "49--58", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chou:2000:UML, author = "Andy Chou and Benjamin Chelf and Dawson Engler and Mark Heinrich", title = "Using Meta-level Compilation to Check {FLASH} Protocol Code", journal = j-SIGPLAN, volume = "35", number = "11", pages = "59--70", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bhoedjang:2000:EDA, author = "Raoul A. F. Bhoedjang and Kees Verstoep and Tim R{\"u}hl and Henri E. Bal and Rutger F. H. Hofman", title = "Evaluating Design Alternatives for Reliable Communication on High-Speed Networks", journal = j-SIGPLAN, volume = "35", number = "11", pages = "71--81", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Mattson:2000:CS, author = "Peter Mattson and William J. Dally and Scott W. Rixner and Ujval J. Kapasi and John D. Owens", title = "Communication Scheduling", journal = j-SIGPLAN, volume = "35", number = "11", pages = "82--92", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hill:2000:SAD, author = "Jason Hill and Robert Szewczyk and Alec Woo and Seth Hollar and David Culler and Kristofer Pister", title = "System Architecture Directions for Networked Sensors", journal = j-SIGPLAN, volume = "35", number = "11", pages = "93--104", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lebeck:2000:PAP, author = "Alvin R. Lebeck and Xiaobo Fan and Heng Zeng and Carla Ellis", title = "Power Aware Page Allocation", journal = j-SIGPLAN, volume = "35", number = "11", pages = "105--116", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Berger:2000:HSM, author = "Emery D. Berger and Kathryn S. McKinley and Robert D. Blumofe and Paul R. Wilson", title = "{Hoard}: {A} Scalable Memory Allocator for Multithreaded Applications", journal = j-SIGPLAN, volume = "35", number = "11", pages = "117--128", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Flautner:2000:TLP, author = "Kriszti{\'a}n Flautner and Rich Uhlig and Steve Reinhardt and Trevor Mudge", title = "Thread Level Parallelism and Interactive Performance of Desktop Applications", journal = j-SIGPLAN, volume = "35", number = "11", pages = "129--138", month = nov, year = "2000", CODEN = "SINODQ", DOI = "https://doi.org/10.1145.357001", ISBN = "1-58113-317-0", ISBN-13 = "978-1-58113-317-2", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://delivery.acm.org/10.1145/360000/357001/p129-flautner.pdf", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "IA-64", } @Article{Kawahito:2000:ENP, author = "Motohiro Kawahito and Hideaki Komatsu and Toshio Nakatani", title = "Effective Null Pointer Check Elimination Utilizing Hardware Trap", journal = j-SIGPLAN, volume = "35", number = "11", pages = "139--149", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "IBM Java Virtual Machine (JVM)", } @Article{Zhang:2000:FVL, author = "Youtao Zhang and Jun Yang and Rajiv Gupta", title = "Frequent Value Locality and Value-Centric Data Cache Design", journal = j-SIGPLAN, volume = "35", number = "11", pages = "150--159", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Burrows:2000:EFV, author = "Michael Burrows and Ulfar Erlingson and Shun-Tak Leung and Mark Vandevoorde and Carl Waldspurger and Kip Walker and Bill Weihl", title = "Efficient and Flexible Value Sampling", journal = j-SIGPLAN, volume = "35", number = "11", pages = "160--167", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lie:2000:ASC, author = "David Lie and Chandramohan Thekkath and Mark Mitchell and Patrick Lincoln and Dan Boneh and John Mitchell and Mark Horowitz", title = "Architectural Support for Copy and Tamper Resistant Software", journal = j-SIGPLAN, volume = "35", number = "11", pages = "168--177", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Although there have been attempts to develop code transformations that yield tamper-resistant software, no reliable software-only methods are known. This paper studies the hardware implementation of a form of execute-only memory (XOM) that allows instructions stored in memory to be executed there but not otherwise manipulated. To support XOM code we use a machine that supports internal compartments --- a process in one compartment cannot read data from another compartment. All data that leaves the machine is encrypted, since we assume external memory is not secure. The design of this machine poses some interesting tradeoffs between security, efficient, and flexibility. We explore some of the potential security issues as one pushes the machine to become more efficient and flexible. Although security carries a performance penalty, our analysis indicates that it is possible to create a normal multi-tasking machine where nearly all applications can be run in XOM mode. While a virtual XOM machine is possible, the underlying hardware needs to support a unique private key, private memory, and traps on cache misses. For efficient operation, hardware assist to provide fast symmetric ciphers is also required.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "cryptography", } @Article{Austin:2000:ASF, author = "Todd Austin and Jerome Burke and John McDonald", title = "Architectural Support for Fast Symmetric-Key Cryptography", journal = j-SIGPLAN, volume = "35", number = "11", pages = "178--189", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Burke:2000:ASF, author = "Jerome Burke and John McDonald and Todd Austin", title = "Architectural support for fast symmetric-key cryptography", journal = j-SIGPLAN, volume = "35", number = "11", pages = "178--189", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kubiatowicz:2000:OAG, author = "John Kubiatowicz and David Bindel and Yan Chen and Steven Czerwinski and Patrick Eaton and Dennis Geels and Ramakrishan Gummadi and Sean Rhea and Hakim Weatherspoon and Westley Weimer and Chris Wells and Ben Zhao", title = "{OceanStore}: An Architecture for Global-Scale Persistent Storage", journal = j-SIGPLAN, volume = "35", number = "11", pages = "190--201", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Duesterwald:2000:SPH, author = "Evelyn Duesterwald and Vasanth Bala", title = "Software Profiling for Hot Path Prediction: Less is More", journal = j-SIGPLAN, volume = "35", number = "11", pages = "202--211", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zahir:2000:CCD, author = "Rumi Zahir and Jonathan Ross and Dale Morris and Drew Hess", title = "{OS} and Compiler Considerations in the Design of the {IA-64} Architecture", journal = j-SIGPLAN, volume = "35", number = "11", pages = "212--221", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://devresource.hp.com/devresource/Docs/TechPapers/IA64/IA64oscompilercon.pdf", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Connors:2000:HSD, author = "Daniel A. Connors and Hillery C. Hunter and Ben-Chung Cheng and Wen-Mei W. Hwu", title = "Hardware Support for Dynamic Activation of Compiler-Directed Computation Reuse", journal = j-SIGPLAN, volume = "35", number = "11", pages = "222--233", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Snavely:2000:SJS, author = "Allan Snavely and Dean M. Tullsen", title = "Symbiotic Jobscheduling for a Simultaneous Multithreading Processor", journal = j-SIGPLAN, volume = "35", number = "11", pages = "234--244", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Redstone:2000:AOS, author = "Joshua A. Redstone and Susan J. Eggers and Henry M. Levy", title = "An Analysis of Operating System Behavior on a Simultaneous Multithreaded Architecture", journal = j-SIGPLAN, volume = "35", number = "11", pages = "245--256", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sundaramoorthy:2000:SPI, author = "Karthik Sundaramoorthy and Zachary Purser and Eric Rotenberg", title = "Slipstream Processors: Improving both Performance and Fault Tolerance", journal = j-SIGPLAN, volume = "35", number = "11", pages = "257--268", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:19 MST 2003", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2000:AI, author = "Anonymous", title = "Author Index", journal = j-SIGPLAN, volume = "35", number = "11", pages = "269--271", month = nov, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://foothill.lcs.mit.edu/asplos2k/program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bergmann:2000:CCCe, author = "Seth Bergmann", title = "Conference Corner: Calendar", journal = j-SIGPLAN, volume = "35", number = "12", pages = "1--12", month = dec, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jan 03 19:00:52 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2000:CCL, author = "Anonymous", title = "Conference Corner: {LCTES '01} Call for Papers", journal = j-SIGPLAN, volume = "35", number = "12", pages = "13--13", month = dec, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jan 03 19:00:52 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Benson:2000:JR, author = "Brent W. {Benson, Jr.}", title = "{Java} reflections", journal = j-SIGPLAN, volume = "35", number = "12", pages = "14--18", month = dec, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:21 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Benson:2000:JRJ, author = "Brent W. {Benson, Jr.}", title = "{Java} Reflections: {Java} Server Pages: Servlets, Inside Out", journal = j-SIGPLAN, volume = "35", number = "12", pages = "14--18", month = dec, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jan 03 19:00:52 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Jakeman:2000:FR, author = "Chris Jakeman", title = "{Forth} report", journal = j-SIGPLAN, volume = "35", number = "12", pages = "19--21", month = dec, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:21 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Jakeman:2000:FU, author = "Chris Jakeman", title = "{Forth} in the {UK}", journal = j-SIGPLAN, volume = "35", number = "12", pages = "19--21", month = dec, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jan 03 19:00:52 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fenwick:2000:IAc, author = "Jay Fenwick and Cindy Norris", title = "Information for Authors", journal = j-SIGPLAN, volume = "35", number = "12", pages = "22--22", month = dec, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jan 03 19:00:52 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fenwick:2000:IPAb, author = "Jay Fenwick and Cindy Norris", title = "Information for Past Authors", journal = j-SIGPLAN, volume = "35", number = "12", pages = "23--23", month = dec, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jan 03 19:00:52 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Corchuelo:2000:MCA, author = "Rafael Corchuelo and Jos{\'e} A. P{\'e}rez and Miguel Toro", title = "A Multiparty Coordination Aspect Language", journal = j-SIGPLAN, volume = "35", number = "12", pages = "24--32", month = dec, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:21 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kuhl:2000:OOL, author = "Bernd K{\"u}hl and Axel-Tobias Schreiner", title = "An object-oriented {LL(1)} parser generator", journal = j-SIGPLAN, volume = "35", number = "12", pages = "33--40", month = dec, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:21 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gutierrez:2000:IQC, author = "David Basanta Guti{\'e}rrez and C{\'a}ndida Luengo D{\'\i}ez and Raul Izquierdo Castanedo and Jose Emilio Labra Gayo and Juan Manuel Cueva Lovelle", title = "Improving the quality of compiler construction with object-oriented techniques", journal = j-SIGPLAN, volume = "35", number = "12", pages = "41--50", month = dec, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:21 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Knutson:2000:MDS, author = "Charles D. Knutson and Timothy A. Budd and Hugh Vidos", title = "Multiparadigm Design of a Simple Relational Database", journal = j-SIGPLAN, volume = "35", number = "12", pages = "51--61", month = dec, year = "2000", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:21 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hirzel:2001:TAG, author = "Martin Hirzel and Amer Diwan", title = "On the Type Accuracy of Garbage Collection", journal = j-SIGPLAN, volume = "36", number = "1", pages = "1--11", month = jan, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:22 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "ACM SIGPLAN International Symposium on Memory Management (ISMM'00)", } @Article{Shaham:2001:EGJ, author = "Ran Shaham and Elliot K. Kolodner and Mooly Sagiv", title = "On the Effectiveness of {GC} in {Java}", journal = j-SIGPLAN, volume = "36", number = "1", pages = "12--17", month = jan, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:22 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "ACM SIGPLAN International Symposium on Memory Management (ISMM'00)", } @Article{Steensgaard:2001:TSH, author = "Bjarne Steensgaard", title = "Thread-Specific Heaps for Multi-Threaded Programs", journal = j-SIGPLAN, volume = "36", number = "1", pages = "18--24", month = jan, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:22 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "ACM SIGPLAN International Symposium on Memory Management (ISMM'00)", } @Article{Makholm:2001:RBM, author = "Henning Makholm", title = "A Region-Based Memory Manager for {Prolog}", journal = j-SIGPLAN, volume = "36", number = "1", pages = "25--34", month = jan, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:22 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "ACM SIGPLAN International Symposium on Memory Management (ISMM'00)", } @Article{Chilimbi:2001:DTF, author = "Trishul Chilimbi and Richard Jones and Benjamin Zorn", title = "Designing a Trace Format for Heap Allocation Events", journal = j-SIGPLAN, volume = "36", number = "1", pages = "35--49", month = jan, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:22 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "ACM SIGPLAN International Symposium on Memory Management (ISMM'00)", } @Article{Tarditi:2001:CGC, author = "David Tarditi", title = "Compact Garbage Collection Tables", journal = j-SIGPLAN, volume = "36", number = "1", pages = "50--58", month = jan, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:22 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "ACM SIGPLAN International Symposium on Memory Management (ISMM'00)", } @Article{Boehm:2001:RGC, author = "Hans-J. Boehm", title = "Reducing Garbage Collector Cache Misses", journal = j-SIGPLAN, volume = "36", number = "1", pages = "59--64", month = jan, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:22 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "ACM SIGPLAN International Symposium on Memory Management (ISMM'00)", } @Article{Chung:2001:MAL, author = "Yoo C. Chung and Soo-Mook Moon", title = "Memory Allocation with Lazy Fits", journal = j-SIGPLAN, volume = "36", number = "1", pages = "65--70", month = jan, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:22 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "ACM SIGPLAN International Symposium on Memory Management (ISMM'00)", } @Article{Rodriguez-Rivera:2001:CGC, author = "Gustavo Rodriguez-Rivera and Mike Spertus and Charles Fiterman", title = "Conservative Garbage Collection for General Memory Allocators", journal = j-SIGPLAN, volume = "36", number = "1", pages = "71--79", month = jan, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:22 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "ACM SIGPLAN International Symposium on Memory Management (ISMM'00)", } @Article{Heil:2001:CGC, author = "Timothy H. Heil and James E. Smith", title = "Concurrent Garbage Collection Using Hardware-Assisted Profiling", journal = j-SIGPLAN, volume = "36", number = "1", pages = "80--93", month = jan, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:22 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "ACM SIGPLAN International Symposium on Memory Management (ISMM'00)", } @Article{Plakal:2001:CGC, author = "Manoj Plakal and Charles N. Fischer", title = "Concurrent Garbage Collection Using Program Slices on Multithreaded Processors", journal = j-SIGPLAN, volume = "36", number = "1", pages = "94--100", month = jan, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:22 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "ACM SIGPLAN International Symposium on Memory Management (ISMM'00)", } @Article{Hudson:2001:CRG, author = "Richard L. Hudson and J. Eliot B. Moss and Sreenivas Subramoney and Weldon Washburn", title = "Cycles to Recycle: Garbage Collection on the {IA-64}", journal = j-SIGPLAN, volume = "36", number = "1", pages = "101--110", month = jan, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:22 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "ACM SIGPLAN International Symposium on Memory Management (ISMM'00)", } @Article{Fitzgerald:2001:CPD, author = "Robert Fitzgerald and David Tarditi", title = "The Case for Profile-Directed Selection of Garbage Collectors", journal = j-SIGPLAN, volume = "36", number = "1", pages = "111--120", month = jan, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:22 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "ACM SIGPLAN International Symposium on Memory Management (ISMM'00)", } @Article{Agesen:2001:EOS, author = "Ole Agesen and Alex Garthwaite", title = "Efficient Object Sampling via Weak References", journal = j-SIGPLAN, volume = "36", number = "1", pages = "121--126", month = jan, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:22 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "ACM SIGPLAN International Symposium on Memory Management (ISMM'00)", } @Article{Harris:2001:DAP, author = "Timothy L. Harris", title = "Dynamic Adaptive Pre-Tenuring", journal = j-SIGPLAN, volume = "36", number = "1", pages = "127--136", month = jan, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:22 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "ACM SIGPLAN International Symposium on Memory Management (ISMM'00)", } @Article{Stefanovic:2001:MOL, author = "Darko Stefanovi{\'c} and Kathryn S. McKinley and J. Eliot B. Moss", title = "On models for object lifetime distributions", journal = j-SIGPLAN, volume = "36", number = "1", pages = "137--142", month = jan, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:22 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "ACM SIGPLAN International Symposium on Memory Management (ISMM'00)", } @Article{Printezis:2001:GMC, author = "Tony Printezis and David Detlefs", title = "A Generational Mostly-Concurrent Garbage Collector", journal = j-SIGPLAN, volume = "36", number = "1", pages = "143--154", month = jan, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:22 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "ACM SIGPLAN International Symposium on Memory Management (ISMM'00)", } @Article{Domani:2001:IFG, author = "Tamar Domani and Elliot K. Kolodner and Ethan Lewis and Eliot E. Salant and Katherine Barabash and Itai Lahan and Yossi Levanoni and Erez Petrank and Igor Yanorer", title = "Implementing an On-the-Fly Garbage Collector for {Java}", journal = j-SIGPLAN, volume = "36", number = "1", pages = "155--166", month = jan, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:22 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "ACM SIGPLAN International Symposium on Memory Management (ISMM'00)", } @Article{Dickman:2001:DTR, author = "Peter Dickman", title = "Diffusion Tree Restructuring for Indirect Reference Counting", journal = j-SIGPLAN, volume = "36", number = "1", pages = "167--177", month = jan, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:22 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "ACM SIGPLAN International Symposium on Memory Management (ISMM'00)", } %%% Unread: volume 36 number 2 [my issue never arrived] @Article{Frenger:2001:EF, author = "Paul Frenger", title = "{Forth}: Extreme {Forth}", journal = j-SIGPLAN, volume = "36", number = "2", pages = "20--23", month = feb, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 16:24:55 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } %%% Page gap: volume 36 number 2 pages 24--25 ?? @Article{Kumar:2001:NNC, author = "Rajeev Kumar", title = "A neural net compiler system for hierarchical organization", journal = j-SIGPLAN, volume = "36", number = "2", pages = "26--36", month = feb, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 16:24:55 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sunik:2001:DOL, author = "Boris Sunik", title = "Definition of open language", journal = j-SIGPLAN, volume = "36", number = "2", pages = "37--46", month = feb, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 16:24:55 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhang:2001:SGI, author = "Yukong Zhang and Young-Jun Kwon and Hyuk Jae Lee", title = "A systematic generation of initial register-reuse chains for dependence minimization", journal = j-SIGPLAN, volume = "36", number = "2", pages = "47--54", month = feb, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 16:24:55 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Mitchell:2001:PLM, author = "John C. Mitchell", title = "Programming language methods in computer security", journal = j-SIGPLAN, volume = "36", number = "3", pages = "1--3", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/plan/360204/p1-mitchell/p1-mitchell.pdf; http://www.acm.org/pubs/citations/proceedings/plan/360204/p1-mitchell/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sangiorgi:2001:EIA, author = "Davide Sangiorgi", title = "Extensionality and Intensionality of the Ambient Logics", journal = j-SIGPLAN, volume = "36", number = "3", pages = "4--13", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ishtiaq:2001:BAL, author = "Samin S. Ishtiaq and Peter W. O'Hearn", title = "{BI} as an Assertion Language for Mutable Data Structures", journal = j-SIGPLAN, volume = "36", number = "3", pages = "14--26", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Yahav:2001:VSP, author = "Eran Yahav", title = "Verifying safety properties of concurrent {Java} programs using $3$-valued logic", journal = j-SIGPLAN, volume = "36", number = "3", pages = "27--40", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/plan/360204/p27-yahav/p27-yahav.pdf; http://www.acm.org/pubs/citations/proceedings/plan/360204/p27-yahav/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Odersky:2001:CLT, author = "Martin Odersky and Christoph Zenger and Matthias Zenger", title = "Colored local type inference", journal = j-SIGPLAN, volume = "36", number = "3", pages = "41--53", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/plan/360204/p41-odersky/p41-odersky.pdf; http://www.acm.org/pubs/citations/proceedings/plan/360204/p41-odersky/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Rehof:2001:TBF, author = "Jakob Rehof and Manuel F{\"a}hndrich", title = "Type-base flow analysis: from polymorphic subtyping to {CFL}-reachability", journal = j-SIGPLAN, volume = "36", number = "3", pages = "54--66", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/plan/360204/p54-rehof/p54-rehof.pdf; http://www.acm.org/pubs/citations/proceedings/plan/360204/p54-rehof/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hosoya:2001:REP, author = "Haruo Hosoya and Benjamin Pierce", title = "Regular expression pattern matching for {XML}", journal = j-SIGPLAN, volume = "36", number = "3", pages = "67--80", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/plan/360204/p67-hosoya/p67-hosoya.pdf; http://www.acm.org/pubs/citations/proceedings/plan/360204/p67-hosoya/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lee:2001:SCP, author = "Chin Soon Lee and Neil D. Jones and Amir M. Ben-Amram", title = "The size-change principle for program termination", journal = j-SIGPLAN, volume = "36", number = "3", pages = "81--92", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/plan/360204/p81-lee/p81-lee.pdf; http://www.acm.org/pubs/citations/proceedings/plan/360204/p81-lee/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Monniaux:2001:AMC, author = "David Monniaux", title = "An abstract {Monte-Carlo} method for the analysis of probabilistic programs", journal = j-SIGPLAN, volume = "36", number = "3", pages = "93--101", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/plan/360204/p93-monniaux/p93-monniaux.pdf; http://www.acm.org/pubs/citations/proceedings/plan/360204/p93-monniaux/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ganzinger:2001:EDM, author = "Harald Ganzinger", title = "Efficient deductive methods for program analysis", journal = j-SIGPLAN, volume = "36", number = "3", pages = "102--103", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/plan/360204/p102-ganzinger/p102-ganzinger.pdf; http://www.acm.org/pubs/citations/proceedings/plan/360204/p102-ganzinger/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Abadi:2001:MVN, author = "Mart{\'\i}n Abadi and C{\'e}dric Fournet", title = "Mobile values, new names, and secure communication", journal = j-SIGPLAN, volume = "36", number = "3", pages = "104--115", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/plan/360204/p104-abadi/p104-abadi.pdf; http://www.acm.org/pubs/citations/proceedings/plan/360204/p104-abadi/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Unyapoth:2001:NPC, author = "Asis Unyapoth and Peter Sewell", title = "Nomadic pict: correct communication infrastructure for mobile computation", journal = j-SIGPLAN, volume = "36", number = "3", pages = "116--127", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/plan/360204/p116-unyapoth/p116-unyapoth.pdf; http://www.acm.org/pubs/citations/proceedings/plan/360204/p116-unyapoth/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Igarashi:2001:GTS, author = "Atsushi Igarashi and Naoki Kobayashi", title = "A generic type system for the {Pi-calculus}", journal = j-SIGPLAN, volume = "36", number = "3", pages = "128--141", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/plan/360204/p128-igarashi/p128-igarashi.pdf; http://www.acm.org/pubs/citations/proceedings/plan/360204/p128-igarashi/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Necula:2001:OBC, author = "George C. Necula and S. P. Rahul", title = "Oracle-based checking of untrusted software", journal = j-SIGPLAN, volume = "36", number = "3", pages = "142--154", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/plan/360204/p142-necula/p142-necula.pdf; http://www.acm.org/pubs/citations/proceedings/plan/360204/p142-necula/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Calcagno:2001:SOS, author = "Cristiano Calcagno", title = "Stratified operational semantics for safety and correctness of the region calculus", journal = j-SIGPLAN, volume = "36", number = "3", pages = "155--165", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/plan/360204/p155-calcagno/p155-calcagno.pdf; http://www.acm.org/pubs/citations/proceedings/plan/360204/p155-calcagno/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wang:2001:TPG, author = "Daniel C. Wang and Andrew W. Appel", title = "Type-preserving garbage collectors", journal = j-SIGPLAN, volume = "36", number = "3", pages = "166--178", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/plan/360204/p166-wang/p166-wang.pdf; http://www.acm.org/pubs/citations/proceedings/plan/360204/p166-wang/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kandemir:2001:CTI, author = "Mahmut Taylan Kandemir", title = "A compiler technique for improving whole-program locality", journal = j-SIGPLAN, volume = "36", number = "3", pages = "179--192", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/plan/360204/p179-kandemir/p179-kandemir.pdf; http://www.acm.org/pubs/citations/proceedings/plan/360204/p179-kandemir/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Flanagan:2001:AEE, author = "Cormac Flanagan and James B. Saxe", title = "Avoiding exponential explosion: generating compact verification conditions", journal = j-SIGPLAN, volume = "36", number = "3", pages = "193--205", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/plan/360204/p193-flanagan/p193-flanagan.pdf; http://www.acm.org/pubs/citations/proceedings/plan/360204/p193-flanagan/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bhargavan:2001:WPM, author = "Karthikeyan Bhargavan and Satish Chandra and Peter J. McCann and Carl A. Gunter", title = "What packets may come: automata for network monitoring", journal = j-SIGPLAN, volume = "36", number = "3", pages = "206--219", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/plan/360204/p206-bhargavan/p206-bhargavan.pdf; http://www.acm.org/pubs/citations/proceedings/plan/360204/p206-bhargavan/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Milner:2001:CF, author = "Robin Milner", title = "Computational flux", journal = j-SIGPLAN, volume = "36", number = "3", pages = "220--221", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/plan/360204/p220-milner/p220-milner.pdf; http://www.acm.org/pubs/citations/proceedings/plan/360204/p220-milner/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bugliesi:2001:SSA, author = "Michele Bugliesi and Giuseppe Castagna", title = "Secure safe ambients", journal = j-SIGPLAN, volume = "36", number = "3", pages = "222--235", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/plan/360204/p222-bugliesi/p222-bugliesi.pdf; http://www.acm.org/pubs/citations/proceedings/plan/360204/p222-bugliesi/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sewell:2001:MAT, author = "Peter Sewell", title = "Modules, abstract types, and distributed versioning", journal = j-SIGPLAN, volume = "36", number = "3", pages = "236--247", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/plan/360204/p236-sewell/p236-sewell.pdf; http://www.acm.org/pubs/citations/proceedings/plan/360204/p236-sewell/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gordon:2001:TML, author = "Andrew D. Gordon and Don Syme", title = "Typing a multi-language intermediate code", journal = j-SIGPLAN, volume = "36", number = "3", pages = "248--260", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/plan/360204/p248-gordon/p248-gordon.pdf; http://www.acm.org/pubs/citations/proceedings/plan/360204/p248-gordon/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Shields:2001:TIR, author = "Mark Shields and Erik Meijer", title = "Type-indexed rows", journal = j-SIGPLAN, volume = "36", number = "3", pages = "261--275", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/plan/360204/p261-shields/p261-shields.pdf; http://www.acm.org/pubs/citations/proceedings/plan/360204/p261-shields/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gil:2001:SAT, author = "Joseph (Yossi) Gil", title = "Subtyping arithmetical types", journal = j-SIGPLAN, volume = "36", number = "3", pages = "276--289", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/plan/360204/p276-gil/p276-gil.pdf; http://www.acm.org/pubs/citations/proceedings/plan/360204/p276-gil/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Vouillon:2001:CSB, author = "J{\'e}r{\^o}me Vouillon", title = "Combining subsumption and binary methods: an object calculus with views", journal = j-SIGPLAN, volume = "36", number = "3", pages = "290--303", month = mar, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:23 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/plan/360204/p290-vouillon/p290-vouillon.pdf; http://www.acm.org/pubs/citations/proceedings/plan/360204/p290-vouillon/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ball:2001:MPS, author = "Thomas Ball and Hans Boehm", title = "A modest proposal for {SIGPLAN} in the {21st Century}", journal = j-SIGPLAN, volume = "36", number = "4", pages = "1--2", month = apr, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:24 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ball:2001:S, author = "Thomas Ball and Hans Boehm", title = "{SIGPLANet}", journal = j-SIGPLAN, volume = "36", number = "4", pages = "1--2", month = apr, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Apr 28 08:49:32 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/sigplan/sigplanet/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cytron:2001:CCD, author = "Ron Cytron and Matthias Felleisen", title = "Computing Curricula 2001 Draft: {SIGPLAN} Response to the {Ironman Draft} of the Computing Curricula 2001", journal = j-SIGPLAN, volume = "36", number = "4", pages = "3--4", month = apr, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Apr 28 08:49:32 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fenwick:2001:CCD, author = "Jay Fenwick and Cindy Norris and Ron Cytron and Matthias Felleisen", title = "{Computing Curricula 2001} draft", journal = j-SIGPLAN, volume = "36", number = "4", pages = "3--4", month = apr, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:24 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bergmann:2001:CCC, author = "Seth Bergmann", title = "Conference Corner: Calendar", journal = j-SIGPLAN, volume = "36", number = "4", pages = "5--20", month = apr, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Apr 28 08:49:32 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2001:CEF, author = "Paul Frenger", title = "Close encounters of the {Forth} kind", journal = j-SIGPLAN, volume = "36", number = "4", pages = "21--24", month = apr, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:24 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{McNamara:2001:FPC, author = "Brian McNamara and Yannis Smaragdakis", title = "Functional programming in {C++} using the {FC++} library", journal = j-SIGPLAN, volume = "36", number = "4", pages = "25--30", month = apr, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:24 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{McNamara:2001:FPI, author = "Brian McNamara and Yannis Smaragdakis", title = "Functional Programming in {C++} using the {FC++} Library", journal = j-SIGPLAN, volume = "36", number = "4", pages = "25--30", month = apr, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Apr 28 08:49:32 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fenwick:2001:IAa, author = "Jay Fenwick and Cindy Norris", title = "Information for Authors", journal = j-SIGPLAN, volume = "36", number = "4", pages = "31--31", month = apr, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Apr 28 08:49:32 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fenwick:2001:IPAa, author = "Jay Fenwick and Cindy Norris", title = "Information for Past Authors", journal = j-SIGPLAN, volume = "36", number = "4", pages = "32--32", month = apr, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Apr 28 08:49:32 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chen:2001:SOO, author = "Zhenqiang Chen and Baowen Xu", title = "Slicing Object-Oriented {Java} Programs", journal = j-SIGPLAN, volume = "36", number = "4", pages = "33--40", month = apr, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:24 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chen:2001:SCJ, author = "Zhenqiang Chen and Baowen Xu", title = "Slicing Concurrent {Java} Programs", journal = j-SIGPLAN, volume = "36", number = "4", pages = "41--47", month = apr, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:24 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Shaofeng:2001:SIT, author = "Wang Shaofeng and Yang Fuquing and Sun Jiaguang", title = "Some issues on the translator of {Smalltalk} to {C++}", journal = j-SIGPLAN, volume = "36", number = "4", pages = "48--55", month = apr, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:24 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wang:2001:SIT, author = "Shaofeng Wang and Fuqing Yang and Jiaguang Sun", title = "Some issues on the translator of {Smalltalk} to {C++}", journal = j-SIGPLAN, volume = "36", number = "4", pages = "48--55", month = apr, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Apr 28 08:49:32 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kennedy:2001:DIG, author = "Andrew Kennedy and Don Syme", title = "Design and Implementation of Generics for the {.NET} Common Language Runtime", journal = j-SIGPLAN, volume = "36", number = "5", pages = "1--12", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hicks:2001:DSU, author = "Michael Hicks and Jonathan T. Moore and Scott Nettles", title = "Dynamic Software Updating", journal = j-SIGPLAN, volume = "36", number = "5", pages = "13--23", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Heintze:2001:DDP, author = "Nevin Heintze and Olivier Tardieu", title = "Demand-Driven Pointer Analysis", journal = j-SIGPLAN, volume = "36", number = "5", pages = "24--34", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Vivien:2001:IPE, author = "Fr{\'e}d{\'e}ric Vivien and Martin Rinard", title = "Incrementalized pointer and escape analysis", journal = j-SIGPLAN, volume = "36", number = "5", pages = "35--46", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Vivient:2001:IPE, author = "Frederic Vivient and Martin Rinard", title = "Incrementalized Pointer and Escape Analysis", journal = j-SIGPLAN, volume = "36", number = "5", pages = "35--46", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jul 11 12:48:53 2001", bibsource = "http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ghiya:2001:IPA, author = "Rakesh Ghiya and Daniel Lavery and David Sehr", title = "On the Importance of Points-to Analysis and Other Memory Disambiguation Methods for {C} Programs", journal = j-SIGPLAN, volume = "36", number = "5", pages = "47--58", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{DeLine:2001:EHL, author = "Robert DeLine and Manuel F{\"a}hndrich", title = "Enforcing High-Level Protocols in Low-Level Software", journal = j-SIGPLAN, volume = "36", number = "5", pages = "59--69", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gay:2001:LSR, author = "David Gay and Alex Aiken", title = "Language Support for Regions", journal = j-SIGPLAN, volume = "36", number = "5", pages = "70--80", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Monnier:2001:PS, author = "Stefan Monnier and Bratin Saha and Zhong Shao", title = "Principled Scavenging", journal = j-SIGPLAN, volume = "36", number = "5", pages = "81--91", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bacon:2001:JCB, author = "David F. Bacon and Clement R. Attanasio and Han B. Lee and V. T. Rajan and Stephen Smith", title = "{Java} without the coffee breaks: a nonintrusive multiprocessor garbage collector", journal = j-SIGPLAN, volume = "36", number = "5", pages = "92--103", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Shaham:2001:HPS, author = "Ran Shaham and Elliot K. Kolodner and Mooly Sagiv", title = "Heap Profiling for Space-Efficient {Java}", journal = j-SIGPLAN, volume = "36", number = "5", pages = "104--113", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Berger:2001:CHP, author = "Emery D. Berger and Benjamin G. Zorn and Kathryn S. McKinley", title = "Composing High-Performance Memory Allocators", journal = j-SIGPLAN, volume = "36", number = "5", pages = "114--124", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cheng:2001:PRT, author = "Perry Cheng and Guy E. Blelloch", title = "A Parallel, Real-Time Garbage Collector", journal = j-SIGPLAN, volume = "36", number = "5", pages = "125--136", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Amme:2001:STS, author = "Wolfram Amme and Niall Dalton and Jeffery von Ronne and Michael Franz", title = "{SafeTSA}: {A} Type Safe and Referentially Secure Mobile-Code Representation Based on Static Single Assignment Form", journal = j-SIGPLAN, volume = "36", number = "5", pages = "137--147", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Evans:2001:BCP, author = "William S. Evans and Christopher W. Fraser", title = "Bytecode Compression via Profiled Grammar Rewriting", journal = j-SIGPLAN, volume = "36", number = "5", pages = "148--155", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Krintz:2001:UAR, author = "Chandra Krintz and Brad Calder", title = "Using annotations to reduce dynamic optimization time", journal = j-SIGPLAN, volume = "36", number = "5", pages = "156--167", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Arnold:2001:FRC, author = "Matthew Arnold and Barbara G. Ryder", title = "A Framework for Reducing the Cost of Instrumented Code", journal = j-SIGPLAN, volume = "36", number = "5", pages = "168--179", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhang:2001:TWP, author = "Youtao Zhang and Rajiv Gupta", title = "Timestamped Whole Program Path Representation and its Applications", journal = j-SIGPLAN, volume = "36", number = "5", pages = "180--190", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chilimbi:2001:ERA, author = "Trishul M. Chilimbi", title = "Efficient Representations and Abstractions for Quantifying and Exploiting Data Reference Locality", journal = j-SIGPLAN, volume = "36", number = "5", pages = "191--202", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ball:2001:APA, author = "Thomas Ball and Rupak Majumdar and Todd Millstein and Sriram K. Rajamani", title = "Automatic Predicate Abstraction of {C} Programs", journal = j-SIGPLAN, volume = "36", number = "5", pages = "203--213", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Aggarwal:2001:RFA, author = "Aneesh Aggarwal and Keith H. Randall", title = "Related Field Analysis", journal = j-SIGPLAN, volume = "36", number = "5", pages = "214--220", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Moller:2001:PAL, author = "Anders M{\o}ller and Michael I. Schwartzbach", title = "The Pointer Assertion Logic Engine", journal = j-SIGPLAN, volume = "36", number = "5", pages = "221--231", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Thies:2001:UFS, author = "William Thies and Fr{\'e}d{\'e}ric Vivien and Jeffrey Sheldon and Saman Amarasinghe", title = "A Unified Framework for Schedule and Storage Optimization", journal = j-SIGPLAN, volume = "36", number = "5", pages = "232--242", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Appel:2001:OSC, author = "Andrew W. Appel and Lal George", title = "Optimal Spilling for {CISC} Machines with Few Registers", journal = j-SIGPLAN, volume = "36", number = "5", pages = "243--253", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Heintze:2001:UFA, author = "Nevin Heintze and Olivier Tardieu", title = "Ultra-fast Aliasing Analysis using {CLA}: {A} Million Lines of {C} Code in a Second", journal = j-SIGPLAN, volume = "36", number = "5", pages = "254--263", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hanson:2001:DV, author = "David R. Hanson and Todd A. Proebsting", title = "Dynamic Variables", journal = j-SIGPLAN, volume = "36", number = "5", pages = "264--273", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Marlow:2001:AEH, author = "Simon Marlow and Simon Peyton Jones and Andrew Moran and John Reppy", title = "Asynchronous Exceptions in {Haskell}", journal = j-SIGPLAN, volume = "36", number = "5", pages = "274--285", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chatterjee:2001:EAC, author = "Siddhartha Chatterjee and Erin Parker and Philip J. Hanlon and Alvin R. Lebeck", title = "Exact Analysis of the Cache Behavior of Nested Loops", journal = j-SIGPLAN, volume = "36", number = "5", pages = "286--297", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Xiong:2001:SLC, author = "Jianxin Xiong and Jeremy Johnson and Robert Johnson and David Padua", title = "{SPL}: {A} Language and Compiler for {DSP} algorithms", journal = j-SIGPLAN, volume = "36", number = "5", pages = "298--308", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kumar:2001:ELP, author = "Sanjeev Kumar and Yitzhak Mandelbaum and Xiang Yu and Kai Li", title = "{ESP}: {A} Language for Programmable Devices", journal = j-SIGPLAN, volume = "36", number = "5", pages = "309--320", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Schnarr:2001:FLC, author = "Eric C. Schnarr and Mark D. Hill and James R. Larus", title = "{Facile}: {A} Language and Compiler for High-Performance Processor Simulators", journal = j-SIGPLAN, volume = "36", number = "5", pages = "321--331", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:26 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:AIa, author = "Anonymous", title = "Author Index", journal = j-SIGPLAN, volume = "36", number = "5", pages = "333--333", month = may, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jul 11 12:48:53 2001", bibsource = "http://www.acm.org/sigplan/pldi/pldi2001/pldi_program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Knobe:2001:ECN, author = "Kathleen Knobe and Wilson Hsieh and Uli Kremer", title = "Executive Committee News: {SIGPLAN}'s {Professional Activities Committee}", journal = j-SIGPLAN, volume = "36", number = "6", pages = "1--2", month = jun, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jul 11 13:05:06 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:CCCa, author = "Anonymous", title = "Conference Corner: Calendar", journal = j-SIGPLAN, volume = "36", number = "6", pages = "3--18", month = jun, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jul 11 13:05:06 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Thiemann:2001:CPP, author = "Pieter Thiemann", title = "Call for Papers --- {PEPM'02: 2002 ACM Sigplan Workshop on Partial Evaluation and Semantics-Based Program Manipulation, Portland, Oregon, USA, January 14--15, 2002, Preceding POPL'02}", journal = j-SIGPLAN, volume = "36", number = "6", pages = "19--19", month = jun, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jul 11 13:05:06 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bergin:2001:CPU, author = "Joe Bergin", title = "Curricular Patterns: The Undergraduate Language Course: What To Do?", journal = j-SIGPLAN, volume = "36", number = "6", pages = "20--22", month = jun, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jul 11 13:05:06 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bergin:2001:ULC, author = "Joe Bergin", title = "The undergraduate language course: what to do?", journal = j-SIGPLAN, volume = "36", number = "6", pages = "20--22", month = jun, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:27 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2001:FD, author = "Paul Frenger", title = "Is {Forth} dead?", journal = j-SIGPLAN, volume = "36", number = "6", pages = "23--25", month = jun, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:27 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2001:FRF, author = "Paul Frenger", title = "{Forth} Report: Is {Forth} Dead?", journal = j-SIGPLAN, volume = "36", number = "6", pages = "23--25", month = jun, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jul 11 13:05:06 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fenwick:2001:IAb, author = "Jay Fenwick and Cindy Norris", title = "Information for Authors", journal = j-SIGPLAN, volume = "36", number = "6", pages = "26--26", month = jun, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jul 11 13:05:06 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fenwick:2001:IPAb, author = "Jay Fenwick and Cindy Norris", title = "Information for Past Authors", journal = j-SIGPLAN, volume = "36", number = "6", pages = "27--27", month = jun, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jul 11 13:05:06 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Li:2001:DSN, author = "Tao Li and XiaoJie Liu", title = "The Denotational Semantics of {NIPL}", journal = j-SIGPLAN, volume = "36", number = "6", pages = "28--37", month = jun, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:27 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gofen:2001:PDO, author = "Alexander Gofen", title = "From {Pascal} to {Delphi} to {Object Pascal-2000}", journal = j-SIGPLAN, volume = "36", number = "6", pages = "38--49", month = jun, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:27 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Yu:2001:CTI, author = "Sheng Yu", title = "Class-is-type is inadequate for object reuse", journal = j-SIGPLAN, volume = "36", number = "6", pages = "50--59", month = jun, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:27 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Foster:2001:PCO, author = "Ian Foster", title = "Parallel computing in 2010: opportunities and challenges in a networked world", journal = j-SIGPLAN, volume = "36", number = "7", pages = "1--1", month = jul, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:28 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/ppopp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/ppopp/379539/p1-foster/p1-foster.pdf; http://www.acm.org/pubs/citations/proceedings/ppopp/379539/p1-foster/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kim:2001:RIA, author = "Seon Wook Kim and Chong-liang Ooi and Rudolf Eigenmann and Babak Falsafi and T. N. Vijaykumar", title = "Reference idempotency analysis: a framework for optimizing speculative execution", journal = j-SIGPLAN, volume = "36", number = "7", pages = "2--11", month = jul, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:28 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/ppopp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/ppopp/379539/p2-kim/p2-kim.pdf; http://www.acm.org/pubs/citations/proceedings/ppopp/379539/p2-kim/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Salcianu:2001:PEA, author = "Alexandru Salcianu and Martin Rinard", title = "Pointer and escape analysis for multithreaded programs", journal = j-SIGPLAN, volume = "36", number = "7", pages = "12--23", month = jul, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:28 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/ppopp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/ppopp/379539/p12-salcianu/p12-salcianu.pdf; http://www.acm.org/pubs/citations/proceedings/ppopp/379539/p12-salcianu/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wise:2001:LSM, author = "David S. Wise and Jeremy D. Frens and Yuhong Gu and Gregory A. Alexander", title = "Language support for {Morton}-order matrices", journal = j-SIGPLAN, volume = "36", number = "7", pages = "24--33", month = jul, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:28 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/ppopp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/ppopp/379539/p24-wise/p24-wise.pdf; http://www.acm.org/pubs/citations/proceedings/ppopp/379539/p24-wise/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{vanNieuwpoort:2001:ELB, author = "Rob V. van Nieuwpoort and Thilo Kielmann and Henri E. Bal", title = "Efficient load balancing for wide-area divide-and-conquer applications", journal = j-SIGPLAN, volume = "36", number = "7", pages = "34--43", month = jul, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:28 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/ppopp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/ppopp/379539/p34-van_nieuwpoort/p34-van_nieuwpoort.pdf; http://www.acm.org/pubs/citations/proceedings/ppopp/379539/p34-van_nieuwpoort/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Scott:2001:SQB, author = "Michael L. Scott and William N. Scherer", title = "Scalable queue-based spin locks with timeout", journal = j-SIGPLAN, volume = "36", number = "7", pages = "44--52", month = jul, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:28 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/ppopp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/ppopp/379539/p44-scott/p44-scott.pdf; http://www.acm.org/pubs/citations/proceedings/ppopp/379539/p44-scott/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lu:2001:CER, author = "Honghui Lu and Alan L. Cox and Willy Zwaenepoel", title = "Contention elimination by replication of sequential sections in distributed shared memory programs", journal = j-SIGPLAN, volume = "36", number = "7", pages = "53--61", month = jul, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:28 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/ppopp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/ppopp/379539/p53-lu/p53-lu.pdf; http://www.acm.org/pubs/citations/proceedings/ppopp/379539/p53-lu/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Morris:2001:ADR, author = "Donald G. Morris and David K. Lowenthal", title = "Accurate data redistribution cost estimation in software distributed shared memory systems", journal = j-SIGPLAN, volume = "36", number = "7", pages = "62--71", month = jul, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:28 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/ppopp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/ppopp/379539/p62-morris/p62-morris.pdf; http://www.acm.org/pubs/citations/proceedings/ppopp/379539/p62-morris/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Rencuzogullari:2001:DAA, author = "Umit Rencuzogullari and Sandhya Dwardadas", title = "Dynamic adaptation to available resources for parallel computing in an autonomous network of workstations", journal = j-SIGPLAN, volume = "36", number = "7", pages = "72--81", month = jul, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:28 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/ppopp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/ppopp/379539/p72-rencuzogullari/p72-rencuzogullari.pdf; http://www.acm.org/pubs/citations/proceedings/ppopp/379539/p72-rencuzogullari/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chien:2001:PPC, author = "Andrew A. Chien", title = "Parallel programming challenges for {Internet}-scale computing (entropia)", journal = j-SIGPLAN, volume = "36", number = "7", pages = "82--82", month = jul, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:28 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/ppopp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/ppopp/379539/p82-chien/p82-chien.pdf; http://www.acm.org/pubs/citations/proceedings/ppopp/379539/p82-chien/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Veldema:2001:SLG, author = "R. Veldema and R. F. H. Hofman and R. A. F. Bhoedjang and C. J. H. Jacobs and H. E. Bal", title = "Source-level global optimizations for fine-grain distributed shared memory systems", journal = j-SIGPLAN, volume = "36", number = "7", pages = "83--92", month = jul, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:28 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/ppopp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/ppopp/379539/p83-veldema/p83-veldema.pdf; http://www.acm.org/pubs/citations/proceedings/ppopp/379539/p83-veldema/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Voss:2001:HLA, author = "Michael J. Voss and Rudolf Eigemann", title = "High-level adaptive program optimization with {ADAPT}", journal = j-SIGPLAN, volume = "36", number = "7", pages = "93--102", month = jul, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:28 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/ppopp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/ppopp/379539/p93-voss/p93-voss.pdf; http://www.acm.org/pubs/citations/proceedings/ppopp/379539/p93-voss/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lim:2001:BAC, author = "Amy W. Lim and Shih-Wei Liao and Monica S. Lam", title = "Blocking and array contraction across arbitrarily nested loops using affine partitioning", journal = j-SIGPLAN, volume = "36", number = "7", pages = "103--112", month = jul, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:28 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/ppopp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/ppopp/379539/p103-lim/p103-lim.pdf; http://www.acm.org/pubs/citations/proceedings/ppopp/379539/p103-lim/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Carrera:2001:EVP, author = "Enrique V. Carrera and Ricardo Bianchini", title = "Efficiency vs. portability in cluster-based network servers", journal = j-SIGPLAN, volume = "36", number = "7", pages = "113--122", month = jul, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:28 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/ppopp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/ppopp/379539/p113-carrera/p113-carrera.pdf; http://www.acm.org/pubs/citations/proceedings/ppopp/379539/p113-carrera/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Vetter:2001:SSA, author = "Jeffrey S. Vetter and Michael O. McCracken", title = "Statistical scalability analysis of communication operations in distributed applications", journal = j-SIGPLAN, volume = "36", number = "7", pages = "123--132", month = jul, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:28 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/ppopp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/ppopp/379539/p123-vetter/p123-vetter.pdf; http://www.acm.org/pubs/citations/proceedings/ppopp/379539/p123-vetter/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ino:2001:LPC, author = "Fumihiko Ino and Noriyuki Fujimoto and Kenichi Hagihara", title = "{LogGPS}: a parallel computational model for synchronization analysis", journal = j-SIGPLAN, volume = "36", number = "7", pages = "133--142", month = jul, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:28 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/ppopp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/ppopp/379539/p133-ino/p133-ino.pdf; http://www.acm.org/pubs/citations/proceedings/ppopp/379539/p133-ino/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kuck:2001:PPD, author = "David Kuck", title = "Peer to peer and distributed computing", journal = j-SIGPLAN, volume = "36", number = "7", pages = "143--143", month = jul, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:28 MST 2003", bibsource = "http://portal.acm.org/; http://www.acm.org/pubs/contents/proceedings/series/ppopp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/ppopp/379539/p143-kuck/p143-kuck.pdf; http://www.acm.org/pubs/citations/proceedings/ppopp/379539/p143-kuck/", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lee:2001:AIL, author = "Sheayun Lee and Andreas Ermedahl and Sang Lyul Min and Naehyuck Chang", title = "An {Accurate Instruction-Level Energy Consumption Model} for {Embedded RISC Processors}", journal = j-SIGPLAN, volume = "36", number = "8", pages = "1--10", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://redwood.snu.ac.kr/lctes2001/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "LCTES'01: The Workshop on Languages, Compilers and Tools for Embedded Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kim:2001:HRT, author = "Minyoung Kim and Soonhoi Ha", title = "Hybrid {Run-time Power Management Technique} for {Real-time Embedded System} with {Voltage Scalable Processor}", journal = j-SIGPLAN, volume = "36", number = "8", pages = "11--19", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://redwood.snu.ac.kr/lctes2001/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "LCTES'01: The Workshop on Languages, Compilers and Tools for Embedded Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kang:2001:PAD, author = "Dong-In Kang and Stephen Crago and Jinwoo Suh", title = "Power-Aware {Design Synthesis Techniques} for {Distributed Real-Time Systems}", journal = j-SIGPLAN, volume = "36", number = "8", pages = "20--28", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://redwood.snu.ac.kr/lctes2001/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "LCTES'01: The Workshop on Languages, Compilers and Tools for Embedded Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{DeSutter:2001:CGC, author = "Bjorn {De Sutter} and Bruno {De Bus} and Koen {De Bosschere} and Saumya Debray", title = "Combining Global Code and Data Compaction", journal = j-SIGPLAN, volume = "36", number = "8", pages = "29--38", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://redwood.snu.ac.kr/lctes2001/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "LCTES'01: The Workshop on Languages, Compilers and Tools for Embedded Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Park:2001:RAB, author = "Jinpyo Park and Je-Hyung Lee and Soo-Mook Moon", title = "Register Allocation for Banked Register File", journal = j-SIGPLAN, volume = "36", number = "8", pages = "39--47", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://redwood.snu.ac.kr/lctes2001/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "LCTES'01: The Workshop on Languages, Compilers and Tools for Embedded Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Huang:2001:LTA, author = "Xianglong Huang and Steve Carr and Philip Sweany", title = "Loop {Transformations} for {Architectures} with {Partitioned Register Banks}", journal = j-SIGPLAN, volume = "36", number = "8", pages = "48--55", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://redwood.snu.ac.kr/lctes2001/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "LCTES'01: The Workshop on Languages, Compilers and Tools for Embedded Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cadot:2001:ECL, author = "Sidney Cadot and Frits Kuijlman and Koen Langendoen and Kees van Reeuwijk and Henk Sips", title = "{ENSEMBLE}: {A} Communication Layer for Embedded Multi-Processor Systems", journal = j-SIGPLAN, volume = "36", number = "8", pages = "56--63", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://redwood.snu.ac.kr/lctes2001/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "LCTES'01: The Workshop on Languages, Compilers and Tools for Embedded Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Henzinger:2001:ECS, author = "Thomas A. Henzinger and Benjamin Horowitz and Christoph Meyer Kirsch", title = "Embedded {Control Systems Development} with {Giotto}", journal = j-SIGPLAN, volume = "36", number = "8", pages = "64--72", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://redwood.snu.ac.kr/lctes2001/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "LCTES'01: The Workshop on Languages, Compilers and Tools for Embedded Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Palopoli:2001:TSF, author = "Luigi Palopoli and Giuseppe Lipari and Luca Abeni and Marco Di Natale and Paolo Ancilotti and Fabio Conticelli", title = "A tool for simulation and fast prototyping of embedded control systems", journal = j-SIGPLAN, volume = "36", number = "8", pages = "73--81", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://redwood.snu.ac.kr/lctes2001/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "LCTES'01: The Workshop on Languages, Compilers and Tools for Embedded Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bakshi:2001:MMB, author = "A. Bakshi and V. K. Prasanna and A. Ledeczi", title = "{MILAN}: {A} Model Based Integrated Simulation Framework for Design of Embedded Systems", journal = j-SIGPLAN, volume = "36", number = "8", pages = "82--87", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://redwood.snu.ac.kr/lctes2001/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "LCTES'01: The Workshop on Languages, Compilers and Tools for Embedded Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Vivancos:2001:PTA, author = "Emilio Vivancos and Christopher Healy and Frank Mueller and David Whalley", title = "Parametric {Timing Analysis}", journal = j-SIGPLAN, volume = "36", number = "8", pages = "88--93", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://redwood.snu.ac.kr/lctes2001/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "LCTES'01: The Workshop on Languages, Compilers and Tools for Embedded Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ziegenbein:2001:IBA, author = "Dirk Ziegenbein and Fabian Wolf and Kai Richter and Marek Jersak and Rolf Ernst", title = "Interval-Based {Analysis} of {Software Processes}", journal = j-SIGPLAN, volume = "36", number = "8", pages = "94--101", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://redwood.snu.ac.kr/lctes2001/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "LCTES'01: The Workshop on Languages, Compilers and Tools for Embedded Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Unnikrishnan:2001:AAL, author = "Leena Unnikrishnan and Scott D. Stoller and Yanhong A. Liu", title = "Automatic {Accurate Live Memory Analysis} for {Garbage-Collected Languages}", journal = j-SIGPLAN, volume = "36", number = "8", pages = "102--111", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://redwood.snu.ac.kr/lctes2001/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "LCTES'01: The Workshop on Languages, Compilers and Tools for Embedded Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Theiling:2001:GDT, author = "Henrik Theiling", title = "Generating {Decision Trees} for {Decoding Binaries}", journal = j-SIGPLAN, volume = "36", number = "8", pages = "112--120", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://redwood.snu.ac.kr/lctes2001/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "LCTES'01: The Workshop on Languages, Compilers and Tools for Embedded Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Merillion:2001:DHE, author = "Fabrice M{\'e}rillion and Gilles Muller", title = "Dealing with {Hardware} in {Embedded Software}: {A General Framework Based} on the {Devil Language}", journal = j-SIGPLAN, volume = "36", number = "8", pages = "121--127", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Merillon:2001:DHE, author = "Fabrice Merillon and Gilles Muller", title = "Dealing with Hardware in Embedded Software: {A} General Framework Based on the {Devil} Language", journal = j-SIGPLAN, volume = "36", number = "8", pages = "121--127", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Nov 24 06:59:29 2001", bibsource = "http://redwood.snu.ac.kr/lctes2001/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "LCTES'01: The Workshop on Languages, Compilers and Tools for Embedded Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kadayif:2001:MCA, author = "Ismail Kadayif and Mahmut Taylan Kandemir and Narayanan Vijaykrishnan and Mary Jane Irwin and Jagannathan Ramanujam", title = "Morphable {Cache Architectures}: {Potential Benefits}", journal = j-SIGPLAN, volume = "36", number = "8", pages = "128--137", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://redwood.snu.ac.kr/lctes2001/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "LCTES'01: The Workshop on Languages, Compilers and Tools for Embedded Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Granston:2001:SPI, author = "Elana Granston and Eric Stotzer and Joe Zbiciak", title = "Software Pipelining Irregular Loops On the {TMS320C6000 VLIW DSP} Architecture", journal = j-SIGPLAN, volume = "36", number = "8", pages = "138--144", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://redwood.snu.ac.kr/lctes2001/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "LCTES'01: The Workshop on Languages, Compilers and Tools for Embedded Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kastner:2001:IBI, author = "Daniel K{\"a}stner and Sebastian Winkel", title = "{ILP}-based Instruction Scheduling for {IA-64}", journal = j-SIGPLAN, volume = "36", number = "8", pages = "145--154", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://redwood.snu.ac.kr/lctes2001/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", remark = "LCTES'01: The Workshop on Languages, Compilers and Tools for Embedded Systems", } @Article{Wagner:2001:CCD, author = "Jens Wagner and Rainer Leupers", title = "{C} Compiler Design for an Industrial Network Processor", journal = j-SIGPLAN, volume = "36", number = "8", pages = "155--164", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://redwood.snu.ac.kr/lctes2001/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "LCTES'01: The Workshop on Languages, Compilers and Tools for Embedded Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kessler:2001:DPA, author = "Christoph Ke{\ss}ler and Andrzej Bednarski", title = "A {Dynamic Programming Approach} to {Optimal Integrated Code Generation}", journal = j-SIGPLAN, volume = "36", number = "8", pages = "165--174", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://redwood.snu.ac.kr/lctes2001/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "LCTES'01: The Workshop on Languages, Compilers and Tools for Embedded Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Yellin:2001:SMC, author = "Daniel M. Yellin", title = "Stuck in the {Middle}: {Challenges} and {Trends} in {Optimizing Middleware}", journal = j-SIGPLAN, volume = "36", number = "8", pages = "175--180", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://www.cs.wisc.edu/~bodik/om2001/program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.cs.wisc.edu/~bodik/om2001/danny-abstract.html", acknowledgement = ack-nhfb, annote = "OM'01: The First Workshop on Optimization of Middleware and Distributed Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hogstedt:2001:OCI, author = "Karin H{\"o}gstedt and Doug Kimelman and Nan Wang", title = "Optimizing {Component Interaction}", journal = j-SIGPLAN, volume = "36", number = "8", pages = "181--181", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wegman:2001:OCI, author = "Mark Wegman", title = "Optimizing Component Interaction", journal = j-SIGPLAN, volume = "36", number = "8", pages = "181--181", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Nov 24 06:59:29 2001", bibsource = "http://www.cs.wisc.edu/~bodik/om2001/program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.cs.wisc.edu/~bodik/om2001/mark-abstract.html", acknowledgement = ack-nhfb, annote = "OM'01: The First Workshop on Optimization of Middleware and Distributed Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Larus:2001:UCS, author = "James R. Larus and Michael Parkes", title = "Using Cohort Scheduling to Enhance Server Performance (Extended Abstract)", journal = j-SIGPLAN, volume = "36", number = "8", pages = "182--187", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://www.cs.wisc.edu/~bodik/om2001/program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.cs.wisc.edu/~bodik/om2001/mark-abstract.html", acknowledgement = ack-nhfb, annote = "OM'01: The First Workshop on Optimization of Middleware and Distributed Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Narain:2001:MBA, author = "Sanjai Narain and Ravichander Vaidyanathan and Stanley Moyer and William Stephens and Kirthika Parmeswaran and Abdul Rahim Shareef", title = "Middleware for Building Adaptive Systems via Configuration", journal = j-SIGPLAN, volume = "36", number = "8", pages = "188--195", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://www.cs.wisc.edu/~bodik/om2001/program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "OM'01: The First Workshop on Optimization of Middleware and Distributed Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gore:2001:DOS, author = "Pradeep Gore and Ron Cytron and Douglas Schmidt and Carlos O'Ryan", title = "Designing and Optimizing a Scalable {CORBA} Notification Service", journal = j-SIGPLAN, volume = "36", number = "8", pages = "196--204", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://www.cs.wisc.edu/~bodik/om2001/program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "OM'01: The First Workshop on Optimization of Middleware and Distributed Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Othman:2001:IDA, author = "Ossama Othman and Douglas C. Schmidt", title = "Issues in the {Design} of {Adaptive Middleware Load Balancing}", journal = j-SIGPLAN, volume = "36", number = "8", pages = "205--213", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://www.cs.wisc.edu/~bodik/om2001/program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "OM'01: The First Workshop on Optimization of Middleware and Distributed Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Pyarali:2001:EOT, author = "Irfan Pyarali and Marina Spivak and Ron Cytron and Douglas C. Schmidt", title = "Evaluating and Optimizing Thread Pool Strategies for Real-Time {CORBA}", journal = j-SIGPLAN, volume = "36", number = "8", pages = "214--222", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://www.cs.wisc.edu/~bodik/om2001/program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "OM'01: The First Workshop on Optimization of Middleware and Distributed Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Brunsch:2001:DES, author = "Darrell Brunsch and Carlos O'Ryan and Douglas C. Schmidt", title = "Designing an Efficient and Scalable Server-side Asynchrony Model for {CORBA}", journal = j-SIGPLAN, volume = "36", number = "8", pages = "223--229", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://www.cs.wisc.edu/~bodik/om2001/program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "OM'01: The First Workshop on Optimization of Middleware and Distributed Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Krishnamurthy:2001:IQE, author = "Yamuna Krishnamurthy and Vishal Kachroo and David A. Karr and Craig Rodrigues and Joseph P. Loyall and Richard Schantz and Douglas C. Schmidt", title = "Integration of {QoS}-Enabled Distributed Object Computing Middleware for Developing Next-Generation Distributed Applications", journal = j-SIGPLAN, volume = "36", number = "8", pages = "230--237", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://www.cs.wisc.edu/~bodik/om2001/program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "OM'01: The First Workshop on Optimization of Middleware and Distributed Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Adve:2001:LCS, author = "Vikram Adve and Vinh Vi Lam and Brian Ensink", title = "Language and Compiler Support for Adaptive Distributed Applications", journal = j-SIGPLAN, volume = "36", number = "8", pages = "238--246", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:29 MST 2003", bibsource = "http://portal.acm.org/; http://www.cs.wisc.edu/~bodik/om2001/program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "OM'01: The First Workshop on Optimization of Middleware and Distributed Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lee:2001:ESC, author = "Edward A. Lee", title = "Embedded Software from Concurrent Component Models", journal = j-SIGPLAN, volume = "36", number = "8", pages = "??--??", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Nov 24 06:59:29 2001", bibsource = "http://redwood.snu.ac.kr/lctes2001/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Invited paper; not in conference proceedings.", URL = "http://redwood.snu.ac.kr/lctes2001/edward-abstract.html", acknowledgement = ack-nhfb, annote = "LCTES'01: The Workshop on Languages, Compilers and Tools for Embedded Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Palem:2001:WCW, author = "Krishna V. Palem", title = "What is a compiler when the architecture is not hard?", journal = j-SIGPLAN, volume = "36", number = "8", pages = "??--??", month = aug, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Nov 24 06:59:29 2001", bibsource = "http://redwood.snu.ac.kr/lctes2001/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Listed in conference program, but did not appear in conference proceedings.", acknowledgement = ack-nhfb, annote = "LCTES'01: The Workshop on Languages, Compilers and Tools for Embedded Systems", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Boehm:2001:LNE, author = "Hans Boehm", title = "Letter from the Newly Elected {Chair}", journal = j-SIGPLAN, volume = "36", number = "9", pages = "1--2", month = sep, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Nov 24 07:54:10 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Whalley:2001:LLS, author = "Dave Whalley", title = "Letter from the {LCTES Steering Committee}", journal = j-SIGPLAN, volume = "36", number = "9", pages = "3--3", month = sep, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Nov 24 07:54:10 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:C, author = "Anonymous", title = "Calendar", journal = j-SIGPLAN, volume = "36", number = "9", pages = "4--16", month = sep, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Nov 24 07:54:10 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:P, author = "Anonymous", title = "In parallel", journal = j-SIGPLAN, volume = "36", number = "9", pages = "17--17", month = sep, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:30 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", xxtitle = "{PLDI'02}", } @Article{Anonymous:2001:LS, author = "Anonymous", title = "{LCTES'02} and {SCOPES'02}", journal = j-SIGPLAN, volume = "36", number = "9", pages = "18--18", month = sep, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Nov 24 07:54:10 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Page:2001:FPW, author = "Rex Page", title = "Functional programming, and where you can put it", journal = j-SIGPLAN, volume = "36", number = "9", pages = "19--24", month = sep, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:30 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:AOC, author = "Anonymous", title = "{ASTs} for optimizing compilers", journal = j-SIGPLAN, volume = "36", number = "9", pages = "25--30", month = sep, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:30 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Clark:2001:AOC, author = "Chris Clark", title = "{ASTs} for Optimizing Compilers", journal = j-SIGPLAN, volume = "36", number = "9", pages = "25--30", month = sep, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Nov 24 07:54:10 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Christopher:2001:TPO, author = "Thomas W. Christopher", title = "Test Programs to Observe Parallelism", journal = j-SIGPLAN, volume = "36", number = "9", pages = "31--36", month = sep, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:30 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:IA, author = "Anonymous", title = "Information for Authors", journal = j-SIGPLAN, volume = "36", number = "9", pages = "37--37", month = sep, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Nov 24 07:54:10 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:IPA, author = "Anonymous", title = "Information for Past Authors", journal = j-SIGPLAN, volume = "36", number = "9", pages = "38--38", month = sep, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Nov 24 07:54:10 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhu:2001:DSP, author = "Ming-Yuan Zhu", title = "Denotational Semantics of Programming Languages and Compiler Generation in {PowerEpsilon}", journal = j-SIGPLAN, volume = "36", number = "9", pages = "39--53", month = sep, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:30 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhu:2001:FSD, author = "Ming-Yuan Zhu", title = "Formal specifications of debuggers", journal = j-SIGPLAN, volume = "36", number = "9", pages = "54--63", month = sep, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:30 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kienle:2001:USR, author = "Holger M. Kienle", title = "Using {{\tt smgn}} for Rapid Prototyping of Small Domain-Specific Languages", journal = j-SIGPLAN, volume = "36", number = "9", pages = "64--73", month = sep, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:30 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Moore:2001:SSH, author = "David L. Moore", title = "{{\tt smgn}}: Some historical remarks", journal = j-SIGPLAN, volume = "36", number = "9", pages = "74--76", month = sep, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:30 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gassanenko:2001:ACL, author = "Michael L. Gassanenko", title = "About Code Layout for {Lisp}", journal = j-SIGPLAN, volume = "36", number = "9", pages = "77--80", month = sep, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:30 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lu:2001:DZA, author = "Lunjin Lu", title = "On {Dart-Zobel} Algorithm for Testing Regular Type Inclusion", journal = j-SIGPLAN, volume = "36", number = "9", pages = "81--85", month = sep, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:30 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Shaofeng:2001:FDW, author = "Wang Shaofeng and Sun Jiaguang", title = "A framework design of workflow management system with {Java RMI}", journal = j-SIGPLAN, volume = "36", number = "9", pages = "86--93", month = sep, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:30 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wang:2001:FDW, author = "Shaofeng Wang and Jiaguang Sun", title = "A Framework Design for Workflow Management System with {Java RMI}", journal = j-SIGPLAN, volume = "36", number = "9", pages = "86--93", month = sep, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Nov 24 07:54:10 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:FP, author = "Anonymous", title = "Functional programming", journal = j-SIGPLAN, volume = "36", number = "9", pages = "??--??", month = sep, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:30 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:PPP, author = "Anonymous", title = "Practical parsing patterns", journal = j-SIGPLAN, volume = "36", number = "9", pages = "??--??", month = sep, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:30 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:TCa, author = "Anonymous", title = "Technical correspondence", journal = j-SIGPLAN, volume = "36", number = "9", pages = "??--??", month = sep, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:30 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Pitts:2001:FAR, author = "Andrew M. Pitts", title = "A Fresh Approach to Representing Syntax with Static Binders in Functional Programming", journal = j-SIGPLAN, volume = "36", number = "10", pages = "1--1", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Invited talk; abstract only.", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/pitts.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fluet:2001:CUD, author = "Matthew Fluet and Stephen Weeks", title = "Contification using Dominators", journal = j-SIGPLAN, volume = "36", number = "10", pages = "2--13", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/48.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Dimock:2001:FCT, author = "Allyn Dimock and Ian Westmacott and Robert Muller and Franklyn Turbak and J. B. Wells", title = "Functioning without Closure: Type-Safe Customized Function Representations for {Standard ML}", journal = j-SIGPLAN, volume = "36", number = "10", pages = "14--25", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/55.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{LeFessant:2001:OPM, author = "Fabrice {Le Fessant} and Luc Maranget", title = "Optimizing Pattern Matching", journal = j-SIGPLAN, volume = "36", number = "10", pages = "26--37", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/8.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Neubauer:2001:ELD, author = "Matthias Neubauer and Michael Sperber", title = "Down with {Emacs Lisp}: Dynamic Scope Analysis", journal = j-SIGPLAN, volume = "36", number = "10", pages = "38--49", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/50.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Russo:2001:RSS, author = "Claudio V. Russo", title = "Recursive Structures for {Standard ML}", journal = j-SIGPLAN, volume = "36", number = "10", pages = "50--61", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/28.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Duggan:2001:TBH, author = "Dominic Duggan", title = "Type-based hot swapping of running modules (extended abstract)", journal = j-SIGPLAN, volume = "36", number = "10", pages = "62--73", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/21.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ganz:2001:MMS, author = "Steven E. Ganz and Amr Sabry and Walid Taha", title = "Macros as Multi-Stage Computations: Type-Safe, Generative, Binding Macros in {MacroML}", journal = j-SIGPLAN, volume = "36", number = "10", pages = "74--85", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/42.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sheard:2001:GUT, author = "Tim Sheard", title = "Generic Unification via Two-Level Types and Parameterized Modules", journal = j-SIGPLAN, volume = "36", number = "10", pages = "86--97", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/13.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chuang:2001:GVS, author = "Tyng-Ruey Chuang", title = "Generic Validation of Structural Content with Parametric Modules", journal = j-SIGPLAN, volume = "36", number = "10", pages = "98--109", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/22.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hinze:2001:SIT, author = "Ralf Hinze", title = "A Simple Implementation Technique for Priority Search Queues", journal = j-SIGPLAN, volume = "36", number = "10", pages = "110--121", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/23.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sperber:2001:DSL, author = "Michael Sperber", title = "Developing a Stage Lighting System from Scratch", journal = j-SIGPLAN, volume = "36", number = "10", pages = "122--133", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/32.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anand:2001:CPP, author = "Saswat Anand and Wei-Ngan Chin and Siau-Cheng Khoo", title = "Charting Patterns on Price History", journal = j-SIGPLAN, volume = "36", number = "10", pages = "134--145", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/64.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wan:2001:RTF, author = "Zhanyong Wan and Walid Taha and Paul Hudak", title = "Real-time {FRP}", journal = j-SIGPLAN, volume = "36", number = "10", pages = "146--156", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/43.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Russell:2001:EHH, author = "George Russell", title = "Events in {Haskell}, and How to Implement Them", journal = j-SIGPLAN, volume = "36", number = "10", pages = "157--168", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/24.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hongwei:2001:DTA, author = "Hongwei Xi and Robert Harper", title = "A Dependently Typed Assembly Language", journal = j-SIGPLAN, volume = "36", number = "10", pages = "169--180", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Nov 23 18:54:42 2001", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/27.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Xi:2001:DTA, author = "Hongwei Xi and Robert Harper", title = "A dependently typed assembly language", journal = j-SIGPLAN, volume = "36", number = "10", pages = "169--180", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Walker:2001:RLT, author = "David Walker and Kevin Watkins", title = "On regions and linear types (extended abstract)", journal = j-SIGPLAN, volume = "36", number = "10", pages = "181--192", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/36.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chitil:2001:CET, author = "Olaf Chitil", title = "Compositional Explanation of Types and Algorithmic Debugging of Type Errors", journal = j-SIGPLAN, volume = "36", number = "10", pages = "193--204", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/40.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chakravarty:2001:FAF, author = "Manuel M. T. Chakravarty and Gabriele Keller", title = "Functional Array Fusion", journal = j-SIGPLAN, volume = "36", number = "10", pages = "205--216", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/38.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Nanevski:2001:AGS, author = "Aleksandar Nanevski and Guy Blelloch and Robert Harper", title = "Automatic Generation of Staged Geometric Predicates", journal = j-SIGPLAN, volume = "36", number = "10", pages = "217--228", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/14.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Paterson:2001:NNA, author = "Ross Paterson", title = "A New Notation for Arrows", journal = j-SIGPLAN, volume = "36", number = "10", pages = "229--240", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/49.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zenger:2001:EAD, author = "Matthias Zenger and Martin Odersky", title = "Extensible Algebraic Datatypes with Defaults", journal = j-SIGPLAN, volume = "36", number = "10", pages = "241--252", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/34.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Grobauer:2001:CRD, author = "Bernd Grobauer", title = "Cost Recurrences for {DML} Programs", journal = j-SIGPLAN, volume = "36", number = "10", pages = "253--264", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/45.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gustavsson:2001:PLC, author = "J{\"o}rgen Gustavsson and David Sands", title = "Possibilities and Limitations of Call-by-Need Space Improvement", journal = j-SIGPLAN, volume = "36", number = "10", pages = "265--276", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; http://portal.acm.org/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/60.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:AIc, author = "Anonymous", title = "Author Index", journal = j-SIGPLAN, volume = "36", number = "10", pages = "277--277", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Nov 23 18:54:42 2001", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:IT, author = "Anonymous", title = "Invited talk 1", journal = j-SIGPLAN, volume = "36", number = "10", pages = "??--??", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:Sa, author = "Anonymous", title = "Session 1", journal = j-SIGPLAN, volume = "36", number = "10", pages = "??--??", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:Sb, author = "Anonymous", title = "Session 2", journal = j-SIGPLAN, volume = "36", number = "10", pages = "??--??", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:Sc, author = "Anonymous", title = "Session 3", journal = j-SIGPLAN, volume = "36", number = "10", pages = "??--??", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:Sd, author = "Anonymous", title = "Session 4", journal = j-SIGPLAN, volume = "36", number = "10", pages = "??--??", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:Se, author = "Anonymous", title = "Session 5", journal = j-SIGPLAN, volume = "36", number = "10", pages = "??--??", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:Sf, author = "Anonymous", title = "Session 6", journal = j-SIGPLAN, volume = "36", number = "10", pages = "??--??", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:Sg, author = "Anonymous", title = "Session 7", journal = j-SIGPLAN, volume = "36", number = "10", pages = "??--??", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:31 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Augustsson:2001:BHD, author = "Lennart Augustsson", title = "{Bluespec} --- a hardware description language", journal = j-SIGPLAN, volume = "36", number = "10", pages = "??--??", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Nov 23 18:54:42 2001", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Invited talk; no abstract or article in volume.", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frigo:2001:FFT, author = "Matteo Frigo", title = "The {Fastest Fourier Transform in the West}", journal = j-SIGPLAN, volume = "36", number = "10", pages = "??--??", month = oct, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Nov 23 18:54:42 2001", bibsource = "http://cristal.inria.fr/ICFP2001/program.html; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Invited talk; no abstract or article in volume.", URL = "http://cristal.inria.fr/ICFP2001/Abstracts/frigo.html", acknowledgement = ack-nhfb, annote = "International Conference on Functional Programming (ICFP01), Firenze, Italy, 3--5 September 2001.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Findler:2001:CSO, author = "Robert Bruce Findler and Matthias Felleisen", title = "Contract soundness for object-oriented languages", journal = j-SIGPLAN, volume = "36", number = "11", pages = "1--15", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ancona:2001:CCJ, author = "D. Ancona and G. Lagorio and E. Zucca", title = "A core calculus for {Java} exceptions", journal = j-SIGPLAN, volume = "36", number = "11", pages = "16--30", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bachrach:2001:JSE, author = "Jonthan Bachrach and Keith Playford", title = "The {Java Syntactic Extender} ({JSE})", journal = j-SIGPLAN, volume = "36", number = "11", pages = "31--42", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Rountev:2001:PAJ, author = "Atanas Rountev and Ana Milanova and Barbara G. Ryder", title = "Points-to analysis for {Java} using annotated constraints", journal = j-SIGPLAN, volume = "36", number = "11", pages = "43--55", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Boyapati:2001:PTS, author = "Chandrasekhar Boyapati and Martin Rinard", title = "A parameterized type system for race-free {Java} programs", journal = j-SIGPLAN, volume = "36", number = "11", pages = "56--69", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{vonPraun:2001:ORD, author = "Christoph von Praun and Thomas R. Gross", title = "Object race detection", journal = j-SIGPLAN, volume = "36", number = "11", pages = "70--82", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ogasawara:2001:SEH, author = "Takeshi Ogasawara and Hideaki Komatsu and Toshio Nakatani", title = "A study of exception handling and its dynamic optimization in {Java}", journal = j-SIGPLAN, volume = "36", number = "11", pages = "83--95", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zibin:2001:EST, author = "Yoav Zibin and Joseph Yossi Gil", title = "Efficient subtyping tests with {PQ}-encoding", journal = j-SIGPLAN, volume = "36", number = "11", pages = "96--107", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Alpern:2001:EIJ, author = "Bowen Alpern and Anthony Cocchi and Stephen Fink and David Grove", title = "Efficient implementation of {Java} interfaces: {Invokeinterface} considered harmless", journal = j-SIGPLAN, volume = "36", number = "11", pages = "108--124", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Czajkowski:2001:MCV, author = "Grzegorz Czajkowski and Laurent Dayn{\'e}s", title = "Multitasking without compromise: a virtual machine evolution", journal = j-SIGPLAN, volume = "36", number = "11", pages = "125--138", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Binder:2001:PRC, author = "Walter Binder and Jane G. Hulaas and Alex Villaz{\'o}n", title = "Portable resource control in {Java}", journal = j-SIGPLAN, volume = "36", number = "11", pages = "139--155", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Nakamura:2001:ICC, author = "Hiroaki Nakamura", title = "Incremental computation of complex object queries", journal = j-SIGPLAN, volume = "36", number = "11", pages = "156--165", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Whaley:2001:PMC, author = "John Whaley", title = "Partial method compilation using dynamic profile information", journal = j-SIGPLAN, volume = "36", number = "11", pages = "166--179", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Suganuma:2001:DOF, author = "Toshio Suganuma and Toshiaki Yasue and Motohiro Kawahito and Hideaki Komatsu and Toshio Nakatani", title = "A dynamic optimization framework for a {Java} just-in-time compiler", journal = j-SIGPLAN, volume = "36", number = "11", pages = "180--195", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Pechtchanski:2001:DOI, author = "Igor Pechtchanski and Vivek Sarkar", title = "Dynamic optimistic interprocedural analysis: a framework and an application", journal = j-SIGPLAN, volume = "36", number = "11", pages = "195--210", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{McDirmid:2001:JNA, author = "Sean McDirmid and Matthew Flatt and Wilson C. Hsieh", title = "{Jiazzi}: new-age components for old-fashioned {Java}", journal = j-SIGPLAN, volume = "36", number = "11", pages = "211--222", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Duggan:2001:MMB, author = "Dominic Duggan and Ching-Ching Techaubol", title = "Modular mixin-based inheritance for application frameworks", journal = j-SIGPLAN, volume = "36", number = "11", pages = "223--240", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Grothoff:2001:EOC, author = "Christian Grothoff and Jens Palsberg and Jan Vitek", title = "Encapsulating objects with confined types", journal = j-SIGPLAN, volume = "36", number = "11", pages = "241--253", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Eugster:2001:OE, author = "Patrick Th. Eugster and Rachid Guerraoui and Christian Heide Damm", title = "On objects and events", journal = j-SIGPLAN, volume = "36", number = "11", pages = "254--269", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Visser:2001:VCT, author = "Joost Visser", title = "Visitor combination and traversal control", journal = j-SIGPLAN, volume = "36", number = "11", pages = "270--282", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ostermann:2001:OOC, author = "Klaus Ostermann and Mira Mezini", title = "Object-oriented composition untangled", journal = j-SIGPLAN, volume = "36", number = "11", pages = "283--299", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lanza:2001:CCB, author = "Michele Lanza and St{\'e}phane Ducasse", title = "A categorization of classes based on the visualization of their internal structure: the class blueprint", journal = j-SIGPLAN, volume = "36", number = "11", pages = "300--311", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Harrold:2001:RTS, author = "Mary Jean Harrold and James A. Jones and Tongyu Li and Donglin Liang and Ashish Gujarathi", title = "Regression test selection for {Java} software", journal = j-SIGPLAN, volume = "36", number = "11", pages = "312--326", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Riehle:2001:AUV, author = "Dirk Riehle and Steven Fraleigh and Dirk Bucka-Lassen and Nosa Omorogbe", title = "The architecture of a {UML} virtual machine", journal = j-SIGPLAN, volume = "36", number = "11", pages = "327--341", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Blackburn:2001:PJ, author = "Stephen M. Blackburn and Sharad Singhai and Matthew Hertz and Kathryn S. McKinely and J. Eliot B. Moss", title = "Pretenuring for {Java}", journal = j-SIGPLAN, volume = "36", number = "11", pages = "342--352", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Brecht:2001:CGC, author = "Tim Brecht and Eshrat Arjomandi and Chang Li and Hang Pham", title = "Controlling garbage collection and heap growth to reduce the execution time of {Java} applications", journal = j-SIGPLAN, volume = "36", number = "11", pages = "353--366", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Levanoni:2001:FRC, author = "Yossi Levanoni and Erez Petrank", title = "An on-the-fly reference counting garbage collector for {Java}", journal = j-SIGPLAN, volume = "36", number = "11", pages = "367--380", month = nov, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 9 14:44:52 MDT 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2001 ACM SIGPLAN Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'01).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Vlissides:2001:IIS, author = "John Vlissides and Doug Lea", title = "Introduction to this issue's special section on {Intriguing Technology from OOPSLA}", journal = j-SIGPLAN, volume = "36", number = "12", pages = "1--1", month = dec, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Jan 31 18:23:19 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:CCCb, author = "Anonymous", title = "Conference Corner: Calendar", journal = j-SIGPLAN, volume = "36", number = "12", pages = "2--11", month = dec, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Jan 31 18:23:19 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:CCIa, author = "Anonymous", title = "Conference Corner: {International Corner on Software Engineering (ICSE)}", journal = j-SIGPLAN, volume = "36", number = "12", pages = "12--12", month = dec, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Jan 31 18:23:19 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:CCF, author = "Anonymous", title = "Conference Corner: {Foundations of Software Engineering (FSE)}", journal = j-SIGPLAN, volume = "36", number = "12", pages = "13--13", month = dec, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Jan 31 18:23:19 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:CCP, author = "Anonymous", title = "Conference Corner: {Program Analysis for System Tools and Engineering (PASTE)}", journal = j-SIGPLAN, volume = "36", number = "12", pages = "14--14", month = dec, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Jan 31 18:23:19 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:CCIb, author = "Anonymous", title = "Conference Corner: {International Symposium on Memory Management (ISMM)}", journal = j-SIGPLAN, volume = "36", number = "12", pages = "15--15", month = dec, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Jan 31 18:23:19 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2001:FM, author = "Paul Frenger", title = "{Forth} mindstorms", journal = j-SIGPLAN, volume = "36", number = "12", pages = "16--19", month = dec, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:33 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Varela:2001:PDR, author = "Carlos Varela and Gul Agha", title = "Programming Dynamically Reconfigurable Open Systems with {SALSA}", journal = j-SIGPLAN, volume = "36", number = "12", pages = "20--34", month = dec, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:33 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Nolte:2001:TPH, author = "J{\"o}rg Nolte and Yutaka Ishikawa and Mitsuhisa Sato", title = "{TACO} --- Prototyping High-Level Object-Oriented Programming Constructs by Means of Template Based Programming Techniques", journal = j-SIGPLAN, volume = "36", number = "12", pages = "35--49", month = dec, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:33 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Yoder:2001:ADA, author = "Joseph W. Yoder and Federico Balaguer and Ralph Johnson", title = "Architecture and Design of Adaptive Object-Models", journal = j-SIGPLAN, volume = "36", number = "12", pages = "50--60", month = dec, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:33 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Pawson:2001:NOT, author = "Richard Pawson and Robert Matthews", title = "Naked objects: a technique for designing more expressive systems", journal = j-SIGPLAN, volume = "36", number = "12", pages = "61--67", month = dec, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:33 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fenwick:2001:IAc, author = "Jay Fenwick and Cindy Norris", title = "Information for Authors", journal = j-SIGPLAN, volume = "36", number = "12", pages = "68--68", month = dec, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Jan 31 18:23:19 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fenwick:2001:IPAc, author = "Jay Fenwick and Cindy Norris", title = "Information for Past Authors", journal = j-SIGPLAN, volume = "36", number = "12", pages = "69--69", month = dec, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Jan 31 18:23:19 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Xu:2001:DAR, author = "Baowen Xu and Zhenqiang Chen", title = "Dependence Analysis for Recursive {Java} Programs", journal = j-SIGPLAN, volume = "36", number = "12", pages = "70--76", month = dec, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:33 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Dolog:2001:RCA, author = "Peter Dolog and Valentino Vrani{\'c} and M{\'a}ria Bielikov{\'a}", title = "Representing Change By Aspect", journal = j-SIGPLAN, volume = "36", number = "12", pages = "77--83", month = dec, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:33 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Avdicausevic:2001:AED, author = "Enis Avdi{\v{c}}au{\v{s}}evi{\'c} and Mitja Leni{\v{c}} and Marjan Mernik and Viljem {\v{Z}}umer", title = "{AspectCOOL}: An experiment in design and implementation of aspect-oriented language", journal = j-SIGPLAN, volume = "36", number = "12", pages = "84--94", month = dec, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:33 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:F, author = "Anonymous", title = "{Forth}", journal = j-SIGPLAN, volume = "36", number = "12", pages = "??--??", month = dec, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:33 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:ITO, author = "Anonymous", title = "Intriguing technology from {OOPSLA}", journal = j-SIGPLAN, volume = "36", number = "12", pages = "??--??", month = dec, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:33 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2001:TCb, author = "Anonymous", title = "Technical correspondence", journal = j-SIGPLAN, volume = "36", number = "12", pages = "??--??", month = dec, year = "2001", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:33 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ball:2002:SPD, author = "Thomas Ball and Sriram K. Rajamani", title = "The {{\sc Slam}} project: debugging system software via static analysis", journal = j-SIGPLAN, volume = "37", number = "1", pages = "1--3", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ammons:2002:MS, author = "Glenn Ammons and Rastislav Bod{\'\i}k and James R. Larus", title = "Mining specifications", journal = j-SIGPLAN, volume = "37", number = "1", pages = "4--16", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kuncak:2002:RA, author = "Viktor Kuncak and Patrick Lam and Martin Rinard", title = "Role analysis", journal = j-SIGPLAN, volume = "37", number = "1", pages = "17--32", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Abadi:2002:ASP, author = "Mart{\'\i}n Abadi and Bruno Blanchet", title = "Analyzing security protocols with secrecy types and logic programs", journal = j-SIGPLAN, volume = "37", number = "1", pages = "33--44", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chaki:2002:TMM, author = "Sagar Chaki and Sriram K. Rajamani and Jakob Rehof", title = "Types as models: model checking message-passing programs", journal = j-SIGPLAN, volume = "37", number = "1", pages = "45--57", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Henzinger:2002:LA, author = "Thomas A. Henzinger and Ranjit Jhala and Rupak Majumdar and Gr{\'e}goire Sutre", title = "Lazy abstraction", journal = j-SIGPLAN, volume = "37", number = "1", pages = "58--70", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Merro:2002:BCS, author = "Massimo Merro and Matthew Hennessy", title = "Bisimulation congruences in safe ambients", journal = j-SIGPLAN, volume = "37", number = "1", pages = "71--80", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Honda:2002:UTS, author = "Kohei Honda and Nobuko Yoshida", title = "A uniform type structure for secure information flow", journal = j-SIGPLAN, volume = "37", number = "1", pages = "81--92", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Boehm:2002:BSU, author = "Hans-J. Boehm", title = "Bounding space usage of conservative garbage collectors", journal = j-SIGPLAN, volume = "37", number = "1", pages = "93--100", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Petrank:2002:HCC, author = "Erez Petrank and Dror Rawitz", title = "The hardness of cache conscious data placement", journal = j-SIGPLAN, volume = "37", number = "1", pages = "101--112", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Philipose:2002:TAC, author = "Matthai Philipose and Craig Chambers and Susan J. Eggers", title = "Towards automatic construction of staged compilers", journal = j-SIGPLAN, volume = "37", number = "1", pages = "113--125", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Felleisen:2002:PCB, author = "Matthias Felleisen", title = "From {POPL} to the classroom and back", journal = j-SIGPLAN, volume = "37", number = "1", pages = "126--127", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Necula:2002:CTS, author = "George C. Necula and Scott McPeak and Westley Weimer", title = "{CCured}: type-safe retrofitting of legacy code", journal = j-SIGPLAN, volume = "37", number = "1", pages = "128--139", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Rubin:2002:EPA, author = "Shai Rubin and Rastislav Bod{\'\i}k and Trishul Chilimbi", title = "An efficient profile-analysis framework for data-layout optimizations", journal = j-SIGPLAN, volume = "37", number = "1", pages = "140--153", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ramsey:2002:SLC, author = "Norman Ramsey and Avi Pfeffer", title = "Stochastic lambda calculus and monads of probability distributions", journal = j-SIGPLAN, volume = "37", number = "1", pages = "154--165", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Banerjee:2002:RIC, author = "Anindya Banerjee and David A. Naumann", title = "Representation independence, confinement and access control [extended abstract]", journal = j-SIGPLAN, volume = "37", number = "1", pages = "166--177", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cousot:2002:SDP, author = "Patrick Cousot and Radhia Cousot", title = "Systematic design of program transformation frameworks by abstract interpretation", journal = j-SIGPLAN, volume = "37", number = "1", pages = "178--190", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Flanagan:2002:PAS, author = "Cormac Flanagan and Shaz Qadeer", title = "Predicate abstraction for software verification", journal = j-SIGPLAN, volume = "37", number = "1", pages = "191--202", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Su:2002:FOT, author = "Zhendong Su and Alexander Aiken and Joachim Niehren and Tim Priesnitz and Ralf Treinen", title = "The first-order theory of subtyping constraints", journal = j-SIGPLAN, volume = "37", number = "1", pages = "203--216", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Shao:2002:TSC, author = "Zhong Shao and Bratin Saha and Valery Trifonov and Nikolaos Papaspyrou", title = "A type system for certified binaries", journal = j-SIGPLAN, volume = "37", number = "1", pages = "217--232", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Neubauer:2002:FLO, author = "Matthias Neubauer and Peter Thiemann and Martin Gasbichler and Michael Sperber", title = "Functional logic overloading", journal = j-SIGPLAN, volume = "37", number = "1", pages = "233--244", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Manohar:2002:SFD, author = "Rajit Manohar", title = "Scalable formal design methods for asynchronous {VLSI}", journal = j-SIGPLAN, volume = "37", number = "1", pages = "245--246", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Acar:2002:AFP, author = "Umut A. Acar and Guy E. Blelloch and Robert Harper", title = "Adaptive functional programming", journal = j-SIGPLAN, volume = "37", number = "1", pages = "247--259", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hofmann:2002:SNS, author = "Martin Hofmann", title = "The strength of non-size increasing computation", journal = j-SIGPLAN, volume = "37", number = "1", pages = "260--269", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lerner:2002:CDA, author = "Sorin Lerner and David Grove and Craig Chambers", title = "Composing dataflow analyses and transformations", journal = j-SIGPLAN, volume = "37", number = "1", pages = "270--282", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lacey:2002:PCC, author = "David Lacey and Neil D. Jones and Eric {Van Wyk} and Carl Christian Frederiksen", title = "Proving correctness of compiler optimizations by temporal logic", journal = j-SIGPLAN, volume = "37", number = "1", pages = "283--294", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Shuf:2002:EPT, author = "Yefim Shuf and Manish Gupta and Rajesh Bordawekar and Jaswinder Pal Singh", title = "Exploiting prolific types for memory management and optimizations", journal = j-SIGPLAN, volume = "37", number = "1", pages = "295--306", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fournet:2002:SIT, author = "C{\'e}dric Fournet and Andrew D. Gordon", title = "Stack inspection: theory and variants", journal = j-SIGPLAN, volume = "37", number = "1", pages = "307--318", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Pottier:2002:IFI, author = "Fran{\c{c}}ois Pottier and Vincent Simonet", title = "Information flow inference for {ML}", journal = j-SIGPLAN, volume = "37", number = "1", pages = "319--330", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Igarashi:2002:RUA, author = "Atsushi Igarashi and Naoki Kobayashi", title = "Resource usage analysis", journal = j-SIGPLAN, volume = "37", number = "1", pages = "331--342", month = jan, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:58 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages (POPL'02).", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } %%% Unread: volume 37 number 2 February 2002 [my issue never arrived] @Article{Noble:2002:FRJ, author = "Julian V. Noble", title = "{Forth} report: jump tables and state machines", journal = j-SIGPLAN, volume = "37", number = "2", pages = "14--19", month = feb, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:59 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Christopher:2002:PFP, author = "Thomas W. Christopher", title = "In parallel: Facilities for parallelism: what should be in a parallel library", journal = j-SIGPLAN, volume = "37", number = "2", pages = "20--22", month = feb, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:59 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Creak:2002:HTWa, author = "Alan Creak", title = "How things were: Programming lessons from days gone by: backward ran sentences until reeled the mind", journal = j-SIGPLAN, volume = "37", number = "2", pages = "23--26", month = feb, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:59 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Singh:2002:ADC, author = "Prabhat K. Singh and Arun Lakhotia", title = "Analysis and detection of computer viruses and worms: an annotated bibliography", journal = j-SIGPLAN, volume = "37", number = "2", pages = "29--35", month = feb, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:59 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Rashid:2002:WAP, author = "Awais Rashid", title = "Weaving aspects in a persistent environment", journal = j-SIGPLAN, volume = "37", number = "2", pages = "36--44", month = feb, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:59 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kuhl:2002:OLA, author = "Bernd K{\"u}hl and Axel-Tobias Schreiner", title = "Objects for lexical analysis", journal = j-SIGPLAN, volume = "37", number = "2", pages = "45--52", month = feb, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:59 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Siegfried:2002:SLH, author = "Robert M. Siegfried", title = "A scripting language to help the blind to program visually", journal = j-SIGPLAN, volume = "37", number = "2", pages = "53--56", month = feb, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:59 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Nedjah:2002:ECD, author = "Nadia Nedjah and Luiza de Macedo Mourelle", title = "Efficient concise deterministic pattern-matching automata for ambiguous patterns", journal = j-SIGPLAN, volume = "37", number = "2", pages = "57--67", month = feb, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:59 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zongyan:2002:BVE, author = "Qiu Zongyan", title = "Bit-vector encoding of $n$-queen problem", journal = j-SIGPLAN, volume = "37", number = "2", pages = "68--70", month = feb, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:22:59 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chambers:2002:SC, author = "Craig Chambers", title = "Staged compilation (invited talk)", journal = j-SIGPLAN, volume = "37", number = "3", pages = "1--8", month = mar, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2002 ACM SIGPLAN Workshop Partial Evaluation and Semantics-Based Program Manipulation (PEPM'02).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Meur:2002:TBG, author = "Anne-Fran{\c{c}}oise Le Meur and Julia L. Lawall and Charles Consel", title = "Towards bridging the gap between programming languages and partial evaluation", journal = j-SIGPLAN, volume = "37", number = "3", pages = "9--18", month = mar, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2002 ACM SIGPLAN Workshop Partial Evaluation and Semantics-Based Program Manipulation (PEPM'02).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Asai:2002:OPE, author = "Kenichi Asai", title = "Online partial evaluation for shift and reset", journal = j-SIGPLAN, volume = "37", number = "3", pages = "19--30", month = mar, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2002 ACM SIGPLAN Workshop Partial Evaluation and Semantics-Based Program Manipulation (PEPM'02).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Brabrand:2002:GLM, author = "Claus Brabrand and Michael I. Schwartzbach", title = "Growing languages with metamorphic syntax macros", journal = j-SIGPLAN, volume = "37", number = "3", pages = "31--40", month = mar, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2002 ACM SIGPLAN Workshop Partial Evaluation and Semantics-Based Program Manipulation (PEPM'02).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Secher:2002:CID, author = "Jens Peter Secher and Morten Heine S{\o}rensen", title = "From checking to inference via driving and dag grammars", journal = j-SIGPLAN, volume = "37", number = "3", pages = "41--51", month = mar, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2002 ACM SIGPLAN Workshop Partial Evaluation and Semantics-Based Program Manipulation (PEPM'02).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Vidal:2002:CAN, author = "Germ{\'a}n Vidal", title = "Cost-augmented narrowing-driven specialization", journal = j-SIGPLAN, volume = "37", number = "3", pages = "52--62", month = mar, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2002 ACM SIGPLAN Workshop Partial Evaluation and Semantics-Based Program Manipulation (PEPM'02).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lu:2002:PDA, author = "Lunjin Lu", title = "Path dependent analysis of logic programs", journal = j-SIGPLAN, volume = "37", number = "3", pages = "63--74", month = mar, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2002 ACM SIGPLAN Workshop Partial Evaluation and Semantics-Based Program Manipulation (PEPM'02).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gomez:2002:ATB, author = "Gustavo G{\'o}mez and Yanhong A. Liu", title = "Automatic time-bound analysis for a higher-order language", journal = j-SIGPLAN, volume = "37", number = "3", pages = "75--86", month = mar, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2002 ACM SIGPLAN Workshop Partial Evaluation and Semantics-Based Program Manipulation (PEPM'02).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Giacobazzi:2002:CPS, author = "Roberto Giacobazzi and Isabella Mastroeni", title = "Compositionality in the puzzle of semantics", journal = j-SIGPLAN, volume = "37", number = "3", pages = "87--97", month = mar, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2002 ACM SIGPLAN Workshop Partial Evaluation and Semantics-Based Program Manipulation (PEPM'02).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bischof:2002:IAD, author = "Christian H. Bischof and Paul D. Hovland and Boyana Norris", title = "Implementation of automatic differentiation tools (invited talk)", journal = j-SIGPLAN, volume = "37", number = "3", pages = "98--107", month = mar, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2002 ACM SIGPLAN Workshop Partial Evaluation and Semantics-Based Program Manipulation (PEPM'02).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Liu:2002:POU, author = "Yanhong A. Liu and Scott D. Stoller", title = "Program optimization using indexed and recursive data structures", journal = j-SIGPLAN, volume = "37", number = "3", pages = "108--118", month = mar, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2002 ACM SIGPLAN Workshop Partial Evaluation and Semantics-Based Program Manipulation (PEPM'02).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ramakrishnan:2002:MII, author = "Naren Ramakrishnan and Robert Capra and Manuel A. P{\'e}rez-Qui{\~n}ones", title = "Mixed-initiative interaction = mixed computation", journal = j-SIGPLAN, volume = "37", number = "3", pages = "119--130", month = mar, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2002 ACM SIGPLAN Workshop Partial Evaluation and Semantics-Based Program Manipulation (PEPM'02).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Barthe:2002:CTI, author = "Gilles Barthe and Tarmo Uustalu", title = "{CPS} translating inductive and coinductive types", journal = j-SIGPLAN, volume = "37", number = "3", pages = "131--142", month = mar, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Proceedings of the 2002 ACM SIGPLAN Workshop Partial Evaluation and Semantics-Based Program Manipulation (PEPM'02).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ramsey:2002:LSP, author = "Normal Ramsey", title = "{{\LaTeX}} Support for Proceedings", journal = j-SIGPLAN, volume = "37", number = "4", pages = "1--3", month = apr, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Apr 20 09:28:19 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cytron:2002:SAA, author = "Ron Cytron", title = "{SIGPLAN Awards}: The {2001 Award Winners}", journal = j-SIGPLAN, volume = "37", number = "4", pages = "4--4", month = apr, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Apr 20 09:28:19 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fenwick:2002:CCC, author = "Jay Fenwick", title = "Conference Corner: Calendar", journal = j-SIGPLAN, volume = "37", number = "4", pages = "5--14", month = apr, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Apr 20 09:28:19 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2002:CPF, author = "Anonymous", title = "Call for Participation: {First International IFIP\slash ACM Working Conference on Component Deployment, June 20--21, 2002, Berlin Germany}", journal = j-SIGPLAN, volume = "37", number = "4", pages = "15--15", month = apr, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Apr 20 09:28:19 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2002:CPI, author = "Anonymous", title = "Call for Participation: {ISSTA 2002: International Symposium on Software Testing and Analysis}", journal = j-SIGPLAN, volume = "37", number = "4", pages = "16--16", month = apr, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Apr 20 09:28:19 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2002:FRS, author = "Paul Frenger", title = "{Forth} Report: Strap-On {Forth}", journal = j-SIGPLAN, volume = "37", number = "4", pages = "17--20", month = apr, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:01 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Creak:2002:HTWb, author = "Alan Creak", title = "How things were: Programming lessons from days gone by: {Cobol}, stewed for students", journal = j-SIGPLAN, volume = "37", number = "4", pages = "21--26", month = apr, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:01 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Christopher:2002:PCR, author = "Thomas W. Christopher", title = "In Parallel: Communicating Reactive Objects: Message-Driven Parallelism", journal = j-SIGPLAN, volume = "37", number = "4", pages = "27--28", month = apr, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:01 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fenwick:2002:IAa, author = "Jay Fenwick and Cindy Norris", title = "Information for Authors", journal = j-SIGPLAN, volume = "37", number = "4", pages = "29--29", month = apr, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Apr 20 09:28:19 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fenwick:2002:IPAa, author = "Jay Fenwick and Cindy Norris", title = "Information for Past Authors", journal = j-SIGPLAN, volume = "37", number = "4", pages = "30--30", month = apr, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Apr 20 09:28:19 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Weisert:2002:IYO, author = "Conrad Weisert", title = "If your only tool is a hammer, everything looks like a nail: Pseudo Object-Oriented Programming Considered Harmful", journal = j-SIGPLAN, volume = "37", number = "4", pages = "31--31", month = apr, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Apr 20 09:28:19 2002", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zee:2002:WBRa, author = "Karen Zee and Martin Rinard", title = "Write Barrier Removal by Static Analysis", journal = j-SIGPLAN, volume = "37", number = "4", pages = "32--41", month = apr, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:01 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhang:2002:EGR, author = "Yumin Zhang and Xiaobo (Sharon) Hu and Danny Z. Chen", title = "Efficient Global Register Allocation for Minimizing Energy Consumption", journal = j-SIGPLAN, volume = "37", number = "4", pages = "42--53", month = apr, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:01 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Spinellis:2002:MPC, author = "Diomidis Spinellis", title = "A Modest Proposal for Curing the Public Field Phobia", journal = j-SIGPLAN, volume = "37", number = "4", pages = "54--56", month = apr, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:01 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ledru:2002:SPJ, author = "Pascal Ledru", title = "Smart Proxies for {Jini} Services", journal = j-SIGPLAN, volume = "37", number = "4", pages = "57--61", month = apr, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:01 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Acebal:2002:GDP, author = "C{\'e}sar F. Acebal and Ra{\'u}l Izquierdo Castanedo and Juan M. Cueva Lovelle", title = "Good Design Principles in a Compiler University Course", journal = j-SIGPLAN, volume = "37", number = "4", pages = "62--73", month = apr, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:01 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wells:2002:HMA, author = "Paul Damian Wells", title = "The {HSSM} macro-architecture, {Virtual Machine} and {H} languages", journal = j-SIGPLAN, volume = "37", number = "4", pages = "74--82", month = apr, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:01 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "Hierarchical Simultaneous Set Membership (HSSM)", } @Article{Foster:2002:FST, author = "Jeffrey S. Foster and Tachio Terauchi and Alex Aiken", title = "Flow-sensitive type qualifiers", journal = j-SIGPLAN, volume = "37", number = "5", pages = "1--12", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fahndrich:2002:AFP, author = "Manuel Fahndrich and Robert DeLine", title = "Adoption and focus: practical linear types for imperative programming", journal = j-SIGPLAN, volume = "37", number = "5", pages = "13--24", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Budimlic:2002:FCC, author = "Zoran Budimlic and Keith D. Cooper and Timothy J. Harvey and Ken Kennedy and Timothy S. Oberg and Steven W. Reeves", title = "Fast copy coalescing and live-range identification", journal = j-SIGPLAN, volume = "37", number = "5", pages = "25--32", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Koseki:2002:PDG, author = "Akira Koseki and Hideaki Komatsu and Toshio Nakatani", title = "Preference-directed graph coloring", journal = j-SIGPLAN, volume = "37", number = "5", pages = "33--44", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gargi:2002:SAP, author = "Karthik Gargi", title = "A sparse algorithm for predicated global value numbering", journal = j-SIGPLAN, volume = "37", number = "5", pages = "45--56", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Das:2002:EPS, author = "Manuvir Das and Sorin Lerner and Mark Seigle", title = "{ESP}: path-sensitive program verification in polynomial time", journal = j-SIGPLAN, volume = "37", number = "5", pages = "57--68", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hallem:2002:SLB, author = "Seth Hallem and Benjamin Chelf and Yichen Xie and Dawson Engler", title = "A system and language for building system-specific, static analyses", journal = j-SIGPLAN, volume = "37", number = "5", pages = "69--82", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ramalingam:2002:DSP, author = "G. Ramalingam and Alex Warshavsky and John Field and Deepak Goyal and Mooly Sagiv", title = "Deriving specialized program analyses for certifying component-client conformance", journal = j-SIGPLAN, volume = "37", number = "5", pages = "83--94", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Debray:2002:PGC, author = "Saumya Debray and William Evans", title = "Profile-guided code compression", journal = j-SIGPLAN, volume = "37", number = "5", pages = "95--105", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Rajagopalan:2002:PDO, author = "Mohan Rajagopalan and Saumya K. Debray and Matti A. Hiltunen and Richard D. Schlichting", title = "Profile-directed optimization of event-based programs", journal = j-SIGPLAN, volume = "37", number = "5", pages = "106--116", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Liao:2002:PPB, author = "Steve S. W. Liao and Perry H. Wang and Hong Wang and Gerolf Hoflehner and Daniel Lavery and John P. Shen", title = "Post-pass binary adaptation for software-based speculative precomputation", journal = j-SIGPLAN, volume = "37", number = "5", pages = "117--128", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ossia:2002:PIC, author = "Yoav Ossia and Ori Ben-Yitzhak and Irit Goft and Elliot K. Kolodner and Victor Leikehman and Avi Owshanko", title = "A parallel, incremental and concurrent {GC} for servers", journal = j-SIGPLAN, volume = "37", number = "5", pages = "129--140", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hallenberg:2002:CRI, author = "Niels Hallenberg and Martin Elsman and Mads Tofte", title = "Combining region inference and garbage collection", journal = j-SIGPLAN, volume = "37", number = "5", pages = "141--152", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Blackburn:2002:BGA, author = "Stephen M. Blackburn and Richard Jones and Kathryn S. McKinley and J. Eliot B. Moss", title = "{Beltway}: getting around garbage collection gridlock", journal = j-SIGPLAN, volume = "37", number = "5", pages = "153--164", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{So:2002:CAF, author = "Byoungro So and Mary W. Hall and Pedro C. Diniz", title = "A compiler approach to fast hardware design space exploration in {FPGA}-based systems", journal = j-SIGPLAN, volume = "37", number = "5", pages = "165--176", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cociorva:2002:STT, author = "Daniel Cociorva and Gerald Baumgartner and Chi-Chung Lam and P. Sadayappan and J. Ramanujam and Marcel Nooijen and David E. Bernholdt and Robert Harrison", title = "Space-time trade-off optimization for a class of electronic structure calculations", journal = j-SIGPLAN, volume = "37", number = "5", pages = "177--186", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kawahito:2002:ESE, author = "Motohiro Kawahito and Hideaki Komatsu and Toshio Nakatani", title = "Effective sign extension elimination", journal = j-SIGPLAN, volume = "37", number = "5", pages = "187--198", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chilimbi:2002:DHD, author = "Trishul M. Chilimbi and Martin Hirzel", title = "Dynamic hot data stream prefetching for general-purpose programs", journal = j-SIGPLAN, volume = "37", number = "5", pages = "199--209", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wu:2002:EDR, author = "Youfeng Wu", title = "Efficient discovery of regular stride patterns in irregular programs and its use in compiler prefetching", journal = j-SIGPLAN, volume = "37", number = "5", pages = "210--221", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Burtscher:2002:SLC, author = "Martin Burtscher and Amer Diwan and Matthias Hauswirth", title = "Static load classification for improving the value predictability of data-cache misses", journal = j-SIGPLAN, volume = "37", number = "5", pages = "222--233", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Flanagan:2002:ESC, author = "Cormac Flanagan and K. Rustan M. Leino and Mark Lillibridge and Greg Nelson and James B. Saxe and Raymie Stata", title = "Extended static checking for {Java}", journal = j-SIGPLAN, volume = "37", number = "5", pages = "234--245", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Leino:2002:UDG, author = "K. Rustan M. Leino and Arnd Poetzsch-Heffter and Yunhong Zhou", title = "Using data groups to specify and check side effects", journal = j-SIGPLAN, volume = "37", number = "5", pages = "246--257", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Choi:2002:EPD, author = "Jong-Deok Choi and Keunwoo Lee and Alexey Loginov and Robert O'Callahan and Vivek Sarkar and Manu Sridharan", title = "Efficient and precise datarace detection for multithreaded object-oriented programs", journal = j-SIGPLAN, volume = "37", number = "5", pages = "258--269", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Baker:2002:MMD, author = "Jason Baker and Wilson C. Hsieh", title = "{Maya}: multiple-dispatch syntax extension in {Java}", journal = j-SIGPLAN, volume = "37", number = "5", pages = "270--281", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Grossman:2002:RBM, author = "Dan Grossman and Greg Morrisett and Trevor Jim and Michael Hicks and Yanling Wang and James Cheney", title = "Region-based memory management in cyclone", journal = j-SIGPLAN, volume = "37", number = "5", pages = "282--293", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Almasi:2002:MCM, author = "George Alm{\'a}si and David Padua", title = "{MaJIC}: compiling {MATLAB} for speed and responsiveness", journal = j-SIGPLAN, volume = "37", number = "5", pages = "294--303", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Joshi:2002:DGD, author = "Rajeev Joshi and Greg Nelson and Keith Randall", title = "{Denali}: a goal-directed superoptimizer", journal = j-SIGPLAN, volume = "37", number = "5", pages = "304--314", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Henzinger:2002:EMP, author = "Thomas A. Henzinger and Christoph M. Kirsch", title = "The embedded machine: predictable, portable real-time code", journal = j-SIGPLAN, volume = "37", number = "5", pages = "315--326", month = may, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2002:FRF, author = "Paul Frenger", title = "{Forth} report: {Forth}'s {DOOM}", journal = j-SIGPLAN, volume = "37", number = "6", pages = "14--17", month = jun, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:04 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bergin:2002:UOO, author = "Joseph Bergin and Russel Winder", title = "Understanding object-oriented programming", journal = j-SIGPLAN, volume = "37", number = "6", pages = "18--25", month = jun, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:04 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fenwick:2002:IAb, author = "Jay Fenwick and Cindy Norris", title = "Information for Authors", journal = j-SIGPLAN, volume = "37", number = "6", pages = "26--26", month = jun, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:04 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fenwick:2002:IPAb, author = "Jay Fenwick and Cindy Norris", title = "Information for Past Authors", journal = j-SIGPLAN, volume = "37", number = "6", pages = "27--27", month = jun, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:04 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chen:2002:YAM, author = "Haiming Chen and Yunmei Dong", title = "Yet another meta-language for programming language processing", journal = j-SIGPLAN, volume = "37", number = "6", pages = "28--37", month = jun, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:04 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Guilan:2002:RCC, author = "Dai Guilan and Tian Jinlan and Zhang Suqin and Jiang Weidu and Dai Jun", title = "Retargetable cross compilation techniques: comparison and analysis of {GCC} and {Zephyr}", journal = j-SIGPLAN, volume = "37", number = "6", pages = "38--44", month = jun, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:04 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Guilan:2002:SCT, author = "Dai Guilan and Zhang Suqing and Tian Jinlan and Jiang Weidu", title = "A study of compiler techniques for multiple targets in compiler infrastructures", journal = j-SIGPLAN, volume = "37", number = "6", pages = "45--51", month = jun, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:04 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kiselyov:2002:SS, author = "Oleg Kiselyov", title = "{SXML} specification", journal = j-SIGPLAN, volume = "37", number = "6", pages = "52--58", month = jun, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:04 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cockshott:2002:VPR, author = "Paul Cockshott", title = "{Vector Pascal} reference manual", journal = j-SIGPLAN, volume = "37", number = "6", pages = "59--81", month = jun, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:04 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lee:2002:AOI, author = "Ji-Hyun Lee and Cheol-Jung Yoo and Ok-Bae Chang", title = "Analysis of object interaction during the enterprise {JavaBeans} lifecycle using formal specification technique", journal = j-SIGPLAN, volume = "37", number = "6", pages = "82--92", month = jun, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:04 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Magarshack:2002:SCN, author = "Philippe Magarshack", title = "Systems-on-chip needs for embedded software development: an industrial perspective", journal = j-SIGPLAN, volume = "37", number = "7", pages = "1--1", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Saputra:2002:ECC, author = "H. Saputra and M. Kandemir and N. Vijaykrishnan and M. J. Irwin and J. S. Hu and C-H. Hsu and U. Kremer", title = "Energy-conscious compilation based on voltage scaling", journal = j-SIGPLAN, volume = "37", number = "7", pages = "2--11", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Oh:2002:FRD, author = "Hyunok Oh and Soonhoi Ha", title = "Fractional rate dataflow model and efficient code synthesis for multimedia applications", journal = j-SIGPLAN, volume = "37", number = "7", pages = "12--17", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Mohanty:2002:RDS, author = "S. Mohanty and V. K. Prasanna and S. Neema and J. Davis", title = "Rapid design space exploration of heterogeneous embedded systems using symbolic search and multi-granular simulation", journal = j-SIGPLAN, volume = "37", number = "7", pages = "18--27", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Palem:2002:DSO, author = "Krishna V. Palem and Rodric M. Rabbah and Vincent J. {Mooney III} and Pinar Korkmaz and Kiran Puttaswamy", title = "Design space optimization of embedded memory systems via data remapping", journal = j-SIGPLAN, volume = "37", number = "7", pages = "28--37", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hunleth:2002:FFM, author = "Frank Hunleth and Ron K. Cytron", title = "Footprint and feature management using aspect-oriented programming techniques", journal = j-SIGPLAN, volume = "37", number = "7", pages = "38--45", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kastner:2002:GCF, author = "Daniel K{\"a}stner and Stephan Wilhelm", title = "Generic control flow reconstruction from assembly code", journal = j-SIGPLAN, volume = "37", number = "7", pages = "46--55", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Krishnaswamy:2002:PGS, author = "Arvind Krishnaswamy and Rajiv Gupta", title = "Profile guided selection of {ARM} and thumb instructions", journal = j-SIGPLAN, volume = "37", number = "7", pages = "56--64", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wakabayashi:2002:SAI, author = "Takayuki Wakabayashi and Hiroaki Takada", title = "Standardization approach of {ITRON} debugging interface specification and evaluation of its adaptability", journal = j-SIGPLAN, volume = "37", number = "7", pages = "65--74", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Jhumka:2002:SDG, author = "Arshad Jhumka and Martin Hiller and Vilgot Claesson and Neeraj Suri", title = "On systematic design of globally consistent executable assertions in embedded software", journal = j-SIGPLAN, volume = "37", number = "7", pages = "75--84", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Feng:2002:AFV, author = "Xiushan Feng and Alan J. Hu", title = "Automatic formal verification for scheduled {VLIW} code", journal = j-SIGPLAN, volume = "37", number = "7", pages = "85--92", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fettweis:2002:DWD, author = "Gerhard Fettweis", title = "{DSPs}: why don't they just go away!", journal = j-SIGPLAN, volume = "37", number = "7", pages = "93--93", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lorenz:2002:EAC, author = "Markus Lorenz and Lars Wehmeyer and Thorsten Dr{\"a}ger", title = "Energy aware compilation for {DSPs} with {SIMD} instructions", journal = j-SIGPLAN, volume = "37", number = "7", pages = "94--101", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kessler:2002:OIC, author = "Christoph Kessler and Andrzej Bednarski", title = "Optimal integrated code generation for clustered {VLIW} architectures", journal = j-SIGPLAN, volume = "37", number = "7", pages = "102--111", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Qian:2002:LFC, author = "Yi Qian and Steve Carr and Philip Sweany", title = "Loop fusion for clustered {VLIW} architectures", journal = j-SIGPLAN, volume = "37", number = "7", pages = "112--119", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Naik:2002:CCS, author = "Mayur Naik and Jens Palsberg", title = "Compiling with code-size constraints", journal = j-SIGPLAN, volume = "37", number = "7", pages = "120--129", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cho:2002:ERM, author = "Jeonghun Cho and Yunheung Paek and David Whalley", title = "Efficient register and memory assignment for non-orthogonal architectures via graph coloring and {MST} algorithms", journal = j-SIGPLAN, volume = "37", number = "7", pages = "130--138", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Scholz:2002:RAI, author = "Bernhard Scholz and Erik Eckstein", title = "Register allocation for irregular architectures", journal = j-SIGPLAN, volume = "37", number = "7", pages = "139--148", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Barthelmann:2002:ITR, author = "Volker Barthelmann", title = "Inter-task register-allocation for static operating systems", journal = j-SIGPLAN, volume = "37", number = "7", pages = "149--154", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhao:2002:VSI, author = "Wankang Zhao and Baosheng Cai and David Whalley and Mark W. Bailey and Robert van Engelen and Xin Yuan and Jason D. Hiser and Jack W. Davidson and Kyle Gallivan and Douglas L. Jones", title = "{VISTA}: a system for interactive code improvement", journal = j-SIGPLAN, volume = "37", number = "7", pages = "155--164", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hu:2002:CDC, author = "J. S. Hu and M. Kandemir and N. Vijaykrishnan and M. J. Irwin and H. Saputra and W. Zhang", title = "Compiler-directed cache polymorphism", journal = j-SIGPLAN, volume = "37", number = "7", pages = "165--174", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Milner:2002:QPF, author = "Christopher W. Milner and Jack W. Davidson", title = "{\em {Quick} piping\/}: a fast, high-level model for describing processor pipelines", journal = j-SIGPLAN, volume = "37", number = "7", pages = "175--184", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wahlen:2002:ASC, author = "Oliver Wahlen and Tilman Gl{\"o}kler and Achim Nohl and Andreas Hoffmann and Rainer Leupers and Heinrich Meyr", title = "Application specific compiler\slash architecture codesign: a case study", journal = j-SIGPLAN, volume = "37", number = "7", pages = "185--193", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Palm:2002:WUC, author = "Jeffrey Palm and Han Lee and Amer Diwan and J. Eliot B. Moss", title = "When to use a compilation service?", journal = j-SIGPLAN, volume = "37", number = "7", pages = "194--203", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Newsome:2002:PCD, author = "Matt Newsome and Des Watson", title = "Proxy compilation of dynamically loaded {Java} classes with {MoJo}", journal = j-SIGPLAN, volume = "37", number = "7", pages = "204--212", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Dudani:2002:ECF, author = "Ajay Dudani and Frank Mueller and Yifan Zhu", title = "Energy-conserving feedback {EDF} scheduling for embedded systems with real-time constraints", journal = j-SIGPLAN, volume = "37", number = "7", pages = "213--222", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kim:2002:PPT, author = "Saehwa Kim and Seongsoo Hong and Tae-Hyung Kim", title = "Perfecting preemption threshold scheduling for object-oriented real-time system design: from the perspective of real-time synchronization", journal = j-SIGPLAN, volume = "37", number = "7", pages = "223--232", month = jul, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2002:FRQ, author = "Paul Frenger", title = "{Forth} report: {Quartus Forth} for the {Palm Pilot}", journal = j-SIGPLAN, volume = "37", number = "8", pages = "6--8", month = aug, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Clark:2002:PPP, author = "Chris Clark", title = "Practical parsing patterns: Conflicts", journal = j-SIGPLAN, volume = "37", number = "8", pages = "9--14", month = aug, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Christopher:2002:PHS, author = "Thomas W. Christopher", title = "In parallel: {HPC} is a strange land", journal = j-SIGPLAN, volume = "37", number = "8", pages = "15--16", month = aug, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fenwick:2002:IAc, author = "Jay Fenwick and Cindy Norris", title = "Information for Authors", journal = j-SIGPLAN, volume = "37", number = "8", pages = "17--17", month = aug, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:04 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fenwick:2002:IPAc, author = "Jay Fenwick and Cindy Norris", title = "Information for Past Authors", journal = j-SIGPLAN, volume = "37", number = "8", pages = "18--18", month = aug, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:04 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hughes:2002:HMT, author = "Elliott Hughes", title = "How many trivial getter methods does {Java} have?", journal = j-SIGPLAN, volume = "37", number = "8", pages = "19--24", month = aug, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Jeon:2002:EBT, author = "Taewoong Jeon and Hyon Woo Seung and Sungyoung Lee", title = "Embedding built-in tests in hot spots of an object-oriented framework", journal = j-SIGPLAN, volume = "37", number = "8", pages = "25--34", month = aug, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ortin:2002:IRC, author = "Francisco Ort{\'\i}n and Juan Manuel Cueva", title = "Implementing a real computational-environment jump in order to develop a runtime-adaptable reflective platform", journal = j-SIGPLAN, volume = "37", number = "8", pages = "35--44", month = aug, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chen:2002:OMD, author = "Zhenqiang Chen and Baowen Xu and Jianjun Zhao", title = "An overview of methods for dependence analysis of concurrent programs", journal = j-SIGPLAN, volume = "37", number = "8", pages = "45--52", month = aug, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Dhamdhere:2002:PPR, author = "Dhananjay M. Dhamdhere", title = "{E-path\_PRE}: partial redundancy elimination made easy", journal = j-SIGPLAN, volume = "37", number = "8", pages = "53--65", month = aug, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Doh:2002:DIL, author = "Kyung Goo Doh and Seung Cheol Shin", title = "Detection of information leak by data flow analysis", journal = j-SIGPLAN, volume = "37", number = "8", pages = "66--71", month = aug, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Myers:2002:TMN, author = "Brad A. Myers", title = "Towards more natural functional programming languages", journal = j-SIGPLAN, volume = "37", number = "9", pages = "1--1", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hinze:2002:BOS, author = "Ralf Hinze", title = "Bootstrapping one-sided flexible arrays", journal = j-SIGPLAN, volume = "37", number = "9", pages = "2--13", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Voigtlander:2002:CRM, author = "Janis Voigtl{\"a}nder", title = "Concatenate, reverse and map vanish for free", journal = j-SIGPLAN, volume = "37", number = "9", pages = "14--25", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Carlsson:2002:MIC, author = "Magnus Carlsson", title = "Monads for incremental computing", journal = j-SIGPLAN, volume = "37", number = "9", pages = "26--35", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ford:2002:PPS, author = "Bryan Ford", title = "Packrat parsing: simple, powerful, lazy, linear time, functional pearl", journal = j-SIGPLAN, volume = "37", number = "9", pages = "36--47", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Findler:2002:CHO, author = "Robert Bruce Findler and Matthias Felleisen", title = "Contracts for higher-order functions", journal = j-SIGPLAN, volume = "37", number = "9", pages = "48--59", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ohori:2002:ICE, author = "Atsushi Ohori and Kiyoshi Yamatodani", title = "An interoperable calculus for external object access", journal = j-SIGPLAN, volume = "37", number = "9", pages = "60--71", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Flatt:2002:CCM, author = "Matthew Flatt", title = "Composable and compilable macros: you want it when?", journal = j-SIGPLAN, volume = "37", number = "9", pages = "72--83", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Dube:2002:DDA, author = "Danny Dub{\'e} and Marc Feeley", title = "A demand-driven adaptive type analysis", journal = j-SIGPLAN, volume = "37", number = "9", pages = "84--97", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Glynn:2002:EAN, author = "Kevin Glynn and Peter J. Stuckey and Martin Sulzmann and Harald S{\o}ndergaard", title = "Exception analysis for non-strict languages", journal = j-SIGPLAN, volume = "37", number = "9", pages = "98--109", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Millstein:2002:MTH, author = "Todd Millstein and Colin Bleckner and Craig Chambers", title = "Modular typechecking for hierarchically extensible datatypes and functions", journal = j-SIGPLAN, volume = "37", number = "9", pages = "110--122", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Moore:2002:FFM, author = "J. Strother Moore", title = "Functional formal methods", journal = j-SIGPLAN, volume = "37", number = "9", pages = "123--123", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Svenningsson:2002:SFA, author = "Josef Svenningsson", title = "Shortcut fusion for accumulating parameters {\&} zip-like functions", journal = j-SIGPLAN, volume = "37", number = "9", pages = "124--132", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Luth:2002:CMU, author = "Christoph L{\"u}th and Neil Ghani", title = "Composing monads using coproducts", journal = j-SIGPLAN, volume = "37", number = "9", pages = "133--144", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hanna:2002:IVF, author = "Keith Hanna", title = "Interactive visual functional programming", journal = j-SIGPLAN, volume = "37", number = "9", pages = "145--156", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Baars:2002:TDT, author = "Arthur I. Baars and S. Doaitse Swierstra", title = "Typing dynamic typing", journal = j-SIGPLAN, volume = "37", number = "9", pages = "157--166", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Stuckey:2002:TO, author = "Peter J. Stuckey and Martin Sulzmann", title = "A theory of overloading", journal = j-SIGPLAN, volume = "37", number = "9", pages = "167--178", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Neubauer:2002:TCM, author = "Matthias Neubauer and Peter Thiemann", title = "Type classes with more higher-order polymorphism", journal = j-SIGPLAN, volume = "37", number = "9", pages = "179--190", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Crary:2002:EST, author = "Karl Crary and Joseph C. Vanderwaart", title = "An expressive, scalable type theory for certified code", journal = j-SIGPLAN, volume = "37", number = "9", pages = "191--205", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } %%% Page gap: volume 37 number 2 pages 27--28 @Article{Nanevski:2002:MPN, author = "Aleksandar Nanevski", title = "Meta-programming with names and necessity", journal = j-SIGPLAN, volume = "37", number = "9", pages = "206--217", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Pasalic:2002:TSI, author = "Emir Pa{\v{s}}ali{\'c} and Walid Taha and Tim Sheard", title = "Tagless staged interpreters for typed languages", journal = j-SIGPLAN, volume = "37", number = "9", pages = "218--229", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Danvy:2002:TBA, author = "Olivier Danvy and Mayer Goldberg", title = "There and back again", journal = j-SIGPLAN, volume = "37", number = "9", pages = "230--234", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gregoire:2002:CIS, author = "Benjamin Gr{\'e}goire and Xavier Leroy", title = "A compiled implementation of strong reduction", journal = j-SIGPLAN, volume = "37", number = "9", pages = "235--246", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hansen:2002:ESR, author = "Lars T. Hansen and William D. Clinger", title = "An experimental study of renewal-older-first garbage collection", journal = j-SIGPLAN, volume = "37", number = "9", pages = "247--258", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Serpette:2002:CSJ, author = "Bernard Paul Serpette and Manuel Serrano", title = "Compiling scheme to {JVM} bytecode: a performance study", journal = j-SIGPLAN, volume = "37", number = "9", pages = "259--270", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gasbichler:2002:FSC, author = "Martin Gasbichler and Michael Sperber", title = "Final shift for {\tt call/cc}: direct implementation of shift and reset", journal = j-SIGPLAN, volume = "37", number = "9", pages = "271--282", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Jones:2002:PGT, author = "Neil D. Jones and Arne J. Glenstrup", title = "Program generation, termination, and binding-time analysis", journal = j-SIGPLAN, volume = "37", number = "9", pages = "283--283", month = sep, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:07 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } %%% NB: Page gaps in volume 37 number 10 (2--4, 42--44, 81--84, 121--122, %%% 156--158, 197--198, 235--238, 277--278) are due to sectional headings @Article{Estrin:2002:SNR, author = "Deborah Estrin", title = "Sensor Network Research: Emerging Challenges for Architecture, Systems, and Languages", journal = j-SIGPLAN, volume = "37", number = "10", pages = "1--1", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, annote = "No article text published.", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Rajwar:2002:TLF, author = "Ravi Rajwar and James R. Goodman", title = "Transactional lock-free execution of lock-based programs", journal = j-SIGPLAN, volume = "37", number = "10", pages = "5--17", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Martinez:2002:SSA, author = "Jos{\'e} F. Mart{\'\i}nez and Josep Torrellas", title = "Speculative synchronization: applying thread-level speculation to explicitly parallel applications", journal = j-SIGPLAN, volume = "37", number = "10", pages = "18--29", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lepak:2002:TSS, author = "Kevin M. Lepak and Mikko H. Lipasti", title = "Temporally silent stores", journal = j-SIGPLAN, volume = "37", number = "10", pages = "30--41", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sherwood:2002:ACL, author = "Timothy Sherwood and Erez Perelman and Greg Hamerly and Brad Calder", title = "Automatically characterizing large scale program behavior", journal = j-SIGPLAN, volume = "37", number = "10", pages = "45--57", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ogata:2002:BFO, author = "Kazunori Ogata and Hideaki Komatsu and Toshio Nakatani", title = "Bytecode fetch optimization for a {Java} interpreter", journal = j-SIGPLAN, volume = "37", number = "10", pages = "58--67", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Li:2002:UIO, author = "Tao Li and Lizy Kurian John and Anand Sivasubramaniam and N. Vijaykrishnan and Juan Rubio", title = "Understanding and improving operating system effects in control flow prediction", journal = j-SIGPLAN, volume = "37", number = "10", pages = "68--80", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Levis:2002:MTV, author = "Philip Levis and David Culler", title = "{Mat{\'e}}: a tiny virtual machine for sensor networks", journal = j-SIGPLAN, volume = "37", number = "10", pages = "85--95", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Juang:2002:EEC, author = "Philo Juang and Hidekazu Oki and Yong Wang and Margaret Martonosi and Li Shiuan Peh and Daniel Rubenstein", title = "Energy-efficient computing for wildlife tracking: design tradeoffs and early experiences with {ZebraNet}", journal = j-SIGPLAN, volume = "37", number = "10", pages = "96--107", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kirovski:2002:ETS, author = "Darko Kirovski and Milenko Drini{\'c} and Miodrag Potkonjak", title = "Enabling trusted software integrity", journal = j-SIGPLAN, volume = "37", number = "10", pages = "108--120", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zeng:2002:EME, author = "Heng Zeng and Carla S. Ellis and Alvin R. Lebeck and Amin Vahdat", title = "{ECOSystem}: managing energy as a first class operating system resource", journal = j-SIGPLAN, volume = "37", number = "10", pages = "123--132", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ashok:2002:CMC, author = "Raksit Ashok and Saurabh Chheda and Csaba Andras Moritz", title = "{Cool-Mem}: combining statically speculative memory accessing with selective address translation for energy efficiency", journal = j-SIGPLAN, volume = "37", number = "10", pages = "133--143", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sasanka:2002:JLG, author = "Ruchira Sasanka and Christopher J. Hughes and Sarita V. Adve", title = "Joint local and global hardware adaptations for energy", journal = j-SIGPLAN, volume = "37", number = "10", pages = "144--155", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kim:2002:DEC, author = "Dongkeun Kim and Donald Yeung", title = "Design and evaluation of compiler algorithms for pre-execution", journal = j-SIGPLAN, volume = "37", number = "10", pages = "159--170", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhai:2002:COS, author = "Antonia Zhai and Christopher B. Colohan and J. Gregory Steffan and Todd C. Mowry", title = "Compiler optimization of scalar value communication between speculative threads", journal = j-SIGPLAN, volume = "37", number = "10", pages = "171--183", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Oplinger:2002:ESR, author = "Jeffrey Oplinger and Monica S. Lam", title = "Enhancing software reliability with speculative threads", journal = j-SIGPLAN, volume = "37", number = "10", pages = "184--196", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Butts:2002:DDI, author = "J. Adam Butts and Guri Sohi", title = "Dynamic dead-instruction detection and elimination", journal = j-SIGPLAN, volume = "37", number = "10", pages = "199--210", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kim:2002:ANU, author = "Changkyu Kim and Doug Burger and Stephen W. Keckler", title = "An adaptive, non-uniform cache structure for wire-delay dominated on-chip caches", journal = j-SIGPLAN, volume = "37", number = "10", pages = "211--222", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Mukherjee:2002:CSA, author = "Shubhendu S. Mukherjee and Federico Silla and Peter Bannon and Joel Emer and Steve Lang and David Webb", title = "A comparative study of arbitration algorithms for the {Alpha 21364} pipelined router", journal = j-SIGPLAN, volume = "37", number = "10", pages = "223--234", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kim:2002:IWS, author = "Hyong-youb Kim and Vijay S. Pai and Scott Rixner", title = "Increasing {Web} server throughput with network interface data caching", journal = j-SIGPLAN, volume = "37", number = "10", pages = "239--250", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kohler:2002:PLO, author = "Eddie Kohler and Robert Morris and Benjie Chen", title = "Programming language optimizations for modular router configurations", journal = j-SIGPLAN, volume = "37", number = "10", pages = "251--263", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sivathanu:2002:ERA, author = "Muthian Sivathanu and Andrea C. Arpaci-Dusseau and Remzi H. Arpaci-Dusseau", title = "Evolving {RPC} for active storage", journal = j-SIGPLAN, volume = "37", number = "10", pages = "264--276", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cooksey:2002:SCD, author = "Robert Cooksey and Stephan Jourdan and Dirk Grunwald", title = "A stateless, content-directed data prefetching mechanism", journal = j-SIGPLAN, volume = "37", number = "10", pages = "279--290", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gordon:2002:SCC, author = "Michael I. Gordon and William Thies and Michal Karczmarek and Jasper Lin and Ali S. Meli and Andrew A. Lamb and Chris Leger and Jeremy Wong and Henry Hoffmann and David Maze and Saman Amarasinghe", title = "A stream compiler for communication-exposed architectures", journal = j-SIGPLAN, volume = "37", number = "10", pages = "291--303", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Witchel:2002:MMP, author = "Emmett Witchel and Josh Cates and Krste Asanovi{\'c}", title = "{Mondrian} memory protection", journal = j-SIGPLAN, volume = "37", number = "10", pages = "304--316", month = oct, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:09 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Berger:2002:RCM, author = "Emery D. Berger and Benjamin G. Zorn and Kathryn S. McKinley", title = "Reconsidering custom memory allocation", journal = j-SIGPLAN, volume = "37", number = "11", pages = "1--12", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Shuf:2002:CPL, author = "Yefim Shuf and Manish Gupta and Hubertus Franke and Andrew Appel and Jaswinder Pal Singh", title = "Creating and preserving locality of {Java} applications at allocation and garbage collection times", journal = j-SIGPLAN, volume = "37", number = "11", pages = "13--25", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bjornsson:2002:BHP, author = "Magnus E. Bjornsson and Liuba Shrira", title = "{BuddyCache}: high-performance object storage for collaborative strong-consistency applications in a {WAN}", journal = j-SIGPLAN, volume = "37", number = "11", pages = "26--39", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Manolescu:2002:WEC, author = "Dragos A. Manolescu", title = "Workflow enactment with continuation and future objects", journal = j-SIGPLAN, volume = "37", number = "11", pages = "40--51", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Mezini:2002:IIC, author = "Mira Mezini and Klaus Ostermann", title = "Integrating independent components with on-demand remodularization", journal = j-SIGPLAN, volume = "37", number = "11", pages = "52--67", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Killijian:2002:PSC, author = "Marc-Olivier Killijian and Juan-Carlos Ruiz and Jean-Charles Fabre", title = "Portable serialization of {CORBA} objects: a reflective approach", journal = j-SIGPLAN, volume = "37", number = "11", pages = "68--82", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Marelly:2002:MIS, author = "Rami Marelly and David Harel and Hillel Kugler", title = "Multiple instances and symbolic variables in executable sequence charts", journal = j-SIGPLAN, volume = "37", number = "11", pages = "83--100", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Michel:2002:CBA, author = "Laurent Michel and Pascal {Van Hentenryck}", title = "A constraint-based architecture for local search", journal = j-SIGPLAN, volume = "37", number = "11", pages = "101--110", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Arnold:2002:OFD, author = "Matthew Arnold and Michael Hind and Barbara G. Ryder", title = "Online feedback-directed optimization of {Java}", journal = j-SIGPLAN, volume = "37", number = "11", pages = "111--129", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kawachiya:2002:LRJ, author = "Kiyokuni Kawachiya and Akira Koseki and Tamiya Onodera", title = "Lock reservation: {Java} locks can mostly do without atomic operations", journal = j-SIGPLAN, volume = "37", number = "11", pages = "130--141", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zibin:2002:FAC, author = "Yoav Zibin and Joseph Yossi Gil", title = "Fast algorithm for creating space efficient dispatching tables with application to multi-dispatching", journal = j-SIGPLAN, volume = "37", number = "11", pages = "142--160", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hannemann:2002:DPI, author = "Jan Hannemann and Gregor Kiczales", title = "Design pattern implementation in {Java} and {aspectJ}", journal = j-SIGPLAN, volume = "37", number = "11", pages = "161--173", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Soares:2002:IDP, author = "Sergio Soares and Eduardo Laureano and Paulo Borba", title = "Implementing distribution and persistence aspects with {aspectJ}", journal = j-SIGPLAN, volume = "37", number = "11", pages = "174--190", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zee:2002:WBRb, author = "Karen Zee and Martin Rinard", title = "Write barrier removal by static analysis", journal = j-SIGPLAN, volume = "37", number = "11", pages = "191--210", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Boyapati:2002:OTS, author = "Chandrasekhar Boyapati and Robert Lee and Martin Rinard", title = "Ownership types for safe programming: preventing data races and deadlocks", journal = j-SIGPLAN, volume = "37", number = "11", pages = "211--230", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Khurshid:2002:AAL, author = "Sarfraz Khurshid and Darko Marinov and Daniel Jackson", title = "An analyzable annotation language", journal = j-SIGPLAN, volume = "37", number = "11", pages = "231--245", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cecchet:2002:PSE, author = "Emmanuel Cecchet and Julie Marguerite and Willy Zwaenepoel", title = "Performance and scalability of {EJB} applications", journal = j-SIGPLAN, volume = "37", number = "11", pages = "246--261", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Palacz:2002:IEC, author = "Krzysztof Palacz and Jan Vitek and Grzegorz Czajkowski and Laurent Daynas", title = "{Incommunicado}: efficient communication for isolates", journal = j-SIGPLAN, volume = "37", number = "11", pages = "262--274", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{DeSutter:2002:SML, author = "Bjorn {De Sutter} and Bruno {De Bus} and Koen {De Bosschere}", title = "Sifting out the mud: low level {C++} code reuse", journal = j-SIGPLAN, volume = "37", number = "11", pages = "275--291", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Clarke:2002:OED, author = "Dave Clarke and Sophia Drossopoulou", title = "Ownership, encapsulation and the disjointness of type and effect", journal = j-SIGPLAN, volume = "37", number = "11", pages = "292--310", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Aldrich:2002:AAP, author = "Jonathan Aldrich and Valentin Kostadinov and Craig Chambers", title = "Alias annotations for program understanding", journal = j-SIGPLAN, volume = "37", number = "11", pages = "311--330", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Pucella:2002:TFC, author = "Riccardo Pucella", title = "Towards a formalization for {COM}. {Part I}: {The} primitive calculus", journal = j-SIGPLAN, volume = "37", number = "11", pages = "331--342", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Printezis:2002:GAH, author = "Tony Printezis and Richard Jones", title = "{GCspy}: an adaptable heap visualisation framework", journal = j-SIGPLAN, volume = "37", number = "11", pages = "343--358", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Koved:2002:ARA, author = "Larry Koved and Marco Pistoia and Aaron Kershenbaum", title = "Access rights analysis for {Java}", journal = j-SIGPLAN, volume = "37", number = "11", pages = "359--372", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Dmitriev:2002:LSM, author = "Mikhail Dmitriev", title = "Language-specific make technology for the {Java} programming language", journal = j-SIGPLAN, volume = "37", number = "11", pages = "373--385", month = nov, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:10 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2002:FRG, author = "Paul Frenger", title = "{Forth} report: Going {APE.FORTH} to {Mars}", journal = j-SIGPLAN, volume = "37", number = "12", pages = "9--13", month = dec, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:11 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Creak:2002:HTWc, author = "Alan Creak", title = "How things were: {Edsger W. Dijkstra}", journal = j-SIGPLAN, volume = "37", number = "12", pages = "14--16", month = dec, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:11 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Norris:2002:ISI, author = "Cindy Norris", title = "Introduction to special issue", journal = j-SIGPLAN, volume = "37", number = "12", pages = "17--17", month = dec, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:11 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Arts:2002:TAE, author = "Thomas Arts and Lars-{\AA}ke Fredlund", title = "Trace analysis of {Erlang} programs", journal = j-SIGPLAN, volume = "37", number = "12", pages = "18--24", month = dec, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:11 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wiger:2002:WCP, author = "Ulf Wiger and G{\"o}sta Ask and Kent Boortz", title = "World-class product certification using {Erlang}", journal = j-SIGPLAN, volume = "37", number = "12", pages = "25--34", month = dec, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:11 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Claessen:2002:ELA, author = "Koen Claessen and Gordon J. Pace", title = "An embedded language approach to teaching hardware compilation", journal = j-SIGPLAN, volume = "37", number = "12", pages = "35--46", month = dec, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:11 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Claessen:2002:TMC, author = "Koen Claessen and John Hughes", title = "Testing monadic code with {QuickCheck}", journal = j-SIGPLAN, volume = "37", number = "12", pages = "47--59", month = dec, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:11 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sheard:2002:TMP, author = "Tim Sheard and Simon Peyton Jones", title = "Template meta-programming for {Haskell}", journal = j-SIGPLAN, volume = "37", number = "12", pages = "60--75", month = dec, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:11 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Giavitto:2002:PMR, author = "Jean-Louis Giavitto and Olivier Michel and Julien Cohen", title = "Pattern-matching and rewriting rules for group indexed data structures", journal = j-SIGPLAN, volume = "37", number = "12", pages = "76--87", month = dec, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:11 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Erwig:2002:RBL, author = "Martin Erwig and Delin Ren", title = "A rule-based language for programming software updates", journal = j-SIGPLAN, volume = "37", number = "12", pages = "88--97", month = dec, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:11 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Groote:2002:CAM, author = "Jan Friso Groote and Bert Lisser", title = "Computer assisted manipulation of algebraic process specifications", journal = j-SIGPLAN, volume = "37", number = "12", pages = "98--107", month = dec, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:11 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hornos:2002:FMC, author = "Miguel J. Hornos and Manuel I. Capel", title = "On-the-fly model checking from interval logic specifications", journal = j-SIGPLAN, volume = "37", number = "12", pages = "108--119", month = dec, year = "2002", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:11 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Simeon:2003:EX, author = "J{\'e}r{\^o}me Sim{\'e}on and Philip Wadler", title = "The essence of {XML}", journal = j-SIGPLAN, volume = "38", number = "1", pages = "1--13", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Acar:2003:SM, author = "Umut A. A. Acar and Guy E. Blelloch and Robert Harper", title = "Selective memoization", journal = j-SIGPLAN, volume = "38", number = "1", pages = "14--25", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Taha:2003:EC, author = "Walid Taha and Michael Florentin Nielsen", title = "Environment classifiers", journal = j-SIGPLAN, volume = "38", number = "1", pages = "26--37", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Jensen:2003:BT, author = "Ole H{\o}gh Jensen and Robin Milner", title = "Bigraphs and transitions", journal = j-SIGPLAN, volume = "38", number = "1", pages = "38--49", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Schmitt:2003:CHO, author = "Alan Schmitt and Jean-Bernard Stefani", title = "The $m$-calculus: a higher-order distributed process calculus", journal = j-SIGPLAN, volume = "38", number = "1", pages = "50--61", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bouajjani:2003:GAS, author = "Ahmed Bouajjani and Javier Esparza and Tayssir Touili", title = "A generic approach to the static analysis of concurrent programs with procedures", journal = j-SIGPLAN, volume = "38", number = "1", pages = "62--73", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gulwani:2003:DAE, author = "Sumit Gulwani and George C. Necula", title = "Discovering affine equalities using random interpretation", journal = j-SIGPLAN, volume = "38", number = "1", pages = "74--84", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Tallam:2003:BAG, author = "Sriraman Tallam and Rajiv Gupta", title = "Bitwidth aware global register allocation", journal = j-SIGPLAN, volume = "38", number = "1", pages = "85--96", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ball:2003:SCL, author = "Thomas Ball and Mayur Naik and Sriram K. Rajamani", title = "From symptom to cause: localizing errors in counterexample traces", journal = j-SIGPLAN, volume = "38", number = "1", pages = "97--105", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Carter:2003:FCR, author = "Larry Carter and Jeanne Ferrante and Clark Thomborson", title = "Folklore confirmed: reducible flow graphs are exponentially larger", journal = j-SIGPLAN, volume = "38", number = "1", pages = "106--114", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chakaravarthy:2003:NRC, author = "Venkatesan T. Chakaravarthy", title = "New results on the computability and complexity of points--to analysis", journal = j-SIGPLAN, volume = "38", number = "1", pages = "115--125", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zibin:2003:IAD, author = "Yoav Zibin and Joseph (Yossi) Gil", title = "Incremental algorithms for dispatching in dynamically typed languages", journal = j-SIGPLAN, volume = "38", number = "1", pages = "126--138", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Thielecke:2003:CET, author = "Hayo Thielecke", title = "From control effects to typed continuation passing", journal = j-SIGPLAN, volume = "38", number = "1", pages = "139--149", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chen:2003:CSC, author = "Gang Chen", title = "Coercive subtyping for the calculus of constructions", journal = j-SIGPLAN, volume = "38", number = "1", pages = "150--159", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zibin:2003:EAI, author = "Yoav Zibin and Joseph (Yossi) Gil and Jeffrey Considine", title = "Efficient algorithms for isomorphisms of simple types", journal = j-SIGPLAN, volume = "38", number = "1", pages = "160--171", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Petersen:2003:TTM, author = "Leaf Petersen and Robert Harper and Karl Crary and Frank Pfenning", title = "A type theory for memory allocation and data layout", journal = j-SIGPLAN, volume = "38", number = "1", pages = "172--184", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hofmann:2003:SPH, author = "Martin Hofmann and Steffen Jost", title = "Static prediction of heap space usage for first-order functional programs", journal = j-SIGPLAN, volume = "38", number = "1", pages = "185--197", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Crary:2003:TFT, author = "Karl Crary", title = "Toward a foundational typed assembly language", journal = j-SIGPLAN, volume = "38", number = "1", pages = "198--212", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Boyapati:2003:OTO, author = "Chandrasekhar Boyapati and Barbara Liskov and Liuba Shrira", title = "Ownership types for object encapsulation", journal = j-SIGPLAN, volume = "38", number = "1", pages = "213--223", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Xi:2003:GRD, author = "Hongwei Xi and Chiyan Chen and Gang Chen", title = "Guarded recursive datatype constructors", journal = j-SIGPLAN, volume = "38", number = "1", pages = "224--235", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Dreyer:2003:TSH, author = "Derek Dreyer and Karl Crary and Robert Harper", title = "A type system for higher-order modules", journal = j-SIGPLAN, volume = "38", number = "1", pages = "236--249", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Barthe:2003:PPT, author = "Gilles Barthe and Horatiu Cirstea and Claude Kirchner and Luigi Liquori", title = "Pure patterns type systems", journal = j-SIGPLAN, volume = "38", number = "1", pages = "250--261", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Boehm:2003:DFS, author = "Hans-J. Boehm", title = "Destructors, finalizers, and synchronization", journal = j-SIGPLAN, volume = "38", number = "1", pages = "262--272", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gheorghioiu:2003:ICA, author = "Ovidiu Gheorghioiu and Alexandru Salcianu and Martin Rinard", title = "Interprocedural compatibility analysis for static object preallocation", journal = j-SIGPLAN, volume = "38", number = "1", pages = "273--284", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bacon:2003:RTG, author = "David F. Bacon and Perry Cheng and V. T. Rajan", title = "A real-time garbage collector with low overhead and consistent utilization", journal = j-SIGPLAN, volume = "38", number = "1", pages = "285--298", month = jan, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:12 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ding:2003:CDR, author = "Chen Ding and Yutao Zhong", title = "Compiler-directed run-time monitoring of program data access", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "1--12", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Guilan:2003:AIR, author = "Dai Guilan and Tian Jinlan and Zhang Suqing and Jiang Weidu", title = "An abstract intermediate representation in compilation systems", journal = j-SIGPLAN, volume = "38", number = "2", pages = "12--18", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lattner:2003:APA, author = "Chris Lattner and Vikram Adve", title = "Automatic pool allocation for disjoint data structures", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "13--24", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hamilton:2003:LIC, author = "Jennifer Hamilton", title = "Language integration in the common language runtime", journal = j-SIGPLAN, volume = "38", number = "2", pages = "19--28", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Stefanovic:2003:OFG, author = "Darko Stefanovi{\'c} and Matthew Hertz and Stephen M. Blackburn and Kathryn S. McKinley and J. Eliot B. Moss", title = "Older-first garbage collection in practice: evaluation in a {Java Virtual Machine}", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "25--36", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Jackson:2003:EFO, author = "Quinn Tyler Jackson", title = "Efficient formalism-only parsing of {XML\slash HTML} using the {\S}-calculus", journal = j-SIGPLAN, volume = "38", number = "2", pages = "29--35", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Schilling:2003:SHM, author = "Jonathan L. Schilling", title = "The simplest heuristics may be the best in {Java JIT} compilers", journal = j-SIGPLAN, volume = "38", number = "2", pages = "36--46", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Almasi:2003:CSD, author = "George Alm{\'a}si and C{\u{a}}lin Ca{\c{s}}caval and David A. Padua", title = "Calculating stack distances efficiently", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "37--43", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Nethercote:2003:CBL, author = "Nicholas Nethercote and Alan Mycroft", title = "The cache behaviour of large lazy functional programs on stock hardware", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "44--55", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sinclair:2003:IMT, author = "Robert Sinclair", title = "Interactive mathematics textbooks", journal = j-SIGPLAN, volume = "38", number = "2", pages = "47--56", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lopes:2003:SPC, author = "Ricardo Lopes and Lu{\'\i}s Fernando Castro and V{\'\i}tor Santos Costa", title = "From simulation to practice: cache performance study of a {Prolog} system", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "56--64", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Queinnec:2003:IBI, author = "Christian Queinnec", title = "Inverting back the inversion of control or, continuations versus page-centric programming", journal = j-SIGPLAN, volume = "38", number = "2", pages = "57--64", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ykman-Couvreur:2003:MOA, author = "Ch. Ykman-Couvreur and J. Lambrecht and A. van der Togt and F. Catthoor", title = "Multi-objective {\em abstract data type refinement\/} for mapping tables in telecom network applications", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "65--75", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Schulz:2003:PNH, author = "Martin Schulz and Jie Tao and J{\"u}rgen Jeitner and Wolfgang Karl", title = "A proposal for a new hardware cache monitoring architecture", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "76--85", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Mahapatra:2003:PAA, author = "Nihar R. Mahapatra and Jiangjiang Liu and Krishnan Sundaresan", title = "The performance advantage of applying compression to the memory system", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "86--96", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cooper:2003:ESA, author = "Keith D. Cooper and Li Xu", title = "An efficient static analysis algorithm to detect redundant memory operations", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "97--107", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Robertz:2003:APM, author = "Sven G. Robertz", title = "Applying priorities to memory allocation", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "108--118", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Endo:2003:RPT, author = "Toshio Endo and Kenjiro Taura", title = "Reducing pause time of conservative collectors", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "119--131", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Deters:2003:ADS, author = "Morgan Deters and Ron K. Cytron", title = "Automated discovery of scoped memory regions for real-time {Java}", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "132--142", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hirzel:2003:UCH, author = "Martin Hirzel and Johannes Henkel and Amer Diwan and Michael Hind", title = "Understanding the connectivity of heap objects", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "143--156", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Printezis:2003:VTG, author = "Tony Printezis and Alex Garthwaite", title = "Visualising the train garbage collector", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "157--170", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Shaham:2003:EIH, author = "Ran Shaham and Elliot K. Kolodner and Mooly Sagiv", title = "Estimating the impact of heap liveness information on space consumption in {Java}", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "171--182", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Domani:2003:TLH, author = "Tamar Domani and Gal Goldshtein and Elliot K. Kolodner and Ethan Lewis and Erez Petrank and Dafna Sheinwald", title = "Thread-local heaps for {Java}", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "183--194", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Johansson:2003:HAC, author = "Erik Johansson and Konstantinos Sagonas and Jesper Wilhelmsson", title = "Heap architectures for concurrent languages using message passing", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "195--206", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ben-Yitzhak:2003:API, author = "Ori Ben-Yitzhak and Irit Goft and Elliot K. Kolodner and Kean Kuiper and Victor Leikehman", title = "An algorithm for parallel incremental compaction", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "207--212", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Vardhan:2003:UPO, author = "Abhay Vardhan and Gul Agha", title = "Using passive object garbage collection algorithms for garbage collection of active objects", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "213--220", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kaplan:2003:ACD, author = "Scott F. Kaplan and Lyle A. McGeoch and Megan F. Cole", title = "Adaptive caching for demand prepaging", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "221--232", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Qian:2003:ARB, author = "Feng Qian and Laurie Hendren", title = "An adaptive, region-based allocator for {Java}", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "233--244", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kumar:2003:DMM, author = "Sanjeev Kumar and Kai Li", title = "Dynamic memory management for programmable devices", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "245--255", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Henderson:2003:AGC, author = "Fergus Henderson", title = "Accurate garbage collection in an uncooperative environment", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "256--262", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Aggarwal:2003:SCV, author = "Aneesh Aggarwal", title = "Software caching vs. prefetching", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "263--268", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Dice:2003:MLF, author = "Dave Dice and Alex Garthwaite", title = "Mostly lock-free malloc", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "269--280", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Blackburn:2003:PWB, author = "Stephen M. Blackburn and Kathryn S. McKinley", title = "In or out?: putting write barriers in their place", journal = j-SIGPLAN, volume = "38", number = "2s", pages = "281--290", month = feb, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:14 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Flanagan:2003:TA, author = "Cormac Flanagan and Shaz Qadeer", title = "Types for atomicity", journal = j-SIGPLAN, volume = "38", number = "3", pages = "1--12", month = mar, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:16 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Grossman:2003:TSM, author = "Dan Grossman", title = "Type-safe multithreading in cyclone", journal = j-SIGPLAN, volume = "38", number = "3", pages = "13--25", month = mar, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:16 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lammel:2003:SYB, author = "Ralf L{\"a}mmel and Simon Peyton Jones", title = "Scrap your boilerplate: a practical design pattern for generic programming", journal = j-SIGPLAN, volume = "38", number = "3", pages = "26--37", month = mar, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:16 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Park:2003:CPL, author = "Sungwoo Park", title = "A calculus for probabilistic languages", journal = j-SIGPLAN, volume = "38", number = "3", pages = "38--49", month = mar, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:16 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kobayashi:2003:TRE, author = "Naoki Kobayashi", title = "Time regions and effects for resource usage analysis", journal = j-SIGPLAN, volume = "38", number = "3", pages = "50--61", month = mar, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:16 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Calcagno:2003:DVS, author = "Cristiano Calcagno and Luca Cardelli and Andrew D. Gordon", title = "Deciding validity in a spatial logic for trees", journal = j-SIGPLAN, volume = "38", number = "3", pages = "62--73", month = mar, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:16 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ahmed:2003:LAS, author = "Amal Ahmed and David Walker", title = "The logical approach to stack typing", journal = j-SIGPLAN, volume = "38", number = "3", pages = "74--85", month = mar, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:16 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Amtoft:2003:IAT, author = "Torben Amtoft and Robert Muller", title = "Inferring annotated types for inter-procedural register allocation with constructor flattening", journal = j-SIGPLAN, volume = "38", number = "3", pages = "86--97", month = mar, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:16 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Vanderwaart:2003:TCR, author = "Joseph C. Vanderwaart and Derek Dreyer and Leaf Petersen and Karl Crary and Robert Harper and Perry Cheng", title = "Typed compilation of recursive datatypes", journal = j-SIGPLAN, volume = "38", number = "3", pages = "98--108", month = mar, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:16 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Vanderwaart:2003:TIG, author = "Joseph C. Vanderwaart and Karl Crary", title = "A typed interface for garbage collection", journal = j-SIGPLAN, volume = "38", number = "3", pages = "109--122", month = mar, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:16 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Elsman:2003:GCS, author = "Martin Elsman", title = "Garbage collection safety for region-based memory management", journal = j-SIGPLAN, volume = "38", number = "3", pages = "123--134", month = mar, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu May 15 12:23:16 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Creak:2003:EFO, author = "Alan Creak", title = "Everything is {Fortran}, in its own way", journal = j-SIGPLAN, volume = "38", number = "4", pages = "7--12", month = apr, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:44:59 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2003:EFW, author = "Paul Frenger", title = "Evaluating {Forth} in the {Windows} environment", journal = j-SIGPLAN, volume = "38", number = "4", pages = "13--15", month = apr, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:44:59 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Das:2003:FIVa, author = "Dibyendu Das", title = "Function inlining versus function cloning", journal = j-SIGPLAN, volume = "38", number = "4", pages = "18--24", month = apr, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:44:59 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{deOliveiraGuimaraes:2003:EBC, author = "Jos{\'e} {de Oliveira Guimar{\~a}es}", title = "Experiences in building a compiler for an object-oriented language", journal = j-SIGPLAN, volume = "38", number = "4", pages = "25--33", month = apr, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:44:59 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kwon:2003:AJP, author = "Jagun Kwon and Andy Wellings and Steve King", title = "Assessment of the {Java} programming language for use in high integrity systems", journal = j-SIGPLAN, volume = "38", number = "4", pages = "34--46", month = apr, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:44:59 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Luo:2003:FSD, author = "Lei Luo and Ming-Yuan Zhu and Qing-Li Zhang", title = "A formal semantic definition of {DEVIL}", journal = j-SIGPLAN, volume = "38", number = "4", pages = "47--56", month = apr, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:44:59 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhuge:2003:KKG, author = "Hai Zhuge and Jie Liu", title = "{KGOL}: a {Knowledge Grid} operating language", journal = j-SIGPLAN, volume = "38", number = "4", pages = "57--66", month = apr, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:44:59 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gay:2003:NLH, author = "David Gay and Philip Levis and Robert von Behren and Matt Welsh and Eric Brewer and David Culler", title = "The {{\em nesC}} language: {A} holistic approach to networked embedded systems", journal = j-SIGPLAN, volume = "38", number = "5", pages = "1--11", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lamb:2003:LAO, author = "Andrew A. Lamb and William Thies and Saman Amarasinghe", title = "Linear analysis and optimization of stream programs", journal = j-SIGPLAN, volume = "38", number = "5", pages = "12--25", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{George:2003:TIN, author = "Lal George and Matthias Blume", title = "Taming the {IXP} network processor", journal = j-SIGPLAN, volume = "38", number = "5", pages = "26--37", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hsu:2003:DIE, author = "Chung-Hsing Hsu and Ulrich Kremer", title = "The design, implementation, and evaluation of a compiler algorithm for {CPU} energy reduction", journal = j-SIGPLAN, volume = "38", number = "5", pages = "38--48", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Xie:2003:CTD, author = "Fen Xie and Margaret Martonosi and Sharad Malik", title = "Compile-time dynamic voltage scaling settings: opportunities and limits", journal = j-SIGPLAN, volume = "38", number = "5", pages = "49--62", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Yotov:2003:CEM, author = "Kamen Yotov and Xiaoming Li and Gang Ren and Michael Cibulskis and Gerald DeJong and Maria Garzaran and David Padua and Keshav Pingali and Paul Stodghill and Peng Wu", title = "A comparison of empirical and model-driven optimization", journal = j-SIGPLAN, volume = "38", number = "5", pages = "63--76", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Stephenson:2003:MOI, author = "Mark Stephenson and Saman Amarasinghe and Martin Martin and Una-May O'Reilly", title = "Meta optimization: improving compiler heuristics with machine learning", journal = j-SIGPLAN, volume = "38", number = "5", pages = "77--90", month = may, year = "2003", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/780822.781141", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Strout:2003:CTC, author = "Michelle Mills Strout and Larry Carter and Jeanne Ferrante", title = "Compile-time composition of run-time data and iteration reorderings", journal = j-SIGPLAN, volume = "38", number = "5", pages = "91--102", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Berndl:2003:PAU, author = "Marc Berndl and Ondrej Lhot{\'a}k and Feng Qian and Laurie Hendren and Navindra Umanee", title = "Points-to analysis using {BDDs}", journal = j-SIGPLAN, volume = "38", number = "5", pages = "103--114", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{vonPraun:2003:SCA, author = "Christoph von Praun and Thomas R. Gross", title = "Static conflict analysis for multi-threaded object-oriented programs", journal = j-SIGPLAN, volume = "38", number = "5", pages = "115--128", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Aiken:2003:CIL, author = "Alex Aiken and Jeffrey S. Foster and John Kodumal and Tachio Terauchi", title = "Checking and inferring local non-aliasing", journal = j-SIGPLAN, volume = "38", number = "5", pages = "129--140", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Liblit:2003:BIR, author = "Ben Liblit and Alex Aiken and Alice X. Zheng and Michael I. Jordan", title = "Bug isolation via remote program sampling", journal = j-SIGPLAN, volume = "38", number = "5", pages = "141--154", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Dor:2003:CTR, author = "Nurit Dor and Michael Rodeh and Mooly Sagiv", title = "{CSSV}: towards a realistic tool for statically detecting all buffer overflows in {C}", journal = j-SIGPLAN, volume = "38", number = "5", pages = "155--167", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Heine:2003:PFS, author = "David L. Heine and Monica S. Lam", title = "A practical flow-sensitive and context-sensitive {C} and {C++} memory leak detector", journal = j-SIGPLAN, volume = "38", number = "5", pages = "168--181", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ammons:2003:DTS, author = "Glenn Ammons and David Mandelin and Rastislav Bod{\'\i}k and James R. Larus", title = "Debugging temporal specifications with concept analysis", journal = j-SIGPLAN, volume = "38", number = "5", pages = "182--195", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Blanchet:2003:SAL, author = "Bruno Blanchet and Patrick Cousot and Radhia Cousot and J{\'e}rome Feret and Laurent Mauborgne and Antoine Min{\'e} and David Monniaux and Xavier Rival", title = "A static analyzer for large safety-critical software", journal = j-SIGPLAN, volume = "38", number = "5", pages = "196--207", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chen:2003:PST, author = "Juan Chen and Dinghao Wu and Andrew W. Appel and Hai Fang", title = "A provably sound {TAL} for back-end optimization", journal = j-SIGPLAN, volume = "38", number = "5", pages = "208--219", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lerner:2003:APC, author = "Sorin Lerner and Todd Millstein and Craig Chambers", title = "Automatically proving the correctness of compiler optimizations", journal = j-SIGPLAN, volume = "38", number = "5", pages = "220--231", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Condit:2003:CRW, author = "Jeremy Condit and Matthew Harren and Scott McPeak and George C. Necula and Westley Weimer", title = "{CCured} in the real world", journal = j-SIGPLAN, volume = "38", number = "5", pages = "232--244", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ding:2003:PWP, author = "Chen Ding and Yutao Zhong", title = "Predicting whole-program locality through reuse distance analysis", journal = j-SIGPLAN, volume = "38", number = "5", pages = "245--257", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Joisha:2003:SAS, author = "Pramod G. Joisha and Prithviraj Banerjee", title = "Static array storage optimization in {MATLAB}", journal = j-SIGPLAN, volume = "38", number = "5", pages = "258--268", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Inagaki:2003:SPD, author = "Tatsushi Inagaki and Tamiya Onodera and Hideaki Komatsu and Toshio Nakatani", title = "Stride prefetching by dynamically inspecting objects", journal = j-SIGPLAN, volume = "38", number = "5", pages = "269--277", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ertl:2003:OIB, author = "M. Anton Ertl and David Gregg", title = "Optimizing indirect branch prediction accuracy in virtual machine interpreters", journal = j-SIGPLAN, volume = "38", number = "5", pages = "278--288", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lin:2003:CFS, author = "Jin Lin and Tong Chen and Wei-Chung Hsu and Pen-Chung Yew and Roy Dz-Ching Ju and Tin-Fook Ngai and Sun Chan", title = "A compiler framework for speculative analysis and optimizations", journal = j-SIGPLAN, volume = "38", number = "5", pages = "289--299", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chu:2003:RBH, author = "Michael Chu and Kevin Fan and Scott Mahlke", title = "Region-based hierarchical operation partitioning for multicluster processors", journal = j-SIGPLAN, volume = "38", number = "5", pages = "300--311", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Suganuma:2003:RBC, author = "Toshio Suganuma and Toshiaki Yasue and Toshio Nakatani", title = "A region-based compilation technique for a {Java} just-in-time compiler", journal = j-SIGPLAN, volume = "38", number = "5", pages = "312--323", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Boyapati:2003:OTS, author = "Chandrasekhar Boyapati and Alexandru Salcianu and William {Beebee, Jr.} and Martin Rinard", title = "Ownership types for safe region-based memory management in real-time {Java}", journal = j-SIGPLAN, volume = "38", number = "5", pages = "324--337", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Flanagan:2003:TES, author = "Cormac Flanagan and Shaz Qadeer", title = "A type and effect system for atomicity", journal = j-SIGPLAN, volume = "38", number = "5", pages = "338--349", month = may, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:00 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Christopher:2003:SPS, author = "Thomas W. Christopher", title = "A simple parallel system", journal = j-SIGPLAN, volume = "38", number = "6", pages = "6--8", month = jun, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bergin:2003:SDC, author = "Joe Bergin and Achla Agarwal and Krishna Agarwal", title = "Some deficiencies of {C++} in teaching {CS1} and {CS2}", journal = j-SIGPLAN, volume = "38", number = "6", pages = "9--13", month = jun, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ryder:2003:IDE, author = "Barbara G. Ryder and Mary Lou Soffa", title = "Influences on the design of exception handling: {ACM SIGSOFT} project on the impact of software engineering research on programming language design", journal = j-SIGPLAN, volume = "38", number = "6", pages = "16--22", month = jun, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Das:2003:FIVb, author = "Dibyendu Das", title = "Function inlining versus function cloning", journal = j-SIGPLAN, volume = "38", number = "6", pages = "23--29", month = jun, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{ChunYan:2003:TEL, author = "Yu ChunYan and Wu Minghui and Liu Nairuo and Zhuang Yueting and Pan Yunhe", title = "Translating {EXPRESS} language model into {C} language model", journal = j-SIGPLAN, volume = "38", number = "6", pages = "30--39", month = jun, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ortin:2003:RNA, author = "Francisco Ortin and Juan Manuel Cueva and Ana Belen Martinez", title = "The {reflective nitrO} abstract machine", journal = j-SIGPLAN, volume = "38", number = "6", pages = "40--49", month = jun, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sunik:2003:POC, author = "Boris Sunik", title = "The paradigm of open {C++}", journal = j-SIGPLAN, volume = "38", number = "6", pages = "50--59", month = jun, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhang:2003:AGD, author = "Qing-Li Zhang and Ming-Yuan Zhu and Shuo-Ying Chen", title = "Automatic generation of device drivers", journal = j-SIGPLAN, volume = "38", number = "6", pages = "60--69", month = jun, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:02 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhao:2003:PIO, author = "Min Zhao and Bruce Childers and Mary Lou Soffa", title = "Predicting the impact of optimizations for embedded systems", journal = j-SIGPLAN, volume = "38", number = "7", pages = "1--11", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kulkarni:2003:FEO, author = "Prasad Kulkarni and Wankang Zhao and Hwashin Moon and Kyunghwan Cho and David Whalley and Jack Davidson and Mark Bailey and Yunheung Paek and Kyle Gallivan", title = "Finding effective optimization phase sequences", journal = j-SIGPLAN, volume = "38", number = "7", pages = "12--23", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Vanbroekhoven:2003:ACP, author = "Peter Vanbroekhoven and Gerda Janssens and Maurice Bruynooghe and Henk Corporaal and Francky Catthoor", title = "Advanced copy propagation for arrays", journal = j-SIGPLAN, volume = "38", number = "7", pages = "24--33", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Shaylor:2003:JVM, author = "Nik Shaylor and Douglas N. Simon and William R. Bush", title = "A {Java Virtual Machine} architecture for very small devices", journal = j-SIGPLAN, volume = "38", number = "7", pages = "34--41", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Schultz:2003:CJL, author = "Ulrik Pagh Schultz and Kim Burgaard and Flemming Gram Christensen and J{\o}rgen Lindskov Knudsen", title = "Compiling {Java} for low-end embedded systems", journal = j-SIGPLAN, volume = "38", number = "7", pages = "42--50", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Corsaro:2003:EMR, author = "Angelo Corsaro and Ron K. Cytron", title = "Efficient memory-reference checks for real-time {Java}", journal = j-SIGPLAN, volume = "38", number = "7", pages = "51--58", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ananian:2003:DSO, author = "C. Scott Ananian and Martin Rinard", title = "Data size optimizations for {Java} programs", journal = j-SIGPLAN, volume = "38", number = "7", pages = "59--68", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Dhurjati:2003:MSR, author = "Dinakar Dhurjati and Sumant Kowshik and Vikram Adve and Chris Lattner", title = "Memory safety without runtime checks or garbage collection", journal = j-SIGPLAN, volume = "38", number = "7", pages = "69--80", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bacon:2003:CFS, author = "David F. Bacon and Perry Cheng and V. T. Rajan", title = "Controlling fragmentation and space consumption in the metronome, a real-time garbage collector for {Java}", journal = j-SIGPLAN, volume = "38", number = "7", pages = "81--92", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Robertz:2003:TTG, author = "Sven Gestegard Robertz and Roger Henriksson", title = "Time-triggered garbage collection: robust and adaptive real-time {GC} scheduling for embedded systems", journal = j-SIGPLAN, volume = "38", number = "7", pages = "93--102", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Karczmarek:2003:PSS, author = "Michal Karczmarek and William Thies and Saman Amarasinghe", title = "Phased scheduling of stream programs", journal = j-SIGPLAN, volume = "38", number = "7", pages = "103--112", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Pop:2003:SDF, author = "Paul Pop and Petru Eles and Zebo Peng", title = "Schedulability-driven frame packing for multi-cluster distributed embedded systems", journal = j-SIGPLAN, volume = "38", number = "7", pages = "113--122", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ait-Ameur:2003:RAA, author = "Y. Ait-Ameur and G. Bel and F. Boniol and S. Pairault and V. Wiels", title = "Robustness analysis of avionics embedded systems", journal = j-SIGPLAN, volume = "38", number = "7", pages = "123--132", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{deNiz:2003:TWS, author = "Dionisio de Niz and Raj Rajkumar", title = "{Time weaver}: a software-through-models framework for embedded real-time systems", journal = j-SIGPLAN, volume = "38", number = "7", pages = "133--143", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Pratap:2003:TLA, author = "Ravi Pratap M. and Ron K. Cytron and David Sharp and Edward Pla", title = "Transport layer abstraction in event channels for embedded systems", journal = j-SIGPLAN, volume = "38", number = "7", pages = "144--152", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Caspi:2003:SSL, author = "Paul Caspi and Adrian Curic and Aude Maignan and Christos Sofronis and Stavros Tripakis and Peter Niebert", title = "From {Simulink} to {SCADE\slash lustre} to {TTA}: a layered approach for distributed embedded applications", journal = j-SIGPLAN, volume = "38", number = "7", pages = "153--162", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wasowski:2003:EPS, author = "Andrzej Wasowski", title = "On efficient program synthesis from statecharts", journal = j-SIGPLAN, volume = "38", number = "7", pages = "163--170", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Alur:2003:GES, author = "Rajeev Alur and Franjo Ivancic and Jesung Kim and Insup Lee and Oleg Sokolsky", title = "Generating embedded software from hierarchical hybrid models", journal = j-SIGPLAN, volume = "38", number = "7", pages = "171--182", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lee:2003:AML, author = "Jong-eun Lee and Kiyoung Choi and Nikil D. Dutt", title = "An algorithm for mapping loops onto coarse-grained reconfigurable architectures", journal = j-SIGPLAN, volume = "38", number = "7", pages = "183--188", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Suresh:2003:PTH, author = "Dinesh C. Suresh and Walid A. Najjar and Frank Vahid and Jason R. Villarreal and Greg Stitt", title = "Profiling tools for hardware\slash software partitioning of embedded applications", journal = j-SIGPLAN, volume = "38", number = "7", pages = "189--198", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Guo:2003:GCA, author = "Yuanqing Guo and Gerard J. M. Smit and Hajo Broersma and Paul M. Heysters", title = "A graph covering algorithm for a coarse grain reconfigurable system", journal = j-SIGPLAN, volume = "38", number = "7", pages = "199--208", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhang:2003:TRW, author = "Tao Zhang and Santosh Pande and Antonio Valverde", title = "Tamper-resistant whole program partitioning", journal = j-SIGPLAN, volume = "38", number = "7", pages = "209--219", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhuang:2003:SAO, author = "Xiaotong Zhuang and ChokSheak Lau and Santosh Pande", title = "Storage assignment optimizations through variable coalescence for embedded processors", journal = j-SIGPLAN, volume = "38", number = "7", pages = "220--231", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Corliss:2003:DID, author = "Marc L. Corliss and E. Christopher Lewis and Amir Roth", title = "A {DISE} implementation of dynamic code decompression", journal = j-SIGPLAN, volume = "38", number = "7", pages = "232--243", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{DeSutter:2003:SEC, author = "Bjorn {De Sutter} and Hans Vandierendonck and Bruno {De Bus} and Koen {De Bosschere}", title = "On the side-effects of code abstraction", journal = j-SIGPLAN, volume = "38", number = "7", pages = "244--253", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Krishnaswamy:2003:EPB, author = "Arvind Krishnaswamy", title = "Enhancing the performance of 16-bit code using augmenting instructions", journal = j-SIGPLAN, volume = "38", number = "7", pages = "254--264", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Yu:2003:EBT, author = "Yang Yu and Viktor K. Prasanna", title = "Energy-balanced task allocation for collaborative processing in networked embedded systems", journal = j-SIGPLAN, volume = "38", number = "7", pages = "265--274", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kim:2003:AIL, author = "H. S. Kim and N. Vijaykrishnan and M. Kandemir and M. J. Irwin", title = "Adapting instruction level parallelism for optimizing leakage in {VLIW} architectures", journal = j-SIGPLAN, volume = "38", number = "7", pages = "275--283", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{AbouGhazaleh:2003:EMR, author = "Nevine AbouGhazaleh and Bruce Childers and Daniel Mosse and Rami Melhem and Matthew Craven", title = "Energy management for real-time embedded applications with compiler support", journal = j-SIGPLAN, volume = "38", number = "7", pages = "284--293", month = jul, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:03 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Christopher:2003:DSP, author = "Thomas W. Christopher", title = "Details on a simple parallel system", journal = j-SIGPLAN, volume = "38", number = "8", pages = "12--14", month = aug, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2003:JF, author = "Paul Frenger", title = "The {JOY} of {Forth}", journal = j-SIGPLAN, volume = "38", number = "8", pages = "15--17", month = aug, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Pronk:2003:FDP, author = "C. Pronk and M. Sch{\"o}nhacker", title = "Formal definition of programming language standards", journal = j-SIGPLAN, volume = "38", number = "8", pages = "20--21", month = aug, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Xu:2003:MEJ, author = "Baomin Xu and Weimin Lian and Qiang Gao", title = "Migration of enterprise {JavaBeans} with {ProActive Interposition Objects}", journal = j-SIGPLAN, volume = "38", number = "8", pages = "22--28", month = aug, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Costanza:2003:DSF, author = "Pascal Costanza", title = "Dynamically scoped functions as the essence of {AOP}", journal = j-SIGPLAN, volume = "38", number = "8", pages = "29--36", month = aug, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Iliasov:2003:TBP, author = "Alex Iliasov", title = "Templates-based portable just-in-time compiler", journal = j-SIGPLAN, volume = "38", number = "8", pages = "37--43", month = aug, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hericko:2003:OSA, author = "Marjan Hericko and Matjaz B. Juric and Ivan Rozman and Simon Beloglavec and Ales Zivkovic", title = "Object serialization analysis and comparison in {Java} and {.NET}", journal = j-SIGPLAN, volume = "38", number = "8", pages = "44--54", month = aug, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Stephens:2003:XCI, author = "Kurt Stephens", title = "{XVF}: {C++} introspection by extensible visitation", journal = j-SIGPLAN, volume = "38", number = "8", pages = "55--59", month = aug, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kumar:2003:VRO, author = "K. V. Seshu Kumar", title = "Value reuse optimization: reuse of evaluated math library function calls through compiler generated cache", journal = j-SIGPLAN, volume = "38", number = "8", pages = "60--66", month = aug, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:05 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Knight:2003:CIA, author = "Thomas {Knight, Jr.}", title = "Conservation of information: applications in functional, reversible, and quantum computing", journal = j-SIGPLAN, volume = "38", number = "9", pages = "1--1", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Heeren:2003:STI, author = "Bastiaan Heeren and Jurriaan Hage and S. Doaitse Swierstra", title = "Scripting the type inference process", journal = j-SIGPLAN, volume = "38", number = "9", pages = "3--13", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Neubauer:2003:DST, author = "Matthias Neubauer and Peter Thiemann", title = "Discriminative sum types locate the source of type errors", journal = j-SIGPLAN, volume = "38", number = "9", pages = "15--26", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{LeBotlan:2003:MRM, author = "Didier {Le Botlan} and Didier R{\'e}my", title = "{ML}$^{F}$: raising {ML} to the power of system {F}", journal = j-SIGPLAN, volume = "38", number = "9", pages = "27--38", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Simonet:2003:EHX, author = "Vincent Simonet", title = "An extension of {HM(X)} with bounded existential and universal data-types", journal = j-SIGPLAN, volume = "38", number = "9", pages = "39--50", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Benzaken:2003:CXC, author = "V{\'e}ronique Benzaken and Giuseppe Castagna and Alain Frisch", title = "{CDuce}: an {XML}-centric general-purpose language", journal = j-SIGPLAN, volume = "38", number = "9", pages = "51--63", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Levin:2003:CRP, author = "Michael Y. Levin", title = "Compiling regular patterns", journal = j-SIGPLAN, volume = "38", number = "9", pages = "65--77", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Page:2003:SDM, author = "Rex L. Page", title = "Software is discrete mathematics", journal = j-SIGPLAN, volume = "38", number = "9", pages = "79--86", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Leifer:2003:GAS, author = "James J. Leifer and Gilles Peskine and Peter Sewell and Keith Wansbrough", title = "Global abstraction-safe marshalling with hash types", journal = j-SIGPLAN, volume = "38", number = "9", pages = "87--98", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bierman:2003:DRM, author = "Gavin Bierman and Michael Hicks and Peter Sewell and Gareth Stoyle and Keith Wansbrough", title = "Dynamic Rebinding for Marshalling and Update, with Destruct-time $\lambda$", journal = j-SIGPLAN, volume = "38", number = "9", pages = "99--110", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ogawa:2003:IFP, author = "Mizuhito Ogawa and Zhenjiang Hu and Isao Sasano", title = "Iterative-free program analysis", journal = j-SIGPLAN, volume = "38", number = "9", pages = "111--123", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Mairson:2003:HSD, author = "Harry G. Mairson", title = "From {Hilbert} space to {Dilbert} space: context semantics as a language for games and flow analysis", journal = j-SIGPLAN, volume = "38", number = "9", pages = "125--125", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Walker:2003:TA, author = "David Walker and Steve Zdancewic and Jay Ligatti", title = "A theory of aspects", journal = j-SIGPLAN, volume = "38", number = "9", pages = "127--139", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Loh:2003:DSG, author = "Andres L{\"o}h and Dave Clarke and Johan Jeuring", title = "Dependency-style generic {Haskell}", journal = j-SIGPLAN, volume = "38", number = "9", pages = "141--152", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Nilsson:2003:FAD, author = "Henrik Nilsson", title = "Functional automatic differentiation with {Dirac} impulses", journal = j-SIGPLAN, volume = "38", number = "9", pages = "153--164", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Jones:2003:UCA, author = "Simon Peyton Jones and Alan Blackwell and Margaret Burnett", title = "A user-centred approach to functions in {Excel}", journal = j-SIGPLAN, volume = "38", number = "9", pages = "165--176", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kameyama:2003:SCA, author = "Yukiyoshi Kameyama and Masahito Hasegawa", title = "A sound and complete axiomatization of delimited continuations", journal = j-SIGPLAN, volume = "38", number = "9", pages = "177--188", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wadler:2003:CVD, author = "Philip Wadler", title = "Call-by-value is dual to call-by-name", journal = j-SIGPLAN, volume = "38", number = "9", pages = "189--201", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Beffara:2003:DNF, author = "Emmanuel Beffara and Vincent Danos", title = "Disjunctive normal forms and local exceptions", journal = j-SIGPLAN, volume = "38", number = "9", pages = "203--211", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Mandelbaum:2003:ETT, author = "Yitzhak Mandelbaum and David Walker and Robert Harper", title = "An effective theory of type refinements", journal = j-SIGPLAN, volume = "38", number = "9", pages = "213--225", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Higuchi:2003:STS, author = "Tomoyuki Higuchi and Atsushi Ohori", title = "A static type system for {JVM} access control", journal = j-SIGPLAN, volume = "38", number = "9", pages = "227--237", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hughes:2003:PPS, author = "R. John M. Hughes and S. Doaitse Swierstra", title = "{Polish} parsers, step by step", journal = j-SIGPLAN, volume = "38", number = "9", pages = "239--248", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Washburn:2003:BGB, author = "Geoffrey Washburn and Stephanie Weirich", title = "Boxes go bananas: encoding higher-order abstract syntax with parametric polymorphism", journal = j-SIGPLAN, volume = "38", number = "9", pages = "249--262", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Shinwell:2003:FPB, author = "Mark R. Shinwell and Andrew M. Pitts and Murdoch J. Gabbay", title = "{FreshML}: programming with binders made simple", journal = j-SIGPLAN, volume = "38", number = "9", pages = "263--274", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chen:2003:MPT, author = "Chiyan Chen and Hongwei Xi", title = "Meta-programming through typeful code representation", journal = j-SIGPLAN, volume = "38", number = "9", pages = "275--286", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ennals:2003:OEA, author = "Robert Ennals and Simon Peyton Jones", title = "Optimistic evaluation: an adaptive evaluation strategy for non-strict programs", journal = j-SIGPLAN, volume = "38", number = "9", pages = "287--298", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wand:2003:UAE, author = "Mitchell Wand", title = "Understanding aspects: extended abstract", journal = j-SIGPLAN, volume = "38", number = "9", pages = "299--300", month = sep, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Oct 11 12:45:06 MDT 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } %%% There is serious confusion in the ACM Portal Database: publications %%% from the Proceedings of the ninth ACM SIGPLAN symposium on %%% Principles and practice of parallel programming 2003, San Diego, %%% California, USA June 11--13, 2003 (PPoPP'2003) are claimed to appear %%% in October 2003 SIGPLAN Notices Volume 38 Issue 10, yet entirely %%% different contents are shown for that volume. Until the confusion %%% is resolved, we have labeled the PPoPP'2003 issue number as 10b. @Article{Kazar:2003:HPS, author = "Baris Kazar", title = "High performance spatial data mining for very large data-sets (citation only)", journal = j-SIGPLAN, volume = "38", number = "10", pages = "1--1", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", xxnumber = "10b", } @Article{Puppin:2003:ACS, author = "Diego Puppin", title = "Adapting convergent scheduling using machine learning (citation only)", journal = j-SIGPLAN, volume = "38", number = "10", pages = "1--1", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", xxnumber = "10b", } @Article{Prabhu:2003:UTL, author = "Manohar K. Prabhu and Kunle Olukotun", title = "Using thread-level speculation to simplify manual parallelization", journal = j-SIGPLAN, volume = "38", number = "10", pages = "1--12", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Coarfa:2003:ECA, author = "Cristian Coarfa and Yuri Dotsenko", title = "An emerging co-array {Fortran} compiler (citation only)", journal = j-SIGPLAN, volume = "38", number = "10", pages = "2--2", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", xxnumber = "10b", } @Article{Squyres:2003:CAL, author = "Jeffrey M. Squyres", title = "A component architecture for {LAM\slash MPI} (citation only)", journal = j-SIGPLAN, volume = "38", number = "10", pages = "2--2", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", xxnumber = "10b", } @Article{Lee:2003:PPA, author = "Jaejin Lee", title = "The {Pensieve Project}: automatic implementation of programming language consistency models (citation only)", journal = j-SIGPLAN, volume = "38", number = "10", pages = "3--3", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", xxnumber = "10b", } @Article{Nienaltowski:2003:SIC, author = "Piotr Nienaltowski", title = "{SCOOP It} up! (citation only)", journal = j-SIGPLAN, volume = "38", number = "10", pages = "3--3", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", xxnumber = "10b", } @Article{Cintra:2003:TER, author = "Marcelo Cintra and Diego R. Llanos", title = "Toward efficient and robust software speculative parallelization on multiprocessors", journal = j-SIGPLAN, volume = "38", number = "10", pages = "13--24", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chen:2003:CSS, author = "Peng-Sheng Chen and Ming-Yu Hung and Yuan-Shin Hwang and Roy Dz-Ching Ju and Jenq Kuen Lee", title = "Compiler support for speculative multithreading architecture with probabilistic points-to analysis", journal = j-SIGPLAN, volume = "38", number = "10", pages = "25--36", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{McDowell:2003:ISS, author = "Luke K. McDowell and Susan J. Eggers and Steven D. Gribble", title = "Improving server software support for simultaneous multithreaded processors", journal = j-SIGPLAN, volume = "38", number = "10", pages = "37--48", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fraguela:2003:PFP, author = "Basilio B. Fraguela and Jose Renau and Paul Feautrier and David Padua and Josep Torrellas", title = "Programming the {FlexRAM} parallel intelligent memory system", journal = j-SIGPLAN, volume = "38", number = "10", pages = "49--60", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kim:2003:ETL, author = "Hyong-youb Kim and Vijay S. Pai and Scott Rixner", title = "Exploiting task-level concurrency in a programmable network interface", journal = j-SIGPLAN, volume = "38", number = "10", pages = "61--72", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{McCurdy:2003:UCC, author = "Collin McCurdy and Charles Fischer", title = "User-controllable coherence for high performance shared memory multiprocessors", journal = j-SIGPLAN, volume = "38", number = "10", pages = "73--82", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bronevetsky:2003:AAL, author = "Greg Bronevetsky and Daniel Marques and Keshav Pingali and Paul Stodghill", title = "Automated application-level checkpointing of {MPI} programs", journal = j-SIGPLAN, volume = "38", number = "10", pages = "84--94", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Karwande:2003:CMC, author = "Amit Karwande and Xin Yuan and David K. Lowenthal", title = "{CC--MPI}: a compiled communication capable {MPI} prototype for {Ethernet} switched clusters", journal = j-SIGPLAN, volume = "38", number = "10", pages = "95--106", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Liu:2003:IMS, author = "Ting Liu and Margaret Martonosi", title = "{Impala}: a middleware system for managing autonomic, parallel sensor systems", journal = j-SIGPLAN, volume = "38", number = "10", pages = "107--118", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chu:2003:ODA, author = "Lingkun Chu and Hong Tang and Tao Yang and Kai Shen", title = "Optimizing data aggregation for cluster-based {Internet} services", journal = j-SIGPLAN, volume = "38", number = "10", pages = "119--130", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chen:2003:EHL, author = "DeQing Chen and Chunqiang Tang and Brandon Sanders and Sandhya Dwarkadas and Michael L. Scott", title = "Exploiting high-level coherence information to optimize distributed shared state", journal = j-SIGPLAN, volume = "38", number = "10", pages = "131--142", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frens:2003:FMO, author = "Jeremy D. Frens and David S. Wise", title = "Factorization with {Morton}-ordered quadtree matrices for memory re-use and parallelism", journal = j-SIGPLAN, volume = "38", number = "10", pages = "144--154", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Dec 22 16:52:42 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frens:2003:QFM, author = "Jeremy D. Frens and David S. Wise", title = "{QR} factorization with {Morton}-ordered quadtree matrices for memory re-use and parallelism", journal = j-SIGPLAN, volume = "38", number = "10", pages = "144--154", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Deitz:2003:DIP, author = "Steven J. Deitz and Bradford L. Chamberlain and Sung-Eun Choi and Lawrence Snyder", title = "The design and implementation of a parallel array operator for the arbitrary remapping of data", journal = j-SIGPLAN, volume = "38", number = "10", pages = "155--166", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{OCallahan:2003:HDD, author = "Robert O'Callahan and Jong-Deok Choi", title = "Hybrid dynamic data race detection", journal = j-SIGPLAN, volume = "38", number = "10", pages = "167--178", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Pozniansky:2003:EFD, author = "Eli Pozniansky and Assaf Schuster", title = "Efficient on-the-fly data race detection in multithreaded {C++} programs", journal = j-SIGPLAN, volume = "38", number = "10", pages = "179--190", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Goel:2003:CRP, author = "Ankit Goel and Abhik Roychoudhury and Tulika Mitra", title = "Compactly representing parallel program executions", journal = j-SIGPLAN, volume = "38", number = "10", pages = "191--202", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Tan:2003:UGD, author = "Kai Tan and Duane Szafron and Jonathan Schaeffer and John Anvik and Steve MacDonald", title = "Using generative design patterns to generate parallel code for a distributed memory environment", journal = j-SIGPLAN, volume = "38", number = "10", pages = "203--215", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Taura:2003:PPP, author = "Kenjiro Taura and Kenji Kaneda and Toshio Endo and Akinori Yonezawa", title = "{Phoenix}: a parallel programming model for accommodating dynamically joining\slash leaving resources", journal = j-SIGPLAN, volume = "38", number = "10", pages = "216--229", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Saunders:2003:AAP, author = "Steven Saunders and Lawrence Rauchwerger", title = "{ARMI}: an adaptive, platform independent communication library", journal = j-SIGPLAN, volume = "38", number = "10", pages = "230--240", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Sep 1 07:31:09 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hatcliff:2003:SPE, author = "John Hatcliff and William Deng and Matthew B. Dwyer and Georg Jung and Venkatesh Ranganath and Robby", title = "Slicing and partial evaluation of {CORBA} component model designs for avionics system", journal = j-SIGPLAN, volume = "38", number = "10", pages = "241--242", month = oct, year = "2003", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/966049.777389", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Dec 22 16:55:47 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ager:2003:FPE, author = "Mads Sig Ager and Olivier Danvy and Henning Korsholm Rohde", title = "Fast partial evaluation of pattern matching in strings", journal = j-SIGPLAN, volume = "38", number = "10", pages = "243--249", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Dec 22 16:55:47 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gluck:2003:TII, author = "Robert Gl{\"u}ck and Youhei Kawada and Takuya Hashimoto", title = "Transforming interpreters into inverse interpreters by partial evaluation", journal = j-SIGPLAN, volume = "38", number = "10", pages = "250--259", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Dec 22 16:55:47 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chen:2003:ITP, author = "Chiyan Chen and Hongwei Xi", title = "Implementing typeful program transformations", journal = j-SIGPLAN, volume = "38", number = "10", pages = "260--268", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Dec 22 16:55:47 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Puebla:2003:ASA, author = "Germ{\'a}n Puebla and Manuel Hermenegildo", title = "Abstract specialization and its applications", journal = j-SIGPLAN, volume = "38", number = "10", pages = "269--283", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Dec 22 16:55:47 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Allen:2003:SJP, author = "Matthew Allen and Susan Horwitz", title = "Slicing {Java} programs that throw and catch exceptions", journal = j-SIGPLAN, volume = "38", number = "10", pages = "284--294", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Dec 22 16:55:47 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bozga:2003:SSA, author = "Marius Bozga and Radu Iosif and Yassine Laknech", title = "Storeless semantics and alias logic", journal = j-SIGPLAN, volume = "38", number = "10", pages = "295--305", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Dec 22 16:55:47 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Attardi:2003:CCF, author = "Giuseppe Attardi and Antonio Cisternino and Andrew Kennedy", title = "{CodeBricks}: code fragments as building blocks", journal = j-SIGPLAN, volume = "38", number = "10", pages = "306--314", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Dec 22 16:55:47 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chin:2003:EST, author = "Wei-Ngan Chin and Siau-Cheng Khoo and Dana N. Xu", title = "Extending sized type with collection analysis", journal = j-SIGPLAN, volume = "38", number = "10", pages = "315--324", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Dec 22 16:55:47 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Liu:2003:OAF, author = "Yanhong A. Liu and Scott D. Stoller", title = "Optimizing {Ackermann}'s function by incrementalization", journal = j-SIGPLAN, volume = "38", number = "10", pages = "325--331", month = oct, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Dec 22 16:55:47 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lafferty:2003:LIA, author = "Donal Lafferty and Vinny Cahill", title = "Language-independent aspect-oriented programming", journal = j-SIGPLAN, volume = "38", number = "11", pages = "1--12", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Tip:2003:RGU, author = "Frank Tip and Adam Kiezun and Dirk B{\"a}umer", title = "Refactoring for generalization using type constraints", journal = j-SIGPLAN, volume = "38", number = "11", pages = "13--26", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Tanter:2003:PBR, author = "{\'E}ric Tanter and Jacques Noy{\'e} and Denis Caromel and Pierre Cointe", title = "Partial behavioral reflection: spatial and temporal selection of reification", journal = j-SIGPLAN, volume = "38", number = "11", pages = "27--46", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Black:2003:ATS, author = "Andrew P. Black and Nathanael Sch{\"a}rli and St{\'e}phane Ducasse", title = "Applying traits to the {Smalltalk} collection classes", journal = j-SIGPLAN, volume = "38", number = "11", pages = "47--64", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Mougin:2003:OIA, author = "Philippe Mougin and St{\'e}phane Ducasse", title = "{OOPAL}: integrating array programming in object-oriented programming", journal = j-SIGPLAN, volume = "38", number = "11", pages = "65--77", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Demsky:2003:ADR, author = "Brian Demsky and Martin Rinard", title = "Automatic detection and repair of errors in data structures", journal = j-SIGPLAN, volume = "38", number = "11", pages = "78--95", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Allen:2003:FCA, author = "Eric Allen and Jonathan Bannet and Robert Cartwright", title = "A first-class approach to genericity", journal = j-SIGPLAN, volume = "38", number = "11", pages = "96--114", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Garcia:2003:CSL, author = "Ronald Garcia and Jaakko Jarvi and Andrew Lumsdaine and Jeremy Siek and Jeremiah Willcock", title = "A comparative study of language support for generic programming", journal = j-SIGPLAN, volume = "38", number = "11", pages = "115--134", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhao:2003:LCF, author = "Tian Zhao and Jens Palsber and Jan Vite", title = "Lightweight confinement for featherweight {Java}", journal = j-SIGPLAN, volume = "38", number = "11", pages = "135--148", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Dufour:2003:DMJ, author = "Bruno Dufour and Karel Driesen and Laurie Hendren and Clark Verbrugge", title = "Dynamic metrics for {Java}", journal = j-SIGPLAN, volume = "38", number = "11", pages = "149--168", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Eeckhout:2003:HJP, author = "Lieven Eeckhout and Andy Georges and Koen {De Bosschere}", title = "How {Java} programs interact with virtual machines at the microarchitectural level", journal = j-SIGPLAN, volume = "38", number = "11", pages = "169--186", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ishizaki:2003:ECP, author = "Kazuaki Ishizaki and Mikio Takeuchi and Kiyokuni Kawachiya and Toshio Suganuma and Osamu Gohda and Tatsushi Inagaki and Akira Koseki and Kazunori Ogata and Motohiro Kawahito and Toshiaki Yasue and Takeshi Ogasawara and Tamiya Onodera and Hideaki Komatsu and Toshio Nakatani", title = "Effectiveness of cross-platform optimizations for a {Java} just-in-time compiler", journal = j-SIGPLAN, volume = "38", number = "11", pages = "187--204", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lee:2003:HOO, author = "Keunwoo Lee and Anthony LaMarca and Craig Chambers", title = "{HydroJ}: object-oriented pattern matching for evolvable distributed systems", journal = j-SIGPLAN, volume = "38", number = "11", pages = "205--223", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Millstein:2003:RMB, author = "Todd Millstein and Mark Reay and Craig Chambers", title = "Relaxed {MultiJava}: balancing extensibility and modular typechecking", journal = j-SIGPLAN, volume = "38", number = "11", pages = "224--240", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Corwin:2003:MRM, author = "John Corwin and David F. Bacon and David Grove and Chet Murthy", title = "{MJ}: a rational module system for {Java} and its applications", journal = j-SIGPLAN, volume = "38", number = "11", pages = "241--254", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Barabash:2003:MCG, author = "Katherine Barabash and Yoav Ossia and Erez Petrank", title = "Mostly concurrent garbage collection revisited", journal = j-SIGPLAN, volume = "38", number = "11", pages = "255--268", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Azatchi:2003:FMS, author = "Hezi Azatchi and Yossi Levanoni and Harel Paz and Erez Petrank", title = "An on-the-fly mark and sweep garbage collector based on sliding views", journal = j-SIGPLAN, volume = "38", number = "11", pages = "269--281", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chen:2003:HCM, author = "G. Chen and M. Kandemir and N. Vijaykrishnan and M. J. Irwin and B. Mathiske and M. Wolczko", title = "Heap compression for memory-constrained {Java} environments", journal = j-SIGPLAN, volume = "38", number = "11", pages = "282--301", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fahndrich:2003:DCN, author = "Manuel F{\"a}hndrich and K. Rustan M. Leino", title = "Declaring and checking non-null types in an object-oriented language", journal = j-SIGPLAN, volume = "38", number = "11", pages = "302--312", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Marinov:2003:OEP, author = "Darko Marinov and Robert O'Callahan", title = "Object equality profiling", journal = j-SIGPLAN, volume = "38", number = "11", pages = "313--325", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sachindran:2003:MCF, author = "Narendran Sachindran and J. Eliot and B. Moss", title = "{Mark-copy}: fast copying {GC} with less space overhead", journal = j-SIGPLAN, volume = "38", number = "11", pages = "326--343", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Blackburn:2003:URC, author = "Stephen M. Blackburn and Kathryn S. McKinley", title = "Ulterior reference counting: fast garbage collection without a long wait", journal = j-SIGPLAN, volume = "38", number = "11", pages = "344--358", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hirzel:2003:CBG, author = "Martin Hirzel and Amer Diwan and Matthew Hertz", title = "Connectivity-based garbage collection", journal = j-SIGPLAN, volume = "38", number = "11", pages = "359--373", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Clarke:2003:SWB, author = "Dave Clarke and Michael Richmond and James Noble", title = "Saving the world from bad beans: deployment-time confinement checking", journal = j-SIGPLAN, volume = "38", number = "11", pages = "374--387", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Harris:2003:LSL, author = "Tim Harris and Keir Fraser", title = "Language support for lightweight transactions", journal = j-SIGPLAN, volume = "38", number = "11", pages = "388--402", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Boyapati:2003:LMU, author = "Chandrasekhar Boyapati and Barbara Liskov and Liuba Shrira and Chuang-Hue Moh and Steven Richman", title = "Lazy modular upgrades in persistent object stores", journal = j-SIGPLAN, volume = "38", number = "11", pages = "403--417", month = nov, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sun Dec 14 09:18:34 MST 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Burke:2003:ECO, author = "Michael G. Burke", title = "{Executive Committee October 2003} Meeting Report", journal = j-SIGPLAN, volume = "38", number = "12", pages = "1--1", month = dec, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Feb 2 14:16:14 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fenwick:2003:LE, author = "Jay Fenwick and Cindy Norris", title = "Letters from the {Editors}", journal = j-SIGPLAN, volume = "38", number = "12", pages = "2--2", month = dec, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Feb 2 14:16:14 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wadler:2003:RIP, author = "Philip Wadler and Krzysztof R. Apt and Matthias Felleisen", title = "Reminiscences on Influential Papers [Definitional interpreters for higher-order programming languages; Structured Programming; Call-by-name, Call-by-value, and the $\lambda$-calculus]", journal = j-SIGPLAN, volume = "38", number = "12", pages = "2--2", month = dec, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Feb 2 14:16:14 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Creak:2003:PLD, author = "Alan Creak", title = "Programming lessons from days gone by: extreme design", journal = j-SIGPLAN, volume = "38", number = "12", pages = "11--16", month = dec, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Feb 2 14:16:14 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fenwick:2003:IA, author = "Jay Fenwick and Cindy Norris", title = "Information for Authors", journal = j-SIGPLAN, volume = "38", number = "12", pages = "17--17", month = dec, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Feb 2 14:16:14 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Griffith:2003:LES, author = "Walter L. (Larry) Griffith", title = "Letter to the {Editor}: Some Deficiencies of {C++} in Teaching {CS1} and {CS2}", journal = j-SIGPLAN, volume = "38", number = "12", pages = "18--19", month = dec, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Feb 2 14:16:14 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Avvenuti:2003:JBV, author = "Marco Avvenuti and Cinzia Bernardeschi and Nicoletta De Francesco", title = "{Java} bytecode verification for secure information flow", journal = j-SIGPLAN, volume = "38", number = "12", pages = "20--27", month = dec, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Feb 2 14:16:14 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Aycock:2003:ACC, author = "John Aycock", title = "The {ART} of compiler construction projects", journal = j-SIGPLAN, volume = "38", number = "12", pages = "28--32", month = dec, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Feb 2 14:16:14 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lopes:2003:BAT, author = "Cristina Videira Lopes and Paul Dourish and David H. Lorenz and Karl Lieberherr", title = "Beyond {AOP}: toward naturalistic programming", journal = j-SIGPLAN, volume = "38", number = "12", pages = "34--43", month = dec, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Feb 2 14:16:14 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kamin:2003:RRT, author = "Sam Kamin", title = "Routine run-time code generation", journal = j-SIGPLAN, volume = "38", number = "12", pages = "44--56", month = dec, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Feb 2 14:16:14 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Rinard:2003:AOC, author = "Martin Rinard", title = "Acceptability-oriented computing", journal = j-SIGPLAN, volume = "38", number = "12", pages = "57--75", month = dec, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Feb 2 14:16:14 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Biddle:2003:NNJ, author = "Robert Biddle and Angela Martin and James Noble", title = "No name: just notes on software reuse", journal = j-SIGPLAN, volume = "38", number = "12", pages = "76--96", month = dec, year = "2003", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Feb 2 14:16:14 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Rival:2004:STF, author = "Xavier Rival", title = "Symbolic transfer function-based approaches to certified compilation", journal = j-SIGPLAN, volume = "39", number = "1", pages = "1--13", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Benton:2004:SRC, author = "Nick Benton", title = "Simple relational correctness proofs for static analyses and program transformations", journal = j-SIGPLAN, volume = "39", number = "1", pages = "14--25", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sittampalam:2004:IET, author = "Ganesh Sittampalam and Oege de Moor and Ken Friis Larsen", title = "Incremental execution of transformation specifications", journal = j-SIGPLAN, volume = "39", number = "1", pages = "26--38", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Yu:2004:FGN, author = "Dachuan Yu and Andrew Kennedy and Don Syme", title = "Formalization of generics for the {.NET} common language runtime", journal = j-SIGPLAN, volume = "39", number = "1", pages = "39--51", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Vouillon:2004:STF, author = "Jerome Vouillon and Paul-Andr{\'e} Melli{\`e}s", title = "Semantic types: a fresh look at the ideal model for types", journal = j-SIGPLAN, volume = "39", number = "1", pages = "52--63", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Balat:2004:ENT, author = "Vincent Balat and Roberto Di Cosmo and Marcelo Fiore", title = "Extensional normalisation and type-directed partial evaluation for typed lambda calculus with sums", journal = j-SIGPLAN, volume = "39", number = "1", pages = "64--76", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fiore:2004:IGR, author = "Marcelo Fiore", title = "Isomorphisms of generic recursive polynomial types", journal = j-SIGPLAN, volume = "39", number = "1", pages = "77--88", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Pottier:2004:PTD, author = "Fran{\c{c}}ois Pottier and Nadji Gauthier", title = "Polymorphic typed defunctionalization", journal = j-SIGPLAN, volume = "39", number = "1", pages = "89--98", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Johann:2004:FTP, author = "Patricia Johann and Janis Voigtl{\"a}nder", title = "Free theorems in the presence of {\em seq\/}", journal = j-SIGPLAN, volume = "39", number = "1", pages = "99--110", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ford:2004:PEG, author = "Bryan Ford", title = "Parsing expression grammars: a recognition-based syntactic foundation", journal = j-SIGPLAN, volume = "39", number = "1", pages = "111--122", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Caromel:2004:ADO, author = "Denis Caromel and Ludovic Henrio and Bernard Paul Serpette", title = "Asynchronous and deterministic objects", journal = j-SIGPLAN, volume = "39", number = "1", pages = "123--134", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zilio:2004:LYC, author = "Silvano Dal Zilio and Denis Lugiez and Charles Meyssonnier", title = "A logic you can count on", journal = j-SIGPLAN, volume = "39", number = "1", pages = "135--146", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Yoshida:2004:CDT, author = "Nobuko Yoshida", title = "Channel dependent types for higher-order mobile processes", journal = j-SIGPLAN, volume = "39", number = "1", pages = "147--160", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sumii:2004:BDS, author = "Eijiro Sumii and Benjamin C. Pierce", title = "A bisimulation for dynamic sealing", journal = j-SIGPLAN, volume = "39", number = "1", pages = "161--172", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cousot:2004:AIB, author = "Patrick Cousot and Radhia Cousot", title = "An abstract interpretation-based framework for software watermarking", journal = j-SIGPLAN, volume = "39", number = "1", pages = "173--185", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Giacobazzi:2004:ANI, author = "Roberto Giacobazzi and Isabella Mastroeni", title = "Abstract non-interference: parameterizing non-interference by abstract interpretation", journal = j-SIGPLAN, volume = "39", number = "1", pages = "186--197", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bhargavan:2004:SWS, author = "Karthikeyan Bhargavan and C{\'e}dric Fournet and Andrew D. Gordon", title = "A semantics for {Web} services authentication", journal = j-SIGPLAN, volume = "39", number = "1", pages = "198--209", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Boehm:2004:SCL, author = "Hans-J. Boehm", title = "The space cost of lazy reference counting", journal = j-SIGPLAN, volume = "39", number = "1", pages = "210--219", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Birkedal:2004:LRA, author = "Lars Birkedal and Noah Torp-Smith and John C. Reynolds", title = "Local reasoning about a copying garbage collector", journal = j-SIGPLAN, volume = "39", number = "1", pages = "220--231", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Henzinger:2004:AP, author = "Thomas A. Henzinger and Ranjit Jhala and Rupak Majumdar and Kenneth L. McMillan", title = "Abstractions from proofs", journal = j-SIGPLAN, volume = "39", number = "1", pages = "232--244", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Qadeer:2004:SPC, author = "Shaz Qadeer and Sriram K. Rajamani and Jakob Rehof", title = "Summarizing procedures in concurrent programs", journal = j-SIGPLAN, volume = "39", number = "1", pages = "245--255", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Flanagan:2004:ADA, author = "Cormac Flanagan and Stephen N. Freund", title = "{Atomizer}: a dynamic atomicity checker for multithreaded programs", journal = j-SIGPLAN, volume = "39", number = "1", pages = "256--267", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{OHearn:2004:SIH, author = "Peter W. O'Hearn and Hongseok Yang and John C. Reynolds", title = "Separation and information hiding", journal = j-SIGPLAN, volume = "39", number = "1", pages = "268--280", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Dunfield:2004:TT, author = "Joshua Dunfield and Frank Pfenning", title = "Tridirectional typechecking", journal = j-SIGPLAN, volume = "39", number = "1", pages = "281--292", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Dreyer:2004:TSW, author = "Derek Dreyer", title = "A type system for well-founded recursion", journal = j-SIGPLAN, volume = "39", number = "1", pages = "293--305", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ancona:2004:PTJ, author = "Davide Ancona and Elena Zucca", title = "Principal typings for {Java}-like languages", journal = j-SIGPLAN, volume = "39", number = "1", pages = "306--317", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sankaranarayanan:2004:NLL, author = "Sriram Sankaranarayanan and Henny B. Sipma and Zohar Manna", title = "Non-linear loop invariant generation using {Gr{\"o}bner} bases", journal = j-SIGPLAN, volume = "39", number = "1", pages = "318--329", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Muller-Olm:2004:PIA, author = "Markus M{\"u}ller-Olm and Helmut Seidl", title = "Precise interprocedural analysis through linear algebra", journal = j-SIGPLAN, volume = "39", number = "1", pages = "330--341", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gulwani:2004:GVN, author = "Sumit Gulwani and George C. Necula", title = "Global value numbering using random interpretation", journal = j-SIGPLAN, volume = "39", number = "1", pages = "342--352", month = jan, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } %%% Need to check volume 39 number 2 against printed journal @Article{Frenger:2004:DT, author = "Paul Frenger", title = "{Dutch} treat", journal = j-SIGPLAN, volume = "39", number = "2", pages = "7--10", month = feb, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Feb 9 09:10:13 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Singh:2004:ALO, author = "Awadhesh Kumar Singh and Anup Kumar Bandyopadhyay", title = "Adding the leads-to operator to {Dijkstra}'s calculus", journal = j-SIGPLAN, volume = "39", number = "2", pages = "12--17", month = feb, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Feb 9 09:10:13 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lu:2004:CTO, author = "Hongmin Lu and Yuming Zhou and Jiangtao Lu and Baowen Xu", title = "A compile-time optimization framework for {Ada} rendezvous", journal = j-SIGPLAN, volume = "39", number = "2", pages = "18--25", month = feb, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Feb 9 09:10:13 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Song:2004:WCW, author = "Litong Song and Krishna Kavi", title = "What can we gain by unfolding loops?", journal = j-SIGPLAN, volume = "39", number = "2", pages = "26--33", month = feb, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Feb 9 09:10:13 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Liu:2004:PAM, author = "Yuan Liu and Baowen Xu", title = "Process algebra model of {Ada} protected objects", journal = j-SIGPLAN, volume = "39", number = "2", pages = "34--39", month = feb, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Feb 9 09:10:13 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2004:DEM, author = "Paul Frenger", title = "{Deus Ex Macintosh}", journal = j-SIGPLAN, volume = "39", number = "3", pages = "7--11", month = mar, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhang:2004:SSD, author = "Yingzhou Zhang and Baowen Xu", title = "A survey of semantic description frameworks for programming languages", journal = j-SIGPLAN, volume = "39", number = "3", pages = "14--30", month = mar, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Yavner:2004:BPK, author = "Jonathan Yavner", title = "Back-propagation of knowledge from syntax tree to {C} source code", journal = j-SIGPLAN, volume = "39", number = "3", pages = "31--37", month = mar, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kumar:2004:WWC, author = "K. V. Seshu Kumar", title = "When and what to compile\slash optimize in a virtual machine?", journal = j-SIGPLAN, volume = "39", number = "3", pages = "38--45", month = mar, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lam:2004:GTC, author = "Patrick Lam and Viktor Kuncak and Martin Rinard", title = "Generalized typestate checking using set interfaces and pluggable analyses", journal = j-SIGPLAN, volume = "39", number = "3", pages = "46--55", month = mar, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2004:FRa, author = "Anonymous", title = "{Forth} report", journal = j-SIGPLAN, volume = "39", number = "3", pages = "??--??", month = mar, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:12 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cattell:2004:CGM, author = "R. G. G. Cattell and Joseph M. Newcomer and Bruce W. Leverett", title = "Code generation in a machine-independent compiler", journal = j-SIGPLAN, volume = "39", number = "4", pages = "1--13", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Pennello:2004:ECL, author = "Thomas J. Pennello and Frank DeRemer", title = "Efficient computation of {LALR(1)} look-ahead sets", journal = j-SIGPLAN, volume = "39", number = "4", pages = "14--27", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Minimair:2004:MMR, author = "Manfred Minimair", title = "{MR}: {Macaulay Resultant} package for {Maple}", journal = j-SIGPLAN, volume = "39", number = "4", pages = "26--29", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Allen:2004:ASO, author = "Frances E. Allen and Janet Fabri", title = "Automatic storage optimization", journal = j-SIGPLAN, volume = "39", number = "4", pages = "28--37", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Auslander:2004:OPC, author = "Marc Auslander and Martin Hopkins", title = "An overview of the {PL.8} compiler", journal = j-SIGPLAN, volume = "39", number = "4", pages = "38--48", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Graham:2004:GCG, author = "Susan L. Graham and Peter B. Kessler and Marshall K. McKusick", title = "{\tt gprof}: a call graph execution profiler", journal = j-SIGPLAN, volume = "39", number = "4", pages = "49--57", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "gcc; GNU profiler", } @Article{Markstein:2004:ORC, author = "Victoria Markstein and Peter Markstein and John Cocke", title = "Optimization of range checking", journal = j-SIGPLAN, volume = "39", number = "4", pages = "58--65", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chaitin:2004:RAS, author = "Gregory Chaitin", title = "Register allocation and spilling via graph coloring", journal = j-SIGPLAN, volume = "39", number = "4", pages = "66--74", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Allen:2004:ALI, author = "Randy Allen and Ken Kennedy", title = "Automatic loop interchange", journal = j-SIGPLAN, volume = "39", number = "4", pages = "75--90", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chow:2004:RAP, author = "Fred Chow and John Hennessy", title = "Register allocation by priority-based coloring", journal = j-SIGPLAN, volume = "39", number = "4", pages = "91--103", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Davidson:2004:AGP, author = "Jack W. Davidson and Christopher W. Fraser", title = "Automatic generation of peephole optimizations", journal = j-SIGPLAN, volume = "39", number = "4", pages = "104--111", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fisher:2004:PPS, author = "Joseph A. Fisher and John R. Ellis and John C. Ruttenberg and Alexandru Nicolau", title = "Parallel processing: a smart compiler and a dumb machine", journal = j-SIGPLAN, volume = "39", number = "4", pages = "112--124", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Johnsson:2004:ECL, author = "Thomas Johnsson", title = "Efficient compilation of lazy evaluation", journal = j-SIGPLAN, volume = "39", number = "4", pages = "125--138", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Burke:2004:IDA, author = "Michael G. Burke and Ron K. Cytron", title = "Interprocedural dependence analysis and parallelization", journal = j-SIGPLAN, volume = "39", number = "4", pages = "139--154", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Callahan:2004:ICP, author = "David Callahan and Keith D. Cooper and Ken Kennedy and Linda Torczon", title = "Interprocedural constant propagation", journal = j-SIGPLAN, volume = "39", number = "4", pages = "155--166", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Muchnick:2004:EIS, author = "Steven S. Muchnick and Phillip B. Gibbons", title = "Efficient instruction scheduling for a pipelined architecture", journal = j-SIGPLAN, volume = "39", number = "4", pages = "167--174", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kranz:2004:OOC, author = "David Kranz and Richard Kelsey and Jonathan Rees and Paul Hudak and James Philbin and Norman Adams", title = "{Orbit}: an optimizing compiler for {Scheme}", journal = j-SIGPLAN, volume = "39", number = "4", pages = "175--191", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wall:2004:GRA, author = "David W. Wall", title = "Global register allocation at link time", journal = j-SIGPLAN, volume = "39", number = "4", pages = "192--204", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Appel:2004:RTC, author = "Andrew W. Appel", title = "Real-time concurrent collection on stock multiprocessors", journal = j-SIGPLAN, volume = "39", number = "4", pages = "205--216", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cooper:2004:ISE, author = "Keith D. Cooper and Ken Kennedy", title = "Interprocedural side-effect analysis in linear time", journal = j-SIGPLAN, volume = "39", number = "4", pages = "217--228", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Horwitz:2004:ISU, author = "Susan Horwitz and Thomas Reps and David Binkley", title = "Interprocedural slicing using dependence graphs", journal = j-SIGPLAN, volume = "39", number = "4", pages = "229--243", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lam:2004:SPE, author = "Monica S. Lam", title = "Software pipelining: an effective scheduling technique for {VLIW} machines", journal = j-SIGPLAN, volume = "39", number = "4", pages = "244--256", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Shivers:2004:HOC, author = "Olin Shivers", title = "Higher-order control-flow analysis in retrospect: lessons learned, lessons abandoned", journal = j-SIGPLAN, volume = "39", number = "4", pages = "257--269", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wall:2004:RWV, author = "David W. Wall", title = "Register windows vs. register allocation", journal = j-SIGPLAN, volume = "39", number = "4", pages = "270--282", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Briggs:2004:CHR, author = "Preston Briggs and Keith D. Cooper and Ken Kennedy and Linda Torczon", title = "Coloring heuristics for register allocation", journal = j-SIGPLAN, volume = "39", number = "4", pages = "283--294", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chambers:2004:RCO, author = "Craig Chambers and David Ungar", title = "A retrospective on: {``Customization: Optimizing Compiler Technology for Self, a Dynamically-Typed Object-Oriented Programming Language''}", journal = j-SIGPLAN, volume = "39", number = "4", pages = "295--312", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Schonberg:2004:FDA, author = "Edith Schonberg", title = "On-the-fly detection of access anomalies", journal = j-SIGPLAN, volume = "39", number = "4", pages = "313--327", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Callahan:2004:IRA, author = "David Callahan and Steve Carr and Ken Kennedy", title = "Improving register allocation for subscripted variables", journal = j-SIGPLAN, volume = "39", number = "4", pages = "328--342", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chase:2004:APS, author = "David Chase and Mark Wegman and F. Ken Zadeck", title = "Analysis of pointers and structures", journal = j-SIGPLAN, volume = "39", number = "4", pages = "343--359", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Clinger:2004:HRF, author = "William D. Clinger", title = "How to read floating point numbers accurately", journal = j-SIGPLAN, volume = "39", number = "4", pages = "360--371", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Clinger:2004:RHR, author = "William D. Clinger", title = "Retrospective: How to read floating point numbers accurately", journal = j-SIGPLAN, volume = "39", number = "4", pages = "360--371", month = apr, year = "2004", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/989393.989430", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed May 26 06:21:19 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Best of PLDI 1979--1999. Reprint of, and retrospective on, \cite{Clinger:1990:HRF}.", abstract = "Converting decimal scientific notation into binary floating point is nontrivial, but this conversion can be performed with the best possible accuracy without sacrificing efficiency. Consider the problem of converting decimal scientific notation for a number into the best binary floating point approximation to that number, for some fixed precision. This problem cannot be solved using arithmetic of any fixed precision. Hence the IEEE Standard for Binary Floating-Point Arithmetic does not require the result of such a conversion to be the best approximation. This paper presents an efficient algorithm that always finds the best approximation. The algorithm uses a few extra bits of precision to compute an IEEE-conforming approximation while testing an intermediate result to determine whether the approximation could be other than the best. If the approximation might not be the best, then the best approximation is determined by a few simple operations on multiple-precision integers, where the precision is determined by the input. When using 64 bits of precision to compute IEEE double precision results, the algorithm avoids higher-precision arithmetic over 99\% of the time. The input problem considered by this paper is the inverse of an output problem considered by Steele and White: Given a binary floating point number, print a correctly rounded decimal representation of it using the smallest number of digits that will allow the number to be read without loss of accuracy. The Steele and White algorithm assumes that the input problem is solved; an imperfect solution to the input problem, as allowed by the IEEE standard and ubiquitous in current practice, defeats the purpose of their algorithm.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Steele:2004:RHP, author = "Guy L. {Steele Jr.} and Jon L. White", title = "Retrospective: How to Print Floating-Point Numbers Accurately", journal = j-SIGPLAN, volume = "39", number = "4", pages = "372--389", month = apr, year = "2004", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/989393.989431", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 15 10:00:43 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Best of PLDI 1979--1999. Reprint of, and retrospective on, \cite{Steele:1990:HPF}.", abstract = "We present algorithms for accurately converting floating-point numbers to decimal representation. The key idea is to carry along with the computation an explicit representation of the required rounding accuracy. We begin with the simpler problem of converting fixed-point fractions. A modification of the well-known algorithm for radix-conversion of fixed-point fractions by multiplication explicitly determines when to terminate the conversion process; a variable number of digits are produced. The algorithm has these properties: (*) No information is lost; the original fraction can be recovered from the output by rounding. (*) No ``garbage digits'' are produced. (*) The output is correctly rounded. (*) It is never necessary to propagate carries on rounding. We then derive two algorithms for free-format out-put of floating-point numbers. The first simply scales the given floating-point number to an appropriate fractional range and then applies the algorithm for fractions. This is quite fast and simple to code but has inaccuracies stemming from round-off errors and oversimplification. The second algorithm guarantees mathematical accuracy by using multiple-precision integer arithmetic and handling special cases. Both algorithms produce no more digits than necessary (intuitively, the ``1.3 prints as 1.2999999'' problem does not occur). Finally, we modify the free-format conversion algorithm for use in fixed-format applications. Information may be lost if the fixed format provides too few digit positions, but the output is always correctly rounded. On the other hand, no ``garbage digits'' are ever produced, even if the fixed format specifies too many digit positions (intuitively, the ``4/3 prints as 1.333333328366279602'' problem does not occur).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kessler:2004:FBD, author = "Peter B. Kessler", title = "Fast breakpoints: design and implementation", journal = j-SIGPLAN, volume = "39", number = "4", pages = "390--397", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Pettis:2004:PGC, author = "Karl Pettis and Robert C. Hansen and Jack W. Davidson", title = "Profile guided code positioning", journal = j-SIGPLAN, volume = "39", number = "4", pages = "398--411", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cartwright:2004:ST, author = "Robert Cartwright and Mike Fagan", title = "Soft typing", journal = j-SIGPLAN, volume = "39", number = "4", pages = "412--428", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wall:2004:PPB, author = "David W. Wall", title = "Predicting program behavior using real or estimated profiles", journal = j-SIGPLAN, volume = "39", number = "4", pages = "429--441", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lam:2004:DLO, author = "Monica S. Lam and Michael E. Wolf", title = "A data locality optimizing algorithm", journal = j-SIGPLAN, volume = "39", number = "4", pages = "442--459", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Knoop:2004:LCM, author = "Jens Knoop and Oliver R{\"u}thing and Bernhard Steffen", title = "Lazy code motion", journal = j-SIGPLAN, volume = "39", number = "4", pages = "460--472", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Landi:2004:SAA, author = "William Landi and Barbara G. Ryder", title = "A safe approximate algorithm for interprocedural pointer aliasing", journal = j-SIGPLAN, volume = "39", number = "4", pages = "473--489", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Boehm:2004:SEC, author = "Hans J. Boehm", title = "Space efficient conservative garbage collection", journal = j-SIGPLAN, volume = "39", number = "4", pages = "490--501", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Flanagan:2004:ECC, author = "Cormac Flanagan and Amr Sabry and Bruce F. Duba and Matthias Felleisen", title = "The essence of compiling with continuations", journal = j-SIGPLAN, volume = "39", number = "4", pages = "502--514", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kerns:2004:BSI, author = "Daniel R. Kerns and Susan J. Eggers", title = "Balanced scheduling: instruction scheduling when memory latency is uncertain", journal = j-SIGPLAN, volume = "39", number = "4", pages = "515--527", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Srivastava:2004:ASB, author = "Amitabh Srivastava and Alan Eustace", title = "{ATOM}: a system for building customized program analysis tools", journal = j-SIGPLAN, volume = "39", number = "4", pages = "528--539", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lee:2004:OMR, author = "Peter Lee and Mark Leone", title = "Optimizing {ML} with run-time code generation", journal = j-SIGPLAN, volume = "39", number = "4", pages = "540--553", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Tarditi:2004:TTD, author = "David Tarditi and Greg Morrisett and Perry Cheng and Chris Stone and Robert Harper and Peter Lee", title = "{TIL}: a type-directed, optimizing compiler for {ML}", journal = j-SIGPLAN, volume = "39", number = "4", pages = "554--567", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ammons:2004:IDF, author = "Glenn Ammons and James R. Larus", title = "Improving data-flow analysis with path profiles", journal = j-SIGPLAN, volume = "39", number = "4", pages = "568--582", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bacon:2004:TLF, author = "David F. Bacon and Ravi Konuru and Chet Murthy and Mauricio J. Serrano", title = "Thin locks: featherweight synchronization for {Java}", journal = j-SIGPLAN, volume = "39", number = "4", pages = "583--595", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bodik:2004:CRR, author = "Rastislav Bod{\'\i}k and Rajiv Gupta and Mary Lou Soffa", title = "Complete removal of redundant expressions", journal = j-SIGPLAN, volume = "39", number = "4", pages = "596--611", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Necula:2004:DIC, author = "George C. Necula and Peter Lee", title = "The design and implementation of a certifying compiler", journal = j-SIGPLAN, volume = "39", number = "4", pages = "612--625", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Blelloch:2004:BTS, author = "Guy E. Blelloch and Perry Cheng", title = "On bounding time and space for multiprocessor garbage collection", journal = j-SIGPLAN, volume = "39", number = "4", pages = "626--641", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frigo:2004:FFT, author = "Matteo Frigo", title = "A fast {Fourier} transform compiler", journal = j-SIGPLAN, volume = "39", number = "4", pages = "642--655", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Grant:2004:RES, author = "Brian Grant and Matthai Philipose and Markus Mock and Craig Chambers and Susan J. Eggers", title = "A retrospective on: ``an evaluation of staged run-time optimizations in {DyC'}'", journal = j-SIGPLAN, volume = "39", number = "4", pages = "656--669", month = apr, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Shan:2004:STA, author = "Chung-chieh Shan", title = "Sexy types in action", journal = j-SIGPLAN, volume = "39", number = "5", pages = "15--22", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ghosh:2004:GJC, author = "Debasish Ghosh", title = "Generics in {Java} and {C++}: a comparative model", journal = j-SIGPLAN, volume = "39", number = "5", pages = "40--47", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wells:2004:UIR, author = "Paul Damian Wells", title = "A universal intermediate representation for massively parallel software development", journal = j-SIGPLAN, volume = "39", number = "5", pages = "48--57", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Juric:2004:JRR, author = "Matjaz B. Juric and Bostjan Kezmah and Marjan Hericko and Ivan Rozman and Ivan Vezocnik", title = "{Java RMI}, {RMI} tunneling and {Web} services comparison and performance analysis", journal = j-SIGPLAN, volume = "39", number = "5", pages = "58--65", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kantorovitz:2004:LAT, author = "Isaiah Pinchas Kantorovitz", title = "Lexical analysis tool", journal = j-SIGPLAN, volume = "39", number = "5", pages = "66--74", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Henzinger:2004:RCC, author = "Thomas A. Henzinger and Ranjit Jhala and Rupak Majumdar", title = "Race checking by context inference", journal = j-SIGPLAN, volume = "39", number = "6", pages = "1--13", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Qadeer:2004:KKI, author = "Shaz Qadeer and Dinghao Wu", title = "{KISS}: keep it simple and sequential", journal = j-SIGPLAN, volume = "39", number = "6", pages = "14--24", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Yahav:2004:VSP, author = "Eran Yahav and G. Ramalingam", title = "Verifying safety properties using separation and heterogeneous abstractions", journal = j-SIGPLAN, volume = "39", number = "6", pages = "25--34", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Michael:2004:SLF, author = "Maged M. Michael", title = "Scalable lock-free dynamic memory allocation", journal = j-SIGPLAN, volume = "39", number = "6", pages = "35--46", month = may, year = "2004", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/996841.996848", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Dynamic memory allocators (malloc/free) rely on mutual exclusion locks for protecting the consistency of their shared data structures under multithreading. The use of locking has many disadvantages with respect to performance, availability, robustness, and programming flexibility. A lock-free memory allocator guarantees progress regardless of whether some threads are delayed or even killed and regardless of scheduling policies. This paper presents a completely lock-free memory allocator. It uses only widely-available operating system support and hardware atomic instructions. It offers guaranteed availability even under arbitrary thread termination and crash-failure, and it is immune to deadlock regardless of scheduling policies, and hence it can be used even in interrupt handlers and real-time applications without requiring special scheduler support. Also, by leveraging some high-level structures from Hoard, our allocator is highly scalable, limits space blowup to a constant factor, and is capable of avoiding false sharing. In addition, our allocator allows finer concurrency and much lower latency than Hoard. We use PowerPC shared memory multiprocessor systems to compare the performance of our allocator with the default AIX 5.1 libc malloc, and two widely-used multithread allocators, Hoard and Ptmalloc. Our allocator outperforms the other allocators in virtually all cases and often by substantial margins, under various levels of parallelism and allocation patterns. Furthermore, our allocator also offers the lowest contention-free latency among the allocators by significant margins.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Flatt:2004:KSS, author = "Matthew Flatt and Robert Bruce Findler", title = "Kill-safe synchronization abstractions", journal = j-SIGPLAN, volume = "39", number = "6", pages = "47--58", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Johnson:2004:MCP, author = "Troy A. Johnson and Rudolf Eigenmann and T. N. Vijaykumar", title = "Min-cut program decomposition for thread-level speculation", journal = j-SIGPLAN, volume = "39", number = "6", pages = "59--70", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Du:2004:CDC, author = "Zhao-Hui Du and Chu-Cheow Lim and Xiao-Feng Li and Chen Yang and Qingyu Zhao and Tin-Fook Ngai", title = "A cost-driven compilation framework for speculative parallelization of sequential programs", journal = j-SIGPLAN, volume = "39", number = "6", pages = "71--81", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Eichenberger:2004:VSA, author = "Alexandre E. Eichenberger and Peng Wu and Kevin O'Brien", title = "Vectorization for {SIMD} architectures with alignment constraints", journal = j-SIGPLAN, volume = "39", number = "6", pages = "82--93", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhang:2004:CED, author = "Xiangyu Zhang and Rajiv Gupta", title = "Cost effective dynamic program slicing", journal = j-SIGPLAN, volume = "39", number = "6", pages = "94--106", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Collberg:2004:DPB, author = "C. Collberg and E. Carter and S. Debray and A. Huntwork and J. Kececioglu and C. Linn and M. Stepp", title = "Dynamic path-based software watermarking", journal = j-SIGPLAN, volume = "39", number = "6", pages = "107--118", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wang:2004:PAA, author = "Cheng Wang and Zhiyuan Li", title = "Parametric analysis for adaptive computation offloading", journal = j-SIGPLAN, volume = "39", number = "6", pages = "119--130", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Whaley:2004:CBC, author = "John Whaley and Monica S. Lam", title = "Cloning-based context-sensitive pointer alias analysis using binary decision diagrams", journal = j-SIGPLAN, volume = "39", number = "6", pages = "131--144", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhu:2004:SPA, author = "Jianwen Zhu and Silvian Calman", title = "Symbolic pointer analysis revisited", journal = j-SIGPLAN, volume = "39", number = "6", pages = "145--157", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lhotak:2004:JBB, author = "Ond{\v{r}}ej Lhot{\'a}k and Laurie Hendren", title = "{Jedd}: a {BDD}-based relational extension of {Java}", journal = j-SIGPLAN, volume = "39", number = "6", pages = "158--169", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kulkarni:2004:FSE, author = "Prasad Kulkarni and Stephen Hines and Jason Hiser and David Whalley and Jack Davidson and Douglas Jones", title = "Fast searches for effective optimization phase sequences", journal = j-SIGPLAN, volume = "39", number = "6", pages = "171--182", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cavazos:2004:IHD, author = "John Cavazos and J. Eliot and B. Moss", title = "Inducing heuristics to decide whether to schedule", journal = j-SIGPLAN, volume = "39", number = "6", pages = "183--194", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Vachharajani:2004:LSS, author = "Manish Vachharajani and Neil Vachharajani and David I. August", title = "The liberty structural specification language: a high-level modeling language for component reuse", journal = j-SIGPLAN, volume = "39", number = "6", pages = "195--206", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kodumal:2004:SCC, author = "John Kodumal and Alex Aiken", title = "The set constraint\slash {CFL} reachability connection in practice", journal = j-SIGPLAN, volume = "39", number = "6", pages = "207--218", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Liu:2004:PRP, author = "Yanhong A. Liu and Tom Rothamel and Fuxiang Yu and Scott D. Stoller and Nanjun Hu", title = "Parametric regular path queries", journal = j-SIGPLAN, volume = "39", number = "6", pages = "219--230", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Venet:2004:PES, author = "Arnaud Venet and Guillaume Brat", title = "Precise and efficient static array bound checking for large embedded {C} programs", journal = j-SIGPLAN, volume = "39", number = "6", pages = "231--242", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chin:2004:RIO, author = "Wei-Ngan Chin and Florin Craciun and Shengchao Qin and Martin Rinard", title = "Region inference for an object-oriented language", journal = j-SIGPLAN, volume = "39", number = "6", pages = "243--254", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhong:2004:ARS, author = "Yutao Zhong and Maksim Orlovich and Xipeng Shen and Chen Ding", title = "Array regrouping and structure splitting using whole-program reference affinity", journal = j-SIGPLAN, volume = "39", number = "6", pages = "255--266", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Adl-Tabatabai:2004:PIB, author = "Ali-Reza Adl-Tabatabai and Richard L. Hudson and Mauricio J. Serrano and Sreenivas Subramoney", title = "Prefetch inection based on hardware monitoring and object metadata", journal = j-SIGPLAN, volume = "39", number = "6", pages = "267--276", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Smith:2004:GAG, author = "Michael D. Smith and Norman Ramsey and Glenn Holloway", title = "A generalized algorithm for graph-coloring register allocation", journal = j-SIGPLAN, volume = "39", number = "6", pages = "277--288", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhuang:2004:BRA, author = "Xiaotong Zhuang and Santosh Pande", title = "Balancing register allocation across threads for a multithreaded network processor", journal = j-SIGPLAN, volume = "39", number = "6", pages = "289--300", month = may, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Antochi:2004:GGB, author = "Iosif Antochi and Ben Juurlink and Stamatis Vassiliadis and Petri Liuha", title = "{GraalBench}: a {$3$D} graphics benchmark suite for mobile phones", journal = j-SIGPLAN, volume = "39", number = "7", pages = "1--9", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Martin:2004:MSE, author = "Thomas Martin and Mark Jones and Joshua Edmison and Tanwir Sheikh and Zahi Nakad", title = "Modeling and simulating electronic textile applications", journal = j-SIGPLAN, volume = "39", number = "7", pages = "10--19", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Willmann:2004:SLB, author = "Paul Willmann and Michael Brogioli and Vijay S. Pai", title = "{Spinach}: a liberty-based simulator for programmable network interface architectures", journal = j-SIGPLAN, volume = "39", number = "7", pages = "20--29", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Conway:2004:NDS, author = "Christopher L. Conway and Stephen A. Edwards", title = "{NDL}: a domain-specific language for device drivers", journal = j-SIGPLAN, volume = "39", number = "7", pages = "30--36", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kumar:2004:AST, author = "Nagendra J. Kumar and Siddhartha Shivshankar and Alexander G. Dean", title = "Asynchronous software thread integration for efficient software", journal = j-SIGPLAN, volume = "39", number = "7", pages = "37--46", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Qin:2004:FCM, author = "Wei Qin and Subramanian Rajagopalan and Sharad Malik", title = "A formal concurrency model based architecture description language for synthesis of software development tools", journal = j-SIGPLAN, volume = "39", number = "7", pages = "47--56", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Jejurikar:2004:PSF, author = "Ravindra Jejurikar and Rajesh Gupta", title = "Procrastination scheduling in fixed priority real-time systems", journal = j-SIGPLAN, volume = "39", number = "7", pages = "57--66", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhuang:2004:PEP, author = "Xiaotong Zhuang and Santosh Pande", title = "Power-efficient prefetching via bit-differential offset assignment on embedded processors", journal = j-SIGPLAN, volume = "39", number = "7", pages = "67--77", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Pokam:2004:SSM, author = "Gilles Pokam and Olivier Rochecouste and Andr{\'e} Seznec and Fran{\c{c}}ois Bodin", title = "Speculative software management of datapath-width for energy optimization", journal = j-SIGPLAN, volume = "39", number = "7", pages = "78--87", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Im:2004:DVS, author = "Chaeseok Im and Soonhoi Ha", title = "Dynamic voltage scaling for real-time multi-task scheduling using buffers", journal = j-SIGPLAN, volume = "39", number = "7", pages = "88--94", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Li:2004:TBB, author = "Lian Li and Jingling Xue", title = "A trace-based binary compilation framework for energy-aware computing", journal = j-SIGPLAN, volume = "39", number = "7", pages = "95--106", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lapalme:2004:ENN, author = "J. Lapalme and E. M. Aboulhamid and G. Nicolescu and L. Charest and F. R. Boyer and J. P. David and G. Bois", title = "{ESys.Net}: a new solution for embedded systems modeling and simulation", journal = j-SIGPLAN, volume = "39", number = "7", pages = "107--114", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Contreras:2004:XPS, author = "Gilberto Contreras and Margaret Martonosi and Jinzhan Peng and Roy Ju and Guei-Yuan Lueh", title = "{XTREM}: a power simulator for the {Intel XScale\TM{}}; core", journal = j-SIGPLAN, volume = "39", number = "7", pages = "115--125", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kastens:2004:FDI, author = "Uwe Kastens and Dinh Khoi Le and Adrian Slowik and Michael Thies", title = "Feedback driven instruction-set extension", journal = j-SIGPLAN, volume = "39", number = "7", pages = "126--135", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Patil:2004:CSI, author = "Kaustubh Patil and Kiran Seth and Frank Mueller", title = "Compositional static instruction cache simulation", journal = j-SIGPLAN, volume = "39", number = "7", pages = "136--145", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Starner:2004:MCI, author = "Johan St{\"a}rner and Lars Asplund", title = "Measuring the cache interference cost in preemptive real-time systems", journal = j-SIGPLAN, volume = "39", number = "7", pages = "146--154", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhang:2004:ACU, author = "Lingli Zhang and Chandra Krintz", title = "Adaptive code unloading for resource-constrained {JVMs}", journal = j-SIGPLAN, volume = "39", number = "7", pages = "155--164", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Li:2004:ACF, author = "Peng Li and Steve Zdancewic", title = "Advanced control flow in {Java} card programming", journal = j-SIGPLAN, volume = "39", number = "7", pages = "165--174", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zeng:2004:GFC, author = "Jia Zeng and Cristian Soviani and Stephen A. Edwards", title = "Generating fast code from concurrent program dependence graphs", journal = j-SIGPLAN, volume = "39", number = "7", pages = "175--181", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hiser:2004:EEM, author = "Jason D. Hiser and Jack W. Davidson", title = "{EMBARC}: an efficient memory bank assignment algorithm for retargetable compilers", journal = j-SIGPLAN, volume = "39", number = "7", pages = "182--191", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhuang:2004:HMR, author = "Xiaotong Zhuang and Tao Zhang and Santosh Pande", title = "Hardware-managed register allocation for embedded processors", journal = j-SIGPLAN, volume = "39", number = "7", pages = "192--201", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Daveau:2004:RRA, author = "Jean-Marc Daveau and Thomas Thery and Thierry Lepley and Miguel Santana", title = "A retargetable register allocation framework for embedded processors", journal = j-SIGPLAN, volume = "39", number = "7", pages = "202--210", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{DeBus:2004:LTO, author = "Bruno {De Bus} and Bjorn {De Sutter} and Ludo {Van Put} and Dominique Chanet and Koen {De Bosschere}", title = "Link-time optimization of {ARM} binaries", journal = j-SIGPLAN, volume = "39", number = "7", pages = "211--220", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Scholz:2004:OST, author = "Bernhard Scholz and Nigel Horspool and Jens Knoop", title = "Optimizing for space and time usage with speculative partial redundancy elimination", journal = j-SIGPLAN, volume = "39", number = "7", pages = "221--230", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Almagor:2004:FEC, author = "L. Almagor and Keith D. Cooper and Alexander Grosul and Timothy J. Harvey and Steven W. Reeves and Devika Subramanian and Linda Torczon and Todd Waterman", title = "Finding effective compilation sequences", journal = j-SIGPLAN, volume = "39", number = "7", pages = "231--239", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Saputra:2004:CPR, author = "H. Saputra and G. Chen and R. Brooks and N. Vijaykrishnan and M. Kandemir and M. J. Irwin", title = "Code protection for resource-constrained embedded devices", journal = j-SIGPLAN, volume = "39", number = "7", pages = "240--248", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Guo:2004:IDR, author = "Zhi Guo and Betul Buyukkurt and Walid Najjar", title = "Input data reuse in compiling window operations onto reconfigurable hardware", journal = j-SIGPLAN, volume = "39", number = "7", pages = "249--256", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wasowski:2004:FSE, author = "Andrzej Wasowski", title = "Flattening statecharts without explosions", journal = j-SIGPLAN, volume = "39", number = "7", pages = "257--266", month = jul, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:55 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2004:EF, author = "Paul Frenger", title = "Embed with {Forth}", journal = j-SIGPLAN, volume = "39", number = "8", pages = "8--11", month = aug, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Creak:2004:PNA, author = "Alan Creak", title = "Parsing by numbers and asparagus", journal = j-SIGPLAN, volume = "39", number = "8", pages = "12--19", month = aug, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Reid:2004:OF, author = "John Reid", title = "An overview of {Fortran 2003}", journal = j-SIGPLAN, volume = "39", number = "8", pages = "31--38", month = aug, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wu:2004:SZS, author = "Fangjun Wu and Tong Yi", title = "Slicing {Z} specifications", journal = j-SIGPLAN, volume = "39", number = "8", pages = "39--48", month = aug, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bronnikov:2004:PAP, author = "Dmitri Bronnikov", title = "A practical adoption of partial redundancy elimination", journal = j-SIGPLAN, volume = "39", number = "8", pages = "49--53", month = aug, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{deOliveiraGuimaraes:2004:CST, author = "Jos{\'e} {de Oliveira Guimar{\~a}es}", title = "Closures for statically-typed object-oriented languages", journal = j-SIGPLAN, volume = "39", number = "8", pages = "54--60", month = aug, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Babu:2004:MDM, author = "Chitra Babu and D. Janakiram", title = "Method driven model: a unified model for an object composition language", journal = j-SIGPLAN, volume = "39", number = "8", pages = "61--71", month = aug, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sandya:2004:JJL, author = "S. M. Sandya", title = "Jazzing up {JVMs} with off-line profile data: does it pay?", journal = j-SIGPLAN, volume = "39", number = "8", pages = "72--80", month = aug, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ramsey:2004:CCI, author = "Norman Ramsey and Simon L. Peyton Jones", title = "The {C}--compiler infrastructure", journal = j-SIGPLAN, volume = "39", number = "9", pages = "1--1", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Launchbury:2004:GHA, author = "John Launchbury", title = "{Galois}: high assurance software", journal = j-SIGPLAN, volume = "39", number = "9", pages = "3--3", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Marlow:2004:MFC, author = "Simon Marlow and Simon Peyton Jones", title = "Making a fast curry: push\slash enter vs. eval\slash apply for higher-order languages", journal = j-SIGPLAN, volume = "39", number = "9", pages = "4--15", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Herman:2004:ISA, author = "David Herman and Philippe Meunier", title = "Improving the static analysis of embedded languages via partial evaluation", journal = j-SIGPLAN, volume = "39", number = "9", pages = "16--27", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Christiansen:2004:SDW, author = "Jan Christiansen and Frank Huch", title = "Searching for deadlocks while debugging {Concurrent Haskell} programs", journal = j-SIGPLAN, volume = "39", number = "9", pages = "28--39", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ariola:2004:TTF, author = "Zena M. Ariola and Hugo Herbelin and Amr Sabry", title = "A type-theoretic foundation of continuations and prompts", journal = j-SIGPLAN, volume = "39", number = "9", pages = "40--53", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wand:2004:RMB, author = "Mitchell Wand and Dale Vaillancourt", title = "Relating models of backtracking", journal = j-SIGPLAN, volume = "39", number = "9", pages = "54--65", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Graham:2004:DMW, author = "Paul Graham", title = "Don't make the wrong mistakes: programming as debugging", journal = j-SIGPLAN, volume = "39", number = "9", pages = "66--66", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Broberg:2004:REP, author = "Niklas Broberg and Andreas Farre and Josef Svenningsson", title = "Regular expression patterns", journal = j-SIGPLAN, volume = "39", number = "9", pages = "67--78", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Shivers:2004:MRF, author = "Olin Shivers and David Fisher", title = "Multi-return function call", journal = j-SIGPLAN, volume = "39", number = "9", pages = "79--89", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Tolmach:2004:IFL, author = "Andrew Tolmach and Sergio Antoy and Marius Nita", title = "Implementing functional logic languages using multiple threads and stores", journal = j-SIGPLAN, volume = "39", number = "9", pages = "90--102", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fluet:2004:MR, author = "Matthew Fluet and Greg Morrisett", title = "Monadic regions", journal = j-SIGPLAN, volume = "39", number = "9", pages = "103--114", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Tse:2004:TDP, author = "Stephen Tse and Steve Zdancewic", title = "Translating dependency into parametricity", journal = j-SIGPLAN, volume = "39", number = "9", pages = "115--125", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Colazzo:2004:TPC, author = "Dario Colazzo and Giorgio Ghelli and Paolo Manghi and Carlo Sartiani", title = "Types for path correctness of {XML} queries", journal = j-SIGPLAN, volume = "39", number = "9", pages = "126--137", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Neergaard:2004:TPI, author = "Peter M{\o}ller Neergaard and Harry G. Mairson", title = "Types, potency, and idempotency: why nonlinearity and amnesia make a type system work", journal = j-SIGPLAN, volume = "39", number = "9", pages = "138--149", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gauthier:2004:NMF, author = "Nadji Gauthier and Fran{\c{c}}ois Pottier", title = "Numbering matters: first-order canonical forms for second-order recursive types", journal = j-SIGPLAN, volume = "39", number = "9", pages = "150--161", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wiger:2004:YIF, author = "Ulf Wiger", title = "20 years of industrial functional programming", journal = j-SIGPLAN, volume = "39", number = "9", pages = "162--162", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Honda:2004:PLP, author = "Kohei Honda", title = "From process logic to program logic", journal = j-SIGPLAN, volume = "39", number = "9", pages = "163--174", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Yu:2004:VSP, author = "Dachuan Yu and Zhong Shao", title = "Verification of safety properties for concurrent assembly code", journal = j-SIGPLAN, volume = "39", number = "9", pages = "175--188", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Blume:2004:SCM, author = "Matthias Blume and David McAllester", title = "A sound (and complete) model of contracts", journal = j-SIGPLAN, volume = "39", number = "9", pages = "189--200", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sarkar:2004:NIC, author = "Dipanwita Sarkar and Oscar Waddell and R. Kent Dybvig", title = "A nanopass infrastructure for compiler education", journal = j-SIGPLAN, volume = "39", number = "9", pages = "201--212", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Forsberg:2004:FM, author = "Markus Forsberg and Aarne Ranta", title = "Functional morphology", journal = j-SIGPLAN, volume = "39", number = "9", pages = "213--223", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Findler:2004:SFP, author = "Robert Bruce Findler and Matthew Flatt", title = "Slideshow: functional presentations", journal = j-SIGPLAN, volume = "39", number = "9", pages = "224--235", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hinze:2004:GM, author = "Ralf Hinze", title = "Generics for the masses", journal = j-SIGPLAN, volume = "39", number = "9", pages = "236--243", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lammel:2004:SMB, author = "Ralf L{\"a}mmel and Simon Peyton Jones", title = "Scrap more boilerplate: reflection, zips, and generalised casts", journal = j-SIGPLAN, volume = "39", number = "9", pages = "244--255", month = sep, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } %%% TO DO: ACM Portal has v39n10 that disagrees completely with my printed copy (labeled OOPSLA'04). Why?? @Article{Perera:2004:RRB, author = "Roly Perera", title = "Refactoring: to the {Rubicon}\ldots{} and beyond!", journal = j-SIGPLAN, volume = "39", number = "10", pages = "2--3", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Freeman:2004:JSR, author = "Steve Freeman and Tim Mackinnon and Nat Pryce and Joe Walnes", title = "{jMock}: supporting responsibility-based design with mock objects", journal = j-SIGPLAN, volume = "39", number = "10", pages = "4--5", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Aldrich:2004:MISa, author = "Jonathan Aldrich and David Garlan and Bradley Schmerl and Tony Tseng", title = "Modeling and implementing software architecture with acme and {archJava}", journal = j-SIGPLAN, volume = "39", number = "10", pages = "6--7", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fuhrer:2004:ARE, author = "Robert Fuhrer and Frank Tip and Adam Kie{\.z}un", title = "Advanced refactorings in eclipse", journal = j-SIGPLAN, volume = "39", number = "10", pages = "8--8", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{McCormick:2004:JFY, author = "Edward McCormick and Kris De Volder", title = "{JQuery}: finding your way through tangled code", journal = j-SIGPLAN, volume = "39", number = "10", pages = "9--10", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kaundinya:2004:MEDa, author = "Murali Kaundinya and Ali Syed", title = "Modeling event driven applications with a specification language {(MEDASL)}", journal = j-SIGPLAN, volume = "39", number = "10", pages = "11--12", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sazawal:2004:DSP, author = "Vibha Sazawal and David Notkin", title = "Design snippets: partial design representations extracted from source code", journal = j-SIGPLAN, volume = "39", number = "10", pages = "13--14", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fowler:2004:MPR, author = "Matthew Fowler and Brahm van Niekerk", title = "Meta-programming for the real world", journal = j-SIGPLAN, volume = "39", number = "10", pages = "15--15", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ostlund:2004:JOA, author = "Helena {\AA}berg {\"O}stlund", title = "{JRA}: offline analysis of runtime behaviour", journal = j-SIGPLAN, volume = "39", number = "10", pages = "16--17", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Spinczyk:2004:MBS, author = "Olaf Spinczyk and Danilo Beuche", title = "Modeling and building software product lines with eclipse", journal = j-SIGPLAN, volume = "39", number = "10", pages = "18--19", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhang:2004:PRA, author = "Charles Zhang and Hans-Arno Jacobsen", title = "{PRISM} is research in {aSpect} mining", journal = j-SIGPLAN, volume = "39", number = "10", pages = "20--21", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bhattacharrya:2004:SDE, author = "Arnab Bhattacharrya and Robert Fuhrer", title = "Smell detection for eclipse", journal = j-SIGPLAN, volume = "39", number = "10", pages = "22--22", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lippert:2004:AAEa, author = "Martin Lippert", title = "{AJEER}: an {aspectJ}-enabled eclipse runtime", journal = j-SIGPLAN, volume = "39", number = "10", pages = "23--24", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Akers:2004:PTR, author = "Robert L. Akers and Ira D. Baxter and Michael Mehlich", title = "Program transformations for re-engineering {C++} components {[OOPSLA\slash GPCE]}", journal = j-SIGPLAN, volume = "39", number = "10", pages = "25--26", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gray:2004:CSG, author = "Jeff Gray and Jing Zhang and Suman Roychoudhury and Ira Baxter", title = "{C-SAW} and {genAWeave}: a two-level aspect weaving toolsuite", journal = j-SIGPLAN, volume = "39", number = "10", pages = "27--28", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Tarr:2004:CME, author = "Peri Tarr and William Chung and William Harrison and Vincent Kruskal and Harold Ossher and Stanley M. {Sutton, Jr.} and Andrew Clement and Matthew Chapman and Helen Hawkins and Sian January", title = "The concern manipulation environment {[OOPSLA\slash GPCE]}", journal = j-SIGPLAN, volume = "39", number = "10", pages = "29--30", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hauswirth:2004:PEU, author = "Matthias Hauswirth and Peter F. Sweeney and Amer Diwan", title = "Performance explorer: understanding {Java} application behavior", journal = j-SIGPLAN, volume = "39", number = "10", pages = "31--32", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gordon:2004:C, author = "Donald Gordon and James Noble and Robert Biddle", title = "{ConstrainedJava}", journal = j-SIGPLAN, volume = "39", number = "10", pages = "33--34", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Nguyen:2004:OOS, author = "Tien N. Nguyen and Ethan V. Munson and John T. Boyland", title = "Object-oriented, structural software configuration management", journal = j-SIGPLAN, volume = "39", number = "10", pages = "35--36", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Parigot:2004:TDD, author = "Didier Parigot", title = "Towards domain-driven development: the {smartTools} software factory", journal = j-SIGPLAN, volume = "39", number = "10", pages = "37--38", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Tolvanen:2004:MDS, author = "Juha-Pekka Tolvanen", title = "{MetaEdit+}: domain-specific modeling for full code generation demonstrated {[GPCE]}", journal = j-SIGPLAN, volume = "39", number = "10", pages = "39--40", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Guerrero:2004:IDM, author = "Miguel Guerrero and Edward Pizzi and Robert Rosenbaum and Kedar Swadi and Walid Taha", title = "Implementing {DSLs} in {metaOCaml}", journal = j-SIGPLAN, volume = "39", number = "10", pages = "41--42", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Eichberg:2004:XCA, author = "Michael Eichberg and Thorsten Sch{\"a}fer", title = "{XIRC}: cross-artifact information retrieval {[GPCE]}", journal = j-SIGPLAN, volume = "39", number = "10", pages = "43--44", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cao:2004:MDA, author = "Lan Cao", title = "Modeling dynamics of agile software development", journal = j-SIGPLAN, volume = "39", number = "10", pages = "46--47", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gestwicki:2004:IVO, author = "Paul V. Gestwicki", title = "Interactive visualization of object-oriented programs", journal = j-SIGPLAN, volume = "39", number = "10", pages = "48--49", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Potanin:2004:GOP, author = "Alex Potanin and James Noble and Robert Biddle", title = "Generic ownership: practical ownership control in programming languages", journal = j-SIGPLAN, volume = "39", number = "10", pages = "50--51", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Roychoudhury:2004:LIAa, author = "Suman Roychoudhury", title = "A language-independent approach to software maintenance using grammar adapters", journal = j-SIGPLAN, volume = "39", number = "10", pages = "52--53", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Siek:2004:MG, author = "Jeremy Siek", title = "Modular generics", journal = j-SIGPLAN, volume = "39", number = "10", pages = "54--55", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Nienaltowski:2004:EDR, author = "Piotr Nienaltowski", title = "Efficient data race and deadlock prevention in concurrent object-oriented programs", journal = j-SIGPLAN, volume = "39", number = "10", pages = "56--57", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Trofin:2004:FRRa, author = "Mircea Trofin", title = "A framework for removing redundant context management services in {Enterprise JavaBeans} application servers", journal = j-SIGPLAN, volume = "39", number = "10", pages = "58--59", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Silaghi:2004:RDAa, author = "Raul Silaghi", title = "Refining designs along middleware-specific concern-dimensions at different {MDA}-levels of abstraction", journal = j-SIGPLAN, volume = "39", number = "10", pages = "60--62", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Schmolitzky:2004:OFI, author = "Axel Schmolitzky", title = "``Objects first, interfaces next'' or interfaces before inheritance", journal = j-SIGPLAN, volume = "39", number = "10", pages = "64--67", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ventura:2004:AWC, author = "Phil Ventura and Christopher Egert and Adrienne Decker", title = "Ancestor worship in {CS1}: on the primacy of arrays", journal = j-SIGPLAN, volume = "39", number = "10", pages = "68--72", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Henriksen:2004:GCO, author = "Poul Henriksen and Michael K{\"o}lling", title = "{greenfoot}: combining object visualisation with interaction", journal = j-SIGPLAN, volume = "39", number = "10", pages = "73--82", month = oct, year = "2004", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1035292.1028701", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Malan:2004:ECD, author = "Katherine Malan and Ken Halland", title = "Examples that can do harm in learning programming", journal = j-SIGPLAN, volume = "39", number = "10", pages = "83--87", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fenstermacher:2004:IMI, author = "Kurt D. Fenstermacher", title = "If {I} had a model, {I}'d model in the mornin'", journal = j-SIGPLAN, volume = "39", number = "10", pages = "88--95", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bruce:2004:EDP, author = "Kim B. Bruce and Andrea Danyluk", title = "Event-driven programming facilitates learning standard programming concepts", journal = j-SIGPLAN, volume = "39", number = "10", pages = "96--100", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cheng:2004:AFS, author = "Eric Cheng and Dung Zung Nguyen and Mathias Ricken and Stephen Wong", title = "Abstract factories and the shape calculator", journal = j-SIGPLAN, volume = "39", number = "10", pages = "101--102", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wick:2004:UGL, author = "Michael R. Wick", title = "Using the game of life to introduce freshman students to the power and elegance of design patterns", journal = j-SIGPLAN, volume = "39", number = "10", pages = "103--105", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Nevison:2004:CAP, author = "Christopher H. Nevison", title = "From concrete to abstract: the power of generalization", journal = j-SIGPLAN, volume = "39", number = "10", pages = "106--108", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cheng:2004:MBS, author = "Eric Cheng and Dung Zung Nguyen and Mathias Ricken and Stephen Wong", title = "Marine biology simulation", journal = j-SIGPLAN, volume = "39", number = "10", pages = "109--110", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Noble:2004:NNPa, author = "James Noble and Robert Biddle", title = "Notes on notes on postmodern programming: radio edit", journal = j-SIGPLAN, volume = "39", number = "10", pages = "112--115", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sheard:2004:LFa, author = "Tim Sheard", title = "Languages of the future", journal = j-SIGPLAN, volume = "39", number = "10", pages = "116--119", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Singh:2004:PPPa, author = "Munindar P. Singh and Amit K. Chopra and Nirmit V. Desai and Ashok U. Mallya", title = "Protocols for processes: programming in the large for open systems (extended abstract)", journal = j-SIGPLAN, volume = "39", number = "10", pages = "120--123", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Edwards:2004:ECPa, author = "Jonathan Edwards", title = "Example centric programming", journal = j-SIGPLAN, volume = "39", number = "10", pages = "124--124", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Marick:2004:MWOa, author = "Brian Marick", title = "Methodology work is ontology work", journal = j-SIGPLAN, volume = "39", number = "10", pages = "125--125", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{West:2004:LLAa, author = "David West", title = "Looking for love: (in all the wrong places)", journal = j-SIGPLAN, volume = "39", number = "10", pages = "126--127", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhao:2004:GOPa, author = "Yinliang Zhao", title = "Granule-oriented programming (extended abstract)", journal = j-SIGPLAN, volume = "39", number = "10", pages = "128--131", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hovemeyer:2004:FBEa, author = "David Hovemeyer and William Pugh", title = "Finding bugs is easy", journal = j-SIGPLAN, volume = "39", number = "10", pages = "132--136", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Miller:2004:MDA, author = "Granville Miller and Scott Ambler and Steve Cook and Stephen Mellor and Karl Frank and Jon Kern", title = "Model driven architecture: the realities, a year later", journal = j-SIGPLAN, volume = "39", number = "10", pages = "138--140", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Haungs:2004:SDA, author = "Jim Haungs and Martin Fowler and Ralph Johnson and Steve McConnell and Richard Gabriel", title = "Software development: arts {\&} crafts or math {\&} science?", journal = j-SIGPLAN, volume = "39", number = "10", pages = "141--142", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fowler:2004:GJV, author = "Martin Fowler and Don Box and Anders Hejlsberg and Alan Knight and Rob High and John Crupi", title = "The great {J2EE} vs. {Microsoft .NET} shootout", journal = j-SIGPLAN, volume = "39", number = "10", pages = "143--144", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fraser:2004:COG, author = "Steven Fraser and Lougie Anderson and Ron Crocker and Richard Gabriel and Martin Fowler and Ricardo Lopez and Dave Thomas", title = "Challenges in outsourcing and global development: how will your job change?", journal = j-SIGPLAN, volume = "39", number = "10", pages = "145--147", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fraser:2004:RCS, author = "Steven Fraser and Angela Martin and Robert Biddle and David Hussman and Granville Miller and Mary Poppendieck and Linda Rising and Mark Striebeck", title = "The role of the customer in software development: the {XP} customer --- fad or fashion?", journal = j-SIGPLAN, volume = "39", number = "10", pages = "148--150", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Josuttis:2004:VUI, author = "Nicolai M. Josuttis and Jutta Eckstein and Linda Rising and Lise B. Hvatum and Mary Lynn Manns and Rebecca Wirfs-Brock", title = "The view: the ultimate {IT} chat", journal = j-SIGPLAN, volume = "39", number = "10", pages = "151--152", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Eliassen:2004:QBR, author = "Frank Eliassen and Richard Staehli and Gordon Blair and Jan {\O}yvind Aagedal", title = "{QuA}: building with reusable {QoS}-aware components", journal = j-SIGPLAN, volume = "39", number = "10", pages = "154--155", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Aldrich:2004:MISb, author = "Jonathan Aldrich and David Garlan and Bradley Schmerl and Tony Tseng", title = "Modeling and implementing software architecture with acme and {archJava}", journal = j-SIGPLAN, volume = "39", number = "10", pages = "156--157", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Carleton:2004:IDP, author = "Lawrence Carleton", title = "An invitation to the dance of progress", journal = j-SIGPLAN, volume = "39", number = "10", pages = "158--159", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Niculescu:2004:OOO, author = "Virginia Niculescu", title = "{OOLACA}: an object oriented library for abstract and computational algebra", journal = j-SIGPLAN, volume = "39", number = "10", pages = "160--161", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sobering:2004:PCV, author = "Geoff Sobering and Levi Cook and Steve Anderson", title = "Pseudo-classes: very simple and lightweight mockObject-like classes for unit-testing", journal = j-SIGPLAN, volume = "39", number = "10", pages = "162--163", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Paquet:2004:TFG, author = "Joey Paquet and Aihua Wu and Peter Grogono", title = "Towards a framework for the general intensional programming compiler in the {GIPSY}", journal = j-SIGPLAN, volume = "39", number = "10", pages = "164--165", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kulesza:2004:AOG, author = "Uir{\'a} Kulesza and Alessandro Garcia and Carlos Lucena", title = "An aspect-oriented generative approach", journal = j-SIGPLAN, volume = "39", number = "10", pages = "166--167", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kaundinya:2004:MEDb, author = "Murali Kaundinya and Ali Syed", title = "Modeling event driven applications with a specification language {(MEDASL)}", journal = j-SIGPLAN, volume = "39", number = "10", pages = "168--169", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hussain:2004:IQC, author = "Tauqeer Hussain and Shafay Shamail and Mian M. Awais", title = "Improving quality in conceptual modeling", journal = j-SIGPLAN, volume = "39", number = "10", pages = "170--171", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Buytaert:2004:BAJ, author = "Dries Buytaert and Andy Georges and Lieven Eeckhout and Koen {De Bosschere}", title = "Bottleneck analysis in {Java} applications using hardware performance monitors", journal = j-SIGPLAN, volume = "39", number = "10", pages = "172--173", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Abrahamsson:2004:MDA, author = "Pekka Abrahamsson and Antti Hanhineva and Hanna Hulkko and Tuomas Ihme and Juho J{\"a}{\"a}linoja and Mikko Korkala and Juha Koskela and Pekka Kyll{\"o}nen and Outi Salo", title = "{Mobile-D}: an agile approach for mobile application development", journal = j-SIGPLAN, volume = "39", number = "10", pages = "174--175", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Szep:2004:DDS, author = "A. Szep and R. Smeikal and M. Jandl and K. M. Goeschka", title = "Dependable distributed systems", journal = j-SIGPLAN, volume = "39", number = "10", pages = "176--177", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Khaled:2004:VLO, author = "Rilla Khaled and Anna Maria Luxton and James Noble and Leo Ferres and Judy Brown and Robert Biddle", title = "Visualisation for learning {OOP}, using {AOP} and eclipse", journal = j-SIGPLAN, volume = "39", number = "10", pages = "178--179", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lippert:2004:AAEb, author = "Martin Lippert", title = "{AJEER}: an aspect{J}-enabled eclipse runtime", journal = j-SIGPLAN, volume = "39", number = "10", pages = "180--181", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Vogler:2004:OMI, author = "Gabriel V{\"o}gler and Thomas Flor and Hajo Eichler and Matthias Kasprowicz", title = "An open model infrastructure for automotive software", journal = j-SIGPLAN, volume = "39", number = "10", pages = "182--183", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Phattarasukol:2004:DPI, author = "Somsak Phattarasukol and Daisy Sang", title = "Design pattern integrated tool", journal = j-SIGPLAN, volume = "39", number = "10", pages = "184--185", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Stephenson:2004:AMO, author = "Ben Stephenson and Wade Holst", title = "Advancements in multicode optimization", journal = j-SIGPLAN, volume = "39", number = "10", pages = "186--187", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lancia:2004:JPA, author = "Maurizio Lancia and Paola Garzenini and Roberto Puccinelli and Alessio Marchetti", title = "{J2EE} for the public administration: a success story", journal = j-SIGPLAN, volume = "39", number = "10", pages = "188--189", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Holst:2004:MEU, author = "Wade Holst", title = "{Meta}: extending and unifying languages", journal = j-SIGPLAN, volume = "39", number = "10", pages = "190--191", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Amir:2004:UPS, author = "Rafik Amir and Amir Zeid", title = "A {UML} profile for service oriented architectures", journal = j-SIGPLAN, volume = "39", number = "10", pages = "192--193", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chan:2004:ATA, author = "Hoi Chan and Trieu C. Chieu", title = "An approach and tools to automate externalization of application logic", journal = j-SIGPLAN, volume = "39", number = "10", pages = "194--195", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Skotiniotis:2004:CAC, author = "Therapon Skotiniotis and David H. Lorenz", title = "{Cona}: aspects for contracts and contracts for aspects", journal = j-SIGPLAN, volume = "39", number = "10", pages = "196--197", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Freeman:2004:CAT, author = "Russ Freeman and Phil Webb", title = "{$<$CTRL$>$} + {$<$ALT$>$} + {$<$TOOL PARADIGM SHIFT$>$}?", journal = j-SIGPLAN, volume = "39", number = "10", pages = "198--199", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Washizaki:2004:SSJ, author = "Hironori Washizaki and Yoshiaki Fukazawa", title = "A search system for {Java} programs by using extracted {JavaBeans} components", journal = j-SIGPLAN, volume = "39", number = "10", pages = "200--201", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cole:2004:DRA, author = "Leonardo Cole and Paulo Borba", title = "Deriving refactorings for {aspectJ}", journal = j-SIGPLAN, volume = "39", number = "10", pages = "202--203", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Pugh:2004:RRW, author = "Bill Pugh and Jaime Spacco", title = "{RUBiS} revisited: why {J2EE} benchmarking is hard", journal = j-SIGPLAN, volume = "39", number = "10", pages = "204--205", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ueda:2004:MMA, author = "Leo Kazuhiro Ueda and Fabio Kon", title = "Mobile musical agents: the andante project", journal = j-SIGPLAN, volume = "39", number = "10", pages = "206--207", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bettini:2004:CCM, author = "Lorenzo Bettini and Viviana Bono and Silvia Likavec", title = "A core calculus of mixins and incomplete objects", journal = j-SIGPLAN, volume = "39", number = "10", pages = "208--209", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cabral:2004:RCI, author = "Bruno Cabral and Paulo Marques and Lu{\'\i}s Silva", title = "{RAIL}: code instrumentation for {.NET}", journal = j-SIGPLAN, volume = "39", number = "10", pages = "210--211", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Boshernitsan:2004:IIS, author = "Marat Boshernitsan and Susan L. Graham", title = "{iXj}: interactive source-to-source transformations for {Java}", journal = j-SIGPLAN, volume = "39", number = "10", pages = "212--213", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Rheinheimer:2004:WAB, author = "Leticia R. Rheinheimer and Junior M. Martins and S{\'e}rgio Crespo C. S. Pinto", title = "{WSAgent}: an agent based on {Web} services to promote interoperability between heterogeneous systems in the health domain", journal = j-SIGPLAN, volume = "39", number = "10", pages = "214--215", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kojarski:2004:AFC, author = "Sergei Kojarski and David H. Lorenz", title = "{AOP} as a first class reflective mechanism", journal = j-SIGPLAN, volume = "39", number = "10", pages = "216--217", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gokhale:2004:CAC, author = "Aniruddha Gokhale and Krishnakumar Balasubramanian and Tao Lu", title = "{CoSMIC}: addressing crosscutting deployment and configuration concerns of distributed real-time and embedded systems", journal = j-SIGPLAN, volume = "39", number = "10", pages = "218--219", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hamza:2004:SSO, author = "Haitham S. Hamza", title = "{SODA}: a stability-oriented domain analysis method", journal = j-SIGPLAN, volume = "39", number = "10", pages = "220--221", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ivkovic:2004:MSP, author = "Igor Ivkovic and Kostas Kontogiannis", title = "Model synchronization as a problem of maximizing model dependencies", journal = j-SIGPLAN, volume = "39", number = "10", pages = "222--223", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Holland:2004:RCD, author = "Simon Holland", title = "Reflective composition: the declarative composition of roles to unify objects, roles, and aspects", journal = j-SIGPLAN, volume = "39", number = "10", pages = "224--225", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gestwicki:2004:JJI, author = "Paul V. Gestwicki and Bharat Jayaraman", title = "{JIVE}: {Java} interactive visualization environment", journal = j-SIGPLAN, volume = "39", number = "10", pages = "226--228", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{McBride:2004:SAE, author = "Matthew R. McBride", title = "The software architect: essence, intuition, and guiding principles", journal = j-SIGPLAN, volume = "39", number = "10", pages = "230--235", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Freeman:2004:MRO, author = "Steve Freeman and Tim Mackinnon and Nat Pryce and Joe Walnes", title = "Mock roles, objects", journal = j-SIGPLAN, volume = "39", number = "10", pages = "236--246", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Berenbach:2004:CUT, author = "Brian A. Berenbach", title = "Comparison of {UML} and text based requirements engineering", journal = j-SIGPLAN, volume = "39", number = "10", pages = "247--252", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Blotner:2004:PPP, author = "Joseph A. Blotner", title = "{PIP}: a product planning strategy for the whole family or\ldots{} how we became the brady bunch", journal = j-SIGPLAN, volume = "39", number = "10", pages = "253--259", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Namioka:2004:EI, author = "Aki Namioka and Cary Bran", title = "{eXtreme ISO} ?!?", journal = j-SIGPLAN, volume = "39", number = "10", pages = "260--263", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Antion:2004:WRM, author = "Daniel Antion", title = "Why reuse matters: {ANI}'s digital archive system", journal = j-SIGPLAN, volume = "39", number = "10", pages = "264--267", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Dvorak:2004:HRT, author = "Daniel L. Dvorak and William K. Reinholtz", title = "Hard real-time: {C++} versus {RTSJ}", journal = j-SIGPLAN, volume = "39", number = "10", pages = "268--274", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Murphy-Hill:2004:TEL, author = "Emerson R. Murphy-Hill and Andrew P. Black", title = "{Traits}: experience with a language feature", journal = j-SIGPLAN, volume = "39", number = "10", pages = "275--282", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zimmermann:2004:SGW, author = "Olaf Zimmermann and Sven Milinski and Michael Craes and Frank Oellermann", title = "Second generation {Web} services-oriented architecture in production in the finance industry", journal = j-SIGPLAN, volume = "39", number = "10", pages = "283--289", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kainz:2004:MSD, author = "Joachim F. Kainz", title = "Migrating to simpler distributed applications", journal = j-SIGPLAN, volume = "39", number = "10", pages = "290--293", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Reimer:2004:VSP, author = "Darrell Reimer and Edith Schonberg and Kavitha Srinivas and Harini Srinivasan and Julian Dolby and Aaron Kershenbaum and Larry Koved", title = "Validating structural properties of nested objects", journal = j-SIGPLAN, volume = "39", number = "10", pages = "294--304", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bodden:2004:LLR, author = "Eric Bodden", title = "A lightweight {LTL} runtime verification tool for {Java}", journal = j-SIGPLAN, volume = "39", number = "10", pages = "306--307", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Salimi:2004:NGF, author = "Hadi Salimi", title = "{NGMF}: a generic framework for constructing graph-based systems", journal = j-SIGPLAN, volume = "39", number = "10", pages = "308--309", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhang:2004:SSE, author = "Jing Zhang", title = "Supporting software evolution through model-driven program transformation", journal = j-SIGPLAN, volume = "39", number = "10", pages = "310--311", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Trofin:2004:FRRb, author = "Mircea Trofin", title = "A framework for removing redundant context management services in enterprise {JavaBeans} application servers", journal = j-SIGPLAN, volume = "39", number = "10", pages = "312--313", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Roychoudhury:2004:LIAb, author = "Suman Roychoudhury", title = "A language-independent approach to software maintenance using grammar adapters", journal = j-SIGPLAN, volume = "39", number = "10", pages = "314--315", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Parsons:2004:FDA, author = "Trevor Parsons", title = "A framework for detecting, assessing and visualizing performance antipatterns in component based systems", journal = j-SIGPLAN, volume = "39", number = "10", pages = "316--317", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Silaghi:2004:RDAb, author = "Raul Silaghi", title = "Refining designs along middleware-specific concern-dimensions at different {MDA}-levels of abstraction", journal = j-SIGPLAN, volume = "39", number = "10", pages = "318--319", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Krishna:2004:EDO, author = "Arvind S. Krishna", title = "Enhancing distributed object middleware qualities", journal = j-SIGPLAN, volume = "39", number = "10", pages = "320--321", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Xanthos:2004:IRC, author = "Spiros Xanthos", title = "Identification of reusable components within an object-oriented software system using algebraic graph theory", journal = j-SIGPLAN, volume = "39", number = "10", pages = "322--323", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Xie:2004:AIC, author = "Tao Xie", title = "Automatic identification of common and special object-oriented unit tests", journal = j-SIGPLAN, volume = "39", number = "10", pages = "324--325", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Keschenau:2004:REU, author = "Martin Keschenau", title = "Reverse engineering of {UML} specifications from {Java} programs", journal = j-SIGPLAN, volume = "39", number = "10", pages = "326--327", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Layman:2004:EII, author = "Lucas Layman", title = "Empirical investigation of the impact of extreme programming practices on software projects", journal = j-SIGPLAN, volume = "39", number = "10", pages = "328--329", month = oct, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Thu Dec 2 05:49:56 MST 2004", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hammond:2004:PTC, author = "Lance Hammond and Brian D. Carlstrom and Vicky Wong and Ben Hertzberg and Mike Chen and Christos Kozyrakis and Kunle Olukotun", title = "Programming with transactional coherence and consistency {(TCC)}", journal = j-SIGPLAN, volume = "39", number = "11", pages = "1--13", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Budiu:2004:SC, author = "Mihai Budiu and Girish Venkataramani and Tiberiu Chelcea and Seth Copen Goldstein", title = "Spatial computation", journal = j-SIGPLAN, volume = "39", number = "11", pages = "14--26", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ekanayake:2004:ULP, author = "Virantha Ekanayake and Clinton {Kelly IV} and Rajit Manohar", title = "An ultra low-power processor for sensor networks", journal = j-SIGPLAN, volume = "39", number = "11", pages = "27--36", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lumb:2004:DSD, author = "Christopher R. Lumb and Richard Golding", title = "{D-SPTF}: decentralized request distribution in brick-based storage systems", journal = j-SIGPLAN, volume = "39", number = "11", pages = "37--47", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Saito:2004:FBD, author = "Yasushi Saito and Svend Fr{\o}lund and Alistair Veitch and Arif Merchant and Susan Spence", title = "{FAB}: building distributed enterprise disk arrays from commodity components", journal = j-SIGPLAN, volume = "39", number = "11", pages = "48--58", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Denehy:2004:DSA, author = "Timothy E. Denehy and John Bent and Florentina I. Popovici and Andrea C. Arpaci-Dusseau and Remzi H. Arpaci-Dusseau", title = "Deconstructing storage arrays", journal = j-SIGPLAN, volume = "39", number = "11", pages = "59--71", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhuang:2004:HIE, author = "Xiaotong Zhuang and Tao Zhang and Santosh Pande", title = "{HIDE}: an infrastructure for efficiently protecting information leakage on the address bus", journal = j-SIGPLAN, volume = "39", number = "11", pages = "72--84", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Suh:2004:SPE, author = "G. Edward Suh and Jae W. Lee and David Zhang and Srinivas Devadas", title = "Secure program execution via dynamic information flow tracking", journal = j-SIGPLAN, volume = "39", number = "11", pages = "85--96", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Huh:2004:CDM, author = "Jaehyuk Huh and Jichuan Chang and Doug Burger and Gurindar S. Sohi", title = "Coherence decoupling: making use of incoherence", journal = j-SIGPLAN, volume = "39", number = "11", pages = "97--106", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Srinivasan:2004:CFP, author = "Srikanth T. Srinivasan and Ravi Rajwar and Haitham Akkary and Amit Gandhi and Mike Upton", title = "Continual flow pipelines", journal = j-SIGPLAN, volume = "39", number = "11", pages = "107--119", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Desikan:2004:SSR, author = "Rajagopalan Desikan and Simha Sethumadhavan and Doug Burger and Stephen W. Keckler", title = "Scalable selective re-execution for {EDGE} architectures", journal = j-SIGPLAN, volume = "39", number = "11", pages = "120--132", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Regehr:2004:HSA, author = "John Regehr and Alastair Reid", title = "{HOIST}: a system for automatically deriving static analyzers for embedded systems", journal = j-SIGPLAN, volume = "39", number = "11", pages = "133--143", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wang:2004:HTV, author = "Perry H. Wang and Jamison D. Collins and Hong Wang and Dongkeun Kim and Bill Greene and Kai-Ming Chan and Aamir B. Yunus and Terry Sych and Stephen F. Moore and John P. Shen", title = "Helper threads via virtual multithreading on an experimental {Itanium-2} processor-based platform", journal = j-SIGPLAN, volume = "39", number = "11", pages = "144--155", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hauswirth:2004:LOM, author = "Matthias Hauswirth and Trishul M. Chilimbi", title = "Low-overhead memory leak detection using adaptive statistical profiling", journal = j-SIGPLAN, volume = "39", number = "11", pages = "156--164", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Shen:2004:LPP, author = "Xipeng Shen and Yutao Zhong and Chen Ding", title = "Locality phase prediction", journal = j-SIGPLAN, volume = "39", number = "11", pages = "165--176", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhou:2004:DTP, author = "Pin Zhou and Vivek Pandey and Jagadeesan Sundaresan and Anand Raghuraman and Yuanyuan Zhou and Sanjeev Kumar", title = "Dynamic tracking of page miss ratio curve for memory management", journal = j-SIGPLAN, volume = "39", number = "11", pages = "177--188", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Rabbah:2004:COP, author = "Rodric M. Rabbah and Hariharan Sandanagobalane and Mongkol Ekpanyapong and Weng-Fai Wong", title = "Compiler orchestrated prefetching via speculation and predication", journal = j-SIGPLAN, volume = "39", number = "11", pages = "189--198", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cher:2004:SPM, author = "Chen-Yong Cher and Antony L. Hosking and T. N. Vijaykumar", title = "Software prefetching for mark-sweep garbage collection: hardware analysis and software redesign", journal = j-SIGPLAN, volume = "39", number = "11", pages = "199--210", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lowell:2004:DVM, author = "David E. Lowell and Yasushi Saito and Eileen J. Samberg", title = "Devirtualizable virtual machines enabling general, single-node, online maintenance", journal = j-SIGPLAN, volume = "39", number = "11", pages = "211--223", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Smolens:2004:FBS, author = "Jared C. Smolens and Brian T. Gold and Jangwoo Kim and Babak Falsafi and James C. Hoe and Andreas G. Nowatzyk", title = "Fingerprinting: bounding soft-error detection latency and bandwidth", journal = j-SIGPLAN, volume = "39", number = "11", pages = "224--234", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bronevetsky:2004:ALC, author = "Greg Bronevetsky and Daniel Marques and Keshav Pingali and Peter Szwed and Martin Schulz", title = "Application-level checkpointing for shared memory programs", journal = j-SIGPLAN, volume = "39", number = "11", pages = "235--247", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wu:2004:FOM, author = "Qiang Wu and Philo Juang and Margaret Martonosi and Douglas W. Clark", title = "Formal online methods for voltage\slash frequency control in multiple clock domain microprocessors", journal = j-SIGPLAN, volume = "39", number = "11", pages = "248--259", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gomaa:2004:HRL, author = "Mohamed Gomaa and Michael D. Powell and T. N. Vijaykumar", title = "Heat-and-run: leveraging {SMT} and {CMP} to manage power density through the operating system", journal = j-SIGPLAN, volume = "39", number = "11", pages = "260--270", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Li:2004:PDE, author = "Xiaodong Li and Zhenmin Li and Francis David and Pin Zhou and Yuanyuan Zhou and Sarita Adve and Sanjeev Kumar", title = "Performance directed energy management for main memory and disks", journal = j-SIGPLAN, volume = "39", number = "11", pages = "271--283", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2004:A, author = "Anonymous", title = "Architecture", journal = j-SIGPLAN, volume = "39", number = "11", pages = "??--??", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2004:MSA, author = "Anonymous", title = "Memory system analysis and optimization", journal = j-SIGPLAN, volume = "39", number = "11", pages = "??--??", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2004:NMA, author = "Anonymous", title = "New models and architectures", journal = j-SIGPLAN, volume = "39", number = "11", pages = "??--??", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2004:Pa, author = "Anonymous", title = "Potpourri", journal = j-SIGPLAN, volume = "39", number = "11", pages = "??--??", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2004:Pb, author = "Anonymous", title = "Power", journal = j-SIGPLAN, volume = "39", number = "11", pages = "??--??", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2004:R, author = "Anonymous", title = "Reliability", journal = j-SIGPLAN, volume = "39", number = "11", pages = "??--??", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2004:Sa, author = "Anonymous", title = "Storage", journal = j-SIGPLAN, volume = "39", number = "11", pages = "??--??", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2004:Sb, author = "Anonymous", title = "Security", journal = j-SIGPLAN, volume = "39", number = "11", pages = "??--??", month = nov, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2004:FAR, author = "Paul Frenger", title = "{Forth} and {AI} revisited: {BRAIN.FORTH}", journal = j-SIGPLAN, volume = "39", number = "12", pages = "11--16", month = dec, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:14 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cabana:2004:PPJ, author = "Brian Cabana and Suad Alagi{\'c} and Jeff Faulkner", title = "Parametric polymorphism for {Java}: is there any hope in sight?", journal = j-SIGPLAN, volume = "39", number = "12", pages = "22--31", month = dec, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:14 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hughes:2004:CSS, author = "Elliott Hughes", title = "Checking spelling in source code", journal = j-SIGPLAN, volume = "39", number = "12", pages = "32--38", month = dec, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:14 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Noble:2004:NNPb, author = "James Noble and Robert Biddle", title = "Notes on notes on postmodern programming", journal = j-SIGPLAN, volume = "39", number = "12", pages = "40--56", month = dec, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:14 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{West:2004:LLAb, author = "David West", title = "Looking for love (in all the wrong places)", journal = j-SIGPLAN, volume = "39", number = "12", pages = "57--63", month = dec, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:14 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Marick:2004:MWOb, author = "Brian Marick", title = "Methodology work is ontology work", journal = j-SIGPLAN, volume = "39", number = "12", pages = "64--72", month = dec, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:14 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Singh:2004:PPPb, author = "Munindar P. Singh and Amit K. Chopra and Nirmit Desai and Ashok U. Mallya", title = "Protocols for processes: programming in the large for open systems", journal = j-SIGPLAN, volume = "39", number = "12", pages = "73--83", month = dec, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:14 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Edwards:2004:ECPb, author = "Jonathan Edwards", title = "Example centric programming", journal = j-SIGPLAN, volume = "39", number = "12", pages = "84--91", month = dec, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:14 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hovemeyer:2004:FBEb, author = "David Hovemeyer and William Pugh", title = "Finding bugs is easy", journal = j-SIGPLAN, volume = "39", number = "12", pages = "92--106", month = dec, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:14 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhao:2004:GOPb, author = "Yinliang Zhao", title = "Granule-oriented programming", journal = j-SIGPLAN, volume = "39", number = "12", pages = "107--118", month = dec, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:14 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sheard:2004:LFb, author = "Tim Sheard", title = "Languages of the future", journal = j-SIGPLAN, volume = "39", number = "12", pages = "119--132", month = dec, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:14 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2004:FRb, author = "Anonymous", title = "{Forth} report", journal = j-SIGPLAN, volume = "39", number = "12", pages = "??--??", month = dec, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:14 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2004:OO, author = "Anonymous", title = "{OOPSLA} onward!", journal = j-SIGPLAN, volume = "39", number = "12", pages = "??--??", month = dec, year = "2004", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:14 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chakravarty:2005:ATC, author = "Manuel M. T. Chakravarty and Gabriele Keller and Simon Peyton Jones and Simon Marlow", title = "Associated types with class", journal = j-SIGPLAN, volume = "40", number = "1", pages = "1--13", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cobbe:2005:EAR, author = "Richard Cobbe and Matthias Felleisen", title = "Environmental acquisition revisited", journal = j-SIGPLAN, volume = "40", number = "1", pages = "14--25", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ancona:2005:PBC, author = "Davide Ancona and Ferruccio Damiani and Sophia Drossopoulou and Elena Zucca", title = "Polymorphic bytecode: compositional compilation for {Java}-like languages", journal = j-SIGPLAN, volume = "40", number = "1", pages = "26--37", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chen:2005:STI, author = "Juan Chen and David Tarditi", title = "A simple typed intermediate language for object-oriented languages", journal = j-SIGPLAN, volume = "40", number = "1", pages = "38--49", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hosoya:2005:PPX, author = "Haruo Hosoya and Alain Frisch and Giuseppe Castagna", title = "Parametric polymorphism for {XML}", journal = j-SIGPLAN, volume = "40", number = "1", pages = "50--62", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sumii:2005:BTA, author = "Eijiro Sumii and Benjamin C. Pierce", title = "A bisimulation for type abstraction and recursion", journal = j-SIGPLAN, volume = "40", number = "1", pages = "63--74", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Goguen:2005:SAE, author = "Healfdene Goguen", title = "A syntactic approach to eta equality in type theory", journal = j-SIGPLAN, volume = "40", number = "1", pages = "75--84", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ghica:2005:SGQ, author = "Dan R. Ghica", title = "Slot games: a quantitative model of computation", journal = j-SIGPLAN, volume = "40", number = "1", pages = "85--97", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Alur:2005:SIS, author = "Rajeev Alur and Pavol {\v{C}}ern{\'y} and P. Madhusudan and Wonhong Nam", title = "Synthesis of interface specifications for {Java} classes", journal = j-SIGPLAN, volume = "40", number = "1", pages = "98--109", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Flanagan:2005:DPO, author = "Cormac Flanagan and Patrice Godefroid", title = "Dynamic partial-order reduction for model checking software", journal = j-SIGPLAN, volume = "40", number = "1", pages = "110--121", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Grumberg:2005:PGU, author = "Orna Grumberg and Flavio Lerda and Ofer Strichman and Michael Theobald", title = "Proof-guided underapproximation-widening for multi-process systems", journal = j-SIGPLAN, volume = "40", number = "1", pages = "122--131", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Podelski:2005:TPA, author = "Andreas Podelski and Andrey Rybalchenko", title = "Transition predicate abstraction and fair termination", journal = j-SIGPLAN, volume = "40", number = "1", pages = "132--144", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gay:2005:CQP, author = "Simon J. Gay and Rajagopal Nagarajan", title = "Communicating quantum processes", journal = j-SIGPLAN, volume = "40", number = "1", pages = "145--157", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Li:2005:DPR, author = "Peng Li and Steve Zdancewic", title = "Downgrading policies and relaxed noninterference", journal = j-SIGPLAN, volume = "40", number = "1", pages = "158--170", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Park:2005:PLB, author = "Sungwoo Park and Frank Pfenning and Sebastian Thrun", title = "A probabilistic language based upon sampling functions", journal = j-SIGPLAN, volume = "40", number = "1", pages = "171--182", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Stoyle:2005:MMS, author = "Gareth Stoyle and Michael Hicks and Gavin Bierman and Peter Sewell and Iulian Neamtiu", title = "Mutatis mutandis: safe and predictable dynamic software updating", journal = j-SIGPLAN, volume = "40", number = "1", pages = "183--194", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Field:2005:TPM, author = "John Field and Carlos A. Varela", title = "{Transactors}: a programming model for maintaining globally consistent distributed state in unreliable environments", journal = j-SIGPLAN, volume = "40", number = "1", pages = "195--208", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bruni:2005:TFC, author = "Roberto Bruni and Hern{\'a}n Melgratti and Ugo Montanari", title = "Theoretical foundations for compensations in flow composition languages", journal = j-SIGPLAN, volume = "40", number = "1", pages = "209--220", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Neubauer:2005:SPM, author = "Matthias Neubauer and Peter Thiemann", title = "From sequential programs to multi-tier applications by program transformation", journal = j-SIGPLAN, volume = "40", number = "1", pages = "221--232", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Foster:2005:CBD, author = "J. Nathan Foster and Michael B. Greenwald and Jonathan T. Moore and Benjamin C. Pierce and Alan Schmitt", title = "Combinators for bi-directional tree transformations: a linguistic approach to the view update problem", journal = j-SIGPLAN, volume = "40", number = "1", pages = "233--246", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Parkinson:2005:SLA, author = "Matthew Parkinson and Gavin Bierman", title = "Separation logic and abstraction", journal = j-SIGPLAN, volume = "40", number = "1", pages = "247--258", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bornat:2005:PAS, author = "Richard Bornat and Cristiano Calcagno and Peter O'Hearn and Matthew Parkinson", title = "Permission accounting in separation logic", journal = j-SIGPLAN, volume = "40", number = "1", pages = "259--270", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Calcagno:2005:CLT, author = "Cristiano Calcagno and Philippa Gardner and Uri Zarfaty", title = "Context logic and tree update", journal = j-SIGPLAN, volume = "40", number = "1", pages = "271--282", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Boyland:2005:CEU, author = "John Tang Boyland and William Retert", title = "Connecting effects and uniqueness with adoption", journal = j-SIGPLAN, volume = "40", number = "1", pages = "283--295", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Rinetzky:2005:SPL, author = "Noam Rinetzky and J{\"o}rg Bauer and Thomas Reps and Mooly Sagiv and Reinhard Wilhelm", title = "A semantics for procedure local heaps and its abstractions", journal = j-SIGPLAN, volume = "40", number = "1", pages = "296--309", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hackett:2005:RBS, author = "Brian Hackett and Radu Rugina", title = "Region-based shape analysis with tracked locations", journal = j-SIGPLAN, volume = "40", number = "1", pages = "310--323", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gulwani:2005:PIA, author = "Sumit Gulwani and George C. Necula", title = "Precise interprocedural analysis using random interpretation", journal = j-SIGPLAN, volume = "40", number = "1", pages = "324--337", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gopan:2005:FNA, author = "Denis Gopan and Thomas Reps and Mooly Sagiv", title = "A framework for numeric analysis of array operations", journal = j-SIGPLAN, volume = "40", number = "1", pages = "338--350", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Xie:2005:SED, author = "Yichen Xie and Alex Aiken", title = "Scalable error detection using boolean satisfiability", journal = j-SIGPLAN, volume = "40", number = "1", pages = "351--363", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lerner:2005:ASP, author = "Sorin Lerner and Todd Millstein and Erika Rice and Craig Chambers", title = "Automated soundness proofs for dataflow analyses and transformations via local rules", journal = j-SIGPLAN, volume = "40", number = "1", pages = "364--377", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Manson:2005:JMM, author = "Jeremy Manson and William Pugh and Sarita V. Adve", title = "The {Java} memory model", journal = j-SIGPLAN, volume = "40", number = "1", pages = "378--391", month = jan, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2005:TIP, author = "Paul Frenger", title = "{Tina}: an improbable $3$-pin microcontroller", journal = j-SIGPLAN, volume = "40", number = "2", pages = "5--10", month = feb, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Badjonski:2005:AJA, author = "Mihal Badjonski and Mirjana Ivanovic and Zoran Budimac", title = "Adaptable {Java Agents (AJA)}: a tool for programming of multi-agent systems", journal = j-SIGPLAN, volume = "40", number = "2", pages = "17--26", month = feb, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Jiang:2005:ERO, author = "Shujuan Jiang and Baowen Xu", title = "An efficient and reliable object-oriented exception handling mechanism", journal = j-SIGPLAN, volume = "40", number = "2", pages = "27--32", month = feb, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Shaw:2005:LDO, author = "Sachin Shaw and Pawan Kumar", title = "Loop-dead optimization", journal = j-SIGPLAN, volume = "40", number = "2", pages = "33--40", month = feb, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zerzelidis:2005:RRT, author = "A. Zerzelidis and A. J. Wellings", title = "Requirements for a real-time {.NET} framework", journal = j-SIGPLAN, volume = "40", number = "2", pages = "41--50", month = feb, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2005:F, author = "Anonymous", title = "{Forth}", journal = j-SIGPLAN, volume = "40", number = "2", pages = "??--??", month = feb, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2005:TC, author = "Anonymous", title = "Technical correspondence", journal = j-SIGPLAN, volume = "40", number = "2", pages = "??--??", month = feb, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Proulx:2005:CPD, author = "Viera K. Proulx and Tanya Cashorali", title = "Calculator problem and the design recipe", journal = j-SIGPLAN, volume = "40", number = "3", pages = "4--11", month = mar, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Mueller:2005:ACM, author = "Conrad Mueller", title = "Axiomatic computational model", journal = j-SIGPLAN, volume = "40", number = "3", pages = "29--39", month = mar, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Xian:2005:MMR, author = "Yuqiang Xian and Guangze Xiong", title = "Minimizing memory requirement of real-time systems with concurrent garbage collector", journal = j-SIGPLAN, volume = "40", number = "3", pages = "40--48", month = mar, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Anonymous:2005:CP, author = "Anonymous", title = "Circular patterns", journal = j-SIGPLAN, volume = "40", number = "3", pages = "??--??", month = mar, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Apr 12 09:38:15 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2005:TFY, author = "Paul Frenger", title = "Tired by {Forth}?: you should be!", journal = j-SIGPLAN, volume = "40", number = "4", pages = "5--8", month = apr, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Saitou:2005:DAI, author = "Tetsuo Saitou and Mitsugu Suzuki and Tan Watanabe", title = "Dominance analysis of irreducible {CFGs} by reduction", journal = j-SIGPLAN, volume = "40", number = "4", pages = "10--19", month = apr, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Beloglavec:2005:ALM, author = "Simon Beloglavec and Marjan Heri{\v{c}}ko and Matja{\v{z}} B. Juri{\v{c}} and Ivan Rozman", title = "Analysis of the limitations of multiple client handling in a {Java} server environment", journal = j-SIGPLAN, volume = "40", number = "4", pages = "20--28", month = apr, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Crepinsek:2005:EGPa, author = "Matej {\v{C}}repin{\v{s}}ek and Marjan Mernik and Viljem {\v{Z}}umer", title = "Extracting grammar from programs: brute force approach", journal = j-SIGPLAN, volume = "40", number = "4", pages = "29--38", month = apr, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Crepinsek:2005:EGPb, author = "Matej {\v{C}}repin{\v{s}}ek and Marjan Mernik and Faizan Javed and Barrett R. Bryant and Alan Sprague", title = "Extracting grammar from programs: evolutionary approach", journal = j-SIGPLAN, volume = "40", number = "4", pages = "39--46", month = apr, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{vanderSpek:2005:SER, author = "P. van der Spek and N. Plat and C. Pronk", title = "Syntax error repair for a {Java}-based parser generator", journal = j-SIGPLAN, volume = "40", number = "4", pages = "47--50", month = apr, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bulic:2005:EWF, author = "Patricio Buli{\'c} and Veselko Gu{\v{s}}tin", title = "An efficient way to filter out data dependences with a sufficiently large distance between memory references", journal = j-SIGPLAN, volume = "40", number = "4", pages = "51--60", month = apr, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gluck:2005:RAP, author = "Robert Gl{\"u}ck and Masahiko Kawabe", title = "Revisiting an automatic program inverter for {Lisp}", journal = j-SIGPLAN, volume = "40", number = "5", pages = "8--17", month = may, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Mar 7 16:19:21 MST 2006", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kumar:2005:RMS, author = "Rajeev Kumar and Vikram Agrawal and Anil Mangolia", title = "Realization of multimethods in single dispatch object oriented languages", journal = j-SIGPLAN, volume = "40", number = "5", pages = "18--27", month = may, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Mar 7 16:19:21 MST 2006", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sunik:2005:SL, author = "Boris Sunik", title = "The specification language {$T$}", journal = j-SIGPLAN, volume = "40", number = "5", pages = "28--38", month = may, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Mar 7 16:19:21 MST 2006", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Derk:2005:TSM, author = "M. D. Derk", title = "Towards a simpler method of operational semantics for language definition", journal = j-SIGPLAN, volume = "40", number = "5", pages = "39--44", month = may, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Mar 7 16:19:21 MST 2006", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Barbosa:2005:RPT, author = "Manuel Barbosa and Alcino Cunha and Jorge Sousa Pinto", title = "Recursion patterns and time-analysis", journal = j-SIGPLAN, volume = "40", number = "5", pages = "45--54", month = may, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Mar 7 16:19:21 MST 2006", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Xu:2005:SVD, author = "Min Xu and Rastislav Bod{\'\i}k and Mark D. Hill", title = "A serializability violation detector for shared-memory server programs", journal = j-SIGPLAN, volume = "40", number = "6", pages = "1--14", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Liblit:2005:SSB, author = "Ben Liblit and Mayur Naik and Alice X. Zheng and Alex Aiken and Michael I. Jordan", title = "Scalable statistical bug isolation", journal = j-SIGPLAN, volume = "40", number = "6", pages = "15--26", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Elmas:2005:VVC, author = "Tayfun Elmas and Serdar Tasiran and Shaz Qadeer", title = "{VYRD}: {VerifYing} concurrent programs by runtime {Refinement}-violation {Detection}", journal = j-SIGPLAN, volume = "40", number = "6", pages = "27--37", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Jhala:2005:PS, author = "Ranjit Jhala and Rupak Majumdar", title = "Path slicing", journal = j-SIGPLAN, volume = "40", number = "6", pages = "38--47", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Mandelin:2005:JMH, author = "David Mandelin and Lin Xu and Rastislav Bod{\'\i}k and Doug Kimelman", title = "Jungloid mining: helping to navigate the {API} jungle", journal = j-SIGPLAN, volume = "40", number = "6", pages = "48--61", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Furr:2005:CTS, author = "Michael Furr and Jeffrey S. Foster", title = "Checking type safety of foreign function calls", journal = j-SIGPLAN, volume = "40", number = "6", pages = "62--72", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Siek:2005:ELS, author = "Jeremy Siek and Andrew Lumsdaine", title = "Essential language support for generic programming", journal = j-SIGPLAN, volume = "40", number = "6", pages = "73--84", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chin:2005:STQ, author = "Brian Chin and Shane Markstrum and Todd Millstein", title = "Semantic type qualifiers", journal = j-SIGPLAN, volume = "40", number = "6", pages = "85--95", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Krishnaswami:2005:PBO, author = "Neel Krishnaswami and Jonathan Aldrich", title = "Permission-based ownership: encapsulating state in higher-order typed languages", journal = j-SIGPLAN, volume = "40", number = "6", pages = "96--106", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Jimenez:2005:CPI, author = "Daniel A. Jim{\'e}nez", title = "Code placement for improving dynamic branch prediction accuracy", journal = j-SIGPLAN, volume = "40", number = "6", pages = "107--116", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Avgustinov:2005:OA, author = "Pavel Avgustinov and Aske Simon Christensen and Laurie Hendren and Sascha Kuzins and Jennifer Lhot{\'a}k and Ond{\v{r}}ej Lhot{\'a}k and Oege de Moor and Damien Sereni and Ganesh Sittampalam and Julian Tibble", title = "Optimising {aspectJ}", journal = j-SIGPLAN, volume = "40", number = "6", pages = "117--128", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lattner:2005:APA, author = "Chris Lattner and Vikram Adve", title = "Automatic pool allocation: improving performance by controlling data structure layout in the heap", journal = j-SIGPLAN, volume = "40", number = "6", pages = "129--142", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hertz:2005:GCP, author = "Matthew Hertz and Yi Feng and Emery D. Berger", title = "Garbage collection without paging", journal = j-SIGPLAN, volume = "40", number = "6", pages = "143--153", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Rong:2005:RAS, author = "Hongbo Rong and Alban Douillet and Guang R. Gao", title = "Register allocation for software pipelined multi-dimensional loops", journal = j-SIGPLAN, volume = "40", number = "6", pages = "154--167", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhuang:2005:DRA, author = "Xiaotong Zhuang and Santosh Pande", title = "Differential register allocation", journal = j-SIGPLAN, volume = "40", number = "6", pages = "168--179", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Aleta:2005:DFS, author = "Alex Alet{\`a} and Josep M. Codina and Antonio Gonz{\`a}lez and David Kaeli", title = "Demystifying on-the-fly spill code", journal = j-SIGPLAN, volume = "40", number = "6", pages = "180--189", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Luk:2005:PBC, author = "Chi-Keung Luk and Robert Cohn and Robert Muth and Harish Patil and Artur Klauser and Geoff Lowney and Steven Wallace and Vijay Janapa Reddi and Kim Hazelwood", title = "{Pin}: building customized program analysis tools with dynamic instrumentation", journal = j-SIGPLAN, volume = "40", number = "6", pages = "190--200", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ayers:2005:TFF, author = "Andrew Ayers and Richard Schooler and Chris Metcalf and Anant Agarwal and Junghwan Rhee and Emmett Witchel", title = "{TraceBack}: first fault diagnosis by reconstruction of distributed control flow", journal = j-SIGPLAN, volume = "40", number = "6", pages = "201--212", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Godefroid:2005:DDA, author = "Patrice Godefroid and Nils Klarlund and Koushik Sen", title = "{DART}: directed automated random testing", journal = j-SIGPLAN, volume = "40", number = "6", pages = "213--223", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chen:2005:SAH, author = "Michael K. Chen and Xiao Feng Li and Ruiqi Lian and Jason H. Lin and Lixia Liu and Tao Liu and Roy Ju", title = "{Shangri-La}: achieving high performance from compiled network applications while enabling ease of programming", journal = j-SIGPLAN, volume = "40", number = "6", pages = "224--236", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Dai:2005:APP, author = "Jinquan Dai and Bo Huang and Long Li and Luddy Harrison", title = "Automatically partitioning packet processing applications for pipelined architectures", journal = j-SIGPLAN, volume = "40", number = "6", pages = "237--248", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ni:2005:PAH, author = "Yang Ni and Ulrich Kremer and Adrian Stere and Liviu Iftode", title = "Programming ad-hoc networks of mobile and resource-constrained devices", journal = j-SIGPLAN, volume = "40", number = "6", pages = "249--260", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Boehm:2005:TCI, author = "Hans-J. Boehm", title = "Threads cannot be implemented as a library", journal = j-SIGPLAN, volume = "40", number = "6", pages = "261--268", month = jun, year = "2005", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1065010.1065042", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In many environments, multi-threaded code is written in a language that was originally designed without thread support (e.g. C), to which a library of threading primitives was subsequently added. There appears to be a general understanding that this is not the right approach. We provide specific arguments that a pure library approach, in which the compiler is designed independently of threading issues, cannot guarantee correctness of the resulting code. We first review why the approach almost works, and then examine some of the surprising behavior it may entail. We further illustrate that there are very simple cases in which a pure library-based approach seems incapable of expressing an efficient parallel algorithm. Our discussion takes place in the context of C with Pthreads, since it is commonly used, reasonably well specified, and does not attempt to ensure type-safety, which would entail even stronger constraints. The issues we raise are not specific to that context.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", remark = "This is an important paper: it shows that current languages cannot be reliable for threaded programming without language changes that prevent compiler optimizations from foiling synchronization methods and memory barriers. The article's author and others are collaborating on a proposal for changes to the C++ language to remedy this, but that still leaves threads unreliable in C code, even with POSIX threads.", } @Article{Quinones:2005:MCI, author = "Carlos Garc{\'\i}a Qui{\~n}ones and Carlos Madriles and Jes{\'u}s S{\'a}nchez and Pedro Marcuello and Antonio Gonz{\'a}lez and Dean M. Tullsen", title = "{Mitosis} compiler: an infrastructure for speculative threading based on pre-computation slices", journal = j-SIGPLAN, volume = "40", number = "6", pages = "269--279", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Solar-Lezama:2005:PSB, author = "Armando Solar-Lezama and Rodric Rabbah and Rastislav Bod{\'\i}k and Kemal Ebcio{\u{g}}lu", title = "Programming by sketching for bit-streaming programs", journal = j-SIGPLAN, volume = "40", number = "6", pages = "281--294", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fisher:2005:PDS, author = "Kathleen Fisher and Robert Gruber", title = "{PADS}: a domain-specific language for processing ad hoc data", journal = j-SIGPLAN, volume = "40", number = "6", pages = "295--304", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bauer:2005:CSP, author = "Lujo Bauer and Jay Ligatti and David Walker", title = "Composing security policies with polymer", journal = j-SIGPLAN, volume = "40", number = "6", pages = "305--314", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Franchetti:2005:FLM, author = "Franz Franchetti and Yevgen Voronenko and Markus P{\"u}schel", title = "Formal loop merging for signal transforms", journal = j-SIGPLAN, volume = "40", number = "6", pages = "315--326", month = jun, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 21 17:04:05 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Xu:2005:EEP, author = "Ruibin Xu and Dakai Zhu and Cosmin Rusu and Rami Melhem and Daniel Moss{\'e}", title = "Energy-efficient policies for embedded clusters", journal = j-SIGPLAN, volume = "40", number = "7", pages = "1--10", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhang:2005:EAM, author = "Kun Zhang and Santosh Pande", title = "Efficient application migration under compiler guidance", journal = j-SIGPLAN, volume = "40", number = "7", pages = "10--20", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Henzinger:2005:CCG, author = "Thomas A. Henzinger and Christoph M. Kirsch and Slobodan Matic", title = "Composable code generation for distributed giotto", journal = j-SIGPLAN, volume = "40", number = "7", pages = "21--30", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Farcas:2005:TDR, author = "Emilia Farcas and Claudiu Farcas and Wolfgang Pree and Josef Templ", title = "Transparent distribution of real-time components based on logical execution time", journal = j-SIGPLAN, volume = "40", number = "7", pages = "31--39", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gay:2005:SDP, author = "David Gay and Phil Levis and David Culler", title = "Software design patterns for {TinyOS}", journal = j-SIGPLAN, volume = "40", number = "7", pages = "40--49", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Regehr:2005:PIO, author = "John Regehr and Usit Duongsaa", title = "Preventing interrupt overload", journal = j-SIGPLAN, volume = "40", number = "7", pages = "50--58", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Titzer:2005:NPI, author = "Ben L. Titzer and Jens Palsberg", title = "Nonintrusive precision instrumentation of microcontroller software", journal = j-SIGPLAN, volume = "40", number = "7", pages = "59--68", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cooper:2005:AAC, author = "Keith D. Cooper and Alexander Grosul and Timothy J. Harvey and Steven Reeves and Devika Subramanian and Linda Torczon and Todd Waterman", title = "{ACME}: adaptive compilation made efficient", journal = j-SIGPLAN, volume = "40", number = "7", pages = "69--77", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Franke:2005:PSL, author = "Bj{\"o}rn Franke and Michael O'Boyle and John Thomson and Grigori Fursin", title = "Probabilistic source-level optimisation of embedded programs", journal = j-SIGPLAN, volume = "40", number = "7", pages = "78--86", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Oi:2005:DLV, author = "Hitoshi Oi", title = "On the design of the local variable cache in a hardware translation-based {Java Virtual Machine}", journal = j-SIGPLAN, volume = "40", number = "7", pages = "87--94", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chanet:2005:SWC, author = "Dominique Chanet and Bjorn {De Sutter} and Bruno {De Bus} and Ludo {Van Put} and Koen {De Bosschere}", title = "System-wide compaction and specialization of the {Linux} kernel", journal = j-SIGPLAN, volume = "40", number = "7", pages = "95--104", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Brisk:2005:DCT, author = "Philip Brisk and Jamie Macbeth and Ani Nahapetian and Majid Sarrafzadeh", title = "A dictionary construction technique for code compression systems with echo instructions", journal = j-SIGPLAN, volume = "40", number = "7", pages = "105--114", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sermulins:2005:CAO, author = "Janis Sermulins and William Thies and Rodric Rabbah and Saman Amarasinghe", title = "Cache aware optimization of stream programs", journal = j-SIGPLAN, volume = "40", number = "7", pages = "115--126", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sassone:2005:SSS, author = "Peter G. Sassone and D. Scott Wills and Gabriel H. Loh", title = "Static strands: safely collapsing dependence chains for increasing embedded power efficiency", journal = j-SIGPLAN, volume = "40", number = "7", pages = "127--136", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{So:2005:CSP, author = "Won So and Alexander G. Dean", title = "Complementing software pipelining with software thread integration", journal = j-SIGPLAN, volume = "40", number = "7", pages = "137--146", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kudriavtsev:2005:GPS, author = "Alexei Kudriavtsev and Peter Kogge", title = "Generation of permutations for {SIMD} processors", journal = j-SIGPLAN, volume = "40", number = "7", pages = "147--156", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Staschulat:2005:SPC, author = "Jan Staschulat and Rolf Ernst", title = "Scalable precision cache analysis for preemptive scheduling", journal = j-SIGPLAN, volume = "40", number = "7", pages = "157--165", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Xu:2005:SBC, author = "Rong Xu and Zhiyuan Li", title = "A sample-based cache mapping scheme", journal = j-SIGPLAN, volume = "40", number = "7", pages = "166--174", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Tan:2005:WAU, author = "Yudong Tan and Vincent J. {Mooney III}", title = "{WCRT} analysis for a uniprocessor with a unified prioritized cache", journal = j-SIGPLAN, volume = "40", number = "7", pages = "175--182", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bacon:2005:SGR, author = "David F. Bacon and Perry Cheng and David Grove and Martin T. Vechev", title = "{Syncopation}: generational real-time garbage collection in the metronome", journal = j-SIGPLAN, volume = "40", number = "7", pages = "183--192", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Mann:2005:SDA, author = "Tobias Mann and Morgan Deters and Rob LeGrand and Ron K. Cytron", title = "Static determination of allocation rates to support real-time garbage collection", journal = j-SIGPLAN, volume = "40", number = "7", pages = "193--202", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zhu:2005:FES, author = "Yifan Zhu and Frank Mueller", title = "Feedback {EDF} scheduling exploiting hardware-assisted asynchronous dynamic voltage scaling", journal = j-SIGPLAN, volume = "40", number = "7", pages = "203--212", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kandemir:2005:CME, author = "Mahmut Kandemir and Guangyu Chen and Ismail Kadayif", title = "Compiling for memory emergency", journal = j-SIGPLAN, volume = "40", number = "7", pages = "213--221", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Defoe:2005:UBD, author = "Delvin C. Defoe and Sharath R. Cholleti and Ron K. Cytron", title = "Upper bound for defragmenting buddy heaps", journal = j-SIGPLAN, volume = "40", number = "7", pages = "222--229", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Griffin:2005:EEG, author = "Paul Griffin and Witawas Srisa-an and J. Morris Chang", title = "An energy efficient garbage collector for {Java} embedded devices", journal = j-SIGPLAN, volume = "40", number = "7", pages = "230--238", month = jul, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2005:FSF, author = "Paul Frenger", title = "{Forth} sorts fruit down under", journal = j-SIGPLAN, volume = "40", number = "8", pages = "7--10", month = aug, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Furlong:2005:HSA, author = "Jeff Furlong and Atanas Radenski", title = "Handling the subclassing anomaly with {Object Teams}", journal = j-SIGPLAN, volume = "40", number = "8", pages = "12--18", month = aug, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Greiner:2005:ZTE, author = "Saso Greiner and Damijan Rebernak and Janez Brest and Viljem Zumer", title = "{Z0} --- a tiny experimental language", journal = j-SIGPLAN, volume = "40", number = "8", pages = "19--28", month = aug, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Draheim:2005:GPC, author = "Dirk Draheim and Christof Lutteroth and Gerald Weber", title = "Generative programming for {C\#}", journal = j-SIGPLAN, volume = "40", number = "8", pages = "29--33", month = aug, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Jiang:2005:AAT, author = "Shujuan Jiang and Yongping Zhang and Dashun Yan and Yuanpeng Jiang", title = "An approach to automatic testing exception handling", journal = j-SIGPLAN, volume = "40", number = "8", pages = "34--39", month = aug, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 5 07:55:13 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Pottier:2005:MTI, author = "Fran{\c{c}}ois Pottier", title = "From {ML} type inference to stratified type inference", journal = j-SIGPLAN, volume = "40", number = "9", pages = "1--1", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Shivers:2005:ALS, author = "Olin Shivers", title = "The anatomy of a loop: a story of scope and control", journal = j-SIGPLAN, volume = "40", number = "9", pages = "2--14", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sewell:2005:AHL, author = "Peter Sewell and James J. Leifer and Keith Wansbrough and Francesco Zappa Nardelli and Mair Allen-Williams and Pierre Habouzit and Viktor Vafeiadis", title = "{Acute}: high-level programming language design for distributed computation", journal = j-SIGPLAN, volume = "40", number = "9", pages = "15--26", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ramsey:2005:ELS, author = "Norman Ramsey and Kathleen Fisher and Paul Govereau", title = "An expressive language of signatures", journal = j-SIGPLAN, volume = "40", number = "9", pages = "27--40", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Dreyer:2005:RTG, author = "Derek Dreyer", title = "Recursive type generativity", journal = j-SIGPLAN, volume = "40", number = "9", pages = "41--53", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Nilsson:2005:DOF, author = "Henrik Nilsson", title = "Dynamic optimization for functional reactive programming using generalized algebraic data types", journal = j-SIGPLAN, volume = "40", number = "9", pages = "54--65", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chen:2005:CPT, author = "Chiyan Chen and Hongwei Xi", title = "Combining programming with theorem proving", journal = j-SIGPLAN, volume = "40", number = "9", pages = "66--77", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ahmed:2005:SIM, author = "Amal Ahmed and Matthew Fluet and Greg Morrisett", title = "A step-indexed model of substructural state", journal = j-SIGPLAN, volume = "40", number = "9", pages = "78--91", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ringenburg:2005:AFC, author = "Michael F. Ringenburg and Dan Grossman", title = "{AtomCaml}: first-class atomicity via rollback", journal = j-SIGPLAN, volume = "40", number = "9", pages = "92--104", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Terauchi:2005:WSE, author = "Tachio Terauchi and Alex Aiken", title = "Witnessing side-effects", journal = j-SIGPLAN, volume = "40", number = "9", pages = "105--115", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hallgren:2005:PAO, author = "Thomas Hallgren and Mark P. Jones and Rebekah Leslie and Andrew Tolmach", title = "A principled approach to operating system construction in {Haskell}", journal = j-SIGPLAN, volume = "40", number = "9", pages = "116--128", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Eich:2005:JTY, author = "Brendan Eich", title = "{JavaScript} at ten years", journal = j-SIGPLAN, volume = "40", number = "9", pages = "129--129", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Remy:2005:SPT, author = "Didier R{\'e}my", title = "Simple, partial type-inference for {System F} based on type-containment", journal = j-SIGPLAN, volume = "40", number = "9", pages = "130--143", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Leijen:2005:QTM, author = "Daan Leijen and Andres L{\"o}h", title = "Qualified types for {MLF}", journal = j-SIGPLAN, volume = "40", number = "9", pages = "144--155", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Makholm:2005:TIP, author = "Henning Makholm and J. B. Wells", title = "Type inference, principal typings, and let-polymorphism for first-class mixin modules", journal = j-SIGPLAN, volume = "40", number = "9", pages = "156--167", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Diatchki:2005:HLV, author = "Iavor S. Diatchki and Mark P. Jones and Rebekah Leslie", title = "High-level views on low-level representations", journal = j-SIGPLAN, volume = "40", number = "9", pages = "168--179", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cheney:2005:SYN, author = "James Cheney", title = "Scrap your nameplate: (functional pearl)", journal = j-SIGPLAN, volume = "40", number = "9", pages = "180--191", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kiselyov:2005:BIT, author = "Oleg Kiselyov and Chung-chieh Shan and Daniel P. Friedman and Amr Sabry", title = "Backtracking, interleaving, and terminating monad transformers: (functional pearl)", journal = j-SIGPLAN, volume = "40", number = "9", pages = "192--203", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lammel:2005:SYB, author = "Ralf L{\"a}mmel and Simon Peyton Jones", title = "Scrap your boilerplate with class: extensible generic functions", journal = j-SIGPLAN, volume = "40", number = "9", pages = "204--215", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Pettyjohn:2005:CGS, author = "Greg Pettyjohn and John Clements and Joe Marshall and Shriram Krishnamurthi and Matthias Felleisen", title = "Continuations from generalized stack inspection", journal = j-SIGPLAN, volume = "40", number = "9", pages = "216--227", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ramos:2005:FND, author = "J. Guadalupe Ramos and Josep Silva and Germ{\'a}n Vidal", title = "Fast narrowing-driven partial evaluation for inductively sequential programs", journal = j-SIGPLAN, volume = "40", number = "9", pages = "228--239", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Harper:2005:MMT, author = "Robert Harper", title = "Mechanizing the meta-theory of programming languages", journal = j-SIGPLAN, volume = "40", number = "9", pages = "240--240", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chakravarty:2005:ATS, author = "Manuel M. T. Chakravarty and Gabriele Keller and Simon Peyton Jones", title = "Associated type synonyms", journal = j-SIGPLAN, volume = "40", number = "9", pages = "241--253", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Feng:2005:MVC, author = "Xinyu Feng and Zhong Shao", title = "Modular verification of concurrent assembly code with dynamic thread creation and termination", journal = j-SIGPLAN, volume = "40", number = "9", pages = "254--267", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Westbrook:2005:LBA, author = "Edwin Westbrook and Aaron Stump and Ian Wehrman", title = "A language-based approach to functionally correct imperative programming", journal = j-SIGPLAN, volume = "40", number = "9", pages = "268--279", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Berger:2005:LAA, author = "Martin Berger and Kohei Honda and Nobuko Yoshida", title = "A logical analysis of aliasing in imperative higher-order functions", journal = j-SIGPLAN, volume = "40", number = "9", pages = "280--293", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ghani:2005:MAG, author = "Neil Ghani and Patricia Johann and Tarmo Uustalu and Varmo Vene", title = "Monadic augment and generalised short cut fusion", journal = j-SIGPLAN, volume = "40", number = "9", pages = "294--305", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Dantas:2005:PPA, author = "Daniel S. Dantas and David Walker and Geoffrey Washburn and Stephanie Weirich", title = "{PolyAML}: a polymorphic aspect-oriented functional programming language", journal = j-SIGPLAN, volume = "40", number = "9", pages = "306--319", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Masuhara:2005:ACA, author = "Hidehiko Masuhara and Hideaki Tatsuzawa and Akinori Yonezawa", title = "Aspectual {Caml}: an aspect-oriented functional language", journal = j-SIGPLAN, volume = "40", number = "9", pages = "320--330", month = sep, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 7 15:09:34 MDT 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Jarvi:2005:ATC, author = "Jaakko J{\"a}rvi and Jeremiah Willcock and Andrew Lumsdaine", title = "Associated types and constraint propagation for mainstream object-oriented generics", journal = j-SIGPLAN, volume = "40", number = "10", pages = "1--19", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kennedy:2005:GAD, author = "Andrew Kennedy and Claudio V. Russo", title = "Generalized algebraic data types and object-oriented programming", journal = j-SIGPLAN, volume = "40", number = "10", pages = "21--40", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Odersky:2005:SCA, author = "Martin Odersky and Matthias Zenger", title = "Scalable component abstractions", journal = j-SIGPLAN, volume = "40", number = "10", pages = "41--57", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sridharan:2005:DDP, author = "Manu Sridharan and Denis Gopan and Lexin Shan and Rastislav Bod{\'\i}k", title = "Demand-driven points-to analysis for {Java}", journal = j-SIGPLAN, volume = "40", number = "10", pages = "59--76", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Nanda:2005:DOT, author = "Mangala Gowri Nanda and Christian Grothoff and Satish Chandra", title = "Deriving object typestates in the presence of inter-object references", journal = j-SIGPLAN, volume = "40", number = "10", pages = "77--96", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gil:2005:MPJ, author = "Joseph (Yossi) Gil and Itay Maman", title = "Micro patterns in {Java} code", journal = j-SIGPLAN, volume = "40", number = "10", pages = "97--116", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Diaz-Pace:2005:AAS, author = "J. Andr{\'e}s D{\'\i}az-Pace and Marcelo R. Campo", title = "{ArchMatE}: from architectural styles to object-oriented models through exploratory tool support", journal = j-SIGPLAN, volume = "40", number = "10", pages = "117--132", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zdun:2005:MAP, author = "Uwe Zdun and Paris Avgeriou", title = "Modeling architectural patterns using architectural primitives", journal = j-SIGPLAN, volume = "40", number = "10", pages = "133--146", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Oancea:2005:PPS, author = "Cosmin E. Oancea and Stephen M. Watt", title = "Parametric polymorphism for software component architectures", journal = j-SIGPLAN, volume = "40", number = "10", pages = "147--166", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sangal:2005:UDM, author = "Neeraj Sangal and Ev Jordan and Vineet Sinha and Daniel Jackson", title = "Using dependency models to manage complex software architecture", journal = j-SIGPLAN, volume = "40", number = "10", pages = "167--176", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bergel:2005:CJC, author = "Alexandre Bergel and St{\'e}phane Ducasse and Oscar Nierstrasz", title = "{Classbox\slash J}: controlling the scope of change in {Java}", journal = j-SIGPLAN, volume = "40", number = "10", pages = "177--189", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Liu:2005:IBP, author = "Yu David Liu and Scott F. Smith", title = "Interaction-based programming with classages", journal = j-SIGPLAN, volume = "40", number = "10", pages = "191--209", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Tschantz:2005:JAR, author = "Matthew S. Tschantz and Michael D. Ernst", title = "{Javari}: adding reference immutability to {Java}", journal = j-SIGPLAN, volume = "40", number = "10", pages = "211--230", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gray:2005:FGI, author = "Kathryn E. Gray and Robert Bruce Findler and Matthew Flatt", title = "Fine-grained interoperability through mirrors and contracts", journal = j-SIGPLAN, volume = "40", number = "10", pages = "231--245", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kojarski:2005:PAD, author = "Sergei Kojarski and David H. Lorenz", title = "Pluggable {AOP}: designing aspect mechanisms for third-party composition", journal = j-SIGPLAN, volume = "40", number = "10", pages = "247--263", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Balaban:2005:RSC, author = "Ittai Balaban and Frank Tip and Robert Fuhrer", title = "Refactoring support for class library migration", journal = j-SIGPLAN, volume = "40", number = "10", pages = "265--279", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hauswirth:2005:AVP, author = "Matthias Hauswirth and Amer Diwan and Peter F. Sweeney and Michael C. Mozer", title = "Automating vertical profiling", journal = j-SIGPLAN, volume = "40", number = "10", pages = "281--296", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Arnold:2005:IVM, author = "Matthew Arnold and Adam Welc and V. T. Rajan", title = "Improving virtual machine performance using a cross-run profile repository", journal = j-SIGPLAN, volume = "40", number = "10", pages = "297--311", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hertz:2005:QPG, author = "Matthew Hertz and Emery D. Berger", title = "Quantifying the performance of garbage collection vs. explicit memory management", journal = j-SIGPLAN, volume = "40", number = "10", pages = "313--326", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Shankar:2005:RSO, author = "Ajeet Shankar and S. Subramanya Sastry and Rastislav Bod{\'\i}k and James E. Smith", title = "Runtime specialization with optimistic heap analysis", journal = j-SIGPLAN, volume = "40", number = "10", pages = "327--343", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Allan:2005:ATM, author = "Chris Allan and Pavel Avgustinov and Aske Simon Christensen and Laurie Hendren and Sascha Kuzins and Ond{\v{r}}ej Lhot{\'a}k and Oege de Moor and Damien Sereni and Ganesh Sittampalam and Julian Tibble", title = "Adding trace matching with free variables to {AspectJ}", journal = j-SIGPLAN, volume = "40", number = "10", pages = "345--364", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Martin:2005:FAE, author = "Michael Martin and Benjamin Livshits and Monica S. Lam", title = "Finding application errors and security flaws using {PQL}: a program query language", journal = j-SIGPLAN, volume = "40", number = "10", pages = "365--383", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Goldsmith:2005:RQP, author = "Simon Goldsmith and Robert O'Callahan and Alex Aiken", title = "Relational queries over program traces", journal = j-SIGPLAN, volume = "40", number = "10", pages = "385--402", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ahern:2005:FJR, author = "Alexander Ahern and Nobuko Yoshida", title = "Formalising {Java RMI} with explicit code mobility", journal = j-SIGPLAN, volume = "40", number = "10", pages = "403--422", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gregor:2005:LSG, author = "Douglas Gregor and Andrew Lumsdaine", title = "Lifting sequential graph algorithms for distributed-memory parallel computation", journal = j-SIGPLAN, volume = "40", number = "10", pages = "423--437", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Welc:2005:SFJ, author = "Adam Welc and Suresh Jagannathan and Antony Hosking", title = "Safe futures for {Java}", journal = j-SIGPLAN, volume = "40", number = "10", pages = "439--453", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{vanDooren:2005:CRC, author = "Marko van Dooren and Eric Steegmans", title = "Combining the robustness of checked exceptions with the flexibility of unchecked exceptions using anchored exception declarations", journal = j-SIGPLAN, volume = "40", number = "10", pages = "455--471", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Liu:2005:IAO, author = "Yanhong A. Liu and Scott D. Stoller and Michael Gorbovitski and Tom Rothamel and Yanni Ellen Liu", title = "Incrementalization across object abstraction", journal = j-SIGPLAN, volume = "40", number = "10", pages = "473--486", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cunei:2005:PFD, author = "Antonio Cunei and Jan Vitek", title = "{PolyD}: a flexible dispatching framework", journal = j-SIGPLAN, volume = "40", number = "10", pages = "487--503", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Edwards:2005:SUS, author = "Jonathan Edwards", title = "{Subtext}: uncovering the simplicity of programming", journal = j-SIGPLAN, volume = "40", number = "10", pages = "505--518", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Charles:2005:XOO, author = "Philippe Charles and Christian Grothoff and Vijay Saraswat and Christopher Donawa and Allan Kielstra and Kemal Ebcioglu and Christoph von Praun and Vivek Sarkar", title = "{X10}: an object-oriented approach to non-uniform cluster computing", journal = j-SIGPLAN, volume = "40", number = "10", pages = "519--538", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Vanderburg:2005:SMA, author = "Glenn Vanderburg", title = "A simple model of agile software processes --- or --- extreme programming annealed", journal = j-SIGPLAN, volume = "40", number = "10", pages = "539--545", month = oct, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Dec 13 08:30:58 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2005:FRT, author = "Paul Frenger", title = "Forth report: Ten years of {Forth} in {ACM Sigplan Notices}: part 1", journal = j-SIGPLAN, volume = "40", number = "11", pages = "4--16", month = nov, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 28 05:41:54 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Behera:2005:IAL, author = "Chandan Kumar Behera and Pawan Kumar", title = "An improved algorithm for loop dead optimization", journal = j-SIGPLAN, volume = "40", number = "11", pages = "18--28", month = nov, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 28 05:41:54 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Li:2005:MBC, author = "Bixin Li and Ying Zhou and Yancheng Wang and Junhui Mo", title = "Matrix-based component dependence representation and its applications in software quality assurance", journal = j-SIGPLAN, volume = "40", number = "11", pages = "29--36", month = nov, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 28 05:41:54 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Siegfried:2005:ESL, author = "Robert M. Siegfried and Denis Diakoniarakis and Kenneth G. Franqueiro and Amol Jain", title = "Extending a scripting language for {Visual Basic} forms", journal = j-SIGPLAN, volume = "40", number = "11", pages = "37--40", month = nov, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 28 05:41:54 MST 2005", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Savidis:2005:MDI, author = "A. Savidis", title = "More dynamic imperative languages", journal = j-SIGPLAN, volume = "40", number = "12", pages = "6--13", month = dec, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Mar 7 16:19:22 MST 2006", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kumar:2005:PCO, author = "Rajeev Kumar and Amit Gupta and B. S. Pankaj and Mrinmoy Ghosh and P. P. Chakrabarti", title = "Post-compilation optimization for multiple gains with pattern matching", journal = j-SIGPLAN, volume = "40", number = "12", pages = "14--23", month = dec, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Mar 7 16:19:22 MST 2006", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Loka:2005:HCC, author = "Raghavendra Rao Loka", title = "Hybrid compilation: a case study", journal = j-SIGPLAN, volume = "40", number = "12", pages = "24--27", month = dec, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Mar 7 16:19:22 MST 2006", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sierra:2005:IDO, author = "Jos{\'e} L. Sierra and Antonio Navarro and Baltasar Fern{\'a}ndez-Manj{\'o}n and Alfredo Fern{\'a}ndez-Valmayor", title = "Incremental definition and operationalization of domain-specific markup languages in {ADDS}", journal = j-SIGPLAN, volume = "40", number = "12", pages = "28--37", month = dec, year = "2005", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Mar 7 16:19:22 MST 2006", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{McKinna:2006:WDT, author = "James McKinna", title = "Why dependent types matter", journal = j-SIGPLAN, volume = "41", number = "1", pages = "1--1", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111038", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Language designers have in recent years proposed a wealth of richer type systems for programming which seek to extend the range of statically enforced guarantees on data and code. Most such proposals have been evolutionary extensions of ML or Haskell, offering programmers a balanced compromise between expressive strength and existing well-understood technology. Typically they revolve around type- or kind-indexed types such as GADTs, supported by limited equality reasoning at the type-checking level, thus separating the dynamic behaviour of programs from the (simpler) static behaviour of indexing information occurring in their types. I want to argue in this talk for a more radical departure from such practice by examining full spectrum type dependency, lifting such restrictions on the data upon which types may depend. Conor McBride and I designed the language EPIGRAM for experiments in programming with inductive families of data (of which GADTs are a special case). Using it for illustration, I will explore some of the possibilities and challenges afforded by full spectrum type dependency at the static and dynamic level:\par types directly support modelling complex invariants in terms of other data (rather than their types), with a Curry--Howard flavour of data-as-evidence; such complexity is on a 'pay-as-you-go' basis, while keeping type annotations and other syntactic overheads to a minimum;\par data decomposition steps, e.g. case analysis, furnish more informative interactions between types and values during typechecking; such steps may moreover be abstractly specified by their types, and thus user definable; this supports a style of programming embracing 'learning by testing', views, and Burstall's 'hand simulation plus a little induction';\par the absence of a rigid phase distinction need not lead to type-passing or excessive run-time overhead; effectful computation, in particular partiality, can be incorporated via variations on existing ideas such as monads.\par This talk is based on joint work with Conor McBride, Edwin Brady and Thorsten Altenkirch.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fisher:2006:NDD, author = "Kathleen Fisher and Yitzhak Mandelbaum and David Walker", title = "The next 700 data description languages", journal = j-SIGPLAN, volume = "41", number = "1", pages = "2--15", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111039", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In the spirit of Landin, we present a calculus of dependent types to serve as the semantic foundation for a family of languages called data description languages. Such languages, which include pads, datascript, and packet types, are designed to facilitate programming with ad hoc data, i.e., data not in well-behaved relational or XML formats. In the calculus, each type describes the physical layout and semantic properties of a data source. In the semantics, we interpret types simultaneously as the in-memory representation of the data described and as parsers for the data source. The parsing functions are robust, automatically detecting and recording errors in the data stream without halting parsing. We show the parsers are type-correct, returning data whose type matches the simple-type interpretation of the specification. We also prove the parsers are error-correct,' accurately reporting the number of physical and semantic errors that occur in the returned data. We use the calculus to describe the features of various data description languages, and we discuss how we have used the calculus to improve PADS.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "data description language; dependent types; domain-specific languages", } @Article{Zhang:2006:HMD, author = "Chengliang Zhang and Chen Ding and Mitsunori Ogihara and Yutao Zhong and Youfeng Wu", title = "A hierarchical model of data locality", journal = j-SIGPLAN, volume = "41", number = "1", pages = "16--29", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111040", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In POPL 2002, Petrank and Rawitz showed a universal result---finding optimal data placement is not only NP-hard but also impossible to approximate within a constant factor if P $\neq$ NP. Here we study a recently published concept called reference affinity, which characterizes a group of data that are always accessed together in computation. On the theoretical side, we give the complexity for finding reference affinity in program traces, using a novel reduction that converts the notion of distance into satisfiability. We also prove that reference affinity automatically captures the hierarchical locality in divide-and-conquer computations including matrix solvers and N-body simulation. The proof establishes formal links between computation patterns in time and locality relations in space. On the practical side, we show that efficient heuristics exist. In particular, we present a sampling method and show that it is more effective than the previously published technique, especially for data that are often but not always accessed together. We show the effect on generated and real traces. These theoretical and empirical results demonstrate that effective data placement is still attainable in general-purpose programs because common (albeit not all) locality patterns can be precisely modeled and efficiently analyzed.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "hierarchical data placement; N-body simulation; NP-complete; program locality; reference affinity; volume distance", } @Article{Gautam:2006:SR, author = "Gautam and S. Rajopadhye", title = "Simplifying reductions", journal = j-SIGPLAN, volume = "41", number = "1", pages = "30--41", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111041", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present optimization techniques for high level equational programs that are generalizations of affine control loops (ACLs). Significant parts of the SpecFP and PerfectClub benchmarks are ACLs. They often contain reductions: associative and commutative operators applied to a collection of values. They also often exhibit reuse: intermediate values computed or used at different index points being identical. We develop various techniques to automatically exploit reuse to simplify the computational complexity of evaluating reductions. Finally, we present an algorithm for the optimal application of such simplifications resulting in an equivalent specification with minimum complexity.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "equational programming; incremental computation; loop optimization; polyhedral model; program transformation", } @Article{Leroy:2006:FCC, author = "Xavier Leroy", title = "Formal certification of a compiler back-end or: programming a compiler with a proof assistant", journal = j-SIGPLAN, volume = "41", number = "1", pages = "42--54", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111042", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper reports on the development and formal certification (proof of semantic preservation) of a compiler from Cminor (a C-like imperative language) to PowerPC assembly code, using the Coq proof assistant both for programming the compiler and for proving its correctness. Such a certified compiler is useful in the context of formal methods applied to the certification of critical software: the certification of the compiler guarantees that the safety properties proved on the source code hold for the executable compiled code as well.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "certified compilation; compiler transformations and optimizations; program proof; semantic preservation; the Coq theorem prover", } @Article{Bishop:2006:ELH, author = "Steve Bishop and Matthew Fairbairn and Michael Norrish and Peter Sewell and Michael Smith and Keith Wansbrough", title = "Engineering with logic: {HOL} specification and symbolic-evaluation testing for {TCP} implementations", journal = j-SIGPLAN, volume = "41", number = "1", pages = "55--66", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111043", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The TCP/IP protocols and Sockets API underlie much of modern computation, but their semantics have historically been very complex and ill-defined. The real standard is the de facto one of the common implementations, including, for example, the 15,000--20,000 lines of C in the BSD implementation. Dealing rigorously with the behaviour of such bodies of code is challenging. We have recently developed a post-hoc specification of TCP, UDP, and Sockets that is rigorous, detailed, readable, has broad coverage, and is remarkably accurate. In this paper we describe the novel techniques that were required. Working within a general-purpose proof assistant (HOL), we developed language idioms (within higher-order logic) in which to write the specification: operational semantics with nondeterminism, time, system calls, monadic relational programming, etc. We followed an experimental semantics approach, validating the specification against several thousand traces captured from three implementations (FreeBSD, Linux, and WinXP). Many differences between these were identified, and a number of bugs. Validation was done using a special-purpose symbolic model checker programmed above HOL. We suggest that similar logic engineering techniques could be applied to future critical software infrastructure at design time, leading to cleaner designs and (via specification-based testing using a similar checker) more predictable implementations.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "API; conformance testing; higher-order logic; HOL; network protocols; operational semantics; sockets; specification; TCP/IP", } @Article{Dam:2006:DPS, author = "Mads Dam", title = "Decidability and proof systems for language-based noninterference relations", journal = j-SIGPLAN, volume = "41", number = "1", pages = "67--78", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111044", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Noninterference is the basic semantical condition used to account for confidentiality and integrity-related properties in programming languages. There appears to be an at least implicit belief in the programming languages community that partial approaches based on type systems or other static analysis techniques are necessary for noninterference analyses to be tractable. In this paper we show that this belief is not necessarily true. We focus on the notion of strong low bisimulation proposed by Sabelfeld and Sands. We show that, relative to a decidable expression theory, strong low bisimulation is decidable for a simple parallel while-language, and we give a sound and relatively complete proof system for deriving noninterference assertions. The completeness proof provides an effective proof search strategy. Moreover, we show that common alternative noninterference relations based on traces or input-output relations are undecidable. The first part of the paper is cast in terms of multi-level security. In the second part of the paper we generalize the setting to accommodate a form of intransitive interference. We discuss the model and show how the decidability and proof system results generalize to this richer setting.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "information flow; intransitive noninterference; language-based security; multi-level security; noninterference", } @Article{Hunt:2006:FSS, author = "Sebastian Hunt and David Sands", title = "On flow-sensitive security types", journal = j-SIGPLAN, volume = "41", number = "1", pages = "79--90", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111045", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This article investigates formal properties of a family of semantically sound flow-sensitive type systems for tracking information flow in simple While programs. The family is indexed by the choice of flow lattice. By choosing the flow lattice to be the powerset of program variables, we obtain a system which, in a very strong sense, subsumes all other systems in the family (in particular, for each program, it provides a principal typing from which all others may be inferred). This distinguished system is shown to be equivalent to, though more simply described than, Amtoft and Banerjee's Hoare-style independence logic (SAS'04). In general, some lattices are more expressive than others. Despite this, we show that no type system in the family can give better results for a given choice of lattice than the type system for that lattice itself. Finally, for any program typeable in one of these systems, we show how to construct an equivalent program which is typeable in a simple flow-insensitive system. We argue that this general approach could be useful in a proof-carrying-code setting.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "flow-sensitivity; information flow; non-interference; static analysis; type systems", } @Article{Amtoft:2006:LIF, author = "Torben Amtoft and Sruthi Bandhakavi and Anindya Banerjee", title = "A logic for information flow in object-oriented programs", journal = j-SIGPLAN, volume = "41", number = "1", pages = "91--102", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111046", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper specifies, via a Hoare-like logic, an interprocedural and flow sensitive (but termination insensitive) information flow analysis for object-oriented programs. Pointer aliasing is ubiquitous in such programs, and can potentially leak confidential information. Thus the logic employs independence assertions to describe the noninterference property that formalizes confidentiality, and employs region assertions to describe possible aliasing. Programmer assertions, in the style of JML, are also allowed, thereby permitting a more fine-grained specification of information flow policy. The logic supports local reasoning about state in the style of separation logic. Small specifications are used; they mention only the variables and addresses relevant to a command. Specifications are combined using a frame rule. An algorithm for the computation of postconditions is described: under certain assumptions, there exists a strongest postcondition which the algorithm computes.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "aliasing; confidentiality; information flow", } @Article{Vouillon:2006:PRT, author = "J{\'e}r{\^o}me Vouillon", title = "Polymorphic regular tree types and patterns", journal = j-SIGPLAN, volume = "41", number = "1", pages = "103--114", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111047", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We propose a type system based on regular tree grammars, where algebraic datatypes are interpreted in a structural way. Thus, the same constructors can be reused for different types and a flexible subtyping relation can be defined between types, corresponding to the inclusion of their semantics. For instance, one can define a type for lists and a subtype of this type corresponding to lists of even length. Patterns are simply types annotated with binders. This provides a generalization of algebraic patterns with the ability of matching arbitrarily deep in a value. Our main contribution, compared to languages such as XDuce and CDuce, is that we are able to deal with both polymorphism and function types.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "polymorphism; subtyping; tree automata", } @Article{Lahiri:2006:VPW, author = "Shuvendu K. Lahiri and Shaz Qadeer", title = "Verifying properties of well-founded linked lists", journal = j-SIGPLAN, volume = "41", number = "1", pages = "115--126", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111048", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We describe a novel method for verifying programs that manipulate linked lists, based on two new predicates that characterize reachability of heap cells. These predicates allow reasoning about both acyclic and cyclic lists uniformly with equal ease. The crucial insight behind our approach is that a circular list invariably contains a distinguished head cell that provides a handle on the list. This observation suggests a programming methodology that requires the heap of the program at each step to be well-founded, i.e., for any field $f$ in the program, every sequence $u.f, u.f.f, \ldots{}$ contains at least one head cell. We believe that our methodology captures the most common idiom of programming with linked data structures. We enforce our methodology by automatically instrumenting the program with updates to two auxiliary variables representing these predicates and adding assertions in terms of these auxiliary variables. To prove program properties and the instrumented assertions, we provide a first-order axiomatization of our two predicates. We also introduce a novel induction principle made possible by the well-foundedness of the heap. We use our induction principle to derive from two basic axioms a small set of additional first-order axioms that are useful for proving the correctness of several programs. We have implemented our method in a tool and used it to verify the correctness of a variety of nontrivial programs manipulating both acyclic and cyclic singly-linked lists and doubly-linked lists. We also demonstrate the use of indexed predicate abstraction to automatically synthesize loop invariants for these examples.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "automated theorem proving; decision procedure; first-order axiomatization; heap abstraction; well-founded linked lists", } @Article{Might:2006:EAD, author = "Matthew Might and Olin Shivers", title = "Environment analysis via {{$\Delta$}CFA}", journal = j-SIGPLAN, volume = "41", number = "1", pages = "127--140", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111049", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We describe a new program-analysis framework, based on CPS and procedure-string abstractions, that can handle critical analyses which the $k$-CFA framework cannot. We present the main theorems concerning correctness, show an application analysis, and describe a running implementation.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "continuations; CPS; delta-CFA; environment analysis; flow analysis; functional languages; inlining; lambda calculus; program analysis; super-beta", } @Article{Koutavas:2006:SBR, author = "Vasileios Koutavas and Mitchell Wand", title = "Small bisimulations for reasoning about higher-order imperative programs", journal = j-SIGPLAN, volume = "41", number = "1", pages = "141--152", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111050", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We introduce a new notion of bisimulation for showing contextual equivalence of expressions in an untyped lambda-calculus with an explicit store, and in which all expressed values, including higher-order values, are storable. Our notion of bisimulation leads to smaller and more tractable relations than does the method of Sumii and Pierce [31]. In particular, our method allows one to write down a bisimulation relation directly in cases where [31] requires an inductive specification, and where the principle of local invariants [22] is inapplicable. Our method can also express examples with higher-order functions, in contrast with the most widely known previous methods [4, 22, 32] which are limited in their ability to deal with such examples. The bisimulation conditions are derived by manually extracting proof obligations from a hypothetical direct proof of contextual equivalence.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bisimulations; contextual equivalence; higher-order procedures; imperative languages; lambda-calculus", } @Article{Alur:2006:FCL, author = "Rajeev Alur and Swarat Chaudhuri and P. Madhusudan", title = "A fixpoint calculus for local and global program flows", journal = j-SIGPLAN, volume = "41", number = "1", pages = "153--165", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111051", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We define a new fixpoint modal logic, the visibly pushdown $\mu$-calculus (VP-$\mu$), as an extension of the modal $\mu$-calculus. The models of this logic are execution trees of structured programs where the procedure calls and returns are made visible. This new logic can express pushdown specifications on the model that its classical counterpart cannot, and is motivated by recent work on visibly pushdown languages [4]. We show that our logic naturally captures several interesting program specifications in program verification and dataflow analysis. This includes a variety of program specifications such as computing combinations of local and global program flows, pre/post conditions of procedures, security properties involving the context stack, and interprocedural dataflow analysis properties. The logic can capture flow-sensitive and inter-procedural analysis, and it has constructs that allow skipping procedure calls so that local flows in a procedure can also be tracked. The logic generalizes the semantics of the modal $\mu$-calculus by considering summaries instead of nodes as first-class objects, with appropriate constructs for concatenating summaries, and naturally captures the way in which pushdown models are model-checked. The main result of the paper is that the model-checking problem for VP-$\mu$ is effectively solvable against pushdown models with no more effort than that required for weaker logics such as CTL. We also investigate the expressive power of the logic VP-$\mu$: we show that it encompasses all properties expressed by a corresponding pushdown temporal logic on linear structures (caret [2]) as well as by the classical $\mu$-calculus. This makes VP-$\mu$ the most expressive known program logic for which algorithmic software model checking is feasible. In fact, the decidability of most known program logics ($\mu$-calculus, temporal logics LTL and CTL, caret, etc.) can be understood by their interpretation in the monadic second-order logic over trees. This is not true for the logic VP-$\mu$, making it a new powerful tractable program logic.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "games; infinite-state; logic; model-checking; pushdown systems; specification; verification; {\mu} -calculus", } @Article{Odersky:2006:SEC, author = "Martin Odersky", title = "The {Scala} experiment: can we provide better language support for component systems?", journal = j-SIGPLAN, volume = "41", number = "1", pages = "166--167", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111052", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Danner:2006:ATS, author = "Norman Danner and James S. Royer", title = "Adventures in time and space", journal = j-SIGPLAN, volume = "41", number = "1", pages = "168--179", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111053", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper investigates what is essentially a call-by-value version of PCF under a complexity-theoretically motivated type system. The programming formalism, ATR1, has its first-order programs characterize the poly-time computable functions, and its second-order programs characterize the type-2 basic feasible functionals of Mehlhorn and of Cook and Urquhart. (The ATR1-types are confined to levels 0, 1, and 2.) The type system comes in two parts, one that primarily restricts the sizes of values of expressions and a second that primarily restricts the time required to evaluate expressions. The size-restricted part is motivated by Bellantoni and Cook's and Leivant's implicit characterizations of poly-time. The time-restricting part is an affine version of Barber and Plotkin's DILL. Two semantics are constructed for ATR 1. The first is a pruning of the na{\"\i}ve denotational semantics for ATR1. This pruning removes certain functions that cause otherwise feasible forms of recursion to go wrong. The second semantics is a model for ATR1's time complexity relative to a certain abstract machine. This model provides a setting for complexity recurrences arising from ATR1 recursions, the solutions of which yield second-order polynomial time bounds. The time-complexity semantics is also shown to be sound relative to the costs of interpretation on the abstract machine.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cohen:2006:SKN, author = "Albert Cohen and Marc Duranton and Christine Eisenbeis and Claire Pagetti and Florence Plateau and Marc Pouzet", title = "{$N$}-synchronous {Kahn} networks: a relaxed model of synchrony for real-time systems", journal = j-SIGPLAN, volume = "41", number = "1", pages = "180--193", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111054", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The design of high-performance stream-processing systems is a fast growing domain, driven by markets such like high-end TV, gaming, 3D animation and medical imaging. It is also a surprisingly demanding task, with respect to the algorithmic and conceptual simplicity of streaming applications. It needs the close cooperation between numerical analysts, parallel programming experts, real-time control experts and computer architects, and incurs a very high level of quality insurance and optimization. In search for improved productivity, we propose a programming model and language dedicated to high-performance stream processing. This language builds on the synchronous programming model and on domain knowledge -- the periodic evolution of streams -- to allow correct-by-construction properties to be proven by the compiler. These properties include resource requirements and delays between input and output streams. Automating this task avoids tedious and error-prone engineering, due to the combinatorics of the composition of filters with multiple data rates and formats. Correctness of the implementation is also difficult to assess with traditional (asynchronous, simulation-based) approaches. This language is thus provided with a relaxed notion of synchronous composition, called n-synchrony: two processes are n-synchronous if they can communicate in the ordinary (0-)synchronous model with a FIFO buffer of size n. Technically, we extend a core synchronous data-flow language with a notion of periodic clocks, and design a relaxed clock calculus (a type system for clocks) to allow non strictly synchronous processes to be composed or correlated. This relaxation is associated with two sub-typing rules in the clock calculus. Delay, buffer insertion and control code for these buffers are automatically inferred from the clock types through a systematic transformation into a standard synchronous program. We formally define the semantics of the language and prove the soundness and completeness of its clock calculus and synchronization transformation. Finally, the language is compared with existing formalisms.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "correctness by construction; resource constraints; streaming applications; subtyping; synchronous languages", } @Article{Chen:2006:CDC, author = "Guangyu Chen and Feihui Li and Mahmut Kandemir", title = "Compiler-directed channel allocation for saving power in on-chip networks", journal = j-SIGPLAN, volume = "41", number = "1", pages = "194--205", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111055", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Increasing complexity in the communication patterns of embedded applications parallelized over multiple processing units makes it difficult to continue using the traditional bus-based on-chip communication techniques. The main contribution of this paper is to demonstrate the importance of compiler technology in reducing power consumption of applications designed for emerging multi processor, NoC (Network-on-Chip) based embedded systems. Specifically, we propose and evaluate a compiler-directed approach to NoC power management in the context of array-intensive applications, used frequently in embedded image/video processing. The unique characteristic of the compiler-based approach proposed in this paper is that it increases the idle periods of communication channels by reusing the same set of channels for as many communication messages as possible. The unused channels in this case take better advantage of the underlying power saving mechanism employed by the network architecture. However, this channel reuse optimization should be applied with care as it can hurt performance if two or more simultaneous communications are mapped onto the same set of channels. Therefore, the problem addressed in this paper is one of reducing the number of channels used to implement a set of communications without increasing the communication latency significantly. To test the effectiveness of our approach, we implemented it within an optimizing compiler and performed experiments using twelve application codes and a network simulation environment. Our experiments show that the proposed compiler-based approach is very successful in practice and works well under both hardware based and software based channel turn-off schemes.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compiler; energy consumption; NoC", } @Article{Danielsson:2006:FLR, author = "Nils Anders Danielsson and John Hughes and Patrik Jansson and Jeremy Gibbons", title = "Fast and loose reasoning is morally", journal = j-SIGPLAN, volume = "41", number = "1", pages = "206--217", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111056", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Functional programmers often reason about programs as if they were written in a total language, expecting the results to carry over to non-total (partial) languages. We justify such reasoning. Two languages are defined, one total and one partial, with identical syntax. The semantics of the partial language includes partial and infinite values, and all types are lifted, including the function spaces. A partial equivalence relation (PER) is then defined, the domain of which is the total subset of the partial language. For types not containing function spaces the PER relates equal values, and functions are related if they map related values to related values. It is proved that if two closed terms have the same semantics in the total language, then they have related semantics in the partial language. It is also shown that the PER gives rise to a biCartesian closed category which can be used to reason about values in the domain of the relation.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "equational reasoning; inductive and coinductive types; lifted types; non-strict and strict languages; partial and infinite values; partial and total languages", } @Article{Meunier:2006:MSB, author = "Philippe Meunier and Robert Bruce Findler and Matthias Felleisen", title = "Modular set-based analysis from contracts", journal = j-SIGPLAN, volume = "41", number = "1", pages = "218--231", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111057", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In PLT Scheme, programs consist of modules with contracts. The latter describe the inputs and outputs of functions and objects via predicates. A run-time system enforces these predicates; if a predicate fails, the enforcer raises an exception that blames a specific module with an explanation of the fault. In this paper, we show how to use such module contracts to turn set-based analysis into a fully modular parameterized analysis. Using this analysis, a static debugger can indicate for any given contract check whether the corresponding predicate is always satisfied, partially satisfied, or (potentially) completely violated. The static debugger can also predict the source of potential errors, i.e., it is sound with respect to the blame assignment of the contract system.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "modular analysis; runtime contracts; set-based analysis; static debugging", } @Article{Pottier:2006:STI, author = "Fran{\c{c}}ois Pottier and Yann R{\'e}gis-Gianas", title = "Stratified type inference for generalized algebraic data types", journal = j-SIGPLAN, volume = "41", number = "1", pages = "232--244", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111058", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Stratified type inference for generalized algebraic data types.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Flanagan:2006:HTC, author = "Cormac Flanagan", title = "Hybrid type checking", journal = j-SIGPLAN, volume = "41", number = "1", pages = "245--256", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111059", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Traditional static type systems are very effective for verifying basic interface specifications, but are somewhat limited in the kinds specifications they support. Dynamically-checked contracts can enforce more precise specifications, but these are not checked until run time, resulting in incomplete detection of defects. Hybrid type checking is a synthesis of these two approaches that enforces precise interface specifications, via static analysis where possible, but also via dynamic checks where necessary. This paper explores the key ideas and implications of hybrid type checking, in the context of the simply-typed \lambda -calculus with arbitrary refinements of base types.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "contracts; dynamic checking; static checking; type systems", } @Article{Kim:2006:PMT, author = "Ik-Soon Kim and Kwangkeun Yi and Cristiano Calcagno", title = "A polymorphic modal type system for {Lisp}-like multi-staged languages", journal = j-SIGPLAN, volume = "41", number = "1", pages = "257--268", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111060", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This article presents a polymorphic modal type system and its principal type inference algorithm that conservatively extend ML by all of Lisp's staging constructs (the quasi-quotation system). The combination is meaningful because ML is a practical higher-order, impure, and typed language, while Lisp's quasi-quotation system has long evolved complying with the demands from multi-staged programming practices. Our type system supports open code, unrestricted operations on references, intentional variable-capturing substitution as well as capture-avoiding substitution, and lifting values into code, whose combination escaped all the previous systems.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "let-polymorphism; lisp; ML; modal types; multi-staged languages; polymorphic types; quasi-quotation; record type; scheme; type inference; type systems", } @Article{Sweeney:2006:NMP, author = "Tim Sweeney", title = "The next mainstream programming language: a game developer's perspective", journal = j-SIGPLAN, volume = "41", number = "1", pages = "269--269", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111061", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Game developers have long been early adopters of new technologies. This is so because we are largely unburdened by legacy code: With each new hardware generation, we are free to rethink our software assumptions and develop new products using new tools and even new programming languages. As a result, games are fertile ground for applying academic advances in these areas. And never has our industry been in need of such advances as it is now! The scale and scope of game development has increased more than ten-fold over the past ten years, yet the underlying limitations of the mainstream C/C++/Java/C\# language family remain largely unaddressed. The talk begins with a high-level presentation of the game developer's world: the kinds of algorithms we employ on modern CPUs and GPUs, the difficulties of componentization and concurrency, and the challenges of writing very complex software with real-time performance requirements. The talk then outlines the ways that future programming languages could help us write better code, providing examples derived from experience writing games and software frameworks that support games. The major areas covered are abstraction facilities -- how we can use them to develop more extensible frameworks and components; practical opportunities for employing stronger typing to reduce run-time failures; and the need for pervasive concurrency support, both implicit and explicit, to effectively exploit the several forms of parallelism present in games and graphics.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ernst:2006:VCC, author = "Erik Ernst and Klaus Ostermann and William R. Cook", title = "A virtual class calculus", journal = j-SIGPLAN, volume = "41", number = "1", pages = "270--282", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111062", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Virtual classes are class-valued attributes of objects. Like virtual methods, virtual classes are defined in an object's class and may be redefined within subclasses. They resemble inner classes, which are also defined within a class, but virtual classes are accessed through object instances, not as static components of a class. When used as types, virtual classes depend upon object identity -- each object instance introduces a new family of virtual class types. Virtual classes support large-scale program composition techniques, including higher-order hierarchies and family polymorphism. The original definition of virtual classes in BETA left open the question of static type safety, since some type errors were not caught until runtime. Later the languages Caesar and gbeta have used a more strict static analysis in order to ensure static type safety. However, the existence of a sound, statically typed model for virtual classes has been a long-standing open question. This paper presents a virtual class calculus, VC, that captures the essence of virtual classes in these full-fledged programming languages. The key contributions of the paper are a formalization of the dynamic and static semantics of VC and a proof of the soundness of VC.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "soundness; virtual classes", } @Article{Liu:2006:II, author = "Jed Liu and Aaron Kimball and Andrew C. Myers", title = "Interruptible iterators", journal = j-SIGPLAN, volume = "41", number = "1", pages = "283--294", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111063", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper introduces interruptible iterators, a language feature that makes expressive iteration abstractions much easier to implement. Iteration abstractions are valuable for software design, as shown by their frequent use in well-designed data structure libraries such as the Java Collections Framework. While Java iterators support iteration abstraction well from the standpoint of client code, they are awkward to implement correctly and efficiently, especially if the iterator needs to support imperative update of the underlying collection, such as removing the current element. Some languages, such as CLU and C\# 2.0, support iteration through a limited coroutine mechanism, but these mechanisms do not support imperative updates. Interruptible iterators are more powerful coroutines in which the loop body is able to interrupt the iterator with requests to perform updates. Interrupts are similar to exceptions, but propagate differently and have resumption semantics. Interruptible iterators have been implemented as part of the JMatch programming language, an extended version of Java. A JMatch reimplementation of the Java Collections Framework shows that implementations can be made substantially shorter and simpler; performance results show that this language mechanism can also be implemented efficiently.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "coroutine; exception; Java; JMatch; logic programming", } @Article{Reis:2006:SCC, author = "Gabriel Dos Reis and Bjarne Stroustrup", title = "Specifying {C++} concepts", journal = j-SIGPLAN, volume = "41", number = "1", pages = "295--308", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111064", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "C++ templates are key to the design of current successful mainstream libraries and systems. They are the basis of programming techniques in diverse areas ranging from conventional general-purpose programming to software for safety-critical embedded systems. Current work on improving templates focuses on the notion of concepts (a type system for templates), which promises significantly improved error diagnostics and increased expressive power such as concept-based overloading and function template partial specialization. This paper presents C++ templates with an emphasis on problems related to separate compilation. We consider the problem of how to express concepts in a precise way that is simple enough to be usable by ordinary programmers. In doing so, we expose a few weakness of the current specification of the C++ standard library and suggest a far more precise and complete specification. We also present a systematic way of translating our proposed concept definitions, based on use-patterns rather than function signatures, into constraint sets that can serve as convenient basis for concept checking in a compiler.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "C++ concepts; C++ templates; generic programming; separate compilation; type systems", } @Article{Thielecke:2006:FRA, author = "Hayo Thielecke", title = "Frame rules from answer types for code pointers", journal = j-SIGPLAN, volume = "41", number = "1", pages = "309--319", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111065", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We define a type system, which may also be considered as a simple Hoare logic, for a fragment of an assembly language that deals with code pointers and jumps. The typing is aimed at local reasoning in the sense that only the type of a code pointer is needed, and there is no need to know the whole code itself. The main features of the type system are separation logic connectives for describing the heap, and polymorphic answer types of continuations for keeping track of jumps. Specifically, we address an interaction between separation and answer types: frame rules for local reasoning in the presence of jumps are recovered by instantiating the answer type. However, the instantiation of answer types is not sound for all types. To guarantee soundness, we restrict instantiation to closed types, where the notion of closedness arises from biorthogonality (in a sense inspired by Krivine and Pitts). A machine state is orthogonal to a disjoint heap if their combination does not lead to a fault. Closed types are sets of machine states that are orthogonal to a set of heaps. We use closed types as well-behaved answer types.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "code pointers; continuations; Hoare logic; polymorphism; typed assembly language", } @Article{Ni:2006:CAP, author = "Zhaozhong Ni and Zhong Shao", title = "Certified assembly programming with embedded code pointers", journal = j-SIGPLAN, volume = "41", number = "1", pages = "320--333", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111066", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Embedded code pointers (ECPs) are stored handles of functions and continuations commonly seen in low-level binaries as well as functional or higher-order programs. ECPs are known to be very hard to support well in Hoare-logic style verification systems. As a result, existing proof-carrying code (PCC) systems have to either sacrifice the expressiveness or the modularity of program specifications, or resort to construction of complex semantic models. In Reynolds's LICS'02 paper, supporting ECPs is listed as one of the main open problems for separation logic. In this paper we present a simple and general technique for solving the ECP problem for Hoare-logic-based PCC systems. By adding a small amount of syntax to the assertion language, we show how to combine semantic consequence relation with syntactic proof techniques. The result is a new powerful framework that can perform modular reasoning on ECPs while still retaining the expressiveness of Hoare logic. We show how to use our techniques to support polymorphism, closures, and other language extensions and how to solve the ECP problem for separation logic. Our system is fully mechanized. We give its complete soundness proof and a full verification of Reynolds's CPS-style 'list-append' example in the Coq proof assistant.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "embedded code pointers; higher-order functions; Hoare logic; proof-carrying code", } @Article{Vaziri:2006:ASC, author = "Mandana Vaziri and Frank Tip and Julian Dolby", title = "Associating synchronization constraints with data in an object-oriented language", journal = j-SIGPLAN, volume = "41", number = "1", pages = "334--345", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111067", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Concurrency-related bugs may happen when multiple threads access shared data and interleave in ways that do not correspond to any sequential execution. Their absence is not guaranteed by the traditional notion of 'data race' freedom. We present a new definition of data races in terms of 11 problematic interleaving scenarios, and prove that it is complete by showing that any execution not exhibiting these scenarios is serializable for a chosen set of locations. Our definition subsumes the traditional definition of a data race as well as high-level data races such as stale-value errors and inconsistent views. We also propose a language feature called atomic sets of locations, which lets programmers specify the existence of consistency properties between fields in objects, without specifying the properties themselves. We use static analysis to automatically infer those points in the code where synchronization is needed to avoid data races under our new definition. An important benefit of this approach is that, in general, far fewer annotations are required than is the case with existing approaches such as synchronized blocks or atomic sections. Our implementation successfully inferred the appropriate synchronization for a significant subset of Java's Standard Collections framework.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrent object-oriented programming; data races; programming model; serializability", } @Article{McCloskey:2006:ASI, author = "Bill McCloskey and Feng Zhou and David Gay and Eric Brewer", title = "{Autolocker}: synchronization inference for atomic sections", journal = j-SIGPLAN, volume = "41", number = "1", pages = "346--358", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111068", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The movement to multi-core processors increases the need for simpler, more robust parallel programming models. Atomic sections have been widely recognized for their ease of use. They are simpler and safer to use than manual locking and they increase modularity. But existing proposals have several practical problems, including high overhead and poor interaction with I/O. We present pessimistic atomic sections, a fresh approach that retains many of the advantages of optimistic atomic sections as seen in 'transactional memory' without sacrificing performance or compatibility. Pessimistic atomic sections employ the locking mechanisms familiar to programmers while relieving them of most burdens of lock-based programming, including deadlocks. Significantly, pessimistic atomic sections separate correctness from performance: they allow programmers to extract more parallelism via finer-grained locking without fear of introducing bugs. We believe this property is crucial for exploiting multi-core processor designs. We describe a tool, Autolocker, that automatically converts pessimistic atomic sections into standard lock-based code. Autolocker relies extensively on program analysis to determine a correct locking policy free of deadlocks and race conditions. We evaluate the expressiveness of Autolocker by modifying a 50,000 line high-performance web server to use atomic sections while retaining the original locking policy. We analyze Autolocker's performance using microbenchmarks, where Autolocker outperforms software transactional memory by more than a factor of 3.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "atomic; lock; pessimistic", } @Article{Lu:2006:PRE, author = "Yi Lu and John Potter", title = "Protecting representation with effect encapsulation", journal = j-SIGPLAN, volume = "41", number = "1", pages = "359--371", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111069", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Representation exposure is a well-known problem in the object-oriented realm. Object encapsulation mechanisms have established a tradition for solving this problem based on a principle of reference containment. This paper proposes a novel type system which is based on a different principle, we call effect encapsulation, which confines side effects, rather than object references, according to an ownership structure. Compared to object encapsulation, effect encapsulation liberates us from the restriction on object referenceability and offers more flexibility. In this paper, we show that effect encapsulation can be statically type checked.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "effect systems; object encapsulation; ownership types; representation exposure; types", } @Article{Su:2006:ECI, author = "Zhendong Su and Gary Wassermann", title = "The essence of command injection attacks in {Web} applications", journal = j-SIGPLAN, volume = "41", number = "1", pages = "372--382", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111070", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Web applications typically interact with a back-end database to retrieve persistent data and then present the data to the user as dynamically generated output, such as HTML web pages. However, this interaction is commonly done through a low-level API by dynamically constructing query strings within a general-purpose programming language, such as Java. This low-level interaction is ad hoc because it does not take into account the structure of the output language. Accordingly, user inputs are treated as isolated lexical entities which, if not properly sanitized, can cause the web application to generate unintended output. This is called a command injection attack, which poses a serious threat to web application security. This paper presents the first formal definition of command injection attacks in the context of web applications, and gives a sound and complete algorithm for preventing them based on context-free grammars and compiler parsing techniques. Our key observation is that, for an attack to succeed, the input that gets propagated into the database query or the output document must change the intended syntactic structure of the query or document. Our definition and algorithm are general and apply to many forms of command injection attacks. We validate our approach with SqlCheckS, an implementation for the setting of SQL command injection attacks. We evaluated SqlCheckS on real-world web applications with systematically compiled real-world attack data as input. SqlCheckS produced no false positives or false negatives, incurred low runtime overhead, and applied straightforwardly to web applications written in different languages.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "command injection attacks; grammars; parsing; runtime verification; web applications", } @Article{Dantas:2006:HA, author = "Daniel S. Dantas", title = "Harmless advice", journal = j-SIGPLAN, volume = "41", number = "1", pages = "383--396", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111071", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper defines an object-oriented language with harmless aspect-oriented advice. A piece of harmless advice is a computation that, like ordinary aspect-oriented advice, executes when control reaches a designated control-flow point. However, unlike ordinary advice, harmless advice is designed to obey a weak non-interference property. Harmless advice may change the termination behavior of computations and use I/O, but it does not otherwise influence the final result of the mainline code. The benefit of harmless advice is that it facilitates local reasoning about program behavior. More specifically, programmers may ignore harmless advice when reasoning about the partial correctness properties of their programs. In addition, programmers may add new pieces of harmless advice to pre-existing programs in typical 'after-the-fact' aspect-oriented style without fear they will break important data invariants used by the mainline code. In order to detect and enforce harmlessness, the paper defines a novel type and effect system related to information-flow type systems. The central technical result is that well-typed harmless advice does not interfere with the mainline computation. The paper also presents an implementation of the language and a case study using harmless advice to implement security policies.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "aspect-oriented; aspects; harmless advice; noninterference", } @Article{Menon:2006:VSP, author = "Vijay S. Menon and Neal Glew and Brian R. Murphy and Andrew McCreight and Tatiana Shpeisman and Ali-Reza Adl-Tabatabai and Leaf Petersen", title = "A verifiable {SSA} program representation for aggressive compiler optimization", journal = j-SIGPLAN, volume = "41", number = "1", pages = "397--408", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111072", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present a verifiable low-level program representation to embed, propagate, and preserve safety information in high performance compilers for safe languages such as Java and C\#. Our representation precisely encodes safety information via static single-assignment (SSA) [11, 3] proof variables that are first-class constructs in the program. We argue that our representation allows a compiler to both (1) express aggressively optimized machine-independent code and (2) leverage existing compiler infrastructure to preserve safety information during optimization. We demonstrate that this approach supports standard compiler optimizations, requires minimal changes to the implementation of those optimizations, and does not artificially impede those optimizations to preserve safety. We also describe a simple type system that formalizes type safety in an SSA-style control-flow graph program representation. Through the types of proof variables, our system enables compositional verification of memory safety in optimized code. Finally, we discuss experiences integrating this representation into the machine-independent global optimizer of STARJIT, a high-performance just-in-time compiler that performs aggressive control-flow, data-flow, and algebraic optimizations and is competitive with top production systems.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "check elimination; intermediate representations; proof variables; safety dependences; SSA formalization; type systems; typeability preservation; typed intermediate languages", } @Article{Olinsky:2006:SAC, author = "Reuben Olinsky and Christian Lindig and Norman Ramsey", title = "Staged allocation: a compositional technique for specifying and implementing procedure calling conventions", journal = j-SIGPLAN, volume = "41", number = "1", pages = "409--421", month = jan, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1111037.1111073", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:39:41 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present staged allocation, a technique for specifying calling conventions by composing tiny allocators called stages. A specification written using staged allocation has a precise, formal semantics, and it can be executed directly inside a compiler. Specifications of nine standard C~calling conventions range in size from 15 to 30 lines each. An implementation of staged allocation takes about 250 lines of ML or 650~lines of C++. Each specification can be used not only to help a compiler implement the calling convention but also to generate a test suite.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "calling conventions", } @Article{Xue:2006:DSL, author = "Deyi Xue", title = "Developing a superset language of {Smalltalk} for modeling distributed mechanical design systems", journal = j-SIGPLAN, volume = "41", number = "2", pages = "8--17", month = feb, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1137933.1137935", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:41:42 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper presents our experience on further development of a superset language of Smalltalk for modeling distributed mechanical design systems. In this language, mechanical system modeling primitives are called features. Features are described at two levels, class level and instance level, representing standard product libraries and special product data, respectively. Features modeled at different locations are associated by Internet. Class features at remote locations can be used for generating instance features at the local site. Instance features at remote locations can be accessed from the local site. This new language was implemented using Smalltalk.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "computer language; distributed systems; mechanical design; object-oriented modeling", } @Article{Borah:2006:IOO, author = "Kallol Borah", title = "{Indus}: an object oriented language for {Ubiquitous} computing", journal = j-SIGPLAN, volume = "41", number = "2", pages = "18--24", month = feb, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1137933.1137936", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:41:42 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Indus is a new object oriented programming language for Ubiquitous computing. The Indus programming language enables implementation of software agents that have the ability to cooperatively execute tasks by coordinating with other agents and composing components using connectors. The Indus programming model tightly integrates a set of run time libraries that automates the management of distributed agents and components across a variety of platforms and networks. Indus also differentiates itself from other general purpose, object oriented programming languages by being able to generate code on a variety of 8/16/32/64 bit platforms, thus making it ideal as a language for implementing pervasive applications.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "ad hoc networks; adaptive systems; distributed systems; software agents; wireless sensor networks", } @Article{Anonymous:2006:MPG, author = "Anonymous", title = "{MxYacc}: parser generator for mixed languages", journal = j-SIGPLAN, volume = "41", number = "2", pages = "25--28", month = feb, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1137933.1137937", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:41:42 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In the recent years mixed language programming has received much attention. In this paper we introduce MxYacc, a parser generator for mixed languages. We discuss the concepts of mixed language parsing with an example. We present a simple and elegant parsing algorithm to parse mixed grammars.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "mixed language programming; parser generator; yacc", } @Article{Murphy:2006:SSU, author = "Mike Murphy", title = "Some suggestions for the use of tables in compilers", journal = j-SIGPLAN, volume = "41", number = "2", pages = "29--33", month = feb, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1137933.1137938", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:41:42 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "It is common practice in compilers to use tables to represent data, and then automatically generate code based on those tables (often known as 'table-driven code'). Many compilers use machine description tables from which is automatically generated parts of the code generator, and there are often small pieces of table-driven code within a compiler. Sometimes these tables are very useful, but other times the tables themselves can become a maintenance nightmare. This paper uses examples from several SGI compilers to try and enumerate some guidelines for designing good tables and table-driven code.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compilers; software engineering; tables", } @Article{Bailey:2006:PPA, author = "Mark W. Bailey and John Hatcliff and Frank Tip", title = "{PEPM} 2006 paper abstracts", journal = j-SIGPLAN, volume = "41", number = "3", pages = "4--8", month = mar, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1140543.1140545", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:41:56 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation (PEPM 2006) was held on January 9th and 10th in Charleston, South Carolina and this article contains abstracts for the 19 papers presented at the workshop. The PEPM workshops focus on techniques, supporting theory, tools, and applications of the analysis and manipulation of programs. The full proceedings for this workshop are available from ACM.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Janakiram:2006:SCL, author = "D. Janakiram and R. Venkateswarlu and A. Vijay Srinivas and A. Uday Kumar", title = "{Soma}: a compositional language for distributed systems", journal = j-SIGPLAN, volume = "41", number = "3", pages = "10--19", month = mar, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1140543.1140547", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:41:56 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Current mobile and distributed applications are being developed using J2ME, J2EE, CORBA, DCOM, etc. Developing applications for distributed and mobile systems is a tedious process, because the applications in these systems are open for change in requirements. So providing a language support for application development in open systems is vital. Component-oriented programming is well suited for open systems [1]. The component interactions is the key issue in composition languages. Software systems can be viewed in two distinct ways. A running system can be seen as a collection of interacting entities. However, at the level of system specification we can view the system as a composition of various software components [1]. To specify systems consisting of interacting components, a composition language is required. Applications built in these languages satisfy the requirements of an open system. Thus there is a need to develop a composition language. The key challenge is to define a set of operators in the language which represent different coordination styles.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ning:2006:MGW, author = "Zhang Ning and Guangze Xiong", title = "Minimizing {GC} work by analysis of live objects", journal = j-SIGPLAN, volume = "41", number = "3", pages = "20--29", month = mar, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1140543.1140548", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:41:56 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "As complex embedded real-time systems are widely used, automatic memory management, or garbage collection, is a technique that significantly reduces the complex problem of correct memory management. In recent years, people often use time-based real-time GC to meet the deadline of real-time tasks. Some algorithms are proposed to reduce memory requirement based on time-based approaches. However, they mainly focus on scheduling strategy and GC algorithms such as copying algorithm and mark-sweep algorithm et al. This paper treats GC as a dynamical process and gives the analysis of amount of live objects. We propose that GC should process memory space of each task one by one based on the variance of amount of live objects. The proposed approach can minimize GC work and further reduce memory requirement.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "embedded systems; garbage collector; real-time; scheduling", } @Article{Dekker:2006:LFP, author = "Anthony H. Dekker", title = "Lazy functional programming in {Java}", journal = j-SIGPLAN, volume = "41", number = "3", pages = "30--39", month = mar, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1140543.1140549", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:41:56 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In this paper, we show how lazy functional programming techniques can be used within the Java programming language. We provide Java implementations of classic examples of lazy lists, such as the Sieve of Eratosthenes, the Eight Queens Problem, and natural-language parsing. We discuss how well these implementations succeed, compared to their original counterparts. We also point out the potential synergy between adding lazy techniques to Java, and adding generic types. The examples we provide would be suitable for teaching functional programming concepts in the context of a Java-based syllabus.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "functional programming; Java; lazy lists", } @Article{Chang:2006:SCA, author = "Byeong-Mo Chang", title = "Static check analysis for {Java} stack inspection", journal = j-SIGPLAN, volume = "41", number = "3", pages = "40--48", month = mar, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1140543.1140550", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:41:56 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Most static analysis techniques for optimizing stack inspection approximate permission sets such as granted permissions and denied permissions. Because they compute permission sets following control flow, they usually take intra-procedural control flow into consideration as well as call relationship. In this paper, we observed that it is necessary for more precise optimization on stack inspection to compute more specific information on checks instead of permissions. We propose a backward static analysis based on simple call graph to approximate redundant permission checks which must fail. In a similar way, we also propose a backward static analysis to approximate success permission checks, which must pass stack inspection.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "Java; security; stack inspection; static analysis", } @Article{Frenger:2006:TYF, author = "Paul Frenger", title = "Ten years of {Forth} in {ACM Sigplan Notices}: part 2", journal = j-SIGPLAN, volume = "41", number = "4", pages = "3--14", month = apr, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1147214.1147216", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:17 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Last column, we began a two-part retrospective to recap the first ten years of the ACM Sigplan Notices Forth Report. Our walk through memory lane began with a history lesson: who Chuck Moore is, the origins of the Forth programming language, Forth software and hardware incarnations, some vendors, conferences, and a few tall tales. We looked at little pioneer ACM SIG-Forth and its four-year Newsletter, and how phoenix-like their ashes gave rise to the ten-year run of the Forth Report in Sigplan Notices.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Mann:2006:TBG, author = "Paul B. Mann", title = "A translational {BNF} grammar notation {(TBNF)}", journal = j-SIGPLAN, volume = "41", number = "4", pages = "16--23", month = apr, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1147214.1147218", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:17 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "BNF grammar notation came into existence about 1960 for the specification of programming languages. It was first used for the automatic generation of parsers about 1972. BNF was later replaced with EBNF offering regular expression notation in the right side of grammar rules. EBNF is powerful, however, it describes only the recognition phase, which is only 1/3 of the process of language translation. The second phase is the construction of an abstract-syntax tree and the third phase is the creation of an instruction code sequence. Some parser generators automate the construction of an AST, but none, that I know of, automate the output of instruction codes. Certainly if these second and third phases are to be automated, a suitable notation is required in the grammar. This paper proposes a notation that permits the construction of the AST in the correct order and the creation of instruction codes. In effect, the complete translation process can be described in the grammar and correct translators generated automatically. A working system has been implemented and tested with good results. The generator is called LRgen and the new grammar notation is called TBNF.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "AST; BNF; compiler compiler; EBNF; grammar; grammarware; intermediate code; LALR; language recognition; LL; LR; parser; parser generator; syntax", } @Article{Lenka:2006:SML, author = "Dillip Kumar Lenka and Pawan Kumar", title = "States merging in {LR} parser", journal = j-SIGPLAN, volume = "41", number = "4", pages = "24--29", month = apr, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1147214.1147219", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:17 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Here a scheme is presented, which reduces the size of an LR parser. It is accomplished by merging two states, which do not perform differently on the same input symbol or non-terminal. This state merging has following advantages:1. The reduction in number of states is greater than the reduction in an LALR parser.2. The power of parser is not reduced as it would be in an LALR parser. The above merging scheme has following disadvantages:1. Even erroneous inputs are accepted. However, it is stopped by changing the notion of acceptance.2. Errors are report late and in a misleading manner.3. Parsing takes more time because string matching is done during reduction.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Jiang:2006:AAR, author = "Shujuan Jiang and Baowen Xu and Liang Shi", title = "An approach to analyzing recursive programs with exception handling constructs", journal = j-SIGPLAN, volume = "41", number = "4", pages = "30--35", month = apr, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1147214.1147220", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:17 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Exception handling in modern programming languages is a mechanism that can improve software reliability. Since the signature of a C++ function may not specify the set of exceptions that the function can propagate, it is necessary to figure out the exceptions that may be raised during executing program, the origins of them and their propagation paths. Unfortunately, in large programs that contain recursive functions, this exceptional information can be difficult, if not impossible, to determine. Therefore, the paper proposes a new static analysis approach to analyze C++ recursive functions with exception handling constructs. Firstly, it presents a model that can describe the exception handling information for a C++ single function. Then, it proposes a new method to compute the set of exception types that propagate from a recursive function. Finally, the limitations and the applications of the model are discussed.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "exception handling; exception propagation; programming language; recursive function; reliability; static analysis", } @Article{Tuya:2006:PGS, author = "Javier Tuya and M. Jos{\'e} Su{\'a}rez-Cabal and Claudio de la Riva", title = "A practical guide to {SQL} white-box testing", journal = j-SIGPLAN, volume = "41", number = "4", pages = "36--41", month = apr, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1147214.1147221", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:17 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "SQL is a ubiquitous language used in a wide range of applications for accessing the data stored in relational databases. However, the usual software testing techniques are not designed to address some important features of SQL. We present a set of practical guidelines for designing white-box tests cases that reasonably exercise the way in which an SQL query processes the stored data. These guidelines are illustrated using an example.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "database testing; software testing; SQL query language", } @Article{Loka:2006:CRH, author = "Raghavendra Rao Loka", title = "Compilation reuse and hybrid compilation: an experiment", journal = j-SIGPLAN, volume = "41", number = "4", pages = "42--49", month = apr, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1147214.1147222", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:17 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Compiling hardware models to machine code poses some unusual problems. While compilers for traditional programming languages are well understood, they tend to take very long to compile the C code generated from hardware models. The code generated from hardware models, unlike in the inputs seen by traditional compilers, have too many simple routines. These routines have much simpler control flow, and the patterns of the routines are repeated several times over. This paper discusses the approaches developed at Synopsys to compile these routines as optimally as traditional compilers, but taking less time.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Behera:2006:IAL, author = "Chandan Kumar Behera and Pawan Kumar", title = "An improved algorithm for loop dead optimization", journal = j-SIGPLAN, volume = "41", number = "5", pages = "11--20", month = may, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1149982.1149984", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:34 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Loop dead variables are the variables, which are defined in a loop, but not used in that loop. On successive execution of loop, these get different value, however all values (except last value) are not used. Hence in optimized program, the definition of a loop dead variable can be moved outside the loop (after the loop), rather than computing every time, inside the loop. In our discussion, we have assumed only simple loop. Every loop has one entry and one exit point.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compiler design; loop invariant computations; loop optimization", } @Article{Moon:2006:TMS, author = "Sewon Moon and Byeong-Mo Chang", title = "A thread monitoring system for multithreaded {Java} programs", journal = j-SIGPLAN, volume = "41", number = "5", pages = "21--29", month = may, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1149982.1149985", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:34 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "To assist developing robust multithreaded software, we develop a thread monitoring system for multithreaded Java programs, which can trace or monitor running threads and synchronization. We design a monitoring system which has options to select interesting threads and synchronized actions. Using this tool, programmers can monitor only interesting threads and synchronization in more details by selecting options, and can detect a deadlock. It also provides profile information after execution, which summarizes behavior of running threads and synchronized actions during execution. We implement the system based on code inlining, and presents some experimental results.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "Java; monitoring; synchronization; thread", } @Article{Zhang:2006:MPS, author = "Yingzhou Zhang and Jose Emilio Labra Gayo and Agust{\'\i}n Cernuda del R{\'\i}o", title = "A monadic program slicer", journal = j-SIGPLAN, volume = "41", number = "5", pages = "30--38", month = may, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1149982.1149986", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:34 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Program slicing is an important decomposition technique. It has been widely used in many software activities, such as software analyzing, understanding, debugging, testing, and maintenance. The current slicing methods and tools, however, are monolithic, and mainly based on program or system dependence graph. This paper presents a novel formal tool for program slicing. It abstracts the computation of program slicing as a language-independent slice monad transformer, which can be applied to the semantic descriptions of the program in a modular way, forming the corresponding slicing algorithms. Such algorithms allow program slices to be computed directly on abstract syntax, with no need to explicitly construct intermediate structures such as dependence graphs or to record an execution history. It has reusability and language-flexibility properties in comparison with the current program slicing methods/tools.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "modular monadic semantics; monad; monad transformer; program slicer", } @Article{Adams:2006:FAM, author = "Michael D. Adams and David S. Wise", title = "Fast additions on masked integers", journal = j-SIGPLAN, volume = "41", number = "5", pages = "39--45", month = may, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1149982.1149987", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:34 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Suppose the bits of a computer word are partitioned into $d$ disjoint sets, each of which is used to represent one of a $d$-tuple of Cartesian indices into $d$-dimensional space. Then, regardless of the partition, simple group operations and comparisons can be implemented for each index on a conventional processor in a sequence of two or three register operations. These indexings allow any blocked algorithm from linear algebra to use some non-standard matrix orderings that increase locality and enhance their performance. The underlying implementations were designed for alternating bit positions to index Morton-ordered matrices, but they apply, as well, to any bit partitioning. A hybrid ordering of the elements of a matrix becomes possible, therefore, with row-\slash column-major ordering within cache-sized blocks and Morton ordering of those blocks, themselves. So, one can enjoy the temporal locality of nested blocks, as well as compiler optimizations on row- or column-major ordering in base blocks.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compilers; dilated integers; index arithmetic; Morton order; quadtrees", } @Article{Frost:2006:NTP, author = "Richard A. Frost and Rahmatullah Hafiz", title = "A new top-down parsing algorithm to accommodate ambiguity and left recursion in polynomial time", journal = j-SIGPLAN, volume = "41", number = "5", pages = "46--54", month = may, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1149982.1149988", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:34 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Top-down backtracking language processors are highly modular, can handle ambiguity, and are easy to implement with clear and maintainable code. However, a widely-held, and incorrect, view is that top-down processors are inherently exponential for ambiguous grammars and cannot accommodate left-recursive productions. It has been known for many years that exponential complexity can be avoided by memoization, and that left-recursive productions can be accommodated through a variety of techniques. However, until now, memoization and techniques for handling left recursion have either been presented independently, or else attempts at their integration have compromised modularity and clarity of the code.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "backtracking; left-recursion; memoization; parser combinators; top-down parsing", } @Article{Carlstrom:2006:ATP, author = "Brian D. Carlstrom and Austen McDonald and Hassan Chafi and JaeWoong Chung and Chi Cao Minh and Christos Kozyrakis and Kunle Olukotun", title = "The {ATOMOS} transactional programming language", journal = j-SIGPLAN, volume = "41", number = "6", pages = "1--13", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133255.1133983", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Atomos is the first programming language with implicit transactions, strong atomicity, and a scalable multiprocessor implementation. Atomos is derived from Java, but replaces its synchronization and conditional waiting constructs with simpler transactional alternatives. The Atomos watch statement allows programmers to specify fine-grained watch sets used with the Atomos retry conditional waiting statement for efficient transactional conflict-driven wakeup even in transactional memory systems with a limited number of transactional contexts. Atomos supports open-nested transactions, which are necessary for building both scalable application programs and virtual machine implementations. The implementation of the Atomos scheduler demonstrates the use of open nesting within the virtual machine and introduces the concept of transactional memory violation handlers that allow programs to recover from data dependency violations without rolling back. Atomos programming examples are given to demonstrate the usefulness of transactional programming primitives. Atomos and Java are compared through the use of several benchmarks. The results demonstrate both the improvements in parallel programming ease and parallel program performance provided by Atomos.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "conditional synchronization; Java; multiprocessor architecture; transactional memory", } @Article{Harris:2006:OMT, author = "Tim Harris and Mark Plesko and Avraham Shinnar and David Tarditi", title = "Optimizing memory transactions", journal = j-SIGPLAN, volume = "41", number = "6", pages = "14--25", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133255.1133984", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Atomic blocks allow programmers to delimit sections of code as 'atomic', leaving the language's implementation to enforce atomicity. Existing work has shown how to implement atomic blocks over word-based transactional memory that provides scalable multi-processor performance without requiring changes to the basic structure of objects in the heap. However, these implementations perform poorly because they interpose on all accesses to shared memory in the atomic block, redirecting updates to a thread-private log which must be searched by reads in the block and later reconciled with the heap when leaving the block. This paper takes a four-pronged approach to improving performance: (1) we introduce a new 'direct access' implementation that avoids searching thread-private logs, (2) we develop compiler optimizations to reduce the amount of logging (e.g. when a thread accesses the same data repeatedly in an atomic block), (3) we use runtime filtering to detect duplicate log entries that are missed statically, and (4) we present a series of GC-time techniques to compact the logs generated by long-running atomic blocks. Our implementation supports short-running scalable concurrent benchmarks with less than 50\\% overhead over a non-thread-safe baseline. We support long atomic blocks containing millions of shared memory accesses with a 2.5-4.5x slowdown.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "atomicity; critical regions; transactional memory", } @Article{Adl-Tabatabai:2006:CRS, author = "Ali-Reza Adl-Tabatabai and Brian T. Lewis and Vijay Menon and Brian R. Murphy and Bratin Saha and Tatiana Shpeisman", title = "Compiler and runtime support for efficient software transactional memory", journal = j-SIGPLAN, volume = "41", number = "6", pages = "26--37", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133981.1133985", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Programmers have traditionally used locks to synchronize concurrent access to shared data. Lock-based synchronization, however, has well-known pitfalls: using locks for fine-grain synchronization and composing code that already uses locks are both difficult and prone to deadlock. Transactional memory provides an alternate concurrency control mechanism that avoids these pitfalls and significantly eases concurrent programming. Transactional memory language constructs have recently been proposed as extensions to existing languages or included in new concurrent language specifications, opening the door for new compiler optimizations that target the overheads of transactional memory. This paper presents compiler and runtime optimizations for transactional memory language constructs. We present a high-performance software transactional memory system (STM) integrated into a managed runtime environment. Our system efficiently implements nested transactions that support both composition of transactions and partial roll back. Our JIT compiler is the first to optimize the overheads of STM, and we show novel techniques for enabling JIT optimizations on STM operations. We measure the performance of our optimizations on a 16-way SMP running multi-threaded transactional workloads. Our results show that these techniques enable transactional memory's performance to compete with that of well-tuned synchronization.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "code generation; compiler optimizations; locking; synchronization; transactional memory; virtual machines", } @Article{Grimm:2006:BET, author = "Robert Grimm", title = "Better extensibility through modular syntax", journal = j-SIGPLAN, volume = "41", number = "6", pages = "38--51", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133981.1133987", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We explore how to make the benefits of modularity available for syntactic specifications and present Rats!, a parser generator for Java that supports easily extensible syntax. Our parser generator builds on recent research on parsing expression grammars (PEGs), which, by being closed under composition, prioritizing choices, supporting unlimited lookahead, and integrating lexing and parsing, offer an attractive alternative to context-free grammars. PEGs are implemented by so-called packrat parsers, which are recursive descent parsers that memoize all intermediate results (hence their name). Memoization ensures linear-time performance in the presence of unlimited lookahead, but also results in an essentially lazy, functional parsing technique. In this paper, we explore how to leverage PEGs and packrat parsers as the foundation for extensible syntax. In particular, we show how make packrat parsing more widely applicable by implementing this lazy, functional technique in a strict, imperative language, while also generating better performing parsers through aggressive optimizations. Next, we develop a module system for organizing, modifying, and composing large-scale syntactic specifications. Finally, we describe a new technique for managing (global) parsing state in functional parsers. Our experimental evaluation demonstrates that the resulting parser generator succeeds at providing extensible syntax. In particular, Rats! enables other grammar writers to realize real-world language extensions in little time and code, and it generates parsers that consistently out-perform parsers created by two GLR parser generators.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "extensible syntax; module system; packrat parsing; parser generator; parsing expression grammar", } @Article{Ertl:2006:FFI, author = "M. Anton Ertl and Kevin Casey and David Gregg", title = "Fast and flexible instruction selection with on-demand tree-parsing automata", journal = j-SIGPLAN, volume = "41", number = "6", pages = "52--60", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133981.1133988", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Tree parsing as supported by code generator generators like BEG, burg, iburg, lburg and ml-burg is a popular instruction selection method. There are two existing approaches for implementing tree parsing: dynamic programming, and tree-parsing automata; each approach has its advantages and disadvantages. We propose a new implementation approach that combines the advantages of both existing approaches: we start out with dynamic programming at compile time, but at every step we generate a state for a tree-parsing automaton, which is used the next time a tree matching the state is found, turning the instruction selector into a fast tree-parsing automaton. We have implemented this approach in the Gforth code generator. The implementation required little effort and reduced the startup time of Gforth by up to a factor of 2.5.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "automaton; dynamic programming; instruction selection; lazy; tree parsing", } @Article{Triantafyllis:2006:FUW, author = "Spyridon Triantafyllis and Matthew J. Bridges and Easwaran Raman and Guilherme Ottoni and David I. August", title = "A framework for unrestricted whole-program optimization", journal = j-SIGPLAN, volume = "41", number = "6", pages = "61--71", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133981.1133989", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Procedures have long been the basic units of compilation in conventional optimization frameworks. However, procedures are typically formed to serve software engineering rather than optimization goals, arbitrarily constraining code transformations. Techniques, such as aggressive inlining and interprocedural optimization, have been developed to alleviate this problem, but, due to code growth and compile time issues, these can be applied only sparingly. This paper introduces the Procedure Boundary Elimination (PBE) compilation framework, which allows unrestricted whole-program optimization. PBE allows all intra-procedural optimizations and analyses to operate on arbitrary subgraphs of the program, regardless of the original procedure boundaries and without resorting to inlining. In order to control compilation time, PBE also introduces novel extensions of region formation and encapsulation. PBE enables targeted code specialization, which recovers the specialization benefits of inlining while keeping code growth in check. This paper shows that PBE attains better performance than inlining with half the code growth.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "inlining; interprocedural analysis; interprocedural optimization; path-sensitive analysis; procedure unification; region encapsulation; region formation; region-based compilation; specialization; superblock; whole-program analysis; whole-program optimization", } @Article{Neamtiu:2006:PDS, author = "Iulian Neamtiu and Michael Hicks and Gareth Stoyle and Manuel Oriol", title = "Practical dynamic software updating for {C}", journal = j-SIGPLAN, volume = "41", number = "6", pages = "72--83", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133981.1133991", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Software updates typically require stopping and restarting an application, but many systems cannot afford to halt service, or would prefer not to. Dynamic software updating (DSU) addresses this difficulty by permitting programs to be updated while they run. DSU is appealing compared to other approaches for on-line upgrades because it is quite general and requires no redundant hardware. The challenge is in making DSU practical: it should be flexible, and yet safe, efficient, and easy to use. In this paper, we present Ginseng, a DSU implementation for C that aims to meet this challenge. We compile programs specially so that they can be dynamically patched, and generate most of a dynamic patch automatically. Ginseng performs a series of analyses that when combined with some simple runtime support ensure that an update will not violate type-safety while guaranteeing that data is kept up-to-date. We have used Ginseng to construct and dynamically apply patches to three substantial open-source server programs--- Very Secure FTP daemon, OpenSSH sshd daemon, and GNU Zebra. In total, we dynamically patched each program with three years' worth of releases. Though the programs changed substantially, the majority of updates were easy to generate. Performance experiments show that all patches could be applied in less than 5 ms, and that the overhead on application throughput due to updating support ranged from 0 to at most 32\%.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dynamic software updating; function indirection; loop extraction; type wrapping", } @Article{Fei:2006:APR, author = "Long Fei and Samuel P. Midkiff", title = "{Artemis}: practical runtime monitoring of applications for execution anomalies", journal = j-SIGPLAN, volume = "41", number = "6", pages = "84--95", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133981.1133992", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A number of hardware and software techniques have been proposed to detect dynamic program behaviors that may indicate a bug in a program. Because these techniques suffer from high overheads they are useful in finding bugs in programs before they are released, but are significantly less useful in finding bugs in long-running programs on production systems -- the same bugs that are the most difficult to find using traditional techniques. In this paper we propose the Artemis$^1$ is the Greek goddess of the hunt and wild animals. Our framework guides the hunt for wild bugs. compiler-based instrumentation framework that complements many pre-existing runtime monitoring techniques. The Artemis framework guides baseline monitoring techniques toward regions of the program where bugs are likely to occur, yielding a low asymptotic monitoring overhead. Artemis also facilitates system-load aware runtime monitoring that allows the monitoring coverage to be dynamically scaled up to take advantage of extra cycles when the system load is low, and dynamically scaled down to monitor only the most suspicious regions when the system load is high. Our experiments show that Artemis' asymptotic overhead can outperform the performance floor overhead of random sampling for many tools, and that Artemis can effectively guide a monitoring tool to the buggy regions of a program. Our experimental results show that Artemis applied to a hardware-based PC-invariance monitoring scheme and a value-based invariance detection and checking scheme significantly improves their runtime monitoring overhead (by up to 4.6 times) with moderate impact on their bug-detecting capabilities.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "context invariant; debugging; dynamic context; pointer-type table; runtime monitoring; selective monitoring; value invariant", } @Article{Acar:2006:EAS, author = "Umut A. Acar and Guy E. Blelloch and Matthias Blume and Kanat Tangwongsan", title = "An experimental analysis of self-adjusting computation", journal = j-SIGPLAN, volume = "41", number = "6", pages = "96--107", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133981.1133993", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Dependence graphs and memoization can be used to efficiently update the output of a program as the input changes dynamically. Recent work has studied techniques for combining these approaches to effectively dynamize a wide range of applications. Toward this end various theoretical results were given. In this paper we describe the implementation of a library based on these ideas, and present experimental results on the efficiency of this library on a variety of applications. The results of the experiments indicate that the approach is effective in practice, often requiring orders of magnitude less time than recomputing the output from scratch. We believe this is the first experimental evidence that incremental computation of any type is effective in practice for a reasonably broad set of applications.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "computational geometry; dynamic algorithms; dynamic dependence graphs; memorization; performance; self-adjusting computation", } @Article{Barton:2006:SMP, author = "Christopher Barton and C{\u{a}}lin Cas{\c{c}}aval and George Alm{\'a}si and Yili Zheng and Montse Farreras and Siddhartha Chatterje and Jos{\'e} Nelson Amaral", title = "Shared memory programming for large scale machines", journal = j-SIGPLAN, volume = "41", number = "6", pages = "108--117", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133981.1133995", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper describes the design and implementation of a scalable run-time system and an optimizing compiler for Unified Parallel C (UPC). An experimental evaluation on BlueGene/L{\reg}, a distributed-memory machine, demonstrates that the combination of the compiler with the runtime system produces programs with performance comparable to that of efficient MPI programs and good performance scalability up to hundreds of thousands of processors. Our runtime system design solves the problem of maintaining shared object consistency efficiently in a distributed memory machine. Our compiler infrastructure simplifies the code generated for parallel loops in UPC through the elimination of affinity tests, eliminates several levels of indirection for accesses to segments of shared arrays that the compiler can prove to be local, and implements remote update operations through a lower-cost asynchronous message. The performance evaluation uses three well-known benchmarks --- HPC RandomAccess, HPC STREAM and NAS CG --- to obtain scaling and absolute performance numbers for these benchmarks on up to 131072 processors, the full BlueGene/L machine. These results were used to win the HPC Challenge Competition at SC05 in Seattle WA, demonstrating that PGAS languages support both productivity and performance.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "BlueGene; PGAS programming model; UPC", } @Article{Ren:2006:ODP, author = "Gang Ren and Peng Wu and David Padua", title = "Optimizing data permutations for {SIMD} devices", journal = j-SIGPLAN, volume = "41", number = "6", pages = "118--131", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133981.1133996", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The widespread presence of SIMD devices in today's microprocessors has made compiler techniques for these devices tremendously important. One of the most important and difficult issues that must be addressed by these techniques is the generation of the data permutation instructions needed for non-contiguous and misaligned memory references. These instructions are expensive and, therefore, it is of crucial importance to minimize their number to improve performance and, in many cases, enable speedups over scalar code. Although it is often difficult to optimize an isolated data reorganization operation, a collection of related data permutations can often be manipulated to reduce the number of operations. This paper presents a strategy to optimize all forms of data permutations. The strategy is organized into three steps. First, all data permutations in the source program are converted into a generic representation. These permutations can originate from vector accesses to non-contiguous and misaligned memory locations or result from compiler transformations. Second, an optimization algorithm is applied to reduce the number of data permutations in a basic block. By propagating permutations across statements and merging consecutive permutations whenever possible, the algorithm can significantly reduce the number of data permutations. Finally, a code generation algorithm translates generic permutation operations into native permutation instructions for the target platform. Experiments were conducted on various kinds of applications. The results show that up to 77\% of the permutation instructions are eliminated and, as a result, the average performance improvement is 48\% on VMX and 68\% on SSE2. For several applications, near perfect speedups have been achieved on both platforms.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "data permutation; optimization; SIMD compilation", } @Article{Nuzman:2006:AVI, author = "Dorit Nuzman and Ira Rosen and Ayal Zaks", title = "Auto-vectorization of interleaved data for {SIMD}", journal = j-SIGPLAN, volume = "41", number = "6", pages = "132--143", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133255.1133997", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Most implementations of the Single Instruction Multiple Data (SIMD) model available today require that data elements be packed in vector registers. Operations on disjoint vector elements are not supported directly and require explicit data reorganization manipulations. Computations on non-contiguous and especially interleaved data appear in important applications, which can greatly benefit from SIMD instructions once the data is reorganized properly. Vectorizing such computations efficiently is therefore an ambitious challenge for both programmers and vectorizing compilers. We demonstrate an automatic compilation scheme that supports effective vectorization in the presence of interleaved data with constant strides that are powers of 2, facilitating data reorganization. We demonstrate how our vectorization scheme applies to dominant SIMD architectures, and present experimental results on a wide range of key kernels, showing speedups in execution time up to 3.7 for interleaving levels (stride) as high as 8.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "data reuse; SIMD; subword parallelism; vectorization; Viterbi", } @Article{Dhurjati:2006:SEA, author = "Dinakar Dhurjati and Sumant Kowshik and Vikram Adve", title = "{SAFECode}: enforcing alias analysis for weakly typed languages", journal = j-SIGPLAN, volume = "41", number = "6", pages = "144--157", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133255.1133999", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Static analysis of programs in weakly typed languages such as C and C++ is generally not sound because of possible memory errors due to dangling pointer references, uninitialized pointers, and array bounds overflow. We describe a compilation strategy for standard C programs that guarantees that aggressive interprocedural pointer analysis (or less precise ones), a call graph, and type information for a subset of memory, are never invalidated by any possible memory errors. We formalize our approach as a new type system with the necessary run-time checks in operational semantics and prove the correctness of our approach for a subset of C. Our semantics provide the foundation for other sophisticated static analyses to be applied to C programs with a guarantee of soundness. Our work builds on a previously published transformation called Automatic Pool Allocation to ensure that hard-to-detect memory errors (dangling pointer references and certain array bounds errors) cannot invalidate the call graph, points-to information or type information. The key insight behind our approach is that pool allocation can be used to create a run-time partitioning of memory that matches the compile-time memory partitioning in a points-to graph, and efficient checks can be used to isolate the run-time partitions. Furthermore, we show that the sound analysis information enables static checking techniques that eliminate many run-time checks. Our approach requires no source code changes, allows memory to be managed explicitly, and does not use meta-data on pointers or individual tag bits for memory. Using several benchmarks and system codes, we show experimentally that the run-time overheads are low (less than 10\% in nearly all cases and 30\% in the worst case we have seen). We also show the effectiveness of static analyses in eliminating run-time checks.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "alias analysis; automatic pool allocation; compilers; programming languages; region management", } @Article{Berger:2006:DPM, author = "Emery D. Berger and Benjamin G. Zorn", title = "{DieHard}: probabilistic memory safety for unsafe languages", journal = j-SIGPLAN, volume = "41", number = "6", pages = "158--168", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133981.1134000", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Applications written in unsafe languages like C and C++ are vulnerable to memory errors such as buffer overflows, dangling pointers, and reads of uninitialized data. Such errors can lead to program crashes, security vulnerabilities, and unpredictable behavior. We present DieHard, a runtime system that tolerates these errors while probabilistically maintaining soundness. DieHard uses randomization and replication to achieve probabilistic memory safety by approximating an infinite-sized heap. DieHard's memory manager randomizes the location of objects in a heap that is at least twice as large as required. This algorithm prevents heap corruption and provides a probabilistic guarantee of avoiding memory errors. For additional safety, DieHard can operate in a replicated mode where multiple replicas of the same application are run simultaneously. By initializing each replica with a different random seed and requiring agreement on output, the replicated version of Die-Hard increases the likelihood of correct execution because errors are unlikely to have the same effect across all replicas. We present analytical and experimental results that show DieHard's resilience to a wide range of memory errors, including a heap-based buffer overflow in an actual application.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "DieHard; dynamic memory allocation; probabilistic memory safety; randomization; replication", } @Article{Zhang:2006:PDS, author = "Xiangyu Zhang and Neelam Gupta and Rajiv Gupta", title = "Pruning dynamic slices with confidence", journal = j-SIGPLAN, volume = "41", number = "6", pages = "169--180", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133255.1134002", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Given an incorrect value produced during a failed program run (e.g., a wrong output value or a value that causes the program to crash), the backward dynamic slice of the value very frequently captures the faulty code responsible for producing the incorrect value. Although the dynamic slice often contains only a small percentage of the statements executed during the failed program run, the dynamic slice can still be large and thus considerable effort may be required by the programmer to locate the faulty code. In this paper we develop a strategy for pruning the dynamic slice to identify a subset of statements in the dynamic slice that are likely responsible for producing the incorrect value. We observe that some of the statements used in computing the incorrect value may also have been involved in computing correct values (e.g., a value produced by a statement in the dynamic slice of the incorrect value may also have been used in computing a correct output value prior to the incorrect value). For each such executed statement in the dynamic slice, using the value profiles of the executed statements, we compute a confidence value ranging from 0 to 1 --- a higher confidence value corresponds to greater likelihood that the execution of the statement produced a correct value. Given a failed run involving execution of a single error, we demonstrate that the pruning of a dynamic slice by excluding only the statements with the confidence value of 1 is highly effective in reducing the size of the dynamic slice while retaining the faulty code in the slice. Our experiments show that the number of distinct statements in a pruned dynamic slice are 1.79 to 190.57 times less than the full dynamic slice. Confidence values also prioritize the statements in the dynamic slice according to the likelihood of them being faulty. We show that examining the statements in the order of increasing confidence values is an effective strategy for reducing the effort of fault location.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "data and control dependences; debugging; dynamic slicing", } @Article{Johnson:2006:CSD, author = "Troy A. Johnson and Rudolf Eigenmann", title = "Context-sensitive domain-independent algorithm composition and selection", journal = j-SIGPLAN, volume = "41", number = "6", pages = "181--192", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133981.1134003", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Progressing beyond the productivity of present-day languages appears to require using domain-specific knowledge. Domain-specific languages and libraries (DSLs) proliferate, but most optimizations and language features have limited portability because each language's semantics are related closely to its domain. We explain how any DSL compiler can use a domain-independent AI planner to implement algorithm composition as a language feature. Our notion of composition addresses a common DSL problem: good library designers tend to minimize redundancy by including only fundamental procedures that users must chain together into call sequences. Novice users are confounded by not knowing an appropriate sequence to achieve their goal. Composition allows the programmer to define and call an abstract algorithm (AA) like a procedure. The compiler replaces an AA call with a sequence of library calls, while considering the calling context. Because AI planners compute a sequence of operations to reach a goal state, the compiler can implement composition by analyzing the calling context to provide the planner's initial state. Nevertheless, mapping composition onto planning is not straightforward because applying planning to software requires extensions to classical planning, and procedure specifications may be incomplete when expressed in a planning language. Compositions may not be provably correct, so our approach mitigates semantic incompleteness with unobtrusive programmer-compiler interaction. This tradeoff is key to making composition a practical and natural feature of otherwise imperative languages, whose users eschew complex logical specifications. Compositions satisfying an AA may not be equal in performance, memory usage, or precision and require selection of a preferred solution. We examine language design and implementation issues, and we perform a case study on the BioPerl bioinformatics library.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "algorithm composition; algorithm selection; automated planning; bioinformatics; domain-specific languages", } @Article{Chen:2006:RNE, author = "Guangyu Chen and Feihui Li and Mahmut Kandemir and Mary Jane Irwin", title = "Reducing {NoC} energy consumption through compiler-directed channel voltage scaling", journal = j-SIGPLAN, volume = "41", number = "6", pages = "193--203", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133981.1134004", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "While scalable NoC (Network-on-Chip) based communication architectures have clear advantages over long point-to-point communication channels, their power consumption can be very high. In contrast to most of the existing hardware-based efforts on NoC power optimization, this paper proposes a compiler-directed approach where the compiler decides the appropriate voltage/frequency levels to be used for each communication channel in the NoC. Our approach builds and operates on a novel graph based representation of a parallel program and has been implemented within an optimizing compiler and tested using 12 embedded benchmarks. Our experiments indicate that the proposed approach behaves better --- from both performance and power perspectives --- than a hardware-based scheme and the energy savings it achieves are very close to the savings that could be obtained from an optimal, but hypothetical voltage/frequency scaling scheme.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compiler; energy; network-on-chip", } @Article{Koes:2006:GPR, author = "David Ryan Koes and Seth Copen Goldstein", title = "A global progressive register allocator", journal = j-SIGPLAN, volume = "41", number = "6", pages = "204--215", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133255.1134006", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper describes a global progressive register allocator, a register allocator that uses an expressive model of the register allocation problem to quickly find a good allocation and then progressively find better allocations until a provably optimal solution is found or a preset time limit is reached. The key contributions of this paper are an expressive model of global register allocation based on multicommodity network flows that explicitly represents spill code optimization, register preferences, copy insertion, and constant rematerialization; two fast, but effective, heuristic allocators based on this model; and a more elaborate progressive allocator that uses Lagrangian relaxation to compute the optimality of its allocations. Our progressive allocator demonstrates code size improvements as large as 16.75\% compared to a traditional graph allocator. On average, we observe an initial improvement of 3.47\%, which increases progressively to 6.84\% as more time is permitted for compilation.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "progressive solver; register allocation", } @Article{Nakaike:2006:PBG, author = "Takuya Nakaike and Tatsushi Inagaki and Hideaki Komatsu and Toshio Nakatani", title = "Profile-based global live-range splitting", journal = j-SIGPLAN, volume = "41", number = "6", pages = "216--227", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133981.1134007", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Live-range splitting is a technique to split the live range of a given variable into multiple subranges, each of which can be assigned to a different register or spilled out to memory in order to improve results of coloring register allocation. Previous techniques, such as aggressive live-range splitting, tend to produce extra spill code in the frequently executed (called hot) regions of the code, since they don't distinguish hot regions from others. We propose a new live-range splitting algorithm, which can reduce the amount of spill code in hot regions by coalescing the live ranges based on profile information after splitting the live ranges at every join and fork point in the control-flow graph. Our experimental results have shown that our new algorithm improved the performance of SPECjvm98 by up to 33\% over aggressive live-range splitting and 7\% over the base coloring algorithm without any live-range splitting.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "graph coloring; live-range splitting; register allocation", } @Article{Bridges:2006:AIS, author = "Matthew J. Bridges and Neil Vachharajani and Guilherme Ottoni and David I. August", title = "Automatic instruction scheduler retargeting by reverse-engineering", journal = j-SIGPLAN, volume = "41", number = "6", pages = "228--238", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133255.1134008", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In order to generate high-quality code for modern processors, a compiler must aggressively schedule instructions, maximizing resource utilization for execution efficiency. For a compiler to produce such code, it must avoid structural hazards by being aware of the processor's available resources and of how these resources are utilized by each instruction. Unfortunately, the most prevalent approach to constructing such a scheduler, manually discovering and specifying this information, is both tedious and error-prone. This paper presents a new approach which, when given a processor or processor model, automatically determines this information. After establishing that the problem of perfectly determining a processor's structural hazards through probing is not solvable, this paper proposes a heuristic algorithm that discovers most of this information in practice. This can be used either to alleviate the problems associated with manual creation or to verify an existing specification. Scheduling with these automatically derived structural hazards yields almost all of the performance gain achieved using perfect hazard information.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "automatic retargeting; compilers; instruction scheduling; reverse-engineering; structural hazard", } @Article{Lau:2006:OPA, author = "Jeremy Lau and Matthew Arnold and Michael Hind and Brad Calder", title = "Online performance auditing: using hot optimizations without getting burned", journal = j-SIGPLAN, volume = "41", number = "6", pages = "239--251", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133255.1134010", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "As hardware complexity increases and virtualization is added at more layers of the execution stack, predicting the performance impact of optimizations becomes increasingly difficult. Production compilers and virtual machines invest substantial development effort in performance tuning to achieve good performance for a range of benchmarks. Although optimizations typically perform well on average, they often have unpredictable impact on running time, sometimes degrading performance significantly. Today's VMs perform sophisticated feedback-directed optimizations, but these techniques do not address performance degradations, and they actually make the situation worse by making the system more unpredictable. This paper presents an online framework for evaluating the effectiveness of optimizations, enabling an online system to automatically identify and correct performance anomalies that occur at runtime. This work opens the door for a fundamental shift in the way optimizations are developed and tuned for online systems, and may allow the body of work in offline empirical optimization search to be applied automatically at runtime. We present our implementation and evaluation of this system in a product Java VM.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "feedback-directed optimizations; Java; virtual machines", } @Article{Chilimbi:2006:CCC, author = "Trishul M. Chilimbi and Ran Shaham", title = "Cache-conscious coallocation of hot data streams", journal = j-SIGPLAN, volume = "41", number = "6", pages = "252--262", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133255.1134011", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The memory system performance of many programs can be improved by coallocating contemporaneously accessed heap objects in the same cache block. We present a novel profile-based analysis for producing such a layout. The analysis achieves cache-conscious coallocation of a hot data stream H (i.e., a regular data access pattern that frequently repeats) by isolating and combining allocation sites of object instances that appear in H such that intervening allocations coming from other sites are separated. The coallocation solution produced by the analysis is enforced by an automatic tool, cminstr, that redirects a program's heap allocations to a run-time coallocation library comalloc. We also extend the analysis to coallocation at object field granularity. The resulting field coallocation solution generalizes common data restructuring techniques, such as field reordering, object splitting, and object merging, and allows their combination. Furthermore, it provides insight into object restructuring by breaking down the coallocation benefit on a per-technique basis, which provides the opportunity to pick the 'sweet spot' for each program. Experimental results using a set of memory-performance-limited benchmarks, including a few SPECInt2000 programs, and Microsoft VisualFoxPro, indicate that programs possess significant coallocation opportunities. Automatic object coallocation improves execution time by 13\% on average in the presence of hardware prefetching. Hand-implemented field coallocation solutions for two of the benchmarks produced additional improvements (12\% and 22\%) but the effort involved suggests implementing an automated version for type-safe languages, such as Java and C\#.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "cache optimization; data locality; data profiling; dynamic allocation; hot data streams; memory layout", } @Article{Zhuang:2006:AEA, author = "Xiaotong Zhuang and Mauricio J. Serrano and Harold W. Cain and Jong-Deok Choi", title = "Accurate, efficient, and adaptive calling context profiling", journal = j-SIGPLAN, volume = "41", number = "6", pages = "263--271", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133981.1134012", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Calling context profiles are used in many inter-procedural code optimizations and in overall program understanding. Unfortunately, the collection of profile information is highly intrusive due to the high frequency of method calls in most applications. Previously proposed calling-context profiling mechanisms consequently suffer from either low accuracy, high overhead, or both. We have developed a new approach for building the calling context tree at runtime, called adaptive bursting. By selectively inhibiting redundant profiling, this approach dramatically reduces overhead while preserving profile accuracy. We first demonstrate the drawbacks of previously proposed calling context profiling mechanisms. We show that a low-overhead solution using sampled stack-walking alone is less than 50\% accurate, based on degree of overlap with a complete calling-context tree. We also show that a static bursting approach collects a highly accurate profile, but causes an unacceptable application slowdown. Our adaptive solution achieves 85\% degree of overlap and provides an 88\% hot-edge coverage when using a 0.1 hot-edge threshold, while dramatically reducing overhead compared to the static bursting approach.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "adaptive; call graph; calling context; calling context tree; Java Virtual Machine; profiling", } @Article{Jarvi:2006:ASG, author = "Jaakko J{\"a}rvi and Douglas Gregor and Jeremiah Willcock and Andrew Lumsdaine and Jeremy Siek", title = "Algorithm specialization in generic programming: challenges of constrained generics in {C++}", journal = j-SIGPLAN, volume = "41", number = "6", pages = "272--282", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133981.1134014", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Generic programming has recently emerged as a paradigm for developing highly reusable software libraries, most notably in C++. We have designed and implemented a constrained generics extension for C++ to support modular type checking of generic algorithms and to address other issues associated with unconstrained generics. To be as broadly applicable as possible, generic algorithms are defined with minimal requirements on their inputs. At the same time, to achieve a high degree of efficiency, generic algorithms may have multiple implementations that exploit features of specific classes of inputs. This process of algorithm specialization relies on non-local type information and conflicts directly with the local nature of modular type checking. In this paper, we review the design and implementation of our extensions for generic programming in C++, describe the issues of algorithm specialization and modular type checking in detail, and discuss the important design tradeoffs in trying to accomplish both. We present the particular design that we chose for our implementation, with the goal of hitting the sweet spot in this interesting design space.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concepts; constrained generics; generic programming; parametric polymorphism; specialization", } @Article{Spoonhower:2006:ESP, author = "Daniel Spoonhower and Joshua Auerbach and David F. Bacon and Perry Cheng and David Grove", title = "{Eventrons}: a safe programming construct for high-frequency hard real-time applications", journal = j-SIGPLAN, volume = "41", number = "6", pages = "283--294", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133981.1134015", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "While real-time garbage collection has achieved worst-case latencies on the order of a millisecond, this technology is approaching its practical limits. For tasks requiring extremely low latency, and especially periodic tasks with frequencies above 1 KHz, Java programmers must currently resort to the NoHeapRealtimeThread construct of the Real-Time Specification for Java. This technique requires expensive run-time checks, can result in unpredictable low-level exceptions, and inhibits communication with the rest of the garbage-collected application. We present Eventrons, a programming construct that can arbitrarily preempt the garbage collector, yet guarantees safety and allows its data to be visible to the garbage-collected heap. Eventrons are a strict subset of Java, and require no run-time memory access checks. Safety is enforced using a data-sensitive analysis and simple run-time support with extremely low overhead. We have implemented Eventrons in IBM's J9 Java virtual machine, and present experimental results in which we ran Eventrons at frequencies up to 22 KHz (a 45 $\mu$s period). Across 10 million periods, 99.997\% of the executions ran within 10 $\mu$ ss of their deadline, compared to 99.999\% of the executions of the equivalent program written in C.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "allocation; real-time; scheduling", } @Article{Shivers:2006:CTC, author = "Olin Shivers and Matthew Might", title = "Continuations and transducer composition", journal = j-SIGPLAN, volume = "41", number = "6", pages = "295--307", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133981.1134016", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "On-line transducers are an important class of computational agent; we construct and compose together many software systems using them, such as stream processors, layered network protocols, DSP networks and graphics pipelines. We show an interesting use of continuations, that, when taken in a CPS setting, exposes the control flow of these systems. This enables a CPS-based compiler to optimise systems composed of these transducers, using only standard, known analyses and optimisations. Critically, the analysis permits optimisation across the composition of these transducers, allowing efficient construction of systems in a hierarchical way.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "calculus; continuation-passing style (CPS); continuations; coroutines; flow analysis; functional languages; fusion; lambda; language design; program analysis; stream processing", } @Article{Naik:2006:ESR, author = "Mayur Naik and Alex Aiken and John Whaley", title = "Effective static race detection for {Java}", journal = j-SIGPLAN, volume = "41", number = "6", pages = "308--319", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133255.1134018", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present a novel technique for static race detection in Java programs, comprised of a series of stages that employ a combination of static analyses to successively reduce the pairs of memory accesses potentially involved in a race. We have implemented our technique and applied it to a suite of multi-threaded Java programs. Our experiments show that it is precise, scalable, and useful, reporting tens to hundreds of serious and previously unknown concurrency bugs in large, widely-used programs with few false alarms.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency; Java; multi-threading; static race detection; synchronization", } @Article{Pratikakis:2006:LCS, author = "Polyvios Pratikakis and Jeffrey S. Foster and Michael Hicks", title = "{LOCKSMITH}: context-sensitive correlation analysis for race detection", journal = j-SIGPLAN, volume = "41", number = "6", pages = "320--331", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133255.1134019", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "One common technique for preventing data races in multi-threaded programs is to ensure that all accesses to shared locations are consistently protected by a lock. We present a tool called LOCKSMITH for detecting data races in C programs by looking for violations of this pattern. We call the relationship between locks and the locations they protect consistent correlation, and the core of our technique is a novel constraint-based analysis that infers consistent correlation context-sensitively, using the results to check that locations are properly guarded by locks. We present the core of our algorithm for a simple formal language \lambda$_>$ which we have proven sound, and discuss how we scale it up to an algorithm that aims to be sound for all of C. We develop several techniques to improve the precision and performance of the analysis, including a sharing analysis for inferring thread locality; existential quantification for modeling locks in data structures; and heuristics for modeling unsafe features of C such as type casts. When applied to several benchmarks, including multi-threaded servers and Linux device drivers, LOCKSMITH found several races while producing a modest number of false alarm.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "context-sensitivity; correlation; locksmith; multi-threaded programming; race detection; type inference", } @Article{Chen:2006:PGP, author = "Wen-ke Chen and Sanjay Bhansali and Trishul Chilimbi and Xiaofeng Gao and Weihaw Chuang", title = "Profile-guided proactive garbage collection for locality optimization", journal = j-SIGPLAN, volume = "41", number = "6", pages = "332--340", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133981.1134021", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Many applications written in garbage collected languages have large dynamic working sets and poor data locality. We present a new system for continuously improving program data locality at run time with low overhead. Our system proactively reorganizes the heap by leveraging the garbage collector and uses profile information collected through a low-overhead mechanism to guide the reorganization at run time. The key contributions include making a case that garbage collection should be viewed as a proactive technique for improving data locality by triggering garbage collection for locality optimization independently of normal garbage collection for space, combining page and cache locality optimization in the same system, and demonstrating that sampling provides sufficiently detailed data access information to guide both page and cache locality optimization with low runtime overhead. We present experimental results obtained by modifying a commercial, state-of-the-art garbage collector to support our claims. Independently triggering garbage collection for locality optimization significantly improved optimizations benefits. Combining page and cache locality optimizations in the same system provided larger average execution time improvements (17\%) than either alone (page 8\%, cache 7\%). Finally, using sampling limited profiling overhead to less than 3\%, on average.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "cache optimization; data locality; garbage collectors; memory optimization; page optimization", } @Article{Vechev:2006:CPD, author = "Martin T. Vechev and Eran Yahav and David F. Bacon", title = "Correctness-preserving derivation of concurrent garbage collection algorithms", journal = j-SIGPLAN, volume = "41", number = "6", pages = "341--353", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133255.1134022", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Constructing correct concurrent garbage collection algorithms is notoriously hard. Numerous such algorithms have been proposed, implemented, and deployed --- and yet the relationship among them in terms of speed and precision is poorly understood, and the validation of one algorithm does not carry over to others. As programs with low latency requirements written in garbage-collected languages become part of society's mission-critical infrastructure, it is imperative that we raise the level of confidence in the correctness of the underlying system, and that we understand the trade-offs inherent in our algorithmic choice. In this paper we present correctness-preserving transformations that can be applied to an initial abstract concurrent garbage collection algorithm which is simpler, more precise, and easier to prove correct than algorithms used in practice--but also more expensive and with less concurrency. We then show how both pre-existing and new algorithms can be synthesized from the abstract algorithm by a series of our transformations. We relate the algorithms formally using a new definition of precision, and informally with respect to overhead and concurrency. This provides many insights about the nature of concurrent collection, allows the direct synthesis of new and useful algorithms, reduces the burden of proof to a single simple algorithm, and lays the groundwork for the automated synthesis of correct concurrent collectors.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrent algorithms; concurrent garbage collection; synthesis; verification", } @Article{Kermany:2006:CCI, author = "Haim Kermany and Erez Petrank", title = "The {Compressor}: concurrent, incremental, and parallel compaction", journal = j-SIGPLAN, volume = "41", number = "6", pages = "354--363", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133255.1134023", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The widely used Mark-and-Sweep garbage collector has a drawback in that it does not move objects during collection. As a result, large long-running realistic applications, such as Web application servers, frequently face the fragmentation problem. To eliminate fragmentation, a heap compaction is run periodically. However, compaction typically imposes very long undesirable pauses in the application. While efficient concurrent collectors are ubiquitous in production runtime systems (such as JVMs), an efficient non-intrusive compactor is still missing. In this paper we present the Compressor, a novel compaction algorithm that is concurrent, parallel, and incremental. The Compressor compacts the entire heap to a single condensed area, while preserving the objects' order, but reduces pause times significantly, thereby allowing acceptable runs on large heaps. Furthermore, the Compressor is the first compactor that requires only a single heap pass. As such, it is the most efficient compactors known today, even when run in a parallel Stop-the-World manner (i.e., when the program threads are halted). Thus, to the best of our knowledge, the Compressor is the most efficient compactor known today. The Compressor was implemented on a Jikes Research RVM and we provide measurements demonstrating its qualities.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compaction; concurrent garbage collection; garbage collection; memory management; runtime systems", } @Article{Guyer:2006:FMS, author = "Samuel Z. Guyer and Kathryn S. McKinley and Daniel Frampton", title = "{Free-Me}: a static analysis for automatic individual object reclamation", journal = j-SIGPLAN, volume = "41", number = "6", pages = "364--375", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133255.1134024", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Garbage collection has proven benefits, including fewer memory related errors and reduced programmer effort. Garbage collection, however, trades space for time. It reclaims memory only when it is invoked: invoking it more frequently reclaims memory quickly, but incurs a significant cost; invoking it less frequently fills memory with dead objects. In contrast, explicit memory management provides prompt low cost reclamation, but at the expense of programmer effort. This work comes closer to the best of both worlds by adding novel compiler and runtime support for compiler inserted frees to a garbage-collected system. The compiler's free-me analysis identifies when objects become unreachable and inserts calls to free. It combines a lightweight pointer analysis with liveness information that detects when short-lived objects die. Our approach differs from stack and region allocation in two crucial ways. First, it frees objects incrementally exactly when they become unreachable, instead of based on program scope. Second, our system does not require allocation-site lifetime homogeneity, and thus frees objects on some paths and not on others. It also handles common patterns: it can free objects in loops and objects created by factory methods. We evaluate free() variations for free-list and bump-pointer allocators. Explicit freeing improves performance by promptly reclaiming objects and reducing collection load. Compared to marksweep alone, free-me cuts total time by 22\% on average, collector time by 50\% to 70\%, and allows programs to run in 17\% less memory. This combination retains the software engineering benefits of garbage collection while increasing space efficiency and improving performance, and thus is especially appealing for real-time and space constrained systems.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "adaptive; compiler-assisted; copying; generational; liveness; locality; mark-sweep; pointer analysis", } @Article{Gulwani:2006:CAI, author = "Sumit Gulwani and Ashish Tiwari", title = "Combining abstract interpreters", journal = j-SIGPLAN, volume = "41", number = "6", pages = "376--386", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133981.1134026", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present a methodology for automatically combining abstract interpreters over given lattices to construct an abstract interpreter for the combination of those lattices. This lends modularity to the process of design and implementation of abstract interpreters. We define the notion of logical product of lattices. This kind of combination is more precise than the reduced product combination. We give algorithms to obtain the join operator and the existential quantification operator for the combined lattice from the corresponding operators of the individual lattices. We also give a bound on the number of steps required to reach a fixed point across loops during analysis over the combined lattice in terms of the corresponding bounds for the individual lattices. We prove that our combination methodology yields the most precise abstract interpretation operators over the logical product of lattices when the individual lattices are over theories that are convex, stably infinite, and disjoint. We also present an interesting application of logical product wherein some lattices can be reduced to combination of other (unrelated) lattices with known abstract interpreters.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstract interpreter; logical product; Nelson-Oppen combination; reduced product", } @Article{Sridharan:2006:RBC, author = "Manu Sridharan and Rastislav Bod{\'\i}k", title = "Refinement-based context-sensitive points-to analysis for {Java}", journal = j-SIGPLAN, volume = "41", number = "6", pages = "387--400", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133255.1134027", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present a scalable and precise context-sensitive points-to analysis with three key properties: (1) filtering out of unrealizable paths, (2) a context-sensitive heap abstraction, and (3) a context-sensitive call graph. Previous work [21] has shown that all three properties are important for precisely analyzing large programs, e.g., to show safety of downcasts. Existing analyses typically give up one or more of the properties for scalability. We have developed a refinement-based analysis that succeeds by simultaneously refining handling of method calls and heap accesses, allowing the analysis to precisely analyze important code while entirely skipping irrelevant code. The analysis is demand-driven and client-driven, facilitating refinement specific to each queried variable and increasing scalability. In our experimental evaluation, our analysis proved the safety of 61\% more casts than one of the most precise existing analyses across a suite of large benchmarks. The analysis checked the casts in under 13 minutes per benchmark (taking less than 1 second per query) and required only 35MB of memory, far less than previous approaches.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "context-sensitive analysis; demand-driven analysis; points-to analysis; refinement", } @Article{Feng:2006:MVA, author = "Xinyu Feng and Zhong Shao and Alexander Vaynberg and Sen Xiang and Zhaozhong Ni", title = "Modular verification of assembly code with stack-based control abstractions", journal = j-SIGPLAN, volume = "41", number = "6", pages = "401--414", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133981.1134028", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Runtime stacks are critical components of any modern software--they are used to implement powerful control structures such as function call/return, stack cutting and unwinding, coroutines, and thread context switch. Stack operations, however, are very hard to reason about: there are no known formal specifications for certifying C-style setjmp/longjmp, stack cutting and unwinding, or weak continuations (in C--). In many proof-carrying code (PCC) systems, return code pointers and exception handlers are treated as general first-class functions (as in continuation-passing style) even though both should have more limited scopes. In this paper we show that stack-based control abstractions follow a much simpler pattern than general first-class code pointers. We present a simple but flexible Hoare-style framework for modular verification of assembly code with all kinds of stack-based control abstractions, including function call/return, tail call, setjmp/longjmp, weak continuation, stack cutting, stack unwinding, multi-return function call, coroutines, and thread context switch. Instead of presenting a specific logic for each control structure, we develop all reasoning systems as instances of a generic framework. This allows program modules and their proofs developed in different PCC systems to be linked together. Our system is fully mechanized. We give the complete soundness proof and a full verification of several examples in the Coq proof assistant.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "assembly code verification; control abstractions; modularity; proof-carrying code; stack-based", } @Article{Cook:2006:TPS, author = "Byron Cook and Andreas Podelski and Andrey Rybalchenko", title = "Termination proofs for systems code", journal = j-SIGPLAN, volume = "41", number = "6", pages = "415--426", month = jun, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1133981.1134029", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:42:48 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Program termination is central to the process of ensuring that systems code can always react. We describe a new program termination prover that performs a path-sensitive and context-sensitive program analysis and provides capacity for large program fragments (i.e. more than 20,000 lines of code) together with support for programming language features such as arbitrarily nested loops, pointers, function-pointers, side-effects, etc. We also present experimental results on device driver dispatch routines from the Windows operating system. The most distinguishing aspect of our tool is how it shifts the balance between the two tasks of constructing and respectively checking the termination argument. Checking becomes the hard step. In this paper we show how we solve the corresponding challenge of checking with binary reachability analysis.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "formal verification; model checking; program termination; program verification", } @Article{Martonosi:2006:ESW, author = "Margaret Martonosi", title = "Embedded systems in the wild: {ZebraNet} software, hardware, and deployment experiences", journal = j-SIGPLAN, volume = "41", number = "7", pages = "1--1", month = jul, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1159974.1134651", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:44:55 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The Princeton ZebraNet project is a collaboration of engineers and biologists to build mobile, wireless embedded systems for wildlife tracking. Over the lifetime of the project, we have implemented a number of compression, communication, and data management algorithms specifically tailored for the small memory, constrained energy and sparse connectivity of these long-lifetime systems. We have gone through three major generations of hardware and software implementations, and have done two successful real-world deployments on Plains Zebras in Kenya, with a third deployment planned for Summer, 2007. In this talk, I will discuss our real-life experiences with crafting embedded systems hardware and software, and our deployment experiences in Africa. I will also put forward a vision for how portability, reliability, and energy-efficiency can be well-supported in future embedded systems.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{vonPlaten:2006:FLO, author = "Carl von Platen and Johan Eker", title = "Feedback linking: optimizing object code layout for updates", journal = j-SIGPLAN, volume = "41", number = "7", pages = "2--11", month = jul, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1159974.1134653", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:44:55 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Firmware over the air (FOTA) is becoming a standard procedure for maintaining and updating wireless embedded systems. To cope with bandwidth and storage constraints this is facilitated using incremental updates based on delta technology, i.e. only the modifications are transmitted. The performance of a FOTA update is highly dependent on the size of the delta, and the type of modifications. Application of a delta update involves mutating the present version, byte by byte, into the new version. The problem is that even the smallest change in the source code may cause almost every single memory position to be affected, and thus requiring the complete memory to be rewritten. This has two implications: First, the time spent updating memory becomes unnecessary long. Secondly, and much worse, since a large part of the system is affected, the system is not functional during application. This paper introduces the concept of a feedback linker, which uses the object code layout of the previous version, when building a new version. The feedback linker maximizes the similarities between two versions allowing for smaller update packages and faster upgrades. The feedback linker is described in terms of an optimization procedure, a prototype test bed and a set of experimental results.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "flash memory; incremental software update", } @Article{Zhang:2006:MDS, author = "Kun Zhang and Santosh Pande", title = "Minimizing downtime in seamless migrations of mobile applications", journal = j-SIGPLAN, volume = "41", number = "7", pages = "12--21", month = jul, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1134650.1134654", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:44:55 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Application migration is a key enabling technology component of mobile computing that allows rich semantics involving location awareness, trust and timeliness of information processing by moving the application where the data is. Seamlessness is one of the key properties of mobile computing and downtime must be eliminated/minimized during the migration to achieve seamlessness. But migration involves large overheads, dominant of which are the overheads due to serialization and de-serialization [1]. To achieve seamless migration, an application state could be pre-serialized during the program's execution, and upon migration, the serialized data could be transmitted and de-serialized to get the execution started. Previous approach to this problem [1] removed dead state but still suffered from large migration overheads due to serialization on-demand that could lead to an unacceptable downtime. In this work, we develop a static compiler analysis plus runtime assisted framework to decrease the migration overhead to almost zero while minimizing the degradation in the program's performance. We achieve such a goal by deciding which data to be pre-serialized through analysis, and pre-serializing the state in the program. A safe state is kept that would allow immediate migration upon the arrival of an interrupt while minimizing frequent pre-serialization. When the migration interrupt comes in, the serialized data can be transmitted directly to the destination machine. This allows an application to resume its execution at the destination machine with almost no interruption (only a small amount of non-serialized data needs to be serialized during migration). The optimization serializes the data in such a way that a maximal number of functions can execute without interruption after migration. Our experiments with multimedia applications show that the migration latency is significantly reduced leading to a small downtime. Thus, the contribution of the paper is to provide an efficient methodology to perform seamless migration while limiting the overhead.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compiler; mobile computing; seamless migration", } @Article{Spivak:2006:SPT, author = "Michal Spivak and Sivan Toledo", title = "Storing a persistent transactional object heap on flash memory", journal = j-SIGPLAN, volume = "41", number = "7", pages = "22--33", month = jul, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1134650.1134655", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:44:55 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present the design and implementation of TinyStore, a persistent, transactional, garbage-collected memory-management system, designed to be called from the Java virtual machine of a Java Card. The system is designed for flash-based implementations of Java Card, a variant of the Java platform for smart cards. In the Java Card platform, objects are persistent by default. The platform supports transactions: a sequence of accesses to objects can be explicitly declared to constitute a transaction. TinyStore supports explicit transactions and atomically executes individual accesses that are not part of transactions; it also supports garbage collection, even on systems with a small constant amount of ram. TinyStore uses a novel approach and specialized data structures to efficiently manage flash memory. We demonstrate its effectiveness by comparing it to a traditional eeprom-based memory management system for Java Cards.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "flash; Java Card; nor flash; persistent heaps; persistent object stores; smart cards; transactions", } @Article{Regehr:2006:DAT, author = "John Regehr and Usit Duongsaa", title = "Deriving abstract transfer functions for analyzing embedded software", journal = j-SIGPLAN, volume = "41", number = "7", pages = "34--43", month = jul, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1134650.1134657", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:44:55 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper addresses the problem of creating abstract transfer functions supporting dataflow analyses. Writing these functions by hand is problematic: transfer functions are difficult to understand, difficult to make precise, and difficult to debug. Bugs in transfer functions are particularly serious since they defeat the soundness of any program analysis running on top of them. Furthermore, implementing transfer functions by hand is wasteful because the resulting code is often difficult to reuse in new analyzers and to analyze new languages. We have developed algorithms and tools for deriving transfer functions for the bitwise and unsigned interval abstract domains. The interval domain is standard; in the bitwise domain, values are vectors of three-valued bits. For both domains, important challenges are to derive transfer functions that are sound in the presence of integer overflow, and to derive precise transfer functions for operations whose semantics are a mismatch for the domain (i.e., bit-vector operations in the interval domain and arithmetic operations in the bitwise domain). We can derive transfer functions, and execute them, in time linear in the bitwidth of the operands. These functions are maximally precise in most cases. Our generated transfer functions are parameterized by a bitwidth and are independent of the language being analyzed, and also of the language in which the analyzer is written. Currently, we generate interval and bitwise transfer functions in C and OCaml for analyzing C source code, ARM object code, and AVR object code. We evaluate our derived functions by using them in an interprocedural dataflow analyzer.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstract interpretation; embedded software; static analysis; transfer functions", } @Article{Cooprider:2006:PAD, author = "Nathan Cooprider and John Regehr", title = "Pluggable abstract domains for analyzing embedded software", journal = j-SIGPLAN, volume = "41", number = "7", pages = "44--53", month = jul, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1134650.1134658", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:44:55 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Many abstract value domains such as intervals, bitwise, constants, and value-sets have been developed to support dataflow analysis. Different domains offer alternative tradeoffs between analysis speed and precision. Furthermore, some domains are a better match for certain kinds of code than others. This paper presents the design and implementation of cXprop, an analysis and transformation tool for C that implements 'conditional X propagation,' a generalization of the well-known conditional constant propagation algorithm where X is an abstract value domain supplied by the user. cXprop is interprocedural, context-insensitive, and achieves reasonable precision on pointer-rich codes. We have applied cXprop to sensor network programs running on TinyOS, in order to reduce code size through interprocedural dead code elimination, and to find limited-bitwidth global variables. Our analysis of global variables is supported by a novel concurrency model for interrupt-driven software. cXprop reduces TinyOS application code size by an average of 9.2\% and predicts an average data size reduction of 8.2\% through RAM compression.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstract interpretation; embedded software; TinyOS", } @Article{Mine:2006:FSV, author = "Antoine Min{\'e}", title = "Field-sensitive value analysis of embedded {C} programs with union types and pointer arithmetics", journal = j-SIGPLAN, volume = "41", number = "7", pages = "54--63", month = jul, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1134650.1134659", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:44:55 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We propose a memory abstraction able to lift existing numerical static analyses to C programs containing union types, pointer casts, and arbitrary pointer arithmetics. Our framework is that of a combined points-to and data-value analysis. We abstract the contents of compound variables in a field-sensitive way, whether these fields contain numeric or pointer values, and use stock numerical abstract domains to find an overapproximation of all possible memory states---with the ability to discover relationships between variables. A main novelty of our approach is the dynamic mapping scheme we use to associate a flat collection of abstract cells of scalar type to the set of accessed memory locations, while taking care of byte-level aliases--- i.e., C variables with incompatible types allocated in overlapping memory locations. We do not rely on static type information which can be misleading in C programs as it does not account for all the uses a memory zone may be put to. Our work was incorporated within the Astr{\'e}e static analyzer that checks for the absence of run-time-errors in embedded, safety-critical, numerical-intensive software. It replaces the former memory domain limited to well-typed, union-free, pointer-cast free data-structures. Early results demonstrate that this abstraction allows analyzing a larger class of C programs, without much cost overhead.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstract interpretation; critical software; numerical analysis; points-to analysis", } @Article{Kreahling:2006:RCC, author = "William Kreahling and Stephen Hines and David Whalley and Gary Tyson", title = "Reducing the cost of conditional transfers of control by using comparison specifications", journal = j-SIGPLAN, volume = "41", number = "7", pages = "64--71", month = jul, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1159974.1134661", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:44:55 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A significant portion of a program's execution cycles are typically dedicated to performing conditional transfers of control. Much of the research on reducing the costs of these operations has focused on the branch, while the comparison has been largely ignored. In this paper we investigate reducing the cost of comparisons in conditional transfers of control. We decouple the specification of the values to be compared from the actual comparison itself, which now occurs as part of the branch instruction. The specification of the register or immediate values involved in the comparison is accomplished via a new instruction called a comparison specification, which is loop invariant. Decoupling the specification of the comparison from the actual comparison performed before the branch reduces the number of instructions in the loop, which provides performance benefits not possible when using conventional comparison instructions. Results from applying this technique on the ARM processor show that both the number of instructions executed and execution cycles are reduced.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "branch; comparison; compiler; optimization", } @Article{Zhuang:2006:ETM, author = "Xiaotong Zhuang and Santosh Pande", title = "Effective thread management on network processors with compiler analysis", journal = j-SIGPLAN, volume = "41", number = "7", pages = "72--82", month = jul, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1134650.1134662", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:44:55 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Mapping packet processing tasks on network processor micro-engines involves complex tradeoffs that relating to maximizing parallelism and pipelining. Due to an increase in the size of the code store and complexity of the application requirements, network processors are being programmed with heterogeneous threads that may execute code belonging to different tasks on a given micro-engine. Also, most network applications are streaming applications that are typically processed in a pipelined fashion. Thus, the tasks on different micro-engines are pipelined in such a way as to maximize the throughput. Tasks themselves could have different run time performance demands. Traditionally, runtime management involving processor sharing, real-time scheduling etc. is provided by the runtime environment (typically an operating system) using the hardware support for timers and interrupts that allows time slicing the resource amongst the tasks. However, due to stringent performance requirements on network processors (which process packets from very high speed network traffic), neither OS nor hardware mechanisms are typically feasible/available. In this paper, we show that it is very difficult and inefficient for the programmer to meet the constraints of runtime management by coding them statically. Due to the infeasibility of hardware or OS solution (even in the near future), the only choice left is a compiler approach. We propose a complete compiler solution to automatically insert explicit context switch (ctx) instructions provided on the processors so that the execution of programs is better manipulated at runtime to meet their constraints. We show that such an approach is feasible opening new application domains that would need heterogeneous thread programming. Such approaches would in general become important for multi-core processors.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compiler optimizations; CPU scheduling; network processors; real-time scheduling", } @Article{Kulkarni:2006:SNO, author = "Prasad A. Kulkarni and David B. Whalley and Gary S. Tyson and Jack W. Davidson", title = "In search of near-optimal optimization phase orderings", journal = j-SIGPLAN, volume = "41", number = "7", pages = "83--92", month = jul, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1159974.1134663", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:44:55 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Phase ordering is a long standing challenge for traditional optimizing compilers. Varying the order of applying optimization phases to a program can produce different code, with potentially significant performance variation amongst them. A key insight to addressing the phase ordering problem is that many different optimization sequences produce the same code. In an earlier study, we used this observation to restate the phase ordering problem to concentrate on finding all distinct function instances that can be produced due to different phase orderings, instead of attempting to generate code for all possible optimization sequences. Using a novel search algorithm we were able to show that it is possible to exhaustively enumerate the set of all possible function instances that can be produced by different phase orderings in our compiler for most of the functions in our benchmark suite [1]. Finding the optimal function instance within this set for almost any dynamic measure of performance still appears impractical since that would involve execution/simulation of all generated function instances. To find the dynamically optimal function instance we exploit the observation that the enumeration space for a function typically contains a very small number of distinct control flow paths. We simulate only one function instance from each group of function instances having the identical control flow, and use that information to estimate the dynamic performance of the remaining functions in that group. We further show that the estimated dynamic frequency counts obtained by using our method correlate extremely well to simulated processor cycle counts. Thus, by using our measure of dynamic frequencies to identify a small number of the best performing function instances we can often find the optimal phase ordering for a function within a reasonable amount of time. Finally, we perform a case study to evaluate how adept our genetic algorithm is for finding optimal phase orderings within our compiler, and demonstrate how the algorithm can be improved.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "exhaustive search; genetic algorithms; phase ordering", } @Article{Danne:2006:EST, author = "Klaus Danne and Marco Platzner", title = "An {EDF} schedulability test for periodic tasks on reconfigurable hardware devices", journal = j-SIGPLAN, volume = "41", number = "7", pages = "93--102", month = jul, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1134650.1134665", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:44:55 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In this paper, we consider the scheduling of periodic real-time tasks on reconfigurable hardware devices. Such devices can execute several tasks in parallel. All executing tasks share the hardware resource, which makes the scheduling problem differ from single- and multiprocessor scheduling. We adapt the global EDF multiprocessor scheduling approach to the reconfigurable hardware execution model and define two preemptive scheduling algorithms, EDF-First-k-Fit and EDF-Next-Fit. For these algorithms, we present a novel linear-time schedulability test and give a proof based on a resource augmentation technique. Then, we propose a task placement and relocation scheme utilizing partial device reconfiguration. This scheme allows us to extend the schedulability test to include reconfiguration time overheads. Experiments with synthetic workloads compare the scheduling test with the actual scheduling performance of EDF-First-k-Fit and EDF-Next-Fit. The main evaluation result is that the reconfiguration overhead is acceptable if the task computation times are one order of magnitude higher than the device reconfiguration time.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "FPGA; periodic tasks; real-time; reconfigurable hardware; scheduling", } @Article{Sandberg:2006:FWF, author = "Christer Sandberg and Andreas Ermedahl and Jan Gustafsson and Bj{\"o}rn Lisper", title = "Faster {WCET} flow analysis by program slicing", journal = j-SIGPLAN, volume = "41", number = "7", pages = "103--112", month = jul, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1159974.1134666", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:44:55 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Static Worst-Case Execution Time (WCET) analysis is a technique to derive upper bounds for the execution times of programs. Such bounds are crucial when designing and verifying real-time systems. WCET analysis needs a program flow analysis to derive constraints on the possible execution paths of the analysed program, like iteration bounds for loops and dependences between conditionals. Current WCET analysis tools typically obtain flow information through manual annotations. Better support for automatic flow analysis would eliminate much of the need for this laborious work. However, to automatically derive high-quality flow information is hard, and solution techniques with large time and space complexity are often required. In this paper we describe how to use program slicing to reduce the computational need of flow analysis methods. The slicing identifies statements and variables which are guaranteed not to influence the program flow. When these are removed, the calculation time of our different flow analyses decreases, in some cases considerably. We also show how program slicing can be used to identify the input variables and globals that control the outcome of a particular loop or conditional. This should be valuable aid when performing WCET analysis and systematic testing of large and complex real-time programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "hard real time; worst-case execution time analysis", } @Article{Prochnow:2006:SSS, author = "Steffen Prochnow and Claus Traulsen and Reinhard von Hanxleden", title = "Synthesizing safe state machines from {Esterel}", journal = j-SIGPLAN, volume = "41", number = "7", pages = "113--124", month = jul, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1134650.1134667", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:44:55 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Esterel and Safe State Machines (SSMs) are synchronous languages dedicated to the modeling of embedded reactive systems. While Esterel is a textual language, SSMs are based on the graphical Statecharts formalism. Statecharts are often more intuitive to understand than their textual counterpart, and their animated simulation can help to visualize subtle behaviors of a program. However, in terms of editing speed, revision management, and meta-modeling, the textual nature of Esterel is advantageous. We present an approach to transform Esterel v5 programs into equivalent SSMs. This permits a design flow where the designer develops a system at the Esterel level, but uses a graphical browser and simulator to inspect and validate the system under development. We synthesize SSMs in two phases. The first phase transforms an Esterel program into an equivalent SSM, using a structural translation that results in correct, but typically not very compact SSMs. The second phase iteratively applies optimization rules that aim to reduce the number of states, transitions and hierarchy levels to enhance readability of the SSM. As it turned out, this optimization is also useful for the traditional, manual design of SSMs. The complete transformation has been implemented in a prototypical modeling environment, which allows to demonstrate the practicality of this approach and the compactness of the generated SSMs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "Esterel; reactive systems; safe state machines; Statecharts; SyncCharts; textual/graphical languages", } @Article{Edwards:2006:ECG, author = "Stephen A. Edwards and Olivier Tardieu", title = "Efficient code generation from {SHIM} models", journal = j-SIGPLAN, volume = "41", number = "7", pages = "125--134", month = jul, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1134650.1134669", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:44:55 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Programming concurrent systems is substantially more difficult than programming sequential systems, yet most embedded systems need concurrency. We believe this should be addressed through higher-level models of concurrency that eliminate many of the usual challenges, such as nondeterminism arising from races. The shim model of computation provides deterministic concurrency, and there already exist ways of implementing it in hardware and software. In this work, we describe how to produce more efficient C code from shim systems. We propose two techniques: a largely mechanical one that produces tail-recursive code for simulating concurrency, and a more clever one that statically analyzes the communication pattern of multiple processes to produce code with far less overhead. Experimentally, we find our tail-recursive technique produces code that runs roughly twice as fast as a baseline; our statically-scheduled code can run up to twelve times faster.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "code synthesis; computed gotos; concurrency; embedded systems; the shim model", } @Article{Rothamel:2006:GOC, author = "Tom Rothamel and Yanhong A. Liu and Constance L. Heitmeyer and Elizabeth I. Leonard", title = "Generating optimized code from {SCR} specifications", journal = j-SIGPLAN, volume = "41", number = "7", pages = "135--144", month = jul, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1134650.1134670", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:44:55 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A promising trend in software development is the increasing adoption of model-driven design. In this approach, a developer first constructs an abstract model of the required program behavior in a language, such as Statecharts or Stateflow, and then uses a code generator to automatically transform the model into an executable program. This approach has many advantages---typically, a model is not only more concise than code and hence more understandable, it is also more amenable to mechanized analysis. Moreover, automatic generation of code from a model usually produces code with fewer errors than hand-crafted code. One serious problem, however, is that a code generator may produce inefficient code. To address this problem, this paper describes a method for generating efficient code from SCR (Software Cost Reduction) specifications. While the SCR tabular notation and tools have been used successfully to specify, simulate, and verify numerous embedded systems, until now SCR has lacked an automated method for generating optimized code. This paper describes an efficient method for automatic code generation from SCR specifications, together with an implementation and an experimental evaluation. The method first synthesizes an execution-flow graph from the specification, then applies three optimizations to the graph, namely, input slicing, simplification, and output slicing, and then automatically generates code from the optimized graph. Experiments on seven benchmarks demonstrate that the method produces significant performance improvements in code generated from large specifications. Moreover, code generation is relatively fast, and the code produced is relatively compact.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "code generation; code synthesis; formal specifications; optimization; requirements specifications; SCR", } @Article{Farfeleder:2006:ECG, author = "Stefan Farfeleder and Andreas Krall and Edwin Steiner and Florian Brandner", title = "Effective compiler generation by architecture description", journal = j-SIGPLAN, volume = "41", number = "7", pages = "145--152", month = jul, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1134650.1134671", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:44:55 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Embedded systems have an extremely short time to market and therefore require easily retargetable compilers. Architecture description languages (ADLs) provide a single concise architecture specification for the generation of hardware, instruction set simulators and compilers. In this article, we present an ADL for compiler generation. From a specification, we can derive an optimized tree pattern matching instruction selector, a register allocator and an instruction scheduler. Compared to a hand-crafted back end, the generated compiler produces smaller and faster code. The ADL is rich enough that other tools, such as assemblers, linkers, simulators and documentation, can all be obtained from a single specification.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "architecture description language; code generation; compiler generation", } @Article{Chen:2006:PLA, author = "Jian-Jia Chen and Tei-Wei Kuo", title = "Procrastination for leakage-aware rate-monotonic scheduling on a dynamic voltage scaling processor", journal = j-SIGPLAN, volume = "41", number = "7", pages = "153--162", month = jul, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1159974.1134673", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:44:55 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "As the dynamic voltage scaling (DVS) technique provides system engineers the flexibility to trade-off the performance and the energy consumption, DVS has been adopted in many computing systems. However, the longer a job executes, the more energy in the leakage current the device/processor consumes for the job. To reduce the energy consumption resulting from the leakage current, a system might enter the dormant mode. This paper targets energy-efficient rate-monotonic scheduling for periodic real-time tasks on a uniprocessor DVS system with non-negligible leakage power consumption. An on-line simulated scheduling strategy and a virtually blocking time strategy are developed for procrastination scheduling to reduce energy consumption. The proposed algorithms derive a feasible schedule for real-time tasks with worst-case guarantees for any input instance. Experimental results show that our proposed algorithms could derive energy-efficient solutions.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dynamic voltage scaling; energy-aware systems; fixed-priority scheduling; leakage-aware scheduling; rate-monotonic scheduling; scheduling", } @Article{Mutyam:2006:CDT, author = "Madhu Mutyam and Feihui Li and Vijaykrishnan Narayanan and Mahmut Kandemir and Mary Jane Irwin", title = "Compiler-directed thermal management for {VLIW} functional units", journal = j-SIGPLAN, volume = "41", number = "7", pages = "163--172", month = jul, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1159974.1134674", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:44:55 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "As processors, memories, and other components of today's embedded systems are pushed to higher performance in more enclosed spaces, processor thermal management is quickly becoming a limiting design factor. While previous proposals mostly approached this thermal management problem from circuit and architecture angles, software can also play an important role in identifying and eliminating thermal hotspots as it is the main factor that shapes the order and frequency of accesses to different hardware components in the chip. This is particularly true for compiler-scheduled Very Long Instruction Word (VLIW) datapath. In this paper, we focus on a compiler-based approach to make the thermal profile more balanced in the integer functional units of VLIW architectures. For balanced thermal behavior and peak temperature minimization, we propose techniques based on load balancing across the integer functional units with or without rotation of functional unit usage. As leakage power is exponentially dependent on temperature and temperature is dependent on total power (i.e., switching and leakage), in our techniques, we also consider leakage power optimization by IPC tuning (instructions issued per cycle). By taking a code that is already scheduled for maximum performance as input, our scheduling strategies modify this performance-oriented schedule for balanced thermal behavior with negligible performance degradation. We simulate our scheduling strategies using a framework that consists of the Trimaran infrastructure, a power model, and the HotSpot. Our experimental results using several benchmark programs reveal that the peak temperature can be reduced through compiler scheduling.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "IPC; thermal; VLIW", } @Article{Park:2006:BAI, author = "Sanghyun Park and Aviral Shrivastava and Nikil Dutt and Alex Nicolau and Yunheung Paek and Eugene Earlie", title = "Bypass aware instruction scheduling for register file power reduction", journal = j-SIGPLAN, volume = "41", number = "7", pages = "173--181", month = jul, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1159974.1134675", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:44:55 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Since register files suffer from some of the highest power densities within processors, designers have investigated several architectural strategies for register file power reduction, including 'On Demand RF Read' where the register file is read only if the operand value is not available from the bypasses. However, we show in this paper that significant additional reductions in the register file power consumption can be obtained by scheduling instructions so that they transfer the operands via bypasses, rather than reading from the register file. Such instruction scheduling requires the compiler to be cognizant of the bypasses in the processor pipeline. In this paper, we develop several bypass aware instruction scheduling heuristics varying in time complexity, and study their effectiveness on the Intel XScale processor pipeline running MiBench benchmarks. Our experimental results show additional power consumption reductions of up to 26\% and on average 12\% over and above the register file power reduction achieved through existing techniques.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "architecture-sensitive compiler; bypass-sensitive; forwarding paths; operation table; power consumption; processor bypasses; register file; reservation table", } @Article{Yan:2006:ADE, author = "Leipo Yan and Thambipillai Srikanthan and Niu Gang", title = "Area and delay estimation for {FPGA} implementation of coarse-grained reconfigurable architectures", journal = j-SIGPLAN, volume = "41", number = "7", pages = "182--188", month = jul, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1134650.1134677", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:44:55 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Reconfigurable architecture is one solution to the increasing computational requirement that often cannot be met by the low-end embedded processors. Compiling applications to such architectures involves hardware/software partitioning. To partition the applications, a set of parameters, such as the hardware execution time and hardware area consumption, is required for each application block. Quick derivation of the parameters for all the blocks is essential. Previous research has shown that the coarse-grained reconfigurable architectures are able to accelerate the applications. However, no research effort has been made to find the area and time for application blocks implemented on such architectures. In this paper we present an estimation model for the coarse-grained reconfigurable architectures implemented on FPGA platforms. The estimation model is able to quickly produce an area-time graph, which shows the area and time relationship, for each application block. The accuracy of the estimation model has been verified on real applications. Experiment shows that the estimation error for the area consumption is within 13\% and the estimation error for the time is within 8\%.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "area estimation; CGRA; delay estimation; hardware/software partitioning; VLIW", } @Article{Pandey:2006:BCB, author = "Raju Pandey and Jeffrey Wu", title = "{BOTS}: a constraint-based component system for synthesizing scalable software systems", journal = j-SIGPLAN, volume = "41", number = "7", pages = "189--198", month = jul, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1134650.1134678", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:44:55 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Embedded application developers create applications for a wide range of devices with different resource constraints. Developers want to maximize the use of the limited resources available on the device while still not exceeding the capabilities of the device. To do this, the developer must be able to scale his software for different platforms. In this paper, we present a software engineering methodology that automatically scales software to different platforms. We intend to have the application developer write high level functional specifications of his software and have tools that automatically scale the underlying runtime. These tools will use the functional and non-functional constraints of both the hardware and client application to produce an appropriate runtime. Our initial results show that the proposed approach can scale operating systems and virtual machines that satisfy the constraints of varying hardware/application combinations.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "components; constraints; embedded systems; generative programming; runtime systems; wireless sensor networks", } @Article{Zhang:2006:OCS, author = "Weihua Zhang and Xinglong Qian and Ye Wang and Binyu Zang and Chuanqi Zhu", title = "Optimizing compiler for shared-memory multiple {SIMD} architecture", journal = j-SIGPLAN, volume = "41", number = "7", pages = "199--208", month = jul, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1134650.1134679", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:44:55 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "With the rapid growth of multimedia and game, these applications put more and more pressure on the processing ability of modern processors. Multiple SIMD architecture is widely used in multimedia processing field as a multimedia accelerator. With the consideration of power consumption and chip size, shared memory multiple SIMD architecture is mainly used in embedded SOCs. In order to further fit mobile environment, there is the constraint of limited register number as well. Although shared memory multiple SIMD architecture simplify the chip design, these constraints are the major obstacles to map the real multimedia applications to these architectures. Until now, to our best knowledge, there is little research on the optimizing techniques for shared memory multiple SIMD architecture. In this paper, we present a compiler framework, which aims at automatically generating high performance codes for shared memory multiple SIMD architecture. In this framework, we reduce the competition of shared data bus through increasing the register locality, improve the utilization of data bus by read-only data vector replication and solve the problem of limited register number through a resource allocation algorithm. The framework also handlers the issues concerning on data transformation. As the experimental results shown, this framework is successful in mapping real multimedia applications to shared memory multiple SIMD architecture. It leads to an average speedup by a factor of 3.19 and an average utilization of SM-SIMD architecture with 8 SIMD units by a factor of 52.6\%.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "locality; multiple SIMD; optimization; replication; shared memory", } @Article{Findler:2006:SFP, author = "Robert Bruce Findler", title = "Scheme and {Functional Programming} 2006: paper abstracts", journal = j-SIGPLAN, volume = "41", number = "8", pages = "6--9", month = aug, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1163566.1163568", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:06 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The Scheme and Functional Programming workshop will be held in Portland, OR on September 17th 2006, in conjunction with ICFP. The purpose of the workshop is to discuss experience with and future developments of the Scheme programming language, as well as general aspects of computer science loosely centered on the general theme of Scheme. Come to hear Manuel Serrano talk about HOP, his new language for programming the web, a status report from the R6RS editors, and presentations of the work below. I look forward to seeing you in Portland!", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2006:BRD, author = "Paul Frenger", title = "Book review: {Designing Embedded Hardware}", journal = j-SIGPLAN, volume = "41", number = "8", pages = "10--14", month = aug, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1163566.1163570", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:06 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "My last column finished up a two-part retrospective to recap the first ten years of ACM Sigplan Notices Forth Report. If you have access to back issues of Sigplan or ACM Portal, you must have enjoyed the review that much more. I hope so.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Denckla:2006:MCB, author = "Ben Denckla", title = "Many cyclic block diagrams do not need parallel semantics", journal = j-SIGPLAN, volume = "41", number = "8", pages = "16--20", month = aug, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1163566.1163572", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:06 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Some cyclic block diagrams need parallel semantics: they are syntactically invalid or semantically nonterminating in any block diagram language with sequential semantics. Yet, many cyclic block diagrams do not need parallel semantics: they behave the same in a block diagram language with non-strict sequential semantics. We show that a block diagram used to motivate the parallel semantics of the Ptolemy SR domain behaves the same in BdHas, a block diagram language with non-strict sequential semantics. BdHas is implemented as syntactic sugar on top of Haskell.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "block diagrams; Esterel; Haskell; Ptolemy; semantics", } @Article{Das:2006:OSO, author = "Dibyendu Das", title = "Optimizing subroutines with optional parameters in {F90} via function cloning", journal = j-SIGPLAN, volume = "41", number = "8", pages = "21--28", month = aug, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1163566.1163573", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:06 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Optional parameters are a feature of Fortran90. The objective of this feature is to allow the F90 programmer to declare a subroutine using a number of arguments and specify a subset of these parameters as optional, which in turn, allows the programmer to omit any of these optional parameters during invocation of the subroutine. The body of such a subroutine uses an F90 intrinsic function called present(), to test whether an optional parameter has meaningful values at run-time. The optional parameter can be written/read if and only if present() returns a true value. In this work, we describe a mechanism by which such subroutines which use optional parameters can be efficiently optimized using function cloning or specialization. Function Cloning is a well-known optimization technique that creates multiple copies of a function f(), in order to exploit better optimization opportunities. We will show how cloning/specialization can be utilized such that all calls to present() can be totally eliminated in the body of such subroutines. Cloning will also result in optimization opportunities not exploitable in the original source.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compilers", } @Article{Chen:2006:ICT, author = "Fuh-Gwo Chen and Ting-Wei Hou", title = "Instruction-coated translation: an approach to restructure directly threaded interpreters with low cohesion", journal = j-SIGPLAN, volume = "41", number = "8", pages = "29--33", month = aug, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1163566.1163574", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:06 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A directly threaded interpreter is used to speedup the virtual instruction dispatch. It is composed of translation and interpretation functions. It has low cohesion naturally due to the use of 'label as value'. This paper presents a restructuring method to envelop the translation function as a new virtual instruction to make the directly threaded interpreter have a single interpreting task and have high cohesion. The reformed translation is named as the instruction-coated translation, a term similar to sugar-coated tablet.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "module cohesion; software architecture and restructuring; threaded interpreter", } @Article{Velazquez-Iturbide:2006:PDL, author = "J. {\'A}ngel Vel{\'a}zquez-Iturbide", title = "Principled design of logical fisheye views of functional expressions", journal = j-SIGPLAN, volume = "41", number = "8", pages = "34--43", month = aug, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1163566.1163575", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:06 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We face the problem of simplifying automatically the visualization of expressions in an eager functional language. The problem is relevant for debugging in a programming environment, based on a rewriting model of expression evaluation that displays large intermediate expressions. The simplification technique must filter automatically the parts of an expression which are not interesting for debugging/understanding. We propose the use of logical fisheye views because they provide a balance between showing global context and local information (focus). A straightforward implementation of fisheye views displays too simplified expressions. In the article, we identify five design requirements and describe how they are satisfied. We also include several examples, a discussion and related work.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "expressions; fisheye views; focus+context; functional programming; program visualization", } @Article{Dybvig:2006:DCS, author = "R. Kent Dybvig", title = "The development of {Chez Scheme}", journal = j-SIGPLAN, volume = "41", number = "9", pages = "1--12", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1159803.1159805", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Chez Scheme is now over 20 years old, the first version having been released in 1985. This paper takes a brief look back on the history of Chez Scheme's development to explore how and why it became the system it is today.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "chez scheme; scheme implementation", } @Article{Might:2006:IFA, author = "Matthew Might and Olin Shivers", title = "Improving flow analyses via {$\Gamma$CFA}: abstract garbage collection and counting", journal = j-SIGPLAN, volume = "41", number = "9", pages = "13--25", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1160074.1159807", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present two independent and complementary improvements for flow-based analysis of higher-order languages: (1) abstract garbage collection and (2) abstract counting, collectively titled $\Gamma$CFA. Abstract garbage collection is an analog to its concrete counterpart: we determine when an abstract resource has become unreachable, and then reallocate it as fresh. This prevents flow sets from merging in the abstract, which has two immediate effects: (1) the precision of the analysis is increased, and (2) the running time of the analysis is frequently reduced. In some nontrivial cases, we achieve an order of magnitude improvement in precision and time simultaneously .In abstract counting, we track how many times an abstract resource has been allocated. A count of one implies that the abstract resource momentarily represents only one concrete resource. This, in turn, allows us to perform environment analysis and to expand the kinds (rather than just the degree) of optimizations available to the compiler.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstract counting; abstract garbage collection; continuations; CPS; environment analysis; flow analysis; functional languages; gamma-CFA; inlining; lambda calculus; program analysis; superbeta", } @Article{Kiselyov:2006:DDB, author = "Oleg Kiselyov and Chung-chieh Shan and Amr Sabry", title = "Delimited dynamic binding", journal = j-SIGPLAN, volume = "41", number = "9", pages = "26--37", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1160074.1159808", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Dynamic binding and delimited control are useful together in many settings, including Web applications, database cursors, and mobile code. We examine this pair of language features to show that the semantics of their interaction is ill-defined yet not expressive enough for these uses. We solve this open and subtle problem. We formalise a typed language DB+DC that combines a calculus DB of dynamic binding and a calculus DC of delimited control. We argue from theoretical and practical points of view that its semantics should be based on delimited dynamic binding: capturing a delimited continuation closes over part of the dynamic environment, rather than all or none of it; reinstating the captured continuation supplements the dynamic environment, rather than replacing or inheriting it. We introduce a type- and reduction-preserving translation from DB + DC to DC, which proves that delimited control macro-expresses dynamic binding. We use this translation to implement DB+DC in Scheme, OCaml, and Haskell. We extend DB + DC with mutable dynamic variables and a facility to obtain not only the latest binding of a dynamic variable but also older bindings. This facility provides for stack inspection and (more generally) folding over the execution context as an inductive data structure.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "delimited continuations; dynamic binding; monads", } @Article{Walker:2006:STF, author = "David Walker and Lester Mackey and Jay Ligatti and George A. Reis and David I. August", title = "Static typing for a faulty lambda calculus", journal = j-SIGPLAN, volume = "41", number = "9", pages = "38--49", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1160074.1159809", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A transient hardware fault occurs when an energetic particle strikes a transistor, causing it to change state. These faults do not cause permanent damage, but may result in incorrect program execution by altering signal transfers or stored values. While the likelihood that such transient faults will cause any significant damage may seem remote, over the last several years transient faults have caused costly failures in high-end machines at America Online, eBay, and the Los Alamos Neutron Science Center, among others [6, 44, 15]. Because susceptibility to transient faults is proportional to the size and density of transistors, the problem of transient faults will become increasingly important in the coming decades. This paper defines the first formal, type-theoretic framework for studying reliable computation in the presence of transient faults. More specifically, it defines \lambda zap, a lambda calculus that exhibits intermittent data faults. In order to detect and recover from these faults, \lambda zap programs replicate intermediate computations and use majority voting, thereby modeling software-based fault tolerance techniques studied extensively, but informally [10, 20, 30, 31, 32, 33, 41]. To ensure that programs maintain the proper invariants and use \lambda zap primitives correctly, the paper defines a type system for the language. This type system guarantees that well-typed programs can tolerate any single data fault. To demonstrate that \lambda zap can serve as an idealized typed intermediate language, we define a type-preserving translation from a standard simply-typed lambda calculus into \lambda zap.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "fault tolerance; lambda calculus; reliable computing; soft faults; transient hardware faults; type systems; typed intermediate languages", } @Article{Jones:2006:SUB, author = "Simon Peyton Jones and Dimitrios Vytiniotis and Stephanie Weirich and Geoffrey Washburn", title = "Simple unification-based type inference for {GADTs}", journal = j-SIGPLAN, volume = "41", number = "9", pages = "50--61", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1159803.1159811", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Generalized algebraic data types (GADTs), sometimes known as 'guarded recursive data types' or 'first-class phantom types', are a simple but powerful generalization of the data types of Haskell and ML. Recent works have given compelling examples of the utility of GADTs, although type inference is known to be difficult. Our contribution is to show how to exploit programmer-supplied type annotations to make the type inference task almost embarrassingly easy. Our main technical innovation is wobbly types, which express in a declarative way the uncertainty caused by the incremental nature of typical type-inference algorithms.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "generalized algebraic data types; type inference", } @Article{Nanevski:2006:PSH, author = "Aleksandar Nanevski and Greg Morrisett and Lars Birkedal", title = "Polymorphism and separation in {Hoare} type theory", journal = j-SIGPLAN, volume = "41", number = "9", pages = "62--73", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1159803.1159812", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In previous work, we proposed a Hoare Type Theory (HTT) which combines effectful higher-order functions, dependent types and Hoare Logic specifications into a unified framework. However, the framework did not support polymorphism, and failed to provide a modular treatment of state in specifications. In this paper, we address these shortcomings by showing that the addition of polymorphism alone is sufficient for capturing modular state specifications in the style of Separation Logic. Furthermore, we argue that polymorphism is an essential ingredient of the extension, as the treatment of higher-order functions requires operations not encodable via the spatial connectives of Separation Logic.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "Hoare logic; separation logic; type theory", } @Article{Nakata:2006:RMP, author = "Keiko Nakata and Jacques Garrigue", title = "Recursive modules for programming", journal = j-SIGPLAN, volume = "41", number = "9", pages = "74--86", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1159803.1159813", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The ML module system is useful for building large-scale programs. The programmer can factor programs into nested and parameterized modules, and can control abstraction with signatures. Yet ML prohibits recursion between modules. As a result of this constraint, the programmer may have to consolidate conceptually separate components into a single module, intruding on modular programming. Introducing recursive modules is a natural way out of this predicament. Existing proposals, however, vary in expressiveness and verbosity. In this paper, we propose a type system for recursive modules, which can infer their signatures. Opaque signatures can also be given explicitly, to provide type abstraction either inside or outside the recursion. The type system is decidable, and is sound for a call-by-value semantics. We also present a solution to the expression problem, in support of our design choices.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "applicative functors; recursive modules; the expression problem; type inference; type systems", } @Article{Owens:2006:SFM, author = "Scott Owens and Matthew Flatt", title = "From structures and functors to modules and units", journal = j-SIGPLAN, volume = "41", number = "9", pages = "87--98", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1159803.1159815", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Component programming techniques encourage abstraction and reuse through external linking. Some parts of a program, however, must use concrete, internally specified references, so a pure component system is not a sufficient mechanism for structuring programs. We present the combination of a static, internally-linked module system and a purely abstractive component system. The latter extends our previous model of typed units to properly account for translucency and sharing. We also show how units and modules can express an SML-style system of structures and functors, and we explore the consequences for recursive structures and functors.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "component; functor; module; structure; unit", } @Article{Rossberg:2006:MLD, author = "Andreas Rossberg", title = "The missing link: dynamic components for {ML}", journal = j-SIGPLAN, volume = "41", number = "9", pages = "99--110", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1160074.1159816", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Despite its powerful module system, ML has not yet evolved for the modern world of dynamic and open modular programming, to which more primitive languages have adapted better so far. We present the design and semantics of a simple yet expressive first-class component system for ML. It provides dynamic linking in a type-safe and type-flexible manner, and allows selective execution in sandboxes. The system is defined solely by reduction to higher-order modules plus an extension with simple module-level dynamics, which we call packages. To represent components outside processes we employ generic pickling. We give a module calculus formalising the semantics of packages and pickling.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "components; distributed programming; dynamic linking; dynamic typing; modules; pickling; separate compilation; units", } @Article{Fisher:2006:SAS, author = "David Fisher and Olin Shivers", title = "Static analysis for syntax objects", journal = j-SIGPLAN, volume = "41", number = "9", pages = "111--121", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1159803.1159817", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We describe an s-expression based syntax-extension framework much like Scheme macros, with a key additional facility: the ability to define static semantics, such as type systems or program analysis, for the new, user-defined forms or embedded languages, thus allowing us to construct 'towers' of language levels. In addition, the static semantics of the languages at two adjacent levels in the tower can be connected, allowing improved reasoning power at a higher (and perhaps more restricted) level to be reflected down to the static semantics of the language level below. We demonstrate our system by designing macros for an assembly language, together with some example static analyses (termination analysis, type inference and control-flow analysis).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "domain-specific languages; extensible programming languages; flow analysis; language towers; lazy delegation; macros; static analysis; type inference", } @Article{Shapiro:2006:PPC, author = "Marc Shapiro", title = "Practical proofs of concurrent programs", journal = j-SIGPLAN, volume = "41", number = "9", pages = "123--123", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1159803.1159819", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "assertions; concurrent programming; Hoare logic; program proofs; rely-guarantee", } @Article{Donnelly:2006:TE, author = "Kevin Donnelly and Matthew Fluet", title = "Transactional events", journal = j-SIGPLAN, volume = "41", number = "9", pages = "124--135", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1160074.1159821", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Concurrent programs require high-level abstractions in order to manage complexity and enable compositional reasoning. In this paper, we introduce a novel concurrency abstraction, dubbed transactional events, which combines first-class synchronous message-passing events with all-or-nothing transactions. This combination enables simple solutions to interesting problems in concurrent programming. For example, guarded synchronous receive can be implemented as an abstract transactional event, whereas in other languages it requires a non-abstract, non-modular protocol. Likewise, three-way rendezvous can also be implemented as an abstract transactional event, which is impossible using first-class events alone. Both solutions are easy to code and easy to reason about. The expressive power of transactional events arises from a sequencing combinator whose semantics enforces an all-or-nothing transactional property --- either both of the constituent events synchronize in sequence or neither of them synchronizes. This sequencing combinator, along with a non-deterministic choice combinator, gives transactional events the compositional structure of a monad-with-plus. We provide a formal semantics for and a preliminary implementation of transactional events.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency; first-class events; monads; synchronous message passing; transactions", } @Article{Ziarek:2006:SMC, author = "Lukasz Ziarek and Philip Schatz and Suresh Jagannathan", title = "Stabilizers: a modular checkpointing abstraction for concurrent functional programs", journal = j-SIGPLAN, volume = "41", number = "9", pages = "136--147", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1160074.1159822", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Transient faults that arise in large-scale software systems can often be repaired by re-executing the code in which they occur. Ascribing a meaningful semantics for safe re-execution in multi-threaded code is not obvious, however. For a thread to correctly re-execute a region of code, it must ensure that all other threads which have witnessed its unwanted effects within that region are also reverted to a meaningful earlier state. If not done properly, data inconsistencies and other undesirable behavior may result. however, automatically determining what constitutes a consistent global checkpoint is not straightforward since thread interactions are a dynamic property of the program. In this paper, we present a safe and efficient checkpointing mechanism for Concurrent ML (CML) that can be used to recover from transient faults. We introduce a new linguistic abstraction called stabilizers that permits the specification of per-thread monitors and the restoration of globally consistent checkpoints. Safe global states are computed through lightweight monitoring of communication events among threads (e.g. message-passing operations or updates to shared variables). Our experimental results on several realistic, multithreaded, server-style CML applications, including a web server and a windowing toolkit, show that the overheads to use stabilizers are small, and lead us to conclude that they are a viable mechanism for defining safe checkpoints in concurrent functional programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "checkpointing; concurrent ML; concurrent programming; error recovery; exception handling; transactions", } @Article{Dowse:2006:MDC, author = "Malcolm Dowse and Andrew Butterfield", title = "Modelling deterministic concurrent {I/O}", journal = j-SIGPLAN, volume = "41", number = "9", pages = "148--159", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1160074.1159823", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The problem of expressing I/O and side effects in functional languages is a well-established one. This paper addresses this problem from a general semantic viewpoint by giving a unified framework for describing shared state, I/O and deterministic concurrency. We develop a modified state transformer which lets us mathematically model the API, then investigate and machine verify some broad conditions under which confluence holds. This semantics is used as the basis for a small deterministic Haskell language extension called CURIO, which enforces determinism using runtime checks. Our confluence condition is first shown to hold for a variety of small components, such as individual shared variables, 1-to-1 communication channels, and I-structures. We then show how models of substantial APIs (like a modification of Haskell's file I/O API which permits inter-process communication) may be constructed from these smaller components using 'combinators' in such a way that determinism is always preserved. We describe combinators for product, name-indexing and dynamic allocation, the last of which requires some small extensions to cater for process locality.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency; determinism; effects; I/O; monads", } @Article{Chlipala:2006:MDC, author = "Adam Chlipala", title = "Modular development of certified program verifiers with a proof assistant", journal = j-SIGPLAN, volume = "41", number = "9", pages = "160--171", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1159803.1159825", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "I report on an experience using the Coq proof assistant to develop a program verification tool with a machine-checkable proof of full correctness. The verifier is able to prove memory safety of x86 machine code programs compiled from code that uses algebraic datatypes. The tool's soundness theorem is expressed in terms of the bit-level semantics of x86 programs, so its correctness depends on very few assumptions. I take advantage of Coq's support for programming with dependent types and modules in the structure of my development. The approach is based on developing a library of reusable functors for transforming a verifier at one level of abstraction into a verifier at a lower level. Using this library, it's possible to prototype a verifier based on a new type system with a minimal amount of work, while obtaining a very strong soundness theorem about the final product.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "interactive proof assistants; programming with dependent types; proof-carrying code", } @Article{Hickey:2006:MMR, author = "Jason Hickey and Aleksey Nogin and Xin Yu and Alexei Kopylov", title = "Mechanized meta-reasoning using a hybrid {HOAS\slash de Bruijn} representation and reflection", journal = j-SIGPLAN, volume = "41", number = "9", pages = "172--183", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1160074.1159826", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We investigate the development of a general-purpose framework for mechanized reasoning about the meta-theory of programming languages. In order to provide a standard, uniform account of a programming language, we propose to define it as a logic in a logical framework, using the same mechanisms for definition, reasoning, and automation that are available to other logics. Then, in order to reason about the language's meta-theory, we use reflection to inject the programming language into (usually richer and more expressive) meta-theory. One of the key features of our approach is that structure of the language is preserved when it is reflected, including variables, meta-variables, and binding structure. This allows the structure of proofs to be preserved as well, and there is a one-to-one map from proof steps in the original programming logic to proof steps in the reflected logic. The act of reflecting a language is automated; all definitions, theorems, and proofs are preserved by the transformation and all the key lemmas (such as proof and structural induction) are automatically derived. The principal representation used by the reflected logic is higher-order abstract syntax (HOAS). However, reasoning about terms in HOAS can be awkward in some cases, especially for variables. For this reason, we define a computationally equivalent variable-free de Bruijn representation that is interchangeable with the HOAS in all contexts. The de Bruijn representation inherits the properties of substitution and alpha-equality from the logical framework, and it is not complicated by administrative issues like variable renumbering. We further develop the concepts and principles of proofs, provability, and structural and proof induction. This work is fully implemented in the MetaPRL theorem prover. We illustrate with an application to F", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "higher-order abstract syntax; languages with bindings; mechanized reasoning; meta-theory; metaPRL; nuPRL; reflection; type theory", } @Article{Rosu:2006:ESC, author = "Grigore Ro{\c{s}}u", title = "Equality of streams is a {$\Pi 0$} over $2$-complete problem", journal = j-SIGPLAN, volume = "41", number = "9", pages = "184--191", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1160074.1159827", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper gives a precise characterization for the complexity of the problem of proving equal two streams defined with a finite number of equations: $\Pi$0 over 2. Since the $\Pi$ 0 over 2 class includes properly both the reursively enumerable and the corecursively enumerable classes, this result implies that neither the set of pairs of equal streams nor the set of pairs of unequal streams is recursively enumerable. Consequently, one can find no algorithm for determining equality of streams, as well as no algorithm for determining inequality of streams. In particular, there is no complete proof system for equality of streams and no complete system for inequality of streams.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "algebraic specification; infinite structures; streams", } @Article{Frisch:2006:OX, author = "Alain Frisch", title = "{OCaml} + {XDuce}", journal = j-SIGPLAN, volume = "41", number = "9", pages = "192--200", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1160074.1159829", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper presents the core type system and type inference algorithm of OCamlDuce, a merger between OCaml and XDuce. The challenge was to combine two type checkers of very different natures while preserving the best properties of both (principality and automatic type reconstruction on one side; very precise types and implicit subtyping on the other side). Type inference can be described by two successive passes: the first one is an ML-like unification-based algorithm which also extracts data flow constraints about XML values; the second one is an XDuce-like algorithm which computes XML types in a direct way. An optional preprocessing pass, called strengthening, can be added to allow more implicit use of XML subtyping. This pass is also very similar to an ML type checker.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "CDuce; OCaml; regular expression types; type inference; XDuce; XML", } @Article{Kawanaka:2006:BBT, author = "Shinya Kawanaka and Haruo Hosoya", title = "{biXid}: a bidirectional transformation language for {XML}", journal = j-SIGPLAN, volume = "41", number = "9", pages = "201--214", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1160074.1159830", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Often, independent organizations define and advocate different XML formats for a similar purpose and, as a result, application programs need to mutually convert between such formats. Existng XML transformation languages, such as XSLT and XDuce, are unsatisfactory for this purpose since we would have to write, e.g., two programs for the forward and the backward transformations in case of two formats, incur high developing and maintenance costs. This paper proposes the bidirectional XML transformation language biXid, allowing us to write only one program for both directions of conversion. Our language adopts a common paradigm programming-by-relation, where a program defines a relation over documents and transforms a document to another in a way satisfying this relation. Our contributions here are specific language features for facilitating realistic conversions whose target formats are loosely in parallel but have many discrepancies in details. Concretely, we (1) adopt XDuce-style regular expression patterns for describing and analyzing XML structures, (2) fully permit ambiguity for treating formats that do not have equivalent expressivenesses, and (3) allow non-linear pattern variables for expressing non-trivial transformations that cannot be written only with linear patterns, such as conversion between unordered and ordered data. We further develop an efficient evaluation algorithm for biXid, consisting of the 'parsing' phase that transforms the input document to an intermediate 'parse tree' structure and the 'unparsing' phase that transforms it to an output document. Both phases use a variant of finite tree automata for performing a one-pass scan on the input or the parse tree by using a standard technique that 'maintains the set of all transitable states.' However, the construction of the 'unparsing' phase is challenging since ambiguity causes different ways of consuming the parse tree and thus results in multiple possible outputs that may have different structures. We have implemented a prototype system of biXid and confirmed that it has enough expressiveness and a linear-time performance from experiments with several realistic bidirectional transformations including one between vCard-XML and ContactXML.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "tree automata; XML", } @Article{Bird:2006:FYF, author = "Richard S. Bird", title = "Fifteen years of functional pearls", journal = j-SIGPLAN, volume = "41", number = "9", pages = "215--215", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1159803.1159832", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In 1991, when the Journal of Functional Programming was inaugurated, the editors, Simon Peyton Jones and Philip Wadler, asked me to contribute a regular column to be called Functional Pearls. The idea was to emulate the very successful series of essays that Jon Bentley had written under the title Programming Pearls in the Communications of the ACM. A possible alternative model for the column was Martin Rem's Small Programming Exercises that appeared regularly in the Science of Computer Programming in the 1980s. In Rem's articles, various programming tasks were posed in one issue, and solved in the subsequent one. It was felt that similar material could be adapted to a functional style, using equational reasoning rather than the Dijkstra-Hoare framework to derive the final product. After all, one reason that functional programming stimulated the interest of many at that time was that it was good for equational reasoning, a slogan captured in Mark Jone's GOFER system (Good For Equational Reasoning). I agreed to the suggestion, but only under the proviso that other contributors to the column should be sought. Counting to the end of the present year, 2006, about 64 pearls will have appeared in JFP, of which I have written 14. There are also various pearls that have been presented at ICFP and at MPC (Mathematics of Program Construction). The pearls range in content, from (hopefully) instructive exercises in program calculation --- my own area of interest, to attractive presentations of new functional data structures --- of which Ralf Hinze and Chris Okasaki were the main contributors, as well as interesting algorithms in their own right, such as Runciman's Lazy wheel sieves, and Huet's Zipper .This talk will review a little of the history of Functional Pearls, and tentatively try to suggest what ingredients make a good pearl and how pearls differ from normal research papers. Indeed, my brief from the Program Chair for this talk was expressed as follows: 'Well done Functional Pearls are often the highlight of an ICFP conference, but many of the submitted ones somehow miss the mark, by being too trivial, too complicated, or somehow not quite the elegant solution one hopes for. So it would be interesting to hear about your experiences as to what makes a good one and how to go about creating it. Having accepted this daunting commission, and being mindful of Horace's remark that good advice should be short, I am now busily engaged in finding a pearl that is not too trivial, nor too complicated, and is sufficiently elegant to serve as a decent example, both to illustrate the talk and to provide some technical content.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bringert:2006:PAC, author = "Bj{\"o}rn Bringert and Aarne Ranta", title = "A pattern for almost compositional functions", journal = j-SIGPLAN, volume = "41", number = "9", pages = "216--226", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1160074.1159834", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper introduces a pattern for almost compositional functions over recursive data types, and over families of mutually recursive data types. Here 'almost compositional' means that for a number of the constructors in the type(s), the result of the function depends only on the constructor and the results of calling the function on the constructor's arguments. The pattern consists of a generic part constructed once for each data type or family of data types, and a task-specific part. The generic part contains the code for the predictable compositional cases, leaving the interesting work to the task-specific part. Examples of the pattern implemented in dependent type theory with inductive families, in Haskell with generalized algebraic data types and rank-2 polymorphism, and in Java using a variant of the Visitor design pattern are given. The relationship to the 'Scrap Your Boilerplate' approach to generic programming, and to general tree types in dependent type theory are also investigated.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstract syntax; dependent type theory; Haskell; Java; traversal; visitor pattern", } @Article{Katsumata:2006:AFF, author = "Shin-ya Katsumata and Susumu Nishimura", title = "Algebraic fusion of functions with an accumulating parameter and its improvement", journal = j-SIGPLAN, volume = "41", number = "9", pages = "227--238", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1159803.1159835", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present a unifying solution to the problem of fusion of functions, where both the producer function and the consumer function have one accumulating parameter. The key idea in this development is to formulate the producer function as a function which computes over a monoid of data contexts. Upon this formulation, we develop a fusion method called algebraic fusion based on the elementary theory of universal algebra and monoids. The producer function is fused with a monoid homomorphism that is derived from the definition of the consumer function, and is turned into a higher-order function $f$ that computes over the monoid of endofunctions. We then introduce a general concept called improvement, in order to reduce the cost of computing over the monoid of endofunctions (i.e., function closures). An improvement of the function $f$ via a monoid homomorphism $h$ is a function $g$ that satisfies $f = h^\circ g$. This provides a principled way of finding a first-order function representing a solution to the fusion problem. It also presents a clean and unifying account for varying fusion methods that have been proposed so far. Furthermore, we show that our method extends to support partial and infinite data structures, by means of an appropriate monoid structure.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "accumulating parameter; data contexts; higher-order removal; monoids and monoid homomorphisms; partial and infinite data structures; shortcut fusion", } @Article{Blume:2006:EPF, author = "Matthias Blume and Umut A. Acar and Wonseok Chae", title = "Extensible programming with first-class cases", journal = j-SIGPLAN, volume = "41", number = "9", pages = "239--250", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1160074.1159836", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present language mechanisms for polymorphic, extensible records and their exact dual, polymorphic sums with extensible first-class cases. These features make it possible to easily extend existing code with new cases. In fact, such extensions do not require any changes to code that adheres to a particular programming style. Using that style, individual extensions can be written independently and later be composed to form larger components. These language mechanisms provide a solution to the expression problem. We study the proposed mechanisms in the context of an implicitly typed, purely functional language PolyR. We give a type system for the language and provide rules for a 2-phase transformation: first into an explicitly typed \lambda -calculus with record polymorphism, and finally to efficient index-passing code. The first phase eliminates sums and cases by taking advantage of the duality with records. We implement a version of PolyR extended with imperative features and pattern matching --- we call this language MLPolyR. Programs in MLPolyR require no type annotations --- the implementation employs a reconstruction algorithm to infer all types. The compiler generates machine code (currently for PowerPC) and optimizes the representation of sums by eliminating closures generated by the dual construction.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "duality; first-class cases; records; sums", } @Article{Vytiniotis:2006:BTI, author = "Dimitrios Vytiniotis and Stephanie Weirich and Simon Peyton Jones", title = "Boxy types: inference for higher-rank types and impredicativity", journal = j-SIGPLAN, volume = "41", number = "9", pages = "251--262", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1160074.1159838", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Languages with rich type systems are beginning to employ a blend of type inference and type checking, so that the type inference engine is guided by programmer-supplied type annotations. In this paper we show, for the first time, how to combine the virtues of two well-established ideas: unification-based inference, and bidirectional propagation of type annotations. The result is a type system that conservatively extends Hindley--Milner, and yet supports both higher-rank types and impredicativity.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "higher-rank types; impredicativity; type inference", } @Article{Abadi:2006:ACC, author = "Mart{\'\i}n Abadi", title = "Access control in a core calculus of dependency", journal = j-SIGPLAN, volume = "41", number = "9", pages = "263--273", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1160074.1159839", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The Dependency Core Calculus (DCC) is an extension of the computational lambda calculus that was designed in order to capture the notion of dependency that arises in information-flow control, partial evaluation, and other programming-language settings. We show that, unexpectedly, DCC can also be used as a calculus for access control in distributed systems. Initiating the study of DCC from this perspective, we explore some of its appealing properties.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "authorization; types", } @Article{Lin:2006:PMO, author = "Chuan-kai Lin", title = "Programming monads operationally with {Unimo}", journal = j-SIGPLAN, volume = "41", number = "9", pages = "274--285", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1160074.1159840", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Monads are widely used in Haskell for modeling computational effects, but defining monads remains a daunting challenge. Since every part of a monad's definition depends on its computational effects, programmers cannot leverage the common behavior of all monads easily and thus must build from scratch each monad that models a new computational effect. I propose the Unimo framework which allows programmers to define monads and monad transformers in a modular manner. Unimo contains a heavily parameterized observer function which enforces the monad laws, and programmers define a monad by invoking the observer function with arguments that specify the computational effects of the monad. Since Unimo provides the common behavior of all monads in a reusable form, programmers no longer need to rebuild the semantic boilerplate for each monad and can instead focus on the more interesting and rewarding task of modeling the desired computational effects.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "Haskell; monad transformers; monads; Unimo", } @Article{Denielou:2006:APS, author = "Pierre-Malo Deni{\'e}lou and James J. Leifer", title = "Abstraction preservation and subtyping in distributed languages", journal = j-SIGPLAN, volume = "41", number = "9", pages = "286--297", month = sep, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1160074.1159841", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:46:22 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In most programming languages, type abstraction is guaranteed by syntactic scoping in a single program, but is not preserved by marshalling during distributed communication. A solution is to generate hash types at compile time that consist of a fingerprint of the source code implementing the data type. These hash types can be tupled with a marshalled value and compared efficiently at unmarshall time to guarantee abstraction safety. In this paper, we extend a core calculus of ML-like modules, functions, distributed communication, and hash types, to integrate structural subtyping, user-declared subtyping between abstract types, and bounded existential types. Our semantics makes two contributions: (1) the explicit tracking of the interaction between abstraction boundaries and subtyping; (2) support for user-declared module upgrades with propagation of the resulting subhashing relation throughout the network during communication. We prove type preservation, progress, determinacy, and erasure for our system.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "module systems; programming language semantics; serialisation and distributed computation; subtyping; type theory", } @Article{Hutchins:2006:EDCa, author = "DeLesley Hutchins", title = "Eliminating distinctions of class: using prototypes to model virtual classes", journal = j-SIGPLAN, volume = "41", number = "10", pages = "1--20", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167473.1167475", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In mainstream OO languages, inheritance can be used to add new methods, or to override existing methods. Virtual classes and feature oriented programming are techniques which extend the mechanism of inheritance so that it is possible to refine nested classes as well. These techniques are attractive for programming in the large, because inheritance becomes a tool for manipulating whole class hierarchies rather than individual classes. Nevertheless, it has proved difficult to design static type systems for virtual classes, because virtual classes introduce dependent types. The compile-time type of an expression may depend on the run-time values of objects in that expression. We present a formal object calculus which implements virtual classes in a type-safe manner. Our type system uses a novel technique based on prototypes, which blur the distinction between compile-time and run-time. At run-time, prototypes act as objects, and they can be used in ordinary computations. At compile-time, they act as types. Prototypes are similar in power to dependent types, and subtyping is shown to be a form of partial evaluation. We prove that prototypes are type-safe but undecidable, and briefly outline a decidable semi-algorithm for dealing with them.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstract interpretation; dependent types; features; mixins; partial evaluation; prototypes; singleton types; virtual classes; virtual types", } @Article{Nystrom:2006:JNIa, author = "Nathaniel Nystrom and Xin Qi and Andrew C. Myers", title = "{J\&}: nested intersection for scalable software composition", journal = j-SIGPLAN, volume = "41", number = "10", pages = "21--36", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167473.1167476", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper introduces a programming language that makes it convenient to compose large software systems, combining their features in a modular way. J\& supports nested intersection, building on earlier work on nested inheritance in the language Jx. Nested inheritance permits modular, type-safe extension of a package (including nested packages and classes), while preserving existing type relationships. Nested intersection enables composition and extension of two or more packages, combining their types and behavior while resolving conflicts with a relatively small amount of code. The utility of J\& is demonstrated by using it to construct two composable, extensible frameworks: a compiler framework for Java, and a peer-to-peer networking system. Both frameworks support composition of extensions. For example, two compilers adding different, domain-specific features to Java can be composed to obtain a compiler for a language that supports both sets of features.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compilers; nested inheritance; nested intersection", } @Article{Warth:2006:SSOa, author = "Alessandro Warth and Milan Stanojevi{\'c} and Todd Millstein", title = "Statically scoped object adaptation with expanders", journal = j-SIGPLAN, volume = "41", number = "10", pages = "37--56", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167473.1167477", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper introduces the expander, a new object-oriented (OO) programming language construct designed to support object adaptation. Expanders allow existing classes to be noninvasively updated with new methods, fields, and superinterfaces. Each client can customize its view of a class by explicitly importing any number of expanders. This view then applies to all instances of that class, including objects passed to the client from other components. A form of expander overriding allows expanders to interact naturally with OO-style inheritance. We describe the design, implementation, and evaluation of eJava, an extension to Java supporting expanders. We illustrate eJava's syntax and semantics through several examples. The statically scoped nature of expander usage allows for a modular static type system that prevents several important classes of errors. We describe this modular static type system informally, formalize eJava and its type system in an extension to Featherweight Java, and prove a type soundness theorem for the formalization. We also describe a modular compilation strategy for eJava, which we have implemented using the Polyglot extensible compiler framework. Finally, we illustrate the practical benefits of eJava by using this compiler in two experiments.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "expanders; modular typechecking; object adaptation", } @Article{Andreae:2006:FIP, author = "Chris Andreae and James Noble and Shane Markstrum and Todd Millstein", title = "A framework for implementing pluggable type systems", journal = j-SIGPLAN, volume = "41", number = "10", pages = "57--74", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167515.1167479", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:51:58 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Pluggable types have been proposed to support multiple type systems in the same programming language. We have designed and implemented JavaCOP, a program constraint system for implementing practical pluggable type systems for Java. JavaCOP enforces user-defined typing constraints written in a declarative and expressive rule language. We have validated our design by (re)implementing a range of type systems and program checkers. By using a program constraint system to implement pluggable types, programmers are able to check that their programs will operate correctly in restricted environments, adhere to strict programming rules, avoid null pointer errors or scoped memory exceptions, and meet style guidelines, while programming language researchers can easily experiment with novel type systems.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "JavaCOP; pluggable type systems", } @Article{Fairbanks:2006:DFMa, author = "George Fairbanks and David Garlan and William Scherlis", title = "Design fragments make using frameworks easier", journal = j-SIGPLAN, volume = "41", number = "10", pages = "75--88", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167515.1167480", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Object oriented frameworks impose additional burdens on programmers that libraries did not, such as requiring the programmer to understand the method callback sequence, respecting behavior constraints within these methods, and devising solutions within a constrained solution space. To overcome these burdens, we express the repeated patterns of engagement with the framework as a design fragment. We analyzed the 20 demo applets provided by Sun and created a representative catalog of design fragments of conventional best practice. By evaluating 36 applets pulled from the Internet we show that these design fragments are common, many applets copied the structure of the Sun demos, and that creation of a catalog of design fragments is practical. Design fragments give programmers immediate benefit through tool-based conformance assurance and long-term benefit through expression of design intent.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "design fragments; frameworks; object-oriented programming; patterns", } @Article{Cohen:2006:JJTa, author = "Tal Cohen and Joseph (Yossi) Gil and Itay Maman", title = "{JTL}: the {Java} tools language", journal = j-SIGPLAN, volume = "41", number = "10", pages = "89--108", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167515.1167481", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present an overview of JTL (the Java Tools Language, pronounced 'Gee-tel'), a novel language for querying JAVA [8] programs. JTL was designed to serve the development of source code software tools for JAVA, and as a small language which to aid programming language extensions to JAVA. Applications include definition of pointcuts for aspect-oriented programming, fixing type constraints for generic programming, specification of encapsulation policies, definition of micro-patterns, etc. We argue that the JTL expression of each of these is systematic, concise, intuitive and general. JTL relies on a simply-typed relational database for program representation, rather than an abstract syntax tree. The underlying semantics of the language is restricted to queries formulated in First Order Predicate Logic augmented with transitive closure (FOPL). Special effort was taken to ensure terse, yet readable expression of logical conditions. The JTL pattern public abstract class, for example, matches all abstract classes which are publicly accessible, while class (public clone();) matches all classes in which method clone is public. To this end, JTL relies on a DATALOG-like syntax and semantics, enriched with quantifiers and pattern matching which all but entirely eliminate the need for recursive calls. JTL's query analyzer gives special attention to the fragility of the 'closed world assumption' in examining JAVA software, and determines whether a query relies on such an assumption. The performance of the JTL interpreter is comparable to that of JQuery after it generated its database cache, and at least an order of magnitude faster when the cache has to be rebuilt.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "declarative programming; reverse engineering", } @Article{Bockisch:2006:AVMa, author = "Christoph Bockisch and Matthew Arnold and Tom Dinkelaker and Mira Mezini", title = "Adapting virtual machine techniques for seamless aspect support", journal = j-SIGPLAN, volume = "41", number = "10", pages = "109--124", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167473.1167483", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Current approaches to compiling aspect-oriented programs are inefficient. This inefficiency has negative effects on the productivity of the development process and is especially prohibitive for dynamic aspect deployment. In this work, we present how well-known virtual machine techniques can be used with only slight modifications to support fast aspect deployment while retaining runtime performance. Our implementation accelerates dynamic aspect deployment by several orders of magnitude relative to mainstream aspect-oriented environments. We also provide a detailed comparison of alternative implementations of execution environments with support for dynamic aspect deployment.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "aspect weaving; aspect-oriented programming; dynamic deployment; envelope-based weaving; virtual machine support", } @Article{Bockisch:2006:ECFa, author = "Christoph Bockisch and Sebastian Kanthak and Michael Haupt and Matthew Arnold and Mira Mezini", title = "Efficient control flow quantification", journal = j-SIGPLAN, volume = "41", number = "10", pages = "125--138", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167473.1167484", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Aspect-oriented programming (AOP) is increasingly gaining in popularity. However, the focus of aspect-oriented language research has been mostly on language design issues; efficient implementation techniques have been less popular. As a result, the performance of certain AOP constructs is still poor. This is in particular true for constructs that rely on dynamic properties of the execution (e.g., the cflow construct). In this paper, we present efficient implementation techniques for cflow that exploit direct access to internal structures of the virtual machine running an application, such as the call stack, as well as the integration of these techniques into the just-in-time compiler code generation process. Our results show that AOP has the potential to make programs that need to define control flow-dependent behavior not only more modular but also more efficient. By making means for control flow-dependent behavior part of the language, AOP opens the possibility of applying sophisticated compiler optimizations that are out of reach for application programmers.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "aspect-oriented programming; control flow; virtual machine support", } @Article{Eugster:2006:UPJa, author = "Patrick Eugster", title = "Uniform proxies for {Java}", journal = j-SIGPLAN, volume = "41", number = "10", pages = "139--152", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167473.1167485", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The proxy abstraction has a longlasting tradition in object settings. From design pattern to inherent language support, from remote method invocations to simple forms of behavioral reflection --- incarnations as well as applications of proxies are innumerable. Since version 1.3, Java supports the concept of dynamic proxy. Such an object conforms to a set of types specified by the program and can be used wherever an expression of any of these types is expected, yet reifies invocations performed on it. Dynamic proxies have been applied to implement paradigms as diverse as behavioral reflection, structural conformance, or multi-methods. Alas, these proxies are only available 'for interfaces'. The case of creating dynamic proxies for a set of types including a class type has not been considered, meaning that it is currently not possible to create a dynamic proxy mimicking an instance of a given class. This weakness strongly limits any application of dynamic proxies. In this paper we unfold the current support for dynamic proxies in Java, assessing it in the light of a set of generic criteria for proxy implementations. We present an approach to supporting dynamic proxies 'for classes' in Java, consisting in transformations performed on classes at load-time, including a generic scheme for enforcing encapsulation upon field accesses. These transformations seemlessly extend the scope of the current support for dynamic proxies. We discuss the precise benefits and costs of our extension in terms of the criteria introduced, and illustrate the usefulness of uniformly available proxies by implementing future method invocations both safely and transparently.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "future; Java; proxy; transformation", } @Article{Maebe:2006:JSBa, author = "Jonas Maebe and Dries Buytaert and Lieven Eeckhout and Koen {De Bosschere}", title = "{Javana}: a system for building customized {Java} program analysis tools", journal = j-SIGPLAN, volume = "41", number = "10", pages = "153--168", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167473.1167487", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Understanding the behavior of applications running on high-level language virtual machines, as is the case in Java, is non-trivial because of the tight entanglement at the lowest execution level between the application and the virtual machine. This paper proposes Javana, a system for building Java program analysis tools. Javana provides an easy-to-use instrumentation infrastructure that allows for building customized profiling tools very quickly. Javana runs a dynamic binary instrumentation tool underneath the virtual machine. The virtual machine communicates with the instrumentation layer through an event handling mechanism for building a vertical map that links low-level native instruction pointers and memory addresses to high-level language concepts such as objects, methods, threads, lines of code, etc. The dynamic binary instrumentation tool then intercepts all memory accesses and instructions executed and provides the Javana end user with high-level language information for all memory accesses and natively executed instructions. We demonstrate the power of Javana through a number of applications: memory address tracing, vertical cache simulation and object lifetime computation. For each of these applications, the instrumentation specification requires only a small number of lines of code. Developing similarly powerful profiling tools within a virtual machine (as done in current practice) is both time-consuming and error-prone; in addition, the accuracy of the obtained profiling results might be questionable as we show in this paper.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "aspect-oriented instrumentation; customized program analysis tool; Java", } @Article{Blackburn:2006:DBJa, author = "Stephen M. Blackburn and Robin Garner and Chris Hoffmann and Asjad M. Khang and Kathryn S. McKinley and Rotem Bentzur and Amer Diwan and Daniel Feinberg and Daniel Frampton and Samuel Z. Guyer and Martin Hirzel and Antony Hosking and Maria Jump and Han Lee and J. Eliot B. Moss and B. Moss and Aashish Phansalkar and Darko Stefanovi{\'c} and Thomas VanDrunen and Daniel von Dincklage and Ben Wiedermann", title = "The {DaCapo} benchmarks: {Java} benchmarking development and analysis", journal = j-SIGPLAN, volume = "41", number = "10", pages = "169--190", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167515.1167488", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Since benchmarks drive computer science research and industry product development, which ones we use and how we evaluate them are key questions for the community. Despite complex runtime tradeoffs due to dynamic compilation and garbage collection required for Java programs, many evaluations still use methodologies developed for C, C++, and Fortran. SPEC, the dominant purveyor of benchmarks, compounded this problem by institutionalizing these methodologies for their Java benchmark suite. This paper recommends benchmarking selection and evaluation methodologies, and introduces the DaCapo benchmarks, a set of open source, client-side Java benchmarks. We demonstrate that the complex interactions of (1) architecture, (2) compiler, (3) virtual machine, (4) memory management, and (5) application require more extensive evaluation than C, C++, and Fortran which stress (4) much less, and do not require \1. We use and introduce new value, time-series, and statistical metrics for static and dynamic properties such as code complexity, code size, heap composition, and pointer mutations. No benchmark suite is definitive, but these metrics show that DaCapo improves over SPEC Java in a variety of ways, including more complex code, richer object behaviors, and more demanding memory system requirements. This paper takes a step towards improving methodologies for choosing and evaluating benchmarks to foster innovation in system design and implementation for Java and other managed languages.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "benchmark; DaCapo; Java; methodology; SPEC", } @Article{Titzer:2006:VOHa, author = "Ben L. Titzer", title = "{Virgil}: objects on the head of a pin", journal = j-SIGPLAN, volume = "41", number = "10", pages = "191--208", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167473.1167489", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Embedded microcontrollers are becoming increasingly prolific, serving as the primary or auxiliary processor in products and research systems from microwaves to sensor networks. Microcontrollers represent perhaps the most severely resource-constrained embedded processors, often with as little as a few bytes of memory and a few kilobytes of code space. Language and compiler technology has so far been unable to bring the benefits of modern object-oriented languages to such processors. In this paper, I will present the design and implementation of Virgil, a lightweight object-oriented language designed with careful consideration for resource-limited domains. Virgil explicitly separates initialization time from runtime, allowing an application to build complex data structures during compilation and then run directly on the bare hardware without a virtual machine or any language runtime. This separation allows the entire program heap to be available at compile time and enables three new data-sensitive optimizations: reachable members analysis, reference compression, and ROM-ization. Experimental results demonstrate that Virgil is well suited for writing microcontroller programs, with five demonstrative applications fitting in less than 256 bytes of RAM with fewer than 50 bytes of metadata. Further results show that the optimizations presented in this paper reduced code size between 20\% and 80\% and RAM size by as much as 75\%.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "data-sensitive optimization; dead code elimination; embedded systems; heap compression; microcontrollers; multi-stage computation; sensor networks; standalone programs; static analysis; systems software; whole-program compilation", } @Article{Bravenboer:2006:DFEa, author = "Martin Bravenboer and {\'E}ric Tanter and Eelco Visser", title = "Declarative, formal, and extensible syntax definition for {aspectJ}", journal = j-SIGPLAN, volume = "41", number = "10", pages = "209--228", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167473.1167491", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Aspect-Oriented Programming (AOP) is attracting attention from both research and industry, as illustrated by the ever-growing popularity of AspectJ, the de facto standard AOP extension of Java. From a compiler construction perspective AspectJ is interesting as it is a typical example of compositional language, i.e., a language composed of a number of separate languages with different syntactical styles: in addition to plain Java, AspectJ includes a language for defining pointcuts and one for defining advices. Language composition represents a non-trivial challenge for conventional parsing techniques. First, combining several languages with different lexical syntax leads to considerable complexity in the lexical states to processed. Second, as new language features for AOP are being explored, many research proposals are concerned with further extending the AspectJ language, resulting in a need for an extensible syntax definition. This paper shows how scannerless parsing elegantly addresses the issues encountered by conventional techniques when parsing AspectJ . We present the design of a modular, extensible, and formal definition of the lexical and context-free aspects of the AspectJ syntax in the Syntax Definition Formalism SDF, which is implemented by a scannerless, generalized-LR parser (SGLR). We introduce grammar mixins as a novel application of SDF's modularity features, which allows the declarative definition of different keyword policies and combination of extensions. We illustrate the modular extensibility of our definition with syntax extensions taken from current research on aspect languages. Finally, benchmarks show the reasonable performance of scannerless generalized-LR parsing for this grammar.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "aspectJ; generalized-LR parsing; grammar mixins; lexical syntax; scannerless parsing; syntax definition; syntax extension", } @Article{Cavazos:2006:MSDa, author = "John Cavazos and Michael F. P. O'Boyle", title = "Method-specific dynamic compilation using logistic regression", journal = j-SIGPLAN, volume = "41", number = "10", pages = "229--240", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167473.1167492", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Determining the best set of optimizations to apply to a program has been a long standing problem for compiler writers. To reduce the complexity of this task, existing approaches typically apply the same set of optimizations to all procedures within a program, without regard to their particular structure. This paper develops a new method-specific approach that automatically selects the best optimizations on a per method basis within a dynamic compiler. Our approach uses the machine learning technique of logistic regression to automatically derive a predictive model that determines which optimizations to apply based on the features of a method. This technique is implemented in the Jikes RVM Java JIT compiler. Using this approach we reduce the average total execution time of the SPECjvm98 benchmarks by 29\%. When the same heuristic is applied to the DaCapo+ benchmark suite, we obtain an average 33\% reduction over the default level O2 setting.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compiler optimization; Java; Jikes RVM; logistic regression; machine learning", } @Article{Ogata:2006:RCIa, author = "Kazunori Ogata and Tamiya Onodera and Kiyokuni Kawachiya and Hideaki Komatsu and Toshio Nakatani", title = "Replay compilation: improving debuggability of a just-in-time compiler", journal = j-SIGPLAN, volume = "41", number = "10", pages = "241--252", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167473.1167493", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The performance of Java has been tremendously improved by the advance of Just-in-Time (JIT) compilation technologies. However, debugging such a dynamic compiler is much harder than a static compiler. Recompiling the problematic method to produce a diagnostic output does not necessarily work as expected, because the compilation of a method depends on runtime information at the time of compilation. In this paper, we propose a new approach, called replay JIT compilation, which can reproduce the same compilation remotely by using two compilers, the state-saving compiler and the replaying compiler. The state-saving compiler is used in a normal run, and, while compiling a method, records into a log all of the input for the compiler. The replaying compiler is then used in a debugging run with the system dump, to recompile a method with the options for diagnostic output. We reduced the overhead to save the input by using the system dump and by categorizing the input based on how its value changes. In our experiment, the increase of the compilation time for saving the input was only 1\%, and the size of the additional memory needed for saving the input was only 10\% of the compiler-generated code.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "debuggability; deterministic replay; dynamic optimization; Java; JIT compiler; problem determination; replay compilation", } @Article{Herlihy:2006:FFIa, author = "Maurice Herlihy and Victor Luchangco and Mark Moir", title = "A flexible framework for implementing software transactional memory", journal = j-SIGPLAN, volume = "41", number = "10", pages = "253--262", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167515.1167495", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We describe DSTM2, a Java{\TM} software library that provides a flexible framework for implementing object-based software transactional memory (STM). The library uses transactional factories to transform sequential (unsynchronized) classes into atomic (transactionally synchronized) ones, providing a substantial improvement over the awkward programming interface of our previous DSTM library. Furthermore, researchers can experiment with alternative STM mechanisms by providing their own factories. We demonstrate this flexibility by presenting two factories: one that uses essentially the same mechanisms as the original DSTM (with some enhancements),and another that uses a completely different approach. Because DSTM2 is packaged as a Java library, a wide range of programmers can easily try it out, and the community can begin to gain experience with transactional programming. Furthermore, researchers will be able to use the body of transactional programs that arises from this community experience to test and evaluate different STM mechanisms simply by supplying new transactional factories. We believe that this flexible approach will help to build consensus about the best ways to implement transactions, and will avoid the premature 'lock-in' that may arise if STM mechanisms are baked into compilers before such experimentation is done.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "atomicity; concurrency; Java library; obstruction-free factory; shadow factory; software transactional memory (STM); transactions", } @Article{Russell:2006:ESRa, author = "Kenneth Russell and David Detlefs", title = "Eliminating synchronization-related atomic operations with biased locking and bulk rebiasing", journal = j-SIGPLAN, volume = "41", number = "10", pages = "263--272", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167515.1167496", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The Java{\TM} programming language contains built-in synchronization primitives for use in constructing multithreaded programs. Efficient implementation of these synchronization primitives is necessary in order to achieve high performance. Recent research [9, 12, 10, 3, 7] has focused on the run-time elimination of the atomic operations required to implement object monitor synchronization primitives. This paper describes a novel technique called store-free biased locking which eliminates all synchronization-related atomic operations on uncontended object monitors. The technique supports the bulk transfer of object ownership from one thread to another, and the selective disabling of the optimization where unprofitable, using epoch-based bulk rebiasing and revocation. It has been implemented in the production version of the Java HotSpot{\TM}VM and has yielded significant performance improvements on a range of benchmarks and applications. The technique is applicable to any virtual machine-based programming language implementation with mostly block-structured locking primitives.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "atomic; bias; Java; lock; monitor; optimization; rebias; reservation; revoke; synchronization", } @Article{Chin:2006:FBAa, author = "Wei-Ngan Chin and Florin Craciun and Siau-Cheng Khoo and Corneliu Popeea", title = "A flow-based approach for variant parametric types", journal = j-SIGPLAN, volume = "41", number = "10", pages = "273--290", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167473.1167498", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A promising approach for type-safe generic codes in the object-oriented paradigm is variant parametric type, which allows covariant and contravariant subtyping on fields where appropriate. Previous approaches formalise variant type as a special case of the existential type system. In this paper, we present a new framework based on flow analysis and modular type checking to provide a simple but accurate model for capturing generic types. Our scheme stands to benefit from past (and future) advances in flow analysis and subtyping constraints. Furthermore, it fully supports casting for variant types with a special reflection mechanism, called cast capture, to handle objects with unknown types. We have built a constraint-based type checker and have proven its soundness. We have also successfully annotated a suite of Java libraries and client code with our flow-based variant type system.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "constraints; flow analysis; genericity; subtyping; variant parametric types", } @Article{Gregor:2006:CLSa, author = "Douglas Gregor and Jaakko J{\"a}rvi and Jeremy Siek and Bjarne Stroustrup and Gabriel Dos Reis and Andrew Lumsdaine", title = "{Concepts}: linguistic support for generic programming in {C++}", journal = j-SIGPLAN, volume = "41", number = "10", pages = "291--310", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167473.1167499", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Generic programming has emerged as an important technique for the development of highly reusable and efficient software libraries. In C++, generic programming is enabled by the flexibility of templates, the C++ type parametrization mechanism. However, the power of templates comes with a price: generic (template) libraries can be more difficult to use and develop than non-template libraries and their misuse results in notoriously confusing error messages. As currently defined in C++98, templates are unconstrained, and type-checking of templates is performed late in the compilation process, i.e., after the use of a template has been combined with its definition. To improve the support for generic programming in C++, we introduce concepts to express the syntactic and semantic behavior of types and to constrain the type parameters in a C++ template. Using concepts, type-checking of template definitions is separated from their uses, thereby making templates easier to use and easier to compile. These improvements are achieved without limiting the flexibility of templates or decreasing their performance --- in fact their expressive power is increased. This paper describes the language extensions supporting concepts, their use in the expression of the C++ Standard Template Library, and their implementation in the ConceptGCC compiler. Concepts are candidates for inclusion in the upcoming revision of the ISO C++ standard, C++0x.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "C++ templates; C++0x; concepts; constrained generics; generic programming; parametric polymorphism", } @Article{Potanin:2006:GOGa, author = "Alex Potanin and James Noble and Dave Clarke and Robert Biddle", title = "Generic ownership for generic {Java}", journal = j-SIGPLAN, volume = "41", number = "10", pages = "311--324", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167473.1167500", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Ownership types enforce encapsulation in object-oriented programs by ensuring that objects cannot be leaked beyond object(s) that own them. Existing ownership programming languages either do not support parametric polymorphism (type genericity) or attempt to add it on top of ownership restrictions. Generic Ownership provides per-object ownership on top of a sound generic imperative language. The resulting system not only provides ownership guarantees comparable to established systems, but also requires few additional language mechanisms due to full reuse of parametric polymorphism. We formalise the core of Generic Ownership, highlighting that only restriction of this calls and owner subtype preservation are required to achieve deep ownership. Finally we describe how Ownership Generic Java (OGJ) was implemented as a minimal extension to Generic Java in the hope of bringing ownership types into mainstream programming.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "generics; Java; ownership; type systems", } @Article{Liu:2006:FFCa, author = "Yu David Liu and Scott F. Smith", title = "A formal framework for component deployment", journal = j-SIGPLAN, volume = "41", number = "10", pages = "325--344", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167473.1167502", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Software deployment is a complex process, and industrial-strength frameworks such as .NET, Java, and CORBA all provide explicit support for component deployment. However, these frameworks are not built around fundamental principles as much as they are engineering efforts closely tied to particulars of the respective systems. Here we aim to elucidate the fundamental principles of software deployment, in a platform-independent manner. Issues that need to be addressed include deployment unit design, when, where and how to wire components together, versioning, version dependencies, and hot-deployment of components. We define the application buildbox as the place where software is developed and deployed, and define a formal Labeled Transition System (LTS) on the buildbox with transitions for deployment operations that include build, install, ship, and update. We establish formal properties of the LTS, including the fact that if a component is shipped with a certain version dependency, then at run time that dependency must be satisfied with a compatible version. Our treatment of deployment is both platform- and vendor-independent, and we show how it models the core mechanisms of the industrial-strength deployment frameworks.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "component; deployment; version", } @Article{Wasserrab:2006:OSTa, author = "Daniel Wasserrab and Tobias Nipkow and Gregor Snelting and Frank Tip", title = "An operational semantics and type safety proof for multiple inheritance in {C++}", journal = j-SIGPLAN, volume = "41", number = "10", pages = "345--362", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167473.1167503", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present an operational semantics and type safety proof for multiple inheritance in C++. The semantics models the behaviour of method calls, field accesses, and two forms of casts in C++ class hierarchies exactly, and the type safety proof was formalized and machine-checked in Isabelle/HOL. Our semantics enables one, for the first time, to understand the behaviour of operations on C++ class hierarchies without referring to implementation-level artifacts such as virtual function tables. Moreover, it can --- as the semantics is executable --- act as a reference for compilers, and it can form the basis for more advanced correctness proofs of, e.g., automated program transformations. The paper presents the semantics and type safety proof, and a discussion of the many subtleties that we encountered in modeling the intricate multiple inheritance model of C++.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "C++; multiple inheritance; semantics; type safety", } @Article{Darga:2006:ESMa, author = "Paul T. Darga and Chandrasekhar Boyapati", title = "Efficient software model checking of data structure properties", journal = j-SIGPLAN, volume = "41", number = "10", pages = "363--382", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167473.1167504", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper presents novel language and analysis techniques that significantly speed up software model checking of data structure properties. Consider checking a red-black tree implementation. Traditional software model checkers systematically generate all red-black tree states (within some given bounds) and check every red-black tree operation (such as insert, delete, or lookup) on every red-black tree state. Our key idea is as follows. As our checker checks a red-black tree operation $o$ on a red-black tree state s, it uses program analysis techniques to identify other red-black tree states ${s'}_1$, ${s'}_2$, \ldots{}, ${s'}_k$ on which the operation $o$ behaves similarly. Our analyses guarantee that if $o$ executes correctly on s, then $o$ will execute correctly on every ${s'}_i$. Our checker therefore does not need to check $o$ on any ${s'}_i$ once it checks $o$ on s. It thus safely prunes those state transitions from its search space, while still achieving complete test coverage within the bounded domain. Our preliminary results show orders of magnitude improvement over previous approaches. We believe our techniques can make model checking significantly faster, and thus enable checking of much larger programs and complex program properties than currently possible.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "program analysis; software model checking", } @Article{Kit:2006:IRCa, author = "Lo Kwun Kit and Chan Kwun Man and Elisa Baniassad", title = "Isolating and relating concerns in requirements using latent semantic analysis", journal = j-SIGPLAN, volume = "41", number = "10", pages = "383--396", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167515.1167506", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Aspect-oriented requirements analysis involves the identification of concerns that behaviorally influence other concerns. Such concerns are described in requirements called emphaspectual requirements: requirements that detail the influence of one concern over another. The current state of the art for aspect-oriented requirements analysis is Theme/Doc, which allows lexical analysis of requirements based on a set of developer-chosen keywords. It provides a graphical depiction of how concerns relate to requirements, and affords identification of potential aspectual requirements. In addition, clusters of requirements and concerns are identified to arrive at a more useful set of concerns than those initially identified. Because of the lexical nature of the Theme/Doc approach, aspectual requirements are missed, or wrongly identified. Additionally, requirements may be wrongly clustered if they contain ambiguous terms. In this work we explored whether the use of a statistical approach for textual analysis, Latent Semantic Analysis (LSA), would improve upon the lexical approach used by Theme/Doc. We found that LSA helps identify useful concern clusters, and helps reduce the number of falsely identified aspectual requirements.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "aspect-oriented requirements analysis; early aspects; latent semantic analysis; theme/doc; visualisation", } @Article{Baxter:2006:USJa, author = "Gareth Baxter and Marcus Frean and James Noble and Mark Rickerby and Hayden Smith and Matt Visser and Hayden Melton and Ewan Tempero", title = "Understanding the shape of {Java} software", journal = j-SIGPLAN, volume = "41", number = "10", pages = "397--412", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167515.1167507", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Large amounts of Java software have been written since the language's escape into unsuspecting software ecology more than ten years ago. Surprisingly little is known about the structure of Java programs in the wild: about the way methods are grouped into classes and then into packages, the way packages relate to each other, or the way inheritance and composition are used to put these programs together. We present the results of the first in-depth study of the structure of Java programs. We have collected a number of Java programs and measured their key structural attributes. We have found evidence that some relationships follow power-laws, while others do not. We have also observed variations that seem related to some characteristic of the application itself. This study provides important information for researchers who can investigate how and why the structural relationships we find may have originated, what they portend, and how they can be managed.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "Java; object-oriented design; power-law distributions", } @Article{Sahavechaphan:2006:XMSa, author = "Naiyana Sahavechaphan and Kajal Claypool", title = "{XSnippet}: mining {For} sample code", journal = j-SIGPLAN, volume = "41", number = "10", pages = "413--430", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167515.1167508", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "It is common practice for software developers to use examples to guide development efforts. This largely unwritten, yet standard, practice of 'develop by example' is often supported by examples bundled with library or framework packages, provided in textbooks, and made available for download on both official and unofficial web sites. However, the vast number of examples that are embedded in the billions of lines of already developed library and framework code are largely untapped. We have developed XSnippet, a context-sensitive code assistant framework that allows developers to query a sample repository for code snippets that are relevant to the programming task at hand. In particular, our work makes three primary contributions. First, a range of queries is provided to allow developers to switch between a context-independent retrieval of code snippets to various degrees of context-sensitive retrieval for object instantiation queries. Second, a novel graph-based code mining algorithm is provided to support the range of queries and enable mining within and across method boundaries. Third, an innovative context-sensitive ranking heuristic is provided that has been experimentally proven to provide better ranking for best-fit code snippets than context-independent heuristics such as shortest path and frequency. Our experimental evaluation has shown that XSnippet has significant potential to assist developers, and provides better coverage of tasks and better rankings for best-fit snippets than other code assistant systems.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "code assistants; code mining; code reuse; ranking code samples", } @Article{Gabriel:2006:CSa, author = "Richard P. Gabriel and Ron Goldman", title = "Conscientious software", journal = j-SIGPLAN, volume = "41", number = "10", pages = "433--450", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167473.1167510", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Software needs to grow up and become responsible for itself and its own future by participating in its own installation and customization, maintaining its own health, and adapting itself to new circumstances, new users, and new uses. To create such software will require us to change some of our underlying assumptions about how we write programs. A promising approach seems to be to separate software that does the work (allopoietic)from software that keeps the system alive (autopoietic).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "autopoiesis; continuous (re)design; emergence; feedback; repair; robustness; self-sustaining systems; self-testing; software; software complexity; stigmergy", } @Article{Simonyi:2006:ISa, author = "Charles Simonyi and Magnus Christerson and Shane Clifford", title = "Intentional software", journal = j-SIGPLAN, volume = "41", number = "10", pages = "451--464", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167515.1167511", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Wysiwyg editors simplified document creation by separating the document contents from the looks and by automating the re-application of the looks to changing contents. In the same way Intentional Software simplifies software creation by separating the software contents in terms of their various domains from the implementation of the software and by enabling automatic re-generation of the software as the contents change. This way, domain experts can work in parallel with programmers in their respective areas of expertise; and the repeated intermingling can be automated. Intentional Software is supported by a Domain Workbench tool where multiple domains can be defined, created, edited, transformed and integrated during software creation. Key features include a uniform representation of multiple interrelated domains, the ability to project the domains in multiple editable notations, and simple access for a program generator.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "generative programming; intentional software", } @Article{Waldo:2006:SDa, author = "Jim Waldo", title = "On system design", journal = j-SIGPLAN, volume = "41", number = "10", pages = "467--480", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167515.1167513", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In this essay, I consider some of the factors that are making it more and more difficult to expend the effort necessary to do system design. Because of changes in the economics of the field in both industry and research, we have become less able to take the time needed to do real system design, and to train the next generation of designers. Because of the intellectual property landscape, we are less able to discuss system design. The end result is that we do less good system design than we used to, at least in those environments where system design used to be most common. But there are reasons to be optimistic about the future of system design, which appears to be happening in non-traditional ways and in non-traditional venues.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "education; system design; training", } @Article{Steimann:2006:PSAa, author = "Friedrich Steimann", title = "The paradoxical success of aspect-oriented programming", journal = j-SIGPLAN, volume = "41", number = "10", pages = "481--497", month = oct, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1167515.1167514", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:47:35 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Aspect-oriented programming is considered a promising new technology. As object-oriented programming did before, it is beginning to pervade all areas of software engineering. With its growing popularity, practitioners and academics alike are wondering whether they should start looking into it, or otherwise risk having missed an important development. The author of this essay finds that much of aspect-oriented programming's success seems to be based on the conception that it improves both modularity and the structure of code, while in fact, it works against the primary purposes of the two, namely independent development and understandability of programs. Not seeing any way of fixing this situation, he thinks the success of aspect-oriented programming to be paradoxical.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "aspect-oriented programming; globalization of variables; independent development; modularization; program structure; readability; software engineering", } @Article{Rosenblum:2006:IVC, author = "Mendel Rosenblum", title = "Impact of virtualization on computer architecture and operating systems", journal = j-SIGPLAN, volume = "41", number = "11", pages = "1--1", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168857.1168858", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Abstract This talk describes how virtualization is changing the way computing is done in the industry today and how it is causing users to rethink how they view hardware, operating systems, and application programs. The talk will describe this new view on computing and the benefits driving users to adopt it. The changing roles for hardware and operating systems will be discussed along with what changes will be needed to efficiently and simply support this new computing model. I will conclude with a discussion of areas where industry could use input from the ASPLOS research community.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Adams:2006:CSH, author = "Keith Adams and Ole Agesen", title = "A comparison of software and hardware techniques for x86 virtualization", journal = j-SIGPLAN, volume = "41", number = "11", pages = "2--13", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168857.1168860", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Until recently, the x86 architecture has not permitted classical trap-and-emulate virtualization. Virtual Machine Monitors for x86, such as VMware {\reg} Workstation and Virtual PC, have instead used binary translation of the guest kernel code. However, both Intel and AMD have now introduced architectural extensions to support classical virtualization. We compare an existing software VMM with a new VMM designed for the emerging hardware support. Surprisingly, the hardware VMM often suffers lower performance than the pure software VMM. To determine why, we study architecture-level events such as page table updates, context switches and I/O, and find their costs vastly different among native, software VMM and hardware VMM execution. We find that the hardware support fails to provide an unambiguous performance advantage for two primary reasons: first, it offers no support for MMU virtualization; second, it fails to co-exist with existing software techniques for MMU virtualization. We look ahead to emerging techniques for addressing this MMU virtualization problem in the context of hardware-assisted virtualization.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dynamic binary translation; MMU; nested paging; SVM; TLB; virtual machine monitor; virtualization; VT; x86", } @Article{Jones:2006:GMB, author = "Stephen T. Jones and Andrea C. Arpaci-Dusseau and Remzi H. Arpaci-Dusseau", title = "{Geiger}: monitoring the buffer cache in a virtual machine environment", journal = j-SIGPLAN, volume = "41", number = "11", pages = "14--24", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168857.1168861", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Virtualization is increasingly being used to address server management and administration issues like flexible resource allocation, service isolation and workload migration. In a virtualized environment, the virtual machine monitor (VMM) is the primary resource manager and is an attractive target for implementing system features like scheduling, caching, and monitoring. However, the lack of runtime information within the VMM about guest operating systems, sometimes called the semantic gap, is a significant obstacle to efficiently implementing some kinds of services. In this paper we explore techniques that can be used by a VMM to passively infer useful information about a guest operating system's unified buffer cache and virtual memory system. We have created a prototype implementation of these techniques inside the Xen VMM called Geiger and show that it can accurately infer when pages are inserted into and evicted from a system's buffer cache. We explore several nuances involved in passively implementing eviction detection that have not previously been addressed, such as the importance of tracking disk block liveness, the effect of file system journaling, and the importance of accounting for the unified caches found in modern operating systems. Using case studies we show that the information provided by Geiger enables a VMM to implement useful VMM-level services. We implement a novel working set size estimator which allows the VMM to make more informed memory allocation decisions. We also show that a VMM can be used to drastically improve the hit rate in remote storage caches by using eviction-based cache placement without modifying the application or operating system storage interface. Both case studies hint at a future where inference techniques enable a broad new class of VMM-level functionality.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "inference; virtual machine", } @Article{Crandall:2006:TSD, author = "Jedidiah R. Crandall and Gary Wassermann and Daniela A. S. de Oliveira and Zhendong Su and S. Felix Wu and Frederic T. Chong", title = "Temporal search: detecting hidden malware timebombs with virtual machines", journal = j-SIGPLAN, volume = "41", number = "11", pages = "25--36", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168918.1168862", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Worms, viruses, and other malware can be ticking bombs counting down to a specific time, when they might, for example, delete files or download new instructions from a public web server. We propose a novel virtual-machine-based analysis technique to automatically discover the timetable of a piece of malware, or when events will be triggered, so that other types of analysis can discern what those events are. This information can be invaluable for responding to rapid malware, and automating its discovery can provide more accurate information with less delay than careful human analysis. Developing an automated system that produces the timetable of a piece of malware is a challenging research problem. In this paper, we describe our implementation of a key component of such a system: the discovery of timers without making assumptions about the integrity of the infected system's kernel. Our technique runs a virtual machine at slightly different rates of perceived time (time as seen by the virtual machine), and identifies time counters by correlating memory write frequency to timer interrupt frequency. We also analyze real malware to assess the feasibility of using full-system, machine-level symbolic execution on these timers to discover predicates. Because of the intricacies of the Gregorian calendar (leap years, different number of days in each month, etc.) these predicates will not be direct expressions on the timer but instead an annotated trace; so we formalize the calculation of a timetable as a weakest precondition calculation. Our analysis of six real worms sheds light on two challenges for future work: 1) time-dependent malware behavior often does not follow a linear timetable; and 2) that an attacker with knowledge of the analysis technique can evade analysis. Our current results are promising in that with simple symbolic execution we are able to discover predicates on the day of the month for four real worms. Then through more traditional manual analysis we conclude that a more control-flow-sensitive symbolic execution implementation would discover all predicates for the malware we analyzed.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "malware; virtual machines; worms", } @Article{Lu:2006:ADA, author = "Shan Lu and Joseph Tucek and Feng Qin and Yuanyuan Zhou", title = "{AVIO}: detecting atomicity violations via access interleaving invariants", journal = j-SIGPLAN, volume = "41", number = "11", pages = "37--48", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168857.1168864", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Concurrency bugs are among the most difficult to test and diagnose of all software bugs. The multicore technology trend worsens this problem. Most previous concurrency bug detection work focuses on one bug subclass, data races, and neglects many other important ones such as atomicity violations, which will soon become increasingly important due to the emerging trend of transactional memory models. This paper proposes an innovative, comprehensive, invariant-based approach called AVIO to detect atomicity violations. Our idea is based on a novel observation called access interleaving invariant, which is a good indication of programmers' assumptions about the atomicity of certain code regions. By automatically extracting such invariants and detecting violations of these invariants at run time, AVIO can detect a variety of atomicity violations. Based on this idea, we have designed and built two implementations of AVIO and evaluated the trade-offs between them. The first implementation, AVIO-S, is purely in software, while the second, AVIO-H, requires some simple extensions to the cache coherence hardware. AVIO-S is cheaper and more accurate but incurs much higher overhead and thus more run-time perturbation than AVIOH. Therefore, AVIO-S is more suitable for in-house bug detection and postmortem bug diagnosis, while AVIO-H can be used for bug detection during production runs. We evaluate both implementations of AVIO using large realworld server applications (Apache and MySQL) with six representative real atomicity violation bugs, and SPLASH-2 benchmarks. Our results show that AVIO detects more tested atomicity violations of various types and has 25 times fewer false positives than previous solutions on average.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "atomicity violation; bug detection; concurrency bug; concurrent program; hardware support; program invariant", } @Article{Xu:2006:RTR, author = "Min Xu and Mark D. Hill and Rastislav Bodik", title = "A regulated transitive reduction {(RTR)} for longer memory race recording", journal = j-SIGPLAN, volume = "41", number = "11", pages = "49--60", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168919.1168865", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Multithreaded deterministic replay has important applications in cyclic debugging, fault tolerance and intrusion analysis. Memory race recording is a key technology for multithreaded deterministic replay. In this paper, we considerably improve our previous always-on Flight Data Recorder (FDR) in four ways:\par \begin{itemize} \item Longer recording by reducing the log size growth rate to approximately one byte per thousand dynamic instructions. \item Lower hardware cost by reducing the cost to 24 KB per processor core. \item Simpler design by modifying only the cache coherence protocol, but not the cache. \item Broader applicability by supporting both Sequential Consistency (SC) and Total Store Order (TSO) memory consistency models (existing recorders support only SC). \end{itemize} These improvements stem from several ideas: (1) a Regulated Transitive Reduction (RTR) recording algorithm that creates stricter and vectorizable dependencies to reduce the log growth rate; (2) a Set/LRU timestamp approximation method that better approximates timestamps of uncached memory locations to reduce the hardware cost; (3) an order-value-hybrid recording method that explicitly logs the value of potential SC-violating load instructions to support multiprocessor systems with TSO.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "determinism; multithreading; race recording", } @Article{Bond:2006:BBE, author = "Michael D. Bond and Kathryn S. McKinley", title = "{Bell}: bit-encoding online memory leak detection", journal = j-SIGPLAN, volume = "41", number = "11", pages = "61--72", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168918.1168866", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Memory leaks compromise availability and security by crippling performance and crashing programs. Leaks are difficult to diagnose because they have no immediate symptoms. Online leak detection tools benefit from storing and reporting per-object sites (e.g., allocation sites) for potentially leaking objects. In programs with many small objects, per-object sites add high space overhead, limiting their use in production environments. This paper introduces Bit-Encoding Leak Location (Bell), a statistical approach that encodes per-object sites to a single bit per object. A bit loses information about a site, but given sufficient objects that use the site and a known, finite set of possible sites, Bell uses brute-force decoding to recover the site with high accuracy. We use this approach to encode object allocation and last-use sites in Sleigh, a new leak detection tool. Sleigh detects stale objects (objects unused for a long time) and uses Bell decoding to report their allocation and last-use sites. Our implementation steals four unused bits in the object header and thus incurs no per-object space overhead. Sleigh's instrumentation adds 29\% execution time overhead, which adaptive profiling reduces to 11\%. Sleigh's output is directly useful for finding and fixing leaks in SPEC JBB2000 and Eclipse, although sufficiently many objects must leak before Bell decoding can report sites with confidence. Bell is suitable for other leak detection approaches that store per-object sites, and for other problems amenable to statistical per-object metadata.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "low-overhead monitoring; managed languages; memory leaks; probabilistic approaches", } @Article{Shyam:2006:ULC, author = "Smitha Shyam and Kypros Constantinides and Sujay Phadke and Valeria Bertacco and Todd Austin", title = "Ultra low-cost defect protection for microprocessor pipelines", journal = j-SIGPLAN, volume = "41", number = "11", pages = "73--82", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168918.1168868", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The sustained push toward smaller and smaller technology sizes has reached a point where device reliability has moved to the forefront of concerns for next-generation designs. Silicon failure mechanisms, such as transistor wearout and manufacturing defects, are a growing challenge that threatens the yield and product lifetime of future systems. In this paper we introduce the BulletProof pipeline, the first ultra low-cost mechanism to protect a microprocessor pipeline and on-chip memory system from silicon defects. To achieve this goal we combine area-frugal on-line testing techniques and system-level checkpointing to provide the same guarantees of reliability found in traditional solutions, but at much lower cost. Our approach utilizes a microarchitectural checkpointing mechanism which creates coarse-grained epochs of execution, during which distributed on-line built in self-test (BIST) mechanisms validate the integrity of the underlying hardware. In case a failure is detected, we rely on the natural redundancy of instruction-level parallel processors to repair the system so that it can still operate in a degraded performance mode. Using detailed circuit-level and architectural simulation, we find that our approach provides very high coverage of silicon defects (89\%) with little area cost (5.8\%). In addition, when a defect occurs, the subsequent degraded mode of operation was found to have only moderate performance impacts, (from 4\% to 18\% slowdown).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "defect-protection; low-cost; pipelines; reliability", } @Article{Reddy:2006:UPB, author = "Vimal K. Reddy and Eric Rotenberg and Sailashri Parthasarathy", title = "Understanding prediction-based partial redundant threading for low-overhead, high- coverage fault tolerance", journal = j-SIGPLAN, volume = "41", number = "11", pages = "83--94", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168917.1168869", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Redundant threading architectures duplicate all instructions to detect and possibly recover from transient faults. Several lighter weight Partial Redundant Threading (PRT) architectures have been proposed recently. (i) Opportunistic Fault Tolerance duplicates instructions only during periods of poor single-thread performance. (ii) ReStore does not explicitly duplicate instructions and instead exploits mispredictions among highly confident branch predictions as symptoms of faults. (iii) Slipstream creates a reduced alternate thread by replacing many instructions with highly confident predictions. We explore PRT as a possible direction for achieving the fault tolerance of full duplication with the performance of single-thread execution. Opportunistic and ReStore yield partial coverage since they are restricted to using only partial duplication or only confident predictions, respectively. Previous analysis of Slipstream fault tolerance was cursory and concluded that only duplicated instructions are covered. In this paper, we attempt to better understand Slipstream's fault tolerance, conjecturing that the mixture of partial duplication and confident predictions actually closely approximates the coverage of full duplication. A thorough dissection of prediction scenarios confirms that faults in nearly 100\% of instructions are detectable. Fewer than 0.1\% of faulty instructions are not detectable due to coincident faults and mispredictions. Next we show that the current recovery implementation fails to leverage excellent detection capability, since recovery sometimes initiates belatedly, after already retiring a detected faulty instruction. We propose and evaluate a suite of simple microarchitectural alterations to recovery and checking. Using the best alterations, Slipstream can recover from faults in 99\% of instructions, compared to only 78\% of instructions without alterations. Both results are much higher than predicted by past research, which claims coverage for only duplicated instructions, or 65\% of instructions. On an 8-issue SMT processor, Slipstream performs within 1.3\% of single-thread execution whereas full duplication slows performance by 14\%. A key byproduct of this paper is a novel analysis framework in which every dynamic instruction is considered to be hypothetically faulty, thus not requiring explicit fault injection. Fault coverage is measured in terms of the fraction of candidate faulty instructions that are directly or indirectly detectable before.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "branch prediction; chip multiprocessor (CMP); redundant multithreading; simultaneous multithreading (SMT); slipstream processor; time redundancy; transient faults; value prediction", } @Article{Parashar:2006:SSB, author = "Angshuman Parashar and Anand Sivasubramaniam and Sudhanva Gurumurthi", title = "{SlicK}: slice-based locality exploitation for efficient redundant multithreading", journal = j-SIGPLAN, volume = "41", number = "11", pages = "95--105", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168857.1168870", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Transient faults are expected a be a major design consideration in future microprocessors. Recent proposals for transient fault detection in processor cores have revolved around the idea of redundant threading, which involves redundant execution of a program across multiple execution contexts. This paper presents a new approach to redundant threading by bringing together the concepts of slice-level execution and value and control-flow locality into a novel partial redundant threading mechanism called SlicK .The purpose of redundant execution is to check the integrity of the outputs propagating out of the core (typically through stores). SlicK implements redundancy at the granularity of backward-slices of these output instructions and exploits value and control-flow locality to avoid redundantly executing slices that lead to predictable outputs, thereby avoiding redundant execution of a significant fraction of instructions while maintaining extremely low vulnerabilities for critical processor structures. We propose the microarchitecture of a backward-slice extractor called SliceEM that is able to identify backward slices without interrupting the instruction flow, and show how this extractor and a set of predictors can be integrated into a redundant threading mechanism to form SlicK. Detailed simulations with SPEC CPU2000 benchmarks show that SlicK can provide around 10.2\% performance improvement over a well known redundant threading mechanism, buying back over 50\% of the loss suffered due to redundant execution. SlicK can keep the Architectural Vulnerability Factors of processor structures to typically 0\%-2\%. More importantly, SlicK's slice-based mechanisms provide future opportunities for exploring interesting points in the performance-reliability design space based on market segment needs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "backward slice extraction; microarchitecture; redundant threading; transient faults", } @Article{Heath:2006:MFT, author = "Taliver Heath and Ana Paula Centeno and Pradeep George and Luiz Ramos and Yogesh Jaluria", title = "{Mercury} and {Freon}: temperature emulation and management for server systems", journal = j-SIGPLAN, volume = "41", number = "11", pages = "106--116", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168857.1168872", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Power densities have been increasing rapidly at all levels of server systems. To counter the high temperatures resulting from these densities, systems researchers have recently started work on software-based thermal management. Unfortunately, research in this new area has been hindered by the limitations imposed by simulators and real measurements. In this paper, we introduce Mercury, a software suite that avoids these limitations by accurately emulating temperatures based on simple layout, hardware, and component utilization data. Most importantly, Mercury runs the entire software stack natively, enables repeatable experiments, and allows the study of thermal emergencies without harming hardware reliability. We validate Mercury using real measurements and a widely used commercial simulator. We use Mercury to develop Freon, a system that manages thermal emergencies in a server cluster without unnecessary performance degradation. Mercury will soon become available from \url{http://www.darklab.rutgers.edu}.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "energy conservation; server clusters; temperature modeling; thermal management", } @Article{Kgil:2006:PUS, author = "Taeho Kgil and Shaun D'Souza and Ali Saidi and Nathan Binkert and Ronald Dreslinski and Trevor Mudge and Steven Reinhardt and Krisztian Flautner", title = "{PicoServer}: using {$3$D} stacking technology to enable a compact energy efficient chip multiprocessor", journal = j-SIGPLAN, volume = "41", number = "11", pages = "117--128", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168918.1168873", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In this paper, we show how 3D stacking technology can be used to implement a simple, low-power, high-performance chip multiprocessor suitable for throughput processing. Our proposed architecture, PicoServer, employs 3D technology to bond one die containing several simple slow processing cores to multiple DRAM dies sufficient for a primary memory. The 3D technology also enables wide low-latency buses between processors and memory. These remove the need for an L2 cache allowing its area to be re-allocated to additional simple cores. The additional cores allow the clock frequency to be lowered without impairing throughput. Lower clock frequency in turn reduces power and means that thermal constraints, a concern with 3D stacking, are easily satisfied. The PicoServer architecture specifically targets Tier 1 server applications, which exhibit a high degree of thread level parallelism. An architecture targeted to efficient throughput is ideal for this application domain. We find for a similar logic die area, a 12 CPU system with 3D stacking and no L2 cache outperforms an 8 CPU system with a large on-chip L2 cache by about 14\% while consuming 55\% less power. In addition, we show that a PicoServer performs comparably to a Pentium 4-like class machine while consuming only about 1/10 of the power, even when conservative assumptions are made about the power consumption of the PicoServer.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "3D stacking technology; chip multiprocessor; full-system simulation; low power; tier 1 server; web/file/streaming server", } @Article{Coons:2006:SPS, author = "Katherine E. Coons and Xia Chen and Doug Burger and Kathryn S. McKinley and Sundeep K. Kushwaha", title = "A spatial path scheduling algorithm for {EDGE} architectures", journal = j-SIGPLAN, volume = "41", number = "11", pages = "129--140", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168918.1168875", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Growing on-chip wire delays are motivating architectural features that expose on-chip communication to the compiler. EDGE architectures are one example of communication-exposed microarchitectures in which the compiler forms dataflow graphs that specify how the microarchitecture maps instructions onto a distributed execution substrate. This paper describes a compiler scheduling algorithm called spatial path scheduling that factors in previously fixed locations --- called anchor points --- for each placement. This algorithm extends easily to different spatial topologies. We augment this basic algorithm with three heuristics: (1) local and global ALU and network link contention modeling, (2) global critical path estimates, and (3) dependence chain path reservation. We use simulated annealing to explore possible performance improvements and to motivate the augmented heuristics and their weighting functions. We show that the spatial path scheduling algorithm augmented with these three heuristics achieves a 21\% average performance improvement over the best prior algorithm and comes within an average of 5\% of the annealed performance for our benchmarks.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "EDGE architecture; instruction scheduling; path scheduling; simulated annealing", } @Article{Mercaldi:2006:IST, author = "Martha Mercaldi and Steven Swanson and Andrew Petersen and Andrew Putnam and Andrew Schwerin and Mark Oskin and Susan J. Eggers", title = "Instruction scheduling for a tiled dataflow architecture", journal = j-SIGPLAN, volume = "41", number = "11", pages = "141--150", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168857.1168876", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper explores hierarchical instruction scheduling for a tiled processor. Our results show that at the top level of the hierarchy, a simple profile-driven algorithm effectively minimizes operand latency. After this schedule has been partitioned into large sections, the bottom-level algorithm must more carefully analyze program structure when producing the final schedule. Our analysis reveals that at this bottom level, good scheduling depends upon carefully balancing instruction contention for processing elements and operand latency between producer and consumer instructions. We develop a parameterizable instruction scheduler that more effectively optimizes this trade-off. We use this scheduler to determine the contention-latency sweet spot that generates the best instruction schedule for each application. To avoid this application-specific tuning, we also determine the parameters that produce the best performance across all applications. The result is a contention-latency setting that generates instruction schedules for all applications in our workload that come within 17\% of the best schedule for each.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dataflow; instruction scheduling; tiled architectures", } @Article{Gordon:2006:ECG, author = "Michael I. Gordon and William Thies and Saman Amarasinghe", title = "Exploiting coarse-grained task, data, and pipeline parallelism in stream programs", journal = j-SIGPLAN, volume = "41", number = "11", pages = "151--162", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168857.1168877", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "As multicore architectures enter the mainstream, there is a pressing demand for high-level programming models that can effectively map to them. Stream programming offers an attractive way to expose coarse-grained parallelism, as streaming applications (image, video, DSP, etc.) are naturally represented by independent filters that communicate over explicit data channels. In this paper, we demonstrate an end-to-end stream compiler that attains robust multicore performance in the face of varying application characteristics. As benchmarks exhibit different amounts of task, data, and pipeline parallelism, we exploit all types of parallelism in a unified manner in order to achieve this generality. Our compiler, which maps from the StreamIt language to the 16-core Raw architecture, attains a 11.2x mean speedup over a single-core baseline, and a 1.84x speedup over our previous work.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "coarse-grained dataflow; multicore; Raw; software pipelining; StreamIt; streams", } @Article{Mishra:2006:TES, author = "Mahim Mishra and Timothy J. Callahan and Tiberiu Chelcea and Girish Venkataramani and Seth C. Goldstein and Mihai Budiu", title = "{Tartan}: evaluating spatial computation for whole program execution", journal = j-SIGPLAN, volume = "41", number = "11", pages = "163--174", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168857.1168878", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Spatial Computing (SC) has been shown to be an energy-efficient model for implementing program kernels. In this paper we explore the feasibility of using SC for more than small kernels. To this end, we evaluate the performance and energy efficiency of entire applications on Tartan, a general-purpose architecture which integrates a reconfigurable fabric (RF) with a superscalar core. Our compiler automatically partitions and compiles an application into an instruction stream for the core and a configuration for the RF. We use a detailed simulator to capture both timing and energy numbers for all parts of the system. Our results indicate that a hierarchical RF architecture, designed around a scalable interconnect, is instrumental in harnessing the benefits of spatial computation. The interconnect uses static configuration and routing at the lower levels and a packet-switched, dynamically-routed network at the top level. Tartan is most energy efficient when almost all of the application is mapped to the RF, indicating the need for the RF to support most general-purpose programming constructs. Our initial investigation reveals that such a system can provide, on average, an order of magnitude improvement in energy-delay compared to an aggressive superscalar core on single-threaded workloads.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "asynchronous circuits; dataflow machine; defect tolerance; low power; reconfigurable hardware; spatial computation", } @Article{Eyerman:2006:PCA, author = "Stijn Eyerman and Lieven Eeckhout and Tejas Karkhanis and James E. Smith", title = "A performance counter architecture for computing accurate {CPI} components", journal = j-SIGPLAN, volume = "41", number = "11", pages = "175--184", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168917.1168880", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A common way of representing processor performance is to use Cycles per Instruction (CPI) `stacks' which break performance into a baseline CPI plus a number of individual miss event CPI components. CPI stacks can be very helpful in gaining insight into the behavior of an application on a given microprocessor; consequently, they are widely used by software application developers and computer architects. However, computing CPI stacks on superscalar out-of-order processors is challenging because of various overlaps among execution and miss events (cache misses, TLB misses, and branch mispredictions). This paper shows that meaningful and accurate CPI stacks can be computed for superscalar out-of-order processors. Using interval analysis, a novel method for analyzing out-of-order processor performance, we gain understanding into the performance impact of the various miss events. Based on this understanding, we propose a novel way of architecting hardware performance counters for building accurate CPI stacks. The additional hardware for implementing these counters is limited and comparable to existing hardware performance counter architectures while being significantly more accurate than previous approaches.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "hardware performance counter architecture; superscalar processor performance modeling", } @Article{Lee:2006:AER, author = "Benjamin C. Lee and David M. Brooks", title = "Accurate and efficient regression modeling for microarchitectural performance and power prediction", journal = j-SIGPLAN, volume = "41", number = "11", pages = "185--194", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168857.1168881", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We propose regression modeling as an efficient approach for accurately predicting performance and power for various applications executing on any microprocessor configuration in a large microarchitectural design space. This paper addresses fundamental challenges in microarchitectural simulation cost by reducing the number of required simulations and using simulated results more effectively via statistical modeling and inference. Specifically, we derive and validate regression models for performance and power. Such models enable computationally efficient statistical inference, requiring the simulation of only 1 in 5 million points of a joint microarchitecture-application design space while achieving median error rates as low as 4.1 percent for performance and 4.3 percent for power. Although both models achieve similar accuracy, the sources of accuracy are strikingly different. We present optimizations for a baseline regression model to obtain (1) application-specific models to maximize accuracy in performance prediction and (2) regional power models leveraging only the most relevant samples from the microarchitectural design space to maximize accuracy in power prediction. Assessing sensitivity to the number of samples simulated for model formulation, we find fewer than 4,000 samples from a design space of approximately 22 billion points are sufficient. Collectively, our results suggest significant potential in accurate and efficient statistical inference for microarchitectural design space exploration via regression models.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "inference; microarchitecture; regression; simulation; statistics", } @Article{Ipek:2006:EEA, author = "Engin {\"I}pek and Sally A. McKee and Rich Caruana and Bronis R. de Supinski and Martin Schulz", title = "Efficiently exploring architectural design spaces via predictive modeling", journal = j-SIGPLAN, volume = "41", number = "11", pages = "195--206", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168917.1168882", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Architects use cycle-by-cycle simulation to evaluate design choices and understand tradeoffs and interactions among design parameters. Efficiently exploring exponential-size design spaces with many interacting parameters remains an open problem: the sheer number of experiments renders detailed simulation intractable. We attack this problem via an automated approach that builds accurate, confident predictive design-space models. We simulate sampled points, using the results to teach our models the function describing relationships among design parameters. The models produce highly accurate performance estimates for other points in the space, can be queried to predict performance impacts of architectural changes, and are very fast compared to simulation, enabling efficient discovery of tradeoffs among parameters in different regions. We validate our approach via sensitivity studies on memory hierarchy and CPU design spaces: our models generally predict IPC with only 1-2\% error and reduce required simulation by two orders of magnitude. We also show the efficacy of our technique for exploring chip multiprocessor (CMP) design spaces: when trained on a 1\% sample drawn from a CMP design space with 250K points and up to 55x performance swings among different system configurations, our models predict performance with only 4-5\% error on average. Our approach combines with techniques to reduce time per simulation, achieving net time savings of three-four orders of magnitude.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "artificial neural networks; design space exploration; performance prediction; sensitivity studies", } @Article{Kharbutli:2006:CEP, author = "Mazen Kharbutli and Xiaowei Jiang and Yan Solihin and Guru Venkataramani and Milos Prvulovic", title = "Comprehensively and efficiently protecting the heap", journal = j-SIGPLAN, volume = "41", number = "11", pages = "207--218", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168918.1168884", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The goal of this paper is to propose a scheme that provides comprehensive security protection for the heap. Heap vulnerabilities are increasingly being exploited for attacks on computer programs. In most implementations, the heap management library keeps the heap meta-data (heap structure information) and the application's heap data in an interleaved fashion and does not protect them against each other. Such implementations are inherently unsafe: vulnerabilities in the application can cause the heap library to perform unintended actions to achieve control-flow and non-control attacks. Unfortunately, current heap protection techniques are limited in that they use too many assumptions on how the attacks will be performed, require new hardware support, or require too many changes to the software developers' toolchain. We propose Heap Server, a new solution that does not have such drawbacks. Through existing virtual memory and inter-process protection mechanisms, Heap Server prevents the heap meta-data from being illegally overwritten, and heap data from being meaningfully overwritten. We show that through aggressive optimizations and parallelism, Heap Server protects the heap with nearly-negligible performance overheads even on heap-intensive applications. We also verify the protection against several real-world exploits and attack kernels.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "computer security; heap attacks; heap security; heap server", } @Article{Chilimbi:2006:HIH, author = "Trishul M. Chilimbi and Vinod Ganapathy", title = "{HeapMD}: identifying heap-based bugs using anomaly detection", journal = j-SIGPLAN, volume = "41", number = "11", pages = "219--228", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168919.1168885", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present the design, implementation, and evaluation of HeapMD, a dynamic analysis tool that finds heap-based bugs using anomaly detection. HeapMD is based upon the observation that, in spite of the evolving nature of the heap, several of its properties remain stable. HeapMD uses this observation in a novel way: periodically, during the execution of the program, it computes a suite of metrics which are sensitive to the state of the heap. These metrics track heap behavior, and the stability of the heap reflects quantitatively in the values of these metrics. The 'normal' ranges of stable metrics, obtained by running a program on multiple inputs, are then treated as indicators of correct behaviour, and are used in conjunction with an anomaly detector to find heap-based bugs. Using HeapMD, we were able to find 40 heap-based bugs, 31 of them previously unknown, in 5 large, commercial applications.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "anomaly detection; bugs; debugging; heap; metrics", } @Article{Narayanasamy:2006:RSM, author = "Satish Narayanasamy and Cristiano Pereira and Brad Calder", title = "Recording shared memory dependencies using strata", journal = j-SIGPLAN, volume = "41", number = "11", pages = "229--240", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168857.1168886", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Significant time is spent by companies trying to reproduce and fix bugs. BugNet and FDR are recent architecture proposals that provide architecture support for deterministic replay debugging. They focus on continuously recording information about the program's execution, which can be communicated back to the developer. Using that information, the developer can deterministically replay the program's execution to reproduce and fix the bugs. In this paper, we propose using Strata to efficiently capture the shared memory dependencies. A stratum creates a time layer across all the logs for the running threads, which separates all the memory operations executed before and after the stratum. A strata log allows us to determine all the shared memory dependencies during replay and thereby supports deterministic replay debugging for multi-threaded programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "debugging; dependencies; logging; replay; shared memory; strata", } @Article{Patwardhan:2006:DTS, author = "Jaidev P. Patwardhan and Vijeta Johri and Chris Dwyer and Alvin R. Lebeck", title = "A defect tolerant self-organizing nanoscale {SIMD} architecture", journal = j-SIGPLAN, volume = "41", number = "11", pages = "241--251", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168857.1168888", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The continual decrease in transistor size (through either scaled CMOS or emerging nano-technologies) promises to usher in an era of tera to peta-scale integration. However, this decrease in size is also likely to increase defect densities, contributing to the exponentially increasing cost of top-down lithography. Bottom-up manufacturing techniques, like self assembly, may provide a viable lower-cost alternative to top-down lithography, but may also be prone to higher defects. Therefore, regardless of fabrication methodology, defect tolerant architectures are necessary to exploit the full potential of future increased device densities. This paper explores a defect tolerant SIMD architecture. A key feature of our design is the ability of a large number of limited capability nodes with high defect rates (up to 30\%) to self-organize into a set of SIMD processing elements. Despite node simplicity and high defect rates, we show that by supporting the familiar data parallel programming model the architecture can execute a variety of programs. The architecture efficiently exploits a large number of nodes and higher device densities to keep device switching speeds and power density low. On a medium sized system (~1cm$^2$ area), the performance of the proposed architecture on our data parallel programs matches or exceeds the performance of an aggressively scaled out-of-order processor (128-wide, 8k reorder buffer, perfect memory system). For larger systems (>1cm$^2$), the proposed architecture can match the performance of a chip multiprocessor with 16 aggressively scaled out-of-order cores.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bit-serial; data parallel; defect tolerance; DNA; nanocomputing; self-organizing; SIMD", } @Article{Schuchman:2006:PTA, author = "Ethan Schuchman and T. N. Vijaykumar", title = "A program transformation and architecture support for quantum uncomputation", journal = j-SIGPLAN, volume = "41", number = "11", pages = "252--263", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168857.1168889", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Quantum computing's power comes from new algorithms that exploit quantum mechanical phenomena for computation. Quantum algorithms are different from their classical counterparts in that quantum algorithms rely on algorithmic structures that are simply not present in classical computing. Just as classical program transformations and architectures have been designed for common classical algorithm structures, quantum program transformations and quantum architectures should be designed with quantum algorithms in mind. Because quantum algorithms come with these new algorithmic structures, resultant quantum program transformations and architectures may look very different from their classical counterparts. This paper focuses on uncomputation, a critical and prevalent structure in quantum algorithms, and considers how program transformations, and architecture support should be designed to accommodate uncomputation. In this paper,we show a simple quantum program transformation that exposes independence between uncomputation and later computation. We then propose a multicore architecture tailored to this exposed parallelism and propose a scheduling policy that efficiently maps such parallelism to the multicore architecture. Our policy achieves parallelism between uncomputation and later computation while reducing cumulative communication distance. Our scheduling and architecture allows significant speedup of quantum programs (between 1.8x and 2.8x speedup in Shor's factoring algorithm), while reducing cumulative communication distance 26\%.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "QLA; quantum computing; uncomputation", } @Article{Mysore:2006:IC, author = "Shashidhar Mysore and Banit Agrawal and Navin Srivastava and Sheng-Chih Lin and Kaustav Banerjee and Tim Sherwood", title = "Introspective {$3$D} chips", journal = j-SIGPLAN, volume = "41", number = "11", pages = "264--273", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168917.1168890", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "While the number of transistors on a chip increases exponentially over time, the productivity that can be realized from these systems has not kept pace. To deal with the complexity of modern systems, software developers are increasingly dependent on specialized development tools such as security profilers, memory leak identifiers, data flight recorders, and dynamic type analysis. Many of these tools require full-system data which covers multiple interacting threads, processes, and processors. Reducing the performance penalty and complexity of these software tools is critical to those developing next generation applications, and many researchers have proposed adding specialized hardware to assist in profiling and introspection. Unfortunately, while this additional hardware would be incredibly beneficial to developers, the cost of this hardware must be paid on every single die that is manufactured. In this paper, we argue that a new way to attack this problem is with the addition of specialized analysis hardware built on separate active layers stacked vertically on the processor die using 3D IC technology. This provides a modular 'snap-on' functionality that could be included with developer systems, and omitted from consumer systems to keep the cost impact to a minimum. In this paper we describe the advantage of using inter-die vias for introspection and we quantify the impact they can have in terms of the area, power, temperature, and routability of the resulting systems. We show that hardware stubs could be inserted into commodity processors at design time that would allow analysis layers to be bonded to development chips, and that these stubs would increase area and power by no more than 0.021mm$^2$ and 0.9\% respectively.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "3D Architectures; hardware support for profiling; introspection", } @Article{Cantin:2006:SP, author = "Jason F. Cantin and Mikko H. Lipasti and James E. Smith", title = "Stealth prefetching", journal = j-SIGPLAN, volume = "41", number = "11", pages = "274--282", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168857.1168892", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Prefetching in shared-memory multiprocessor systems is an increasingly difficult problem. As system designs grow to incorporate larger numbers of faster processors, memory latency and interconnect traffic increase. While aggressive prefetching techniques can mitigate the increasing memory latency, they can harm performance by wasting precious interconnect bandwidth and prematurely accessing shared data, causing state downgrades at remote nodes that force later upgrades. This paper investigates Stealth Prefetching, a new technique that utilizes information from Coarse-Grain Coherence Tracking (CGCT) for prefetching data aggressively, stealthily, and efficiently in a broadcast-based shared-memory multiprocessor system. Stealth Prefetching utilizes CGCT to identify regions of memory that are not shared by other processors, aggressively fetches these lines from DRAM in open-page mode, and moves them close to the processor in anticipation of future references. Our analysis with commercial, scientific, and multiprogrammed workloads show that Stealth Prefetching provides an average speedup of 20\% over an aggressive baseline system with conventional prefetching.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "coherence; multiprocessors; prefetching", } @Article{Chakraborty:2006:CSE, author = "Koushik Chakraborty and Philip M. Wells and Gurindar S. Sohi", title = "Computation spreading: employing hardware migration to specialize {CMP} cores on-the-fly", journal = j-SIGPLAN, volume = "41", number = "11", pages = "283--292", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168919.1168893", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In canonical parallel processing, the operating system (OS) assigns a processing core to a single thread from a multithreaded server application. Since different threads from the same application often carry out similar computation, albeit at different times, we observe extensive code reuse among different processors, causing redundancy (e.g., in our server workloads, 45-65\% of all instruction blocks are accessed by all processors). Moreover, largely independent fragments of computation compete for the same private resources causing destructive interference. Together, this redundancy and interference lead to poor utilization of private microarchitecture resources such as caches and branch predictors. We present Computation Spreading (CSP), which employs hardware migration to distribute a thread's dissimilar fragments of computation across the multiple processing cores of a chip multiprocessor (CMP), while grouping similar computation fragments from different threads together. This paper focuses on a specific example of CSP for OS intensive server applications: separating application level (user) computation from the OS calls it makes. When performing CSP, each core becomes temporally specialized to execute certain computation fragments, and the same core is repeatedly used for such fragments. We examine two specific thread assignment policies for CSP, and show that these policies, across four server workloads, are able to reduce instruction misses in private L2 caches by 27-58\%, private L2 load misses by 0-19\%, and branch mispredictions by 9-25\%.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "cache locality; dynamic specialization", } @Article{Miller:2006:SBI, author = "Jason E. Miller and Anant Agarwal", title = "Software-based instruction caching for embedded processors", journal = j-SIGPLAN, volume = "41", number = "11", pages = "293--302", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168857.1168894", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "While hardware instruction caches are present in virtually all general-purpose and high-performance microprocessors today, many embedded processors use SRAM or scratchpad memories instead. These are simple array memory structures that are directly addressed and explicitly managed by software. Compared to hardware caches of the same data capacity, they are smaller, have shorter access times and consume less energy per access. Access times are also easier to predict with simple memories since there is no possibility of a 'miss.' On the other hand, they are more difficult for the programmer to use since they are not automatically managed. In this paper, we present a software system that allows all or part of an SRAM or scratchpad memory to be automatically managed as a cache. This system provides the programming convenience of a cache for processors that lack dedicated caching hardware. It has been implemented for an actual processor and runs on real hardware. Our results show that a software-based instruction cache can be built that provides performance within 10\% of a traditional hardware cache on many benchmarks while using a cheaper, simpler, SRAM memory. On these same benchmarks, energy consumption is up to 3\% lower than it would be using a hardware cache.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "chaining; instruction cache; software caching", } @Article{Li:2006:MEM, author = "Xin Li and Marian Boldt and Reinhard von Hanxleden", title = "Mapping {Esterel} onto a multi-threaded embedded processor", journal = j-SIGPLAN, volume = "41", number = "11", pages = "303--314", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168857.1168896", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The synchronous language Esterel is well-suited for programming control-dominated reactive systems at the system level. It provides non-traditional control structures, in particular concurrency and various forms of preemption, which allow to concisely express reactive behavior. As these control structures cannot be mapped easily onto traditional, sequential processors, an alternative approach that has emerged recently makes use of special-purpose reactive processors. However, the designs proposed so far have limitations regarding completeness of the language support, and did not really take advantage of compile-time knowledge to optimize resource usage. This paper presents a reactive processor, the Kiel Esterel Processor 3a (KEP3a), and its compiler. The KEP3a improves on earlier designs in several areas; most notable are the support for exception handling and the provision of context-dependent preemption handling instructions. The KEP3a compiler presented here is to our knowledge the first for multi-threaded reactive processors. The translation of Esterel's preemption constructs onto KEP3a assembler is straightforward; however, a challenge is the correct and efficient representation of Esterel's concurrency. The compiler generates code that respects data and control dependencies using the KEP3a priority-based scheduling mechanism. We present a priority assignment approach that makes use of a novel concurrent control flow graph and has a complexity that in practice tends to be linear in the size of the program. Unlike earlier Esterel compilation schemes, this approach avoids unnecessary context switches by considering each thread's actual execution state at run time. Furthermore, it avoids code replication present in other approaches.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency; Esterel; low-power processing; multi-threading; reactive systems", } @Article{Binkert:2006:INI, author = "Nathan L. Binkert and Ali G. Saidi and Steven K. Reinhardt", title = "Integrated network interfaces for high-bandwidth {TCP\slash IP}", journal = j-SIGPLAN, volume = "41", number = "11", pages = "315--324", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168917.1168897", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper proposes new network interface controller (NIC) designs that take advantage of integration with the host CPU to provide increased flexibility for operating system kernel-based performance optimization. We believe that this approach is more likely to meet the needs of current and future high-bandwidth TCP/IP networking on end hosts than the current trend of putting more complexity in the NIC, while avoiding the need to modify applications and protocols. This paper presents two such NICs. The first, the simple integrated NIC (SINIC), is a minimally complex design that moves the responsibility for managing the network FIFOs from the NIC to the kernel. Despite this closer interaction between the kernel and the NIC, SINIC provides performance equivalent to a conventional DMA-based NIC without increasing CPU overhead. The second design, V-SINIC, adds virtual per-packet registers to SINIC, enabling parallel packet processing while maintaining a FIFO model. V-SINIC allows the kernel to decouple examining a packet's header from copying its payload to memory. We exploit this capability to implement a true zero-copy receive optimization in the Linux 2.6 kernel, providing bandwidth improvements of over 50\% on unmodified sockets-based receive-intensive benchmarks.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "interfaces; network; TCP/IP performance; zero-copy", } @Article{Tarditi:2006:AUD, author = "David Tarditi and Sidd Puri and Jose Oglesby", title = "Accelerator: using data parallelism to program {GPUs} for general-purpose uses", journal = j-SIGPLAN, volume = "41", number = "11", pages = "325--335", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168919.1168898", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "GPUs are difficult to program for general-purpose uses. Programmers can either learn graphics APIs and convert their applications to use graphics pipeline operations or they can use stream programming abstractions of GPUs. We describe Accelerator, a system that uses data parallelism to program GPUs for general-purpose uses instead. Programmers use a conventional imperative programming language and a library that provides only high-level data-parallel operations. No aspects of GPUs are exposed to programmers. The library implementation compiles the data-parallel operations on the fly to optimized GPU pixel shader code and API calls. We describe the compilation techniques used to do this. We evaluate the effectiveness of using data parallelism to program GPUs by providing results for a set of compute-intensive benchmarks. We compare the performance of Accelerator versions of the benchmarks against hand-written pixel shaders. The speeds of the Accelerator versions are typically within 50\% of the speeds of hand-written pixel shader code. Some benchmarks significantly outperform C versions on a CPU: they are up to 18 times faster than C code running on a CPU.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "data parallelism; graphics processing units; just-in time compilation", } @Article{Damron:2006:HTM, author = "Peter Damron and Alexandra Fedorova and Yossi Lev and Victor Luchangco and Mark Moir and Daniel Nussbaum", title = "Hybrid transactional memory", journal = j-SIGPLAN, volume = "41", number = "11", pages = "336--346", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168918.1168900", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Transactional memory (TM) promises to substantially reduce the difficulty of writing correct, efficient, and scalable concurrent programs. But 'bounded' and 'best-effort' hardware TM proposals impose unreasonable constraints on programmers, while more flexible software TM implementations are considered too slow. Proposals for supporting 'unbounded' transactions in hardware entail significantly higher complexity and risk than best-effort designs. We introduce Hybrid Transactional Memory (HyTM), an approach to implementing TMin software so that it can use best effort hardware TM (HTM) to boost performance but does not depend on HTM. Thus programmers can develop and test transactional programs in existing systems today, and can enjoy the performance benefits of HTM support when it becomes available. We describe our prototype HyTM system, comprising a compiler and a library. The compiler allows a transaction to be attempted using best-effort HTM, and retried using the software library if it fails. We have used our prototype to 'transactify' part of the Berkeley DB system, as well as several benchmarks. By disabling the optional use of HTM, we can run all of these tests on existing systems. Furthermore, by using a simulated multiprocessor with HTM support, we demonstrate the viability of the HyTM approach: it can provide performance and scalability approaching that of an unbounded HTM implementation, without the need to support all transactions with complicated HTM support.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "transactional memory", } @Article{Chuang:2006:UPB, author = "Weihaw Chuang and Satish Narayanasamy and Ganesh Venkatesh and Jack Sampson and Michael {Van Biesbrouck} and Gilles Pokam and Brad Calder and Osvaldo Colavin", title = "Unbounded page-based transactional memory", journal = j-SIGPLAN, volume = "41", number = "11", pages = "347--358", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168918.1168901", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Exploiting thread level parallelism is paramount in the multicore era. Transactions enable programmers to expose such parallelism by greatly simplifying the multi-threaded programming model. Virtualized transactions (unbounded in space and time) are desirable, as they can increase the scope of transactions' use, and thereby further simplify a programmer's job. However, hardware support is essential to support efficient execution of unbounded transactions. In this paper, we introduce Page-based Transactional Memory to support unbounded transactions. We combine transaction bookkeeping with the virtual memory system to support fast transaction conflict detection, commit, abort, and to maintain transactions' speculative data.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency; parallel programming; transactional memory; transactions; virtual memory", } @Article{Moravan:2006:SNT, author = "Michelle J. Moravan and Jayaram Bobba and Kevin E. Moore and Luke Yen and Mark D. Hill and Ben Liblit and Michael M. Swift and David A. Wood", title = "Supporting nested transactional memory in {logTM}", journal = j-SIGPLAN, volume = "41", number = "11", pages = "359--370", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168918.1168902", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Nested transactional memory (TM) facilitates software composition by letting one module invoke another without either knowing whether the other uses transactions. Closed nested transactions extend isolation of an inner transaction until the toplevel transaction commits. Implementations may flatten nested transactions into the top-level one, resulting in a complete abort on conflict, or allow partial abort of inner transactions. Open nested transactions allow a committing inner transaction to immediately release isolation, which increases parallelism and expressiveness at the cost of both software and hardware complexity. This paper extends the recently-proposed flat Log-based Transactional Memory (LogTM) with nested transactions. Flat LogTM saves pre-transaction values in a log, detects conflicts with read (R) and write (W) bits per cache block, and, on abort, invokes a software handler to unroll the log. Nested LogTM supports nesting by segmenting the log into a stack of activation records and modestly replicating R/W bits. To facilitate composition with nontransactional code, such as language runtime and operating system services, we propose escape actions that allow trusted code to run outside the confines of the transactional memory system.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "logTM; nesting; transactional memory", } @Article{Chung:2006:TTM, author = "JaeWoong Chung and Chi Cao Minh and Austen McDonald and Travis Skare and Hassan Chafi and Brian D. Carlstrom and Christos Kozyrakis and Kunle Olukotun", title = "Tradeoffs in transactional memory virtualization", journal = j-SIGPLAN, volume = "41", number = "11", pages = "371--381", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168918.1168903", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "For transactional memory (TM) to achieve widespread acceptance, transactions should not be limited to the physical resources of any specific hardware implementation. TM systems should guarantee correct execution even when transactions exceed scheduling quanta, overflow the capacity of hardware caches and physical memory, or include more independent nesting levels than what is supported in hardware. Existing proposals for TM virtualization are either incomplete or rely on complex hardware implementations, which are an overkill if virtualization is invoked infrequently in the common case. We present eXtended Transactional Memory (XTM), the first TM virtualization system that virtualizes all aspects of transactional execution (time, space, and nesting depth). XTM is implemented in software using virtual memory support. It operates at page granularity, using private copies of overflowed pages to buffer memory updates until the transaction commits and snapshots of pages to detect interference between transactions. We also describe two enhancements to XTM that use limited hardware support to address key performance bottlenecks. We compare XTM to hardware-based virtualization using both real applications and synthetic microbenchmarks. We show that despite being software-based, XTM and its enhancements are competitive with hardware-based alternatives. Overall, we demonstrate that XTM provides a complete, flexible, and low-cost mechanism for practical TM virtualization.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "chip multi-processor; OS support; transactional memory; virtualization", } @Article{Kawahito:2006:NIR, author = "Motohiro Kawahito and Hideaki Komatsu and Takao Moriyama and Hiroshi Inoue and Toshio Nakatani", title = "A new idiom recognition framework for exploiting hardware-assist instructions", journal = j-SIGPLAN, volume = "41", number = "11", pages = "382--393", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168917.1168905", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Modern processors support hardware-assist instructions (such as TRT and TROT instructions on IBM zSeries) to accelerate certain functions such as delimiter search and character conversion. Such special instructions have often been used in high performance libraries, but they have not been exploited well in optimizing compilers except for some limited cases. We propose a new idiom recognition technique derived from a topological embedding algorithm [4] to detect idiom patterns in the input program more aggressively than in previous approaches. Our approach can detect a pattern even if the code segment does not exactly match the idiom. For example, we can detect a code segment that includes additional code within the idiom pattern. We implemented our new idiom recognition approach based on the Java Just-In-Time (JIT) compiler that is part of the J9 Java Virtual Machine, and we supported several important idioms for special hardware-assist instructions on the IBM zSeries and on some models of the IBM pSeries. To demonstrate the effectiveness of our technique, we performed two experiments. The first one is to see how many more patterns we can detect compared to the previous approach. The second one is to see how much performance improvement we can achieve over the previous approach. For the first experiment, we used the Java Compatibility Kit (JCK) API tests. For the second one we used IBM XML parser, SPECjvm98, and SPCjbb2000. In summary, relative to a baseline implementation using exact pattern matching, our algorithm converted 75\% more loops in JCK tests. We also observed significant performance improvement of the XML parser by 64\%, of SPECjvm98 by 1\%, and of SPECjbb2000 by 2\% on average on a z990. Finally, we observed the JIT compilation time increases by only 0.32\% to 0.44\%.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "hardware-assist instructions; idiom recognition; Java; JIT; topological embedding; VMX", } @Article{Bansal:2006:AGP, author = "Sorav Bansal and Alex Aiken", title = "Automatic generation of peephole superoptimizers", journal = j-SIGPLAN, volume = "41", number = "11", pages = "394--403", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168918.1168906", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Peephole optimizers are typically constructed using human-written pattern matching rules, an approach that requires expertise and time, as well as being less than systematic at exploiting all opportunities for optimization. We explore fully automatic construction of peephole optimizers using brute force superoptimization. While the optimizations discovered by our automatic system may be less general than human-written counterparts, our approach has the potential to automatically learn a database of thousands to millions of optimizations, in contrast to the hundreds found in current peephole optimizers. We show experimentally that our optimizer is able to exploit performance opportunities not found by existing compilers; in particular, we show speedups from 1.7 to a factor of 10 on some compute intensive kernels over a conventional optimizing compiler.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "code selection; peephole optimization; superoptimization", } @Article{Solar-Lezama:2006:CSF, author = "Armando Solar-Lezama and Liviu Tancau and Rastislav Bodik and Sanjit Seshia and Vijay Saraswat", title = "Combinatorial sketching for finite programs", journal = j-SIGPLAN, volume = "41", number = "11", pages = "404--415", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168917.1168907", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Sketching is a software synthesis approach where the programmer develops a partial implementation --- a sketch --- and a separate specification of the desired functionality. The synthesizer then completes the sketch to behave like the specification. The correctness of the synthesized implementation is guaranteed by the compiler, which allows, among other benefits, rapid development of highly tuned implementations without the fear of introducing bugs. We develop SKETCH, a language for finite programs with linguistic support for sketching. Finite programs include many high-performance kernels, including cryptocodes. In contrast to prior synthesizers, which had to be equipped with domain-specific rules, SKETCH completes sketches by means of a combinatorial search based on generalized boolean satisfiability. Consequently, our combinatorial synthesizer is complete for the class of finite programs: it is guaranteed to complete any sketch in theory, and in practice has scaled to realistic programming problems. Freed from domain rules, we can now write sketches as simple-to-understand partial programs, which are regular programs in which difficult code fragments are replaced with holes to be filled by the synthesizer. Holes may stand for index expressions, lookup tables, or bitmasks, but the programmer can easily define new kinds of holes using a single versatile synthesis operator. We have used SKETCH to synthesize an efficient implementation of the AES cipher standard. The synthesizer produces the most complex part of the implementation and runs in about an hour.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "SAT; sketching", } @Article{DaSilva:2006:PPA, author = "Jeff {Da Silva} and J. Gregory Steffan", title = "A probabilistic pointer analysis for speculative optimizations", journal = j-SIGPLAN, volume = "41", number = "11", pages = "416--425", month = nov, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1168918.1168908", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:49:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Pointer analysis is a critical compiler analysis used to disambiguate the indirect memory references that result from the use of pointers and pointer-based data structures. A conventional pointer analysis deduces for every pair of pointers, at any program point, whether a points-to relation between them (i) definitely exists, (ii) definitely does not exist, or (iii) maybe exists. Many compiler optimizations rely on accurate pointer analysis, and to ensure correctness cannot optimize in the maybe case. In contrast, recently-proposed speculative optimizations can aggressively exploit the maybe case, especially if the likelihood that two pointers alias can be quantified. This paper proposes a Probabilistic Pointer Analysis (PPA) algorithm that statically predicts the probability of each points-to relation at every program point. Building on simple control-flow edge profiling, our analysis is both one-level context and flow sensitive-yet can still scale to large programs including the SPEC 2000 integer benchmark suite. The key to our approach is to compute points-to probabilities through the use of linear transfer functions that are efficiently encoded as sparse matrices. We demonstrate that our analysis can provide accurate probabilities, even without edge-profile information. We also find that-even without considering probability information-our analysis provides an accurate approach to performing pointer analysis.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dependence analysis; pointer analysis; speculative optimization", } @Article{Frenger:2006:FSS, author = "Paul Frenger", title = "{Forth} \& small systems report: potential unrealized: the {MicroMED} advisor", journal = j-SIGPLAN, volume = "41", number = "12", pages = "10--16", month = dec, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1229493.1229495", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 13:22:03 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This column begins a multipart series describing various projects in which I was involved, which for one reason or another, did not live up to their full potential. They are reviewed here in the hope that these exemplars may help others to avoid the traps and pitfalls which have ensnared the author during his career. Most are 'small systems', or subsystems of other projects; many involve the Forth programming language.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wu:2006:FSP, author = "Fangjun Wu", title = "Formal specification of program slicing", journal = j-SIGPLAN, volume = "41", number = "12", pages = "18--27", month = dec, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1229493.1229497", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 13:22:03 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Program slicing is a well-known technique that has been used in a variety of software engineering areas, such as comprehension, understanding, maintenance, debugging, testing, reuse, metrics, etc. This paper discusses how the formal specification language Z schema calculus may be used to specify program slicing. General aspects of program slicing are considered, i.e. dependence graphs and program slicing algorithms. This formalization could help in the correct understanding of program slicing and also the correct application of a desired slicing regime in a rigorous way.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "program dependence graph; program slicing; system dependence graph; Z language", } @Article{Mannarswamy:2006:TTR, author = "Sandya Mannarswamy and Shruti Doval and Hariharan Sandanagobalane and Mahesha Nanjundaiah", title = "{TRICK}: tracking and reusing compiler's knowledge", journal = j-SIGPLAN, volume = "41", number = "12", pages = "28--37", month = dec, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1229493.1229498", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 13:22:03 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Compilers, during compilation, analyze the application being compiled and build up extensive knowledge about the program. This knowledge is essential for the compiler to produce correct object code. Though some part of this knowledge is retained in the generated object files as symbol table information to be used by the linker and/or debugger, most of it is discarded after the compilation is done. In this paper, we introduce the TRICK framework, which is an attempt to retain and reuse this internal information generated by the compiler as part of its program analysis, in building new tools or enhancing existing tools as well for reuse by the compiler for continuous program optimization. We present examples of how development and maintenance of various program analysis tools can be simplified by using the TRICK framework describing tools developed by our group as well as how TRICK framework can be employed in continuous program optimization by the compiler. TRICK framework can be part of both static and dynamic compilation system, though our current usage model is in the context of a static compilation system.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compiler; optimization; program analysis; reuse; tools", } @Article{Wang:2006:DIG, author = "B. Wang and C. Pronk", title = "Design and implementation of a {GUI} for the {TLC} model checker", journal = j-SIGPLAN, volume = "41", number = "12", pages = "38--43", month = dec, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1229493.1229499", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 13:22:03 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "For some time now, the TLC model checker [1] has been accepted as a very useful tool for checking specifications written in the language TLA+ [1]. The model checker helps the system designer to find errors in a specification before starting on an implementation. One facility that TLA+/TLC lacks however, is a GUI providing the user with more operational comfort. This article presents our design and implementation of a GUI for the TLA+/TLC-system, called the GTLA system. GTLA provides the user with three main facilities: a system editor, a simulator and a verifier (the TLC model checker) operable through a GUI. This article also discusses the tools which have been used for constructing the GTLA system.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "GraphViz; GUI; model checking; SML; temporal logic; TLA+; TLC", } @Article{Dubey:2006:GCP, author = "Alpana Dubey", title = "Goodness criteria for programming language grammar rules", journal = j-SIGPLAN, volume = "41", number = "12", pages = "44--53", month = dec, year = "2006", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1229493.1229500", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 13:22:03 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The grammar of a programming language is important as it is used in developing software engineering tools. Sometimes grammars of programming languages are not readily available or they are incomplete; hence they are inferred from a set of valid programs. An exact grammar can not be learned from a set of positive samples (set of valid programs) alone as there exists many grammars which accept the given input programs; we call these grammars complete grammars. Therefore, given an incomplete grammar, there exists many sets of grammar rules which can make it complete. Due to many possible sets of grammar rules, the grammar inference process faces the problem of selecting a good set of grammar rules. We address the problem of grammar rule selection when they are inferred using an automatic are traditionally used for assessing the complexity of grammar based software. The experiments show that the grammar based metrics are not sufficient for this purpose as there exist several rules which have the same metric value. Hence we propose two rule selection criteria. Experiments are done to assess different criteria. Experiments show that proposed criteria, when coupled with grammar metrics, select reasonably good grammar rules.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "grammar metrics; programming language dialects; programming language grammar", } @Article{Tang:2007:PRI, author = "Audrey Tang", title = "{Perl 6}: reconciling the irreconcilable", journal = j-SIGPLAN, volume = "42", number = "1", pages = "1--1", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190215.1190218", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Perl is a general-purpose language, known for its vast number of freely available libraries. The Perl 6 project was started to improve the language's support for multi-paradigmatic programming, while retaining compatibility with the existing code base. This talk discusses how Perl 6 attempts to reconcile various competing paradigms in the field of programming language design, such as static vs. dynamic typechecking, nominal vs. structural subtyping, prototype vs. class-based objects, and lazy vs. eager evaluation. Moreover, this talk also covers the design and development of Pugs, a self-hosting Perl 6 implementation bootstrapped from Haskell, targeting multiple runtime environments, including Perl 5, JavaScript and Parrot.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Matthews:2007:OSM, author = "Jacob Matthews and Robert Bruce Findler", title = "Operational semantics for multi-language programs", journal = j-SIGPLAN, volume = "42", number = "1", pages = "3--10", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190215.1190220", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Inter-language interoperability is big business, as the success of Microsoft's .NET and COM and Sun's JVM show. Programming language designers are designing programming languages that reflect that fact --- SML\#, Mondrian, and Scala, to name just a few examples, all treat interoperability with other languages as a central design feature. Still, current multi-language research tends not to focus on the semantics of interoperation features, but only on how to implement them efficiently. In this paper, we take first steps toward higher-level models of interoperating systems. Our technique abstracts away the low-level details of interoperability like garbage collection and representation coherence, and lets us focus on semantic properties like type-safety and observable equivalence. Beyond giving simple expressive models that are natural compositions of single-language models, our studies have uncovered several interesting facts about interoperability. For example, higher-order contracts naturally emerge as the glue to ensure that interoperating languages respect each other's type systems. While we present our results in an abstract setting, they shed light on real multi-language systems and tools such as the JNI, SWIG, and Haskell's stable pointers.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "interoperability; multi-language systems; operational semantics", } @Article{Avgustinov:2007:SSP, author = "Pavel Avgustinov and Elnar Hajiyev and Neil Ongkingco and Oege de Moor and Damien Sereni and Julian Tibble and Mathieu Verbaere", title = "Semantics of static pointcuts in {aspectJ}", journal = j-SIGPLAN, volume = "42", number = "1", pages = "11--23", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190215.1190221", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In aspect-oriented programming, one can intercept events by writing patterns called pointcuts. The pointcut language of the most popular aspect-oriented programming language, AspectJ, allows the expression of highly complex properties of the static program structure. We present the first rigorous semantics of the AspectJ pointcut language, by translating static patterns into safe (i.e. range-restricted and stratified) Datalog queries. Safe Datalog is a logic language like Prolog, but it does not have data structures; consequently it has a straightforward least fixpoint semantics and all queries terminate. The translation from pointcuts to safe Datalog consists of a set of simple conditional rewrite rules, implemented using the Stratego system. The resulting queries are themselves executable with the CodeQuest system. We present experiments indicating that direct execution of our semantics is not prohibitively expensive.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "aspect-oriented programming; datalog; logic programming; pointcuts; term rewriting", } @Article{Chen:2007:TIL, author = "Juan Chen", title = "A typed intermediate language for compiling multiple inheritance", journal = j-SIGPLAN, volume = "42", number = "1", pages = "25--30", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190215.1190222", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Type-preserving compilation can improve software reliability by generating code that can be verified independently of the compiler. Practical type preserving compilation does not exist for languages with multiple inheritance. This paper presents E$_{mi}$, the first typed intermediate language to support practical compilation of a programming language with fully general multiple inheritance. The paper demonstrates the practicality of Emi by showing that E$_{mi}$ can be used to faithfully model standard implementation strategies of multiple inheritance for C++, the most widely-used programming language with general multiple inheritance.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "class and object encoding; multiple inheritance; typed intermediate language", } @Article{Jump:2007:CDM, author = "Maria Jump and Kathryn S. McKinley", title = "{Cork}: dynamic memory leak detection for garbage-collected languages", journal = j-SIGPLAN, volume = "42", number = "1", pages = "31--38", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190215.1190224", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A memory leak in a garbage-collected program occurs when the program inadvertently maintains references to objects that it no longer needs. Memory leaks cause systematic heap growth, degrading performance and resulting in program crashes after perhaps days or weeks of execution. Prior approaches for detecting memory leaks rely on heap differencing or detailed object statistics which store state proportional to the number of objects in the heap. These overheads preclude their use on the same processor for deployed long-running applications. This paper introduces a dynamic heap-summarization technique based on type that accurately identifies leaks, is space efficient (adding less than 1\% to the heap), and is time efficient (adding 2.3\% on average to total execution time). We implement this approach in Cork which utilizes dynamic type information and garbage collection to summarize the live objects in a type points-from graph (TPFG) whose nodes (types) and edges (references between types) are annotated with volume. Cork compares TPFG's across multiple collections, identifies growing data structures, and computes a type slice for the user. Cork is accurate: it identifies systematic heap growth with no false positives in 4 of 15 benchmarks we tested. Cork's slice report enabled us (non-experts) to quickly eliminate growing data structures in SPECjbb2000 and Elipse, something their developers had not previously done. Cork is accurate, scalable, and efficient enough to consider using online.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dynamic; garbage collection; memory leak detection; memory leaks; runtime analysis", } @Article{Polishchuk:2007:DHT, author = "Marina Polishchuk and Ben Liblit and Chlo{\"e} W. Schulze", title = "Dynamic heap type inference for program understanding and debugging", journal = j-SIGPLAN, volume = "42", number = "1", pages = "39--46", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190216.1190225", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "C programs can be difficult to debug due to lax type enforcement and low-level access to memory. We present a dynamic analysis for C that checks heap snapshots for consistency with program types. Our approach builds on ideas from physical subtyping and conservative garbage collection. We infer a program-defined type for each allocated storage location or identify 'untypable' blocks that reveal heap corruption or type safety violations. The analysis exploits symbolic debug information if present, but requires no annotation or recompilation beyond a list of defined program types and allocated heap blocks. We have integrated our analysis into the GNU Debugger (gdb), and describe our initial experience using this tool with several small to medium-sized programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "conservative garbage collection; constraints; debugging tools; dynamic type inference; heap visualization; physical subtyping", } @Article{Godefroid:2007:CDT, author = "Patrice Godefroid", title = "Compositional dynamic test generation", journal = j-SIGPLAN, volume = "42", number = "1", pages = "47--54", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190216.1190226", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Dynamic test generation is a form of dynamic program analysis that attempts to compute test inputs to drive a program along a specific program path. Directed Automated Random Testing, or DART for short, blends dynamic test generation with model checking techniques with the goal of systematically executing all feasible program paths of a program while detecting various types of errors using run-time checking tools (like Purify, for instance). Unfortunately, systematically executing all feasible program paths does not scale to large, realistic programs. This paper addresses this major limitation and proposes to perform dynamic test generation compositionally, by adapting known techniques for interprocedural static analysis. Specifically, we introduce a new algorithm, dubbed SMART for Systematic Modular Automated Random Testing, that extends DART by testing functions in isolation, encoding test results as function summaries expressed using input preconditions and output postconditions, and then re-using those summaries when testing higher-level functions. We show that, for a fixed reasoning capability, our compositional approach to dynamic test generation (SMART) is both sound and complete compared to monolithic dynamic test generation (DART). In other words, SMART can perform dynamic test generation compositionally without any reduction in program path coverage. We also show that, given a bound on the maximum number of feasible paths in individual program functions, the number of program executions explored by SMART is linear in that bound, while the number of program executions explored by DART can be exponential in that bound. We present examples of C programs and preliminary experimental results that illustrate and validate empirically these properties.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "automatic test generation; compositional program analysis; program verification; scalability; software testing", } @Article{Shen:2007:LAU, author = "Xipeng Shen and Jonathan Shaw and Brian Meeker and Chen Ding", title = "Locality approximation using time", journal = j-SIGPLAN, volume = "42", number = "1", pages = "55--61", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190216.1190227", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Reuse distance (i.e. LRU stack distance) precisely characterizes program locality and has been a basic tool for memory system research since the 1970s. However, the high cost of measuring has restricted its practical uses in performance debugging, locality analysis and optimizations of long-running applications. In this work, we improve the efficiency by exploring the connection between time and locality. We propose a statistical model that converts cheaply obtained time distance to the more costly reuse distance. Compared to the state-of-the-art technique, this approach reduces measuring time by a factor of 17, and approximates cache line reuses with over 99\% accuracy and the cache miss rate with less than 0.4\% average error for 12 SPEC 2000 integer and floating-point benchmarks. By exploiting the strong correlations between time and locality, this work makes precise locality as easy to obtain as data access frequency, and opens new opportunities for program optimizations.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "performance prediction; program locality; reference affinity; reuse distance; time distance; trace generator", } @Article{Dreyer:2007:MTC, author = "Derek Dreyer and Robert Harper and Manuel M. T. Chakravarty and Gabriele Keller", title = "Modular type classes", journal = j-SIGPLAN, volume = "42", number = "1", pages = "63--70", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190216.1190229", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "ML modules and Haskell type classes have proven to be highly effective tools for program structuring. Modules emphasize explicit configuration of program components and the use of data abstraction. Type classes emphasize implicit program construction and ad hoc polymorphism. In this paper, we show how the implicitly-typed style of type class programming may be supported within the framework of an explicitly-typed module language by viewing type classes as a particular mode of use of modules. This view offers a harmonious integration of modules and type classes, where type class features, such as class hierarchies and associated types, arise naturally as uses of existing module-language constructs, such as module hierarchies and type components. In addition, programmers have explicit control over which type class instances are available for use by type inference in a given scope. We formalize our approach as a Harper-Stone-style elaboration relation, and provide a sound type inference algorithm as a guide to implementation.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "modules; type classes; type inference; type systems", } @Article{Siskind:2007:FCN, author = "Jeffrey Mark Siskind and Barak A. Pearlmutter", title = "First-class nonstandard interpretations by opening closures", journal = j-SIGPLAN, volume = "42", number = "1", pages = "71--76", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190216.1190230", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We motivate and discuss a novel functional programming construct that allows convenient modular run-time nonstandard interpretation via reflection on closure environments. This map-closure construct encompasses both the ability to examine the contents of a closure environment and to construct a new closure with a modified environment. From the user's perspective, map-closure is a powerful and useful construct that supports such tasks as tracing, security logging, sandboxing, error checking, profiling, code instrumentation and metering, run-time code patching, and resource monitoring. From the implementor's perspective, map-closure is analogous to call/cc. Just as call/cc is a non-referentially-transparent mechanism that reifies the continuations that are only implicit in programs written in direct style, map-closure is a non-referentially-transparent mechanism that reifies the closure environments that are only implicit in higher-order programs. Just as CPS conversion is a non-local but purely syntactic transformation that can eliminate references to call/cc, closure conversion is a non-local but purely syntactic transformation that can eliminate references to map-closure. We show how the combination of map-closure and call/cc can be used to implement set! as a procedure definition and a local macro transformation.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "lambda lifting; referential transparency", } @Article{Mandelbaum:2007:PMF, author = "Yitzhak Mandelbaum and Kathleen Fisher and David Walker and Mary Fernandez and Artem Gleyzer", title = "{PADS\slash ML}: a functional data description language", journal = j-SIGPLAN, volume = "42", number = "1", pages = "77--83", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190215.1190231", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Massive amounts of useful data are stored and processed in ad hoc formats for which common tools like parsers, printers, query engines and format converters are not readily available. In this paper, we explain the design and implementation of PADS/ML, a new language and system that facilitates the generation of data processing tools for ad hoc formats. The PADS/ML design includes features such as dependent, polymorphic and recursive datatypes, which allow programmers to describe the syntax and semantics of ad hoc data in a concise, easy-to-read notation. The PADS/ML implementation compiles these descriptions into ml structures and functors that include types for parsed data, functions for parsing and printing, and auxiliary support for user-specified, format-dependent and format-independent tool generation.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "data description languages; dependent types; domain-specific languages; functional programming; ML; modules; parsing; printing", } @Article{Pitts:2007:GUN, author = "Andrew M. Pitts and Mark R. Shinwell", title = "Generative unbinding of names", journal = j-SIGPLAN, volume = "42", number = "1", pages = "85--95", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190215.1190232", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper is concerned with a programming language construct for typed name binding that enforces $\alpha$equivalence. It proves a new result about what operations on names can co-exist with this construct. The particular form of typed name binding studied is that used by the FreshML family of languages. Its characteristic feature is that a name binding is represented by an abstract (name,value)-pair that may only be deconstructed via the generation of fresh bound names. In FreshML the only observation one can make of names is to test whether or not they are equal. This restricted amount of observation was thought necessary to ensure that there is no observable difference between $\alpha$equivalent name binders. Yet from an algorithmic point of view it would be desirable to allow other operations and relations on names, such as a total ordering. This paper shows that, contrary to expectations, one may add not just ordering, but almost any relation or numerical function on names without disturbing the fundamental correctness result about this form of typed name binding (that object-level $\alpha$equivalence precisely corresponds to contextual equivalence at the programming meta-level), so long as one takes the state of dynamically created names into account.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstract syntax; alpha-conversion; binders; meta-programming", } @Article{Tuch:2007:TBS, author = "Harvey Tuch and Gerwin Klein and Michael Norrish", title = "Types, bytes, and separation logic", journal = j-SIGPLAN, volume = "42", number = "1", pages = "97--108", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190216.1190234", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present a formal model of memory that both captures the low-level features of C's pointers and memory, and that forms the basis for an expressive implementation of separation logic. At the low level, we do not commit common oversimplifications, but correctly deal with C's model of programming language values and the heap. At the level of separation logic, we are still able to reason abstractly and efficiently. We implement this framework in the theorem prover Isabelle/HOL and demonstrate it on two case studies. We show that the divide between detailed and abstract does not impose undue verification overhead, and that simple programs remain easy to verify. We also show that the framework is applicable to real, security- and safety-critical code by formally verifying the memory allocator of the L4 microkernel.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "C; interactive theorem proving; separation logic", } @Article{Appel:2007:VMM, author = "Andrew W. Appel and Paul-Andr{\'e} Melli{\`e}s and Christopher D. Richards and J{\'e}r{\^o}me Vouillon", title = "A very modal model of a modern, major, general type system", journal = j-SIGPLAN, volume = "42", number = "1", pages = "109--122", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190216.1190235", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present a model of recursive and impredicatively quantified types with mutable references. We interpret in this model all of the type constructors needed for typed intermediate languages and typed assembly languages used for object-oriented and functional languages. We establish in this purely semantic fashion a soundness proof of the typing systems underlying these TILs and TALs---ensuring that every well-typed program is safe. The technique is generic, and applies to any small-step semantics including \lambda -calculus, labeled transition systems, and von Neumann machines. It is also simple, and reduces mainly to defining a Kripke semantics of the G{\"o}del-L{\"o}b logic of provability. We have mechanically verified in Coq the soundness of our type system as applied to a von Neumann machine.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "impredicative polymorphism; Kripke models; mutable references; recursive types", } @Article{Calcagno:2007:CLM, author = "Cristiano Calcagno and Philippa Gardner and Uri Zarfaty", title = "Context logic as modal logic: completeness and parametric inexpressivity", journal = j-SIGPLAN, volume = "42", number = "1", pages = "123--134", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190215.1190236", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Separation Logic, Ambient Logic and Context Logic are based on a similar style of reasoning about structured data. They each consist of a structural (separating) composition for reasoning about disjoint subdata, and corresponding structural adjoint(s) for reasoning hypothetically about data. We show how to interpret these structural connectives as modalities in Modal Logic and prove completeness results. The structural connectives are essential for describing properties of the underlying data, such as weakest preconditions for Hoare reasoning for Separation and Context Logic, and security properties for Ambient Logic. In fact, we introduced Context Logic to reason about tree update, precisely because the structural connectives of the Ambient Logic did not have enough expressive power. Despite these connectives being essential, first Lozes then Dawar, Gardner and Ghelli proved elimination results for Separation Logic and Ambient Logic (without quantifiers). In this paper, we solve this apparent contradiction. We study parametric inexpressivity results, which demonstrate that the structural connectives are indeed fundamental for this style of reasoning.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "contexts; expressivity; logic; structured data", } @Article{Batory:2007:ITP, author = "Don Batory", title = "From implementation to theory in product synthesis", journal = j-SIGPLAN, volume = "42", number = "1", pages = "135--136", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190216.1190238", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Future software development will rely on product synthesis, i.e., the synthesis of code and non-code artifacts for a target component or application. Prior work on feature-based product synthesis can be understood and generalized using elementary ideas from category theory. Doing so reveals (a) practical and previously unrecognized properties that product synthesis tools must satisfy, and (b) non-obvious generalizations of current techniques that will guide future research efforts in automated product development.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "AHEAD; category theory; features; GenVoca; mixins; model driven design; program synthesis; virtual classes", } @Article{Lammel:2007:SYB, author = "Ralf L{\"a}mmel", title = "Scrap your boilerplate with {XPath}-like combinators", journal = j-SIGPLAN, volume = "42", number = "1", pages = "137--142", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190216.1190240", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "XML programming involves idioms for expressing 'structure shyness' such as the descendant axis of XPath or the default templates of XSLT. We initiate a discussion of the relationships between such XML idioms and generic functional programming, while focusing on the (Haskell-based) 'Scrap your boilerplate' style of generic programming (SYB). This work gives insight into mechanisms for traversal and selection. We compare SYB and XSLT. We approximate XPath in SYB. We make a case for SYB's programmability, when compared to XPath's fixed combinators. We allude to strengthened type checking for SYB traversals so as to reject certain, trivial behaviors.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "generic functional programming; XML programming", } @Article{Ohori:2007:LFF, author = "Atsushi Ohori and Isao Sasano", title = "Lightweight fusion by fixed point promotion", journal = j-SIGPLAN, volume = "42", number = "1", pages = "143--154", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190216.1190241", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper proposes a lightweight fusion method for general recursive function definitions. Compared with existing proposals, our method has several significant practical features: it works for general recursive functions on general algebraic data types; it does not produce extra runtime overhead (except for possible code size increase due to the success of fusion); and it is readily incorporated in standard inlining optimization. This is achieved by extending the ordinary inlining process with a new fusion law that transforms a term of the form $f o$ (fix $g \lambda x.E$) to a new fixed point term fix $h \lambda x.E\prime$ by promoting the function $f$ through the fixed point operator. This is a sound syntactic transformation rule that is not sensitive to the types of $f$ and $g$. This property makes our method applicable to wide range of functions including those with multi-parameters in both curried and uncurried forms. Although this method does not guarantee any form of completeness, it fuses typical examples discussed in the literature and others that involve accumulating parameters, either in the {\tt foldl}-like specific forms or in general recursive forms, without any additional machinery. In order to substantiate our claim, we have implemented our method in a compiler. Although it is preliminary, it demonstrates practical feasibility of this method.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "fixed point; fusion; inlining", } @Article{Pearlmutter:2007:LMH, author = "Barak A. Pearlmutter and Jeffrey Mark Siskind", title = "Lazy multivariate higher-order forward-mode {AD}", journal = j-SIGPLAN, volume = "42", number = "1", pages = "155--160", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190215.1190242", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A method is presented for computing all higher-order partial derivatives of a multivariate function $R^n \rightarrow R$. This method works by evaluating the function under a nonstandard interpretation, lifting reals to multivariate power series. Multivariate power series, with potentially an infinite number of terms with nonzero coefficients, are represented using a lazy data structure constructed out of linear terms. A complete implementation of this method in Scheme is presented, along with a straightforward exposition, based on Taylor expansions, of the method's correctness.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "nonstandard interpretation; power series", } @Article{Stovring:2007:CCI, author = "Kristian St{\o}vring and Soren B. Lassen", title = "A complete, co-inductive syntactic theory of sequential control and state", journal = j-SIGPLAN, volume = "42", number = "1", pages = "161--172", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190215.1190244", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present a new co-inductive syntactic theory, eager normal form bisimilarity, for the untyped call-by-value lambda calculus extended with continuations and mutable references. We demonstrate that the associated bisimulation proof principle is easy to use and that it is a powerful tool for proving equivalences between recursive imperative higher-order programs. The theory is modular in the sense that eager normal form bisimilarity for each of the calculi extended with continuations and/or mutable references is a fully abstract extension of eager normal form bisimilarity for its sub-calculi. For each calculus, we prove that eager normal form bisimilarity is a congruence and is sound with respect to contextual equivalence. Furthermore, for the calculus with both continuations and mutable references, we show that eager normal form bisimilarity is complete: it coincides with contextual equivalence.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bisimulation; continuations; mutable references", } @Article{Lee:2007:TMM, author = "Daniel K. Lee and Karl Crary and Robert Harper", title = "Towards a mechanized metatheory of standard {ML}", journal = j-SIGPLAN, volume = "42", number = "1", pages = "173--184", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190216.1190245", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present an internal language with equivalent expressive power to Standard ML, and discuss its formalization in LF and the machine-checked verification of its type safety in Twelf. The internal language is intended to serve as the target of elaboration in an elaborative semantics for Standard ML in the style of Harper and Stone. Therefore, it includes all the programming mechanisms necessary to implement Standard ML, including translucent modules, abstraction, polymorphism, higher kinds, references, exceptions, recursive types, and recursive functions. Our successful formalization of the proof involved a careful interplay between the precise formulations of the various mechanisms, and required the invention of new representation and proof techniques of general interest.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "language definitions; logical frameworks; mechanized metatheory; standard ML; Twelf; type safety", } @Article{Might:2007:LFA, author = "Matthew Might", title = "Logic-flow analysis of higher-order programs", journal = j-SIGPLAN, volume = "42", number = "1", pages = "185--198", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190215.1190247", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This work presents a framework for fusing flow analysis and theorem proving called logic-flow analysis (LFA). The framework itself is the reduced product of two abstract interpretations: (1) an abstract state machine and (2) a set of propositions in a restricted first-order logic. The motivating application for LFA is the safe removal of implicit array-bounds checks without type information, user interaction or program annotation. LFA achieves this by delegating a given task to either the prover or the flow analysis depending on which is best suited to discharge it. Described within are a concrete semantics for continuation-passing style; a restricted, first-order logic; a woven product of two abstract interpretations; proofs of correctness; and a worked example.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstract counting; abstract garbage collection; CPS; environment analysis; gamma-CFA first-order logic; lambda calculus; LFA; logic-flow analysis; static analysis; theorem proving", } @Article{Wiedermann:2007:EQS, author = "Ben Wiedermann and William R. Cook", title = "Extracting queries by static analysis of transparent persistence", journal = j-SIGPLAN, volume = "42", number = "1", pages = "199--210", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190215.1190248", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Transparent persistence promises to integrate programming languages and databases by allowing procedural programs to access persistent data with the same ease as non-persistent data. When the data is stored in a relational database, however, transparent persistence does not naturally leverage the performance benefits of relational query optimization. We present a program analysis that combines the benefits of both approaches by extracting database queries from programs with transparent access to persistent data. The analysis uses a sound abstract interpretation of the original program to approximate the data traversal paths in the program and the conditions under which the paths are used. The resulting paths are then converted into a query, and the program is simplified by removing redundant tests. We study an imperative kernel language with read-only access to persistent data and identify the conditions under which the transformations can be applied. This analysis approach promises to combine the software engineering benefits of transparent data persistence with the performance benefits of database query optimization.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "databases; programming languages; static analysis", } @Article{Berdine:2007:VAI, author = "Josh Berdine and Aziem Chawdhary and Byron Cook and Dino Distefano and Peter O'Hearn", title = "Variance analyses from invariance analyses", journal = j-SIGPLAN, volume = "42", number = "1", pages = "211--224", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190215.1190249", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "An invariance assertion for a program location $l$ is a statement that always holds at $l$ during execution of the program. Program invariance analyses infer invariance assertions that can be useful when trying to prove safety properties. We use the term variance assertion to mean a statement that holds between any state at $l$ and any previous state that was also at $l$. This paper is concerned with the development of analyses for variance assertions and their application to proving termination and liveness properties. We describe a method of constructing program variance analyses from invariance analyses. If we change the underlying invariance analysis, we get a different variance analysis. We describe several applications of the method, including variance analyses using linear arithmetic and shape analysis. Using experimental results we demonstrate that these variance analyses give rise to a new breed of termination provers which are competitive with and sometimes better than today's state-of-the-art termination provers.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "formal verification; liveness; program analysis; software model checking; termination", } @Article{Malacaria:2007:AST, author = "Pasquale Malacaria", title = "Assessing security threats of looping constructs", journal = j-SIGPLAN, volume = "42", number = "1", pages = "225--235", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190216.1190251", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "There is a clear intuitive connection between the notion of leakage of information in a program and concepts from information theory. This intuition has not been satisfactorily pinned down, until now. In particular, previous information-theoretic models of programs are imprecise, due to their overly conservative treatment of looping constructs. In this paper we provide the first precise information-theoretic semantics of looping constructs. Our semantics describes both the amount and rate of leakage; if either is small enough, then a program might be deemed 'secure'. Using the semantics we provide an investigation and classification of bounded and unbounded covert channels.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "information theory; language semantics; security", } @Article{Yu:2007:JIB, author = "Dachuan Yu and Ajay Chander and Nayeem Islam and Igor Serikov", title = "{JavaScript} instrumentation for browser security", journal = j-SIGPLAN, volume = "42", number = "1", pages = "237--249", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190216.1190252", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "It is well recognized that JavaScript can be exploited to launch browser-based security attacks. We propose to battle such attacks using program instrumentation. Untrusted JavaScript code goes through a rewriting process which identifies relevant operations, modifies questionable behaviors, and prompts the user (a web page viewer) for decisions on how to proceed when appropriate. Our solution is parametric with respect to the security policy-the policy is implemented separately from the rewriting, and the same rewriting process is carried out regardless of which policy is in use. Be-sides providing a rigorous account of the correctness of our solution, we also discuss practical issues including policy management and prototype experiments. A useful by-product of our work is an operational semantics of a core subset of JavaScript, where code embedded in (HTML) documents may generate further document pieces (with new code embedded) at runtime, yielding a form of self-modifying code.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "edit automata; JavaScript; program instrumentation; web browser", } @Article{Bugliesi:2007:SIT, author = "Michele Bugliesi and Marco Giunti", title = "Secure implementations of typed channel abstractions", journal = j-SIGPLAN, volume = "42", number = "1", pages = "251--262", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190216.1190253", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The challenges hidden in the implementation of high-level process calculi into low-level environments are well understood [3]. This paper develops a secure implementation of a typed pi calculus, in which capability types are employed to realize the policies for the access to communication channels. Our implementation compiles high-level processes of the pi-calculus into low-level principals of a cryptographic process calculus based on the applied-pi calculus [1]. In this translation, the high-level type capabilities are implemented as term capabilities protected by encryption keys only known to the intended receivers. As such, the implementation is effective even when the compiled, low-level principals are deployed in open contexts for which no assumption on trust and behavior may be made. Our technique and results draw on, and extend, previous work on secure implementation of channel abstractions in a dialect of the join calculus [2]. In particular, our translation preserves the forward secrecy of communications in a calculus that includes matching and supports the dynamic exchange of write and read access-rights among processes. We establish the adequacy and full abstraction of the implementation by contrasting the untyped equivalences of the low-level cryptographic calculus, with the typed equivalences of the high-level source calculus.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "full abstraction; language encodings; typed behavioral theories", } @Article{Murthy:2007:APL, author = "Chet Murthy", title = "Advanced programming language design in enterprise software: a lambda-calculus theorist wanders into a datacenter", journal = j-SIGPLAN, volume = "42", number = "1", pages = "263--264", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190216.1190255", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Enterprise software systems automate the business processes of most nontrivial organizations in the world economy. These systems are immensely complex, and their function is critical to our living standards and everyday lives. Their design, implementation, and maintenance occupies many thousands of programmers and engineers, who work in what are aptly called the 'COBOL dungeons'$^1$ of the IT sector. These systems have persisted, growing by accretion -- some for decades; there are enterprise systems in existence today whose original and even subsequent authors are retired or deceased. Such extraordinarily old, multi-layered systems might appear to be the last place to apply avante-garde techniques, but in fact, they are extremely promising candidates, and for reasons directly connected to their history and structure. In this talk we take a tour of several deployed enterprise software systems, and demonstrate that the appropriate application of methods from functional programming can and does in fact yield dramatic performance improvements and thus commercial advantage in the design and implementation of enterprise software. This concrete application is an instance of a general plan for the application of advanced programming language design and analysis methods, to the problem of improving enterprise software. It is the thesis of this talk that to a great extent, it is in enterprise software that advanced PL techniques can find their most advantageous application. This talk literally breaks no new ground in PL research: every technique discussed is nearly two decades old, and our goal is to introduce PL researchers to what we feel is an ideal target for their work.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "enterprise software; functional languages; transaction processing", } @Article{Cook:2007:PPE, author = "Byron Cook and Alexey Gotsman and Andreas Podelski and Andrey Rybalchenko and Moshe Y. Vardi", title = "Proving that programs eventually do something good", journal = j-SIGPLAN, volume = "42", number = "1", pages = "265--276", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190215.1190257", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In recent years we have seen great progress made in the area of automatic source-level static analysis tools. However, most of today's program verification tools are limited to properties that guarantee the absence of bad events (safety properties). Until now no formal software analysis tool has provided fully automatic support for proving properties that ensure that good events eventually happen (liveness properties). In this paper we present such a tool, which handles liveness properties of large systems written in C. Liveness properties are described in an extension of the specification language used in the SDV system. We have used the tool to automatically prove critical liveness properties of Windows device drivers and found several previously unknown liveness bugs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "formal verification; liveness; software model checking; termination", } @Article{Gulwani:2007:PVP, author = "Sumit Gulwani and Nebojsa Jojic", title = "Program verification as probabilistic inference", journal = j-SIGPLAN, volume = "42", number = "1", pages = "277--289", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190215.1190258", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In this paper, we propose a new algorithm for proving the validity or invalidity of a pre/postcondition pair for a program. The algorithm is motivated by the success of the algorithms for probabilistic inference developed in the machine learning community for reasoning in graphical models. The validity or invalidity proof consists of providing an invariant at each program point that can be locally verified. The algorithm works by iteratively randomly selecting a program point and updating the current abstract state representation to make it more locally consistent (with respect to the abstractions at the neighboring points). We show that this simple algorithm has some interesting aspects: (a) It brings together the complementary powers of forward and backward analyses; (b) The algorithm has the ability to recover itself from excessive under-approximation or over-approximation that it may make. (Because the algorithm does not distinguish between the forward and backward information, the information could get both under-approximated and over-approximated at any step.) (c) The randomness in the algorithm ensures that the correct choice of updates is eventually made as there is no single deterministic strategy that would provably work for any interesting class of programs. In our experiments we use this algorithm to produce the proof of correctness of a small (but non-trivial) example. In addition, we empirically illustrate several important properties of the algorithm.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "automated recovery machine; belief networks; factor graphs; forward and backward analysis; Gibbs sampling; learning; Markov chain Monte Carlo; over and under approximation; probabilistic inference; program verification", } @Article{Emmi:2007:LA, author = "Michael Emmi and Jeffrey S. Fischer and Ranjit Jhala and Rupak Majumdar", title = "Lock allocation", journal = j-SIGPLAN, volume = "42", number = "1", pages = "291--296", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190216.1190260", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We introduce lock allocation, an automatic technique that takes a multi-threaded program annotated with atomic sections (that must be executed atomically), and infers a lock assignment from global variables to locks and a lock instrumentation that determines where each lock should be acquired and released such that the resulting instrumented program is guaranteed to preserve atomicity and deadlock freedom (provided all shared state is accessed only within atomic sections). Our algorithm works in the presence of pointers and procedures, and sets up the lock allocation problem as a 0-1 ILP which minimizes the conflict cost between atomic sections while simultaneously minimizing the number of locks. We have implemented our algorithm for both C with pthreads and Java, and have applied it to infer locks in 15K lines of AOLserver code. Our automatic allocation produces the same results as hand annotations for most of this code, while solving the optimization instances within a second for most programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "atomicity; ILP; lock inference", } @Article{Parkinson:2007:MVN, author = "Matthew Parkinson and Richard Bornat and Peter O'Hearn", title = "Modular verification of a non-blocking stack", journal = j-SIGPLAN, volume = "42", number = "1", pages = "297--302", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190215.1190261", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper contributes to the development of techniques for the modular proof of programs that include concurrent algorithms. We present a proof of a non-blocking concurrent algorithm, which provides a shared stack. The inter-thread interference, which is essential to the algorithm, is confined in the proof and the specification to the modular operations, which perform push and pop on the stack. This is achieved by the mechanisms of separation logic. The effect is that inter-thread interference does not pollute specification or verification of clients of the stack.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency; non-blocking; separation logic", } @Article{Kahlon:2007:AIP, author = "Vineet Kahlon and Aarti Gupta", title = "On the analysis of interacting pushdown systems", journal = j-SIGPLAN, volume = "42", number = "1", pages = "303--314", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190216.1190262", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Pushdown Systems (PDSs) have become an important paradigm for program analysis. Indeed, recent work has shown a deep connection between inter-procedural dataflow analysis for sequential programs and the model checking problem for PDSs. A natural extension of this framework to the concurrent domain hinges on the, somewhat less studied, problem of model checking Interacting Pushdown Systems. In this paper, we therefore focus on the model checking of Interacting Pushdown Systems synchronizing via the standard primitives --- locks, rendezvous and broadcasts, for rich classes of temporal properties --- both linear and branching time. We formulate new algorithms for model checking interacting PDSs for important fragments of LTL and the Mu-Calculus. Additionally, we also delineate precisely the decidability boundary for each of the standard synchronization primitives.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency; dataflow analysis; LTL; model checking; mu-calculus; pushdown systems", } @Article{Reppy:2007:SCM, author = "John Reppy and Yingqi Xiao", title = "Specialization of {CML} message-passing primitives", journal = j-SIGPLAN, volume = "42", number = "1", pages = "315--326", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190216.1190264", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Concurrent ML (CML) is a statically-typed higher-order concurrent language that is embedded in Standard ML. Its most notable feature is its support for first-class synchronous operations. This mechanism allows programmers to encapsulate complicated communication and synchronization protocols as first-class abstractions, which encourages a modular style of programming where the underlying channels used to communicate with a given thread are hidden behind data and type abstraction. While CML has been in active use for well over a decade, little attention has been paid to optimizing CML programs. In this paper, we present a new program analysis for statically-typed higher-order concurrent languages that enables the compile-time specialization of communication operations. This specialization is particularly important in a multiprocessor or multicore setting, where the synchronization overhead for general-purpose operations are high. Preliminary results from a prototype that we have built demonstrate that specialized channel operations are much faster than the general-purpose operations. Our analysis technique is modular (i.e.,, it analyzes and optimizes a single unit of abstraction at a time), which plays to the modular style of many CML programs. The analysis consists of three steps: the first is a type-sensitive control-flow analysis that uses the program's type-abstractions to compute more precise results. The second is the construction of an extended control-flow graph using the results of the CFA. The last step is an iterative analysis over the graph that approximates the usage patterns of known channels. Our analysis is designed to detect special patterns of use, such as one-shot channels, fan-in channels, and fan-out channels. We have proven the safety of our analysis and state those results.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrent languages; message passing; ML; static analysis", } @Article{Naik:2007:CMA, author = "Mayur Naik and Alex Aiken", title = "Conditional must not aliasing for static race detection", journal = j-SIGPLAN, volume = "42", number = "1", pages = "327--338", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190216.1190265", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Race detection algorithms for multi-threaded programs using the common lock-based synchronization idiom must correlate locks with the memory locations they guard. The heart of a proof of race freedom is showing that if two locks are distinct, then the memory locations they guard are also distinct. This is an example of a general property we call conditional must not aliasing: Under the assumption that two objects are not aliased, prove that two other objects are not aliased. This paper introduces and gives an algorithm for conditional must not alias analysis and discusses experimental results for sound race detection of Java programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency; Java; multi-threading; static race detection; synchronization", } @Article{Jhala:2007:IAA, author = "Ranjit Jhala and Rupak Majumdar", title = "Interprocedural analysis of asynchronous programs", journal = j-SIGPLAN, volume = "42", number = "1", pages = "339--350", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190216.1190266", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "An asynchronous program is one that contains procedure calls which are not immediately executed from the callsite, but stored and 'dispatched' in a non-deterministic order by an external scheduler at a later point. We formalize the problem of interprocedural dataflow analysis for asynchronous programs as AIFDS problems, a generalization of the IFDS problems for interprocedural dataflow analysis. We give an algorithm for computing the precise meet-over-valid-paths solution for any AIFDS instance, as well as a demand-driven algorithm for solving the corresponding demand AIFDS instances. Our algorithm can be easily implemented on top of any existing interprocedural dataflow analysis framework. We have implemented the algorithm on top of BLAST, thereby obtaining the first safety verification tool for unbounded asynchronous programs. Though the problem of solving AIFDS instances is EXPSPACE-hard, we find that in practice our technique can efficiently analyze programs by exploiting standard optimizations of interprocedural dataflow analyses.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "asynchronous (event-driven) programming; dataflow analysis", } @Article{Vaswani:2007:PPP, author = "Kapil Vaswani and Aditya V. Nori and Trishul M. Chilimbi", title = "Preferential path profiling: compactly numbering interesting paths", journal = j-SIGPLAN, volume = "42", number = "1", pages = "351--362", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190216.1190268", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Path profiles provide a more accurate characterization of a program's dynamic behavior than basic block or edge profiles, but are relatively more expensive to collect. This has limited their use in practice despite demonstrations of their advantages over edge profiles for a wide variety of applications. We present a new algorithm called preferential path profiling (PPP), that reduces the overhead of path profiling. PPP leverages the observation that most consumers of path profiles are only interested in a subset of all program paths. PPP achieves low overhead by separating interesting paths from other paths and assigning a set of unique and compact numbers to these interesting paths. We draw a parallel between arithmetic coding and path numbering, and use this connection to prove an optimality result for the compactness of path numbering produced by PPP. This compact path numbering enables our PPP implementation to record path information in an array instead of a hash table. Our experimental results indicate that PPP reduces the runtime overhead of profiling paths exercised by the largest (ref) inputs of the SPEC CPU2000 benchmarks from 50\% on average (maximum of 132\%) to 15\% on average (maximum of 26\%) as compared to a state-of-the-art path profiler.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "arithmetic coding; dynamic analysis; preferential paths; profiling", } @Article{Ghica:2007:GSS, author = "Dan R. Ghica", title = "Geometry of synthesis: a structured approach to {VLSI} design", journal = j-SIGPLAN, volume = "42", number = "1", pages = "363--375", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190216.1190269", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We propose a new technique for hardware synthesis from higher-order functional languages with imperative features based on Reynolds's Syntactic Control of Interference. The restriction on contraction in the type system is useful for managing the thorny issue of sharing of physical circuits. We use a semantic model inspired by game semantics and the geometry of interaction, and express it directly as a certain class of digital circuits that form a Cartesian, monoidal-closed category. A soundness result is given, which is also a correctness result for the compilation technique.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "game semantics; geometry of interaction; syntactic control of interference; synthesis", } @Article{Preda:2007:SBA, author = "Mila Dalla Preda and Mihai Christodorescu and Somesh Jha and Saumya Debray", title = "A semantics-based approach to malware detection", journal = j-SIGPLAN, volume = "42", number = "1", pages = "377--388", month = jan, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1190216.1190270", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:53:14 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Malware detection is a crucial aspect of software security. Current malware detectors work by checking for 'signatures,' which attempt to capture (syntactic) characteristics of the machine-level byte sequence of the malware. This reliance on a syntactic approach makes such detectors vulnerable to code obfuscations, increasingly used by malware writers, that alter syntactic properties of the malware byte sequence without significantly affecting their execution behavior. This paper takes the position that the key to malware identification lies in their semantics. It proposes a semantics-based framework for reasoning about malware detectors and proving properties such as soundness and completeness of these detectors. Our approach uses a trace semantics to characterize the behaviors of malware as well as the program being checked for infection, and uses abstract interpretation to 'hide' irrelevant aspects of these behaviors. As a concrete application of our approach, we show that the semantics-aware malware detector proposed by Christodorescu et al. is complete with respect to a number of common obfuscations used by malware writers.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstract interpretation; malware detection; obfuscation; trace semantics", } @Article{Chen:2007:TPB, author = "Hsiang-Yang Chen and Ting-Wei Hou and Chun-Liang Lin", title = "Tamper-proofing basis path by using oblivious hashing on {Java}", journal = j-SIGPLAN, volume = "42", number = "2", pages = "9--16", month = feb, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1241761.1241762", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:01 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Java programs are often downloaded (distributed) to unknown environments, so protect Java code from malicious modification is an important issue. This paper presents a tamper-proofing software technology on basis paths for stack-machine based languages, such as Java, by improving Oblivious Hashing. Our approach is based on a new dynamic stack-tracing approach which inserts hash instructions to monitor the top of the stack to check whether the program running has been tampered with or not. A user can choose one or more methods in a class to tamper-proof program. The protective codes are added to basic blocks at the bytecode level. We developed a new approach to protect constants and variables by alternative hashing functions. The overhead is proportional to the number of Load and Push instructions to be protected.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "basis paths; Java; oblivious hashing; tamper-proofing", } @Article{Kumar:2007:PST, author = "Rajeev Kumar and Soham S. Chakraborty", title = "Precise static type analysis for object oriented programs", journal = j-SIGPLAN, volume = "42", number = "2", pages = "17--26", month = feb, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1241761.1241763", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:01 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A precise static type analysis is important to make available dynamic aspects of object-oriented programs (OOPs) approximately known at compile-time. Many techniques have been proposed for static type analysis depending upon the tradeoff of cost and precision; the techniques may generate spurious possible types for a particular dynamic dispatch which makes the static type analysis imprecise. In this paper, we propose a symbolic execution based type analysis technique that analyzes the dynamic type inter-procedurally by keeping the flow of the program in consideration. We analyze test cases with different class hierarchies. The proposed technique was capable to resolve the target method for most of the dynamic dispatches at reduced computational cost.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "message dispatch; object-oriented programming; program analysis; type analysis; type system", } @Article{Tanter:2007:DSC, author = "{\'E}ric Tanter", title = "On dynamically-scoped crosscutting mechanisms", journal = j-SIGPLAN, volume = "42", number = "2", pages = "27--33", month = feb, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1241761.1241764", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:01 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Many crosscutting mechanisms proposed in the literature offer means to restrain aspects to some dynamically-defined scopes. Dynamically-scoped mechanisms are particularly interesting because of the flexibility, expressiveness, and control they give over structural and behavioral changes made by aspects. Since the nature of dynamic scopes as well as the scoping mechanisms themselves greatly vary among proposals, It is relatively complex to compare them. This paper aims at filling this gap by proposing a first characterization of dynamically-scoped crosscutting mechanisms, hence providing a reference frame for comparing different approaches. As a result, this work clarifies some differences between related approaches, suggests possible tracks for further exploration of the design space of such mechanisms, and discusses some issues raised by dynamically-scoped aspects.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "aspect-oriented programming; aspects; crosscutting mechanisms; dynamic scope", } @Article{Mahoney:2007:UCS, author = "William R. Mahoney and William L. Sousan", title = "Using common off-the-shelf tools to implement dynamic aspects", journal = j-SIGPLAN, volume = "42", number = "2", pages = "34--41", month = feb, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1241761.1241765", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:01 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "An emerging software engineering paradigm, Aspect-Oriented Programming, can be used to facilitate moving common interests or requirements from individual software functions into a separate module. Aspect code is woven into the software on either a static (compilation) basis or dynamic (runtime) basis. Existing systems necessitate the use of syntactic sugar. which is added to programs to indicate the join points in the software where aspects could potentially be applied. Static weaving inserts code, at compilation time, into these join points, while dynamic weaving might compile in code which can be activated at runtime.\par This paper describes a new approach to the implementation of dynamic aspects in C/C++. Our method uses a tool which operates using the GCC compiler suite on Linux; it is a runtime event monitoring system we call 'dynamicHook'. The tool tests each potential join point at run time for the required activation of advice. If advice code is necessary at the join point it is loaded on the fly from shared libraries, retained for future use, and called dynamically.\par No additions or modifications to the source code need to be made other than recompiling and linking in our library. The tool is thus targeted at adding aspect oriented methodologies to existing C/C++ code. We have demonstrated the tool by obtaining open-source web servers and adding dynamic aspects dealing with security and intrusion detection.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dynamic aspects; event monitoring; GCC; intrusion detection; open-source", } @Article{Frenger:2007:FSS, author = "Paul Frenger", title = "{Forth} \& small systems report", journal = j-SIGPLAN, volume = "42", number = "3", pages = "2--5", month = mar, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273039.1273040", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:10 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In July 2005 I ran across an ad in Electronic Products [1] for an optical mouse sensor by Agilent Technologies. Like many people, I find using an optical mouse to be superior to the old ball-in-a-cage type mouse (which I first saw demonstrated on the Xerox Star workstation at the National Computer Conference in Dallas, June 1976). Inevitably, I was curious to learn what makes it tick (or 'squeak') \ldots{} that's my Tinkertoy{\reg} mentality at work. I clipped the article, filed it and totally forgot about it until recently.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lin:2007:SEA, author = "Chin-Yang Lin and Ting-Wei Hou", title = "A simple and efficient algorithm for cycle collection", journal = j-SIGPLAN, volume = "42", number = "3", pages = "7--13", month = mar, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273039.1273041", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:10 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The lack of collecting cyclic garbage is generally considered the major weakness of reference counting. Reference counted systems handle this problem by incorporating either a global tracing collector, or a 'partial' tracing collector that considers only the cycle candidates but needs several traces on them. In particular, the latter has become a preferred one as it has better scalability and locality (no need to scan the entire heap). This paper presents a new 'lightweight' cyclic reference counting algorithm, which is based on partial tracing and deals with the cycle problem in a simpler and more efficient way. By exploiting the lightweight hypothesis that considers a single sub-graph, instead of individual cycles, as the basic unit of cycle collection, the algorithm can detect garbage cycles in a single trace. In addition, we propose a technique for eliminating redundant scans over garbage objects, thus improving the efficiency of the algorithm. The pseudocode and its correctness proof are also presented. Finally, an implementation based on Jikes Research Virtual Machine is provided to demonstrate the effectiveness of the new algorithm.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "cycle collection; garbage collection; Java; reference counting", } @Article{Pareja-Flores:2007:WIF, author = "Crist{\'o}bal Pareja-Flores and Jamie Urquiza-Fuentes and J. {\'A}ngel Vel{\'a}zquez-Iturbide", title = "{WinHIPE}: an {IDE} for functional programming based on rewriting and visualization", journal = j-SIGPLAN, volume = "42", number = "3", pages = "14--23", month = mar, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273039.1273042", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:10 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The article describes an IDE for functional programming, called WinHIPE. It provides an interactive and flexible tracer, as well as a powerful visualization and animation system. The former tool is based on the rewriting model of evaluation, and the latter provides automatic generation of visualizations and animations, friendly support for customization, maintenance and exportation of animations to the Web, and facilities to cope with large scale. Its main advantage over other visualization systems is an effortless approach to animation creation and maintenance, based on generating visualizations and animations automatically, as a side effect of program execution. Finally, we briefly describe our experience using the system during several years in educational settings.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "expression evaluation; functional programming; program animation; program visualization; programming environments; term rewriting; tracing", } @Article{Jiang:2007:AAT, author = "Shujuan Jiang and Yuanpeng Jiang", title = "An analysis approach for testing exception handling programs", journal = j-SIGPLAN, volume = "42", number = "4", pages = "3--8", month = apr, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1288258.1288259", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:17 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Exception handling is a powerful mechanism that separates the error handling code from normal code. However, incorrect usage of exception will bring about more potential faults in the code. Based on the study of exception model of C++, the paper proposes a precise and efficient representation of programs with exception handling constructs---Exception Control Flow Graph, which can represent explicitly the implicit control flow of exception and exception propagation path. Then it presents the structure testing criteria of programs with exception handling constructs based on the representation method, and gives the computing method. The approach overcomes the limitations of previous incorrect analysis because of failing to account for the effects of exception handling constructs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "control flow graph; exception handling; exception propagation; structure testing", } @Article{Hou:2007:AIU, author = "Ting-Wei Hou and Fuh-Gwo Chen", title = "An anomaly in an interpreter using {GCC} source-code-level register allocation", journal = j-SIGPLAN, volume = "42", number = "4", pages = "9--13", month = apr, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1288258.1288260", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:17 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "An anomaly of unexpected performance in an interpreter whose frequently accessed variables are manually assigned to hard registers by GCC source-code-level register allocation is presented. A hard-registered virtual program counter and stack pointer as well as a byte-code translation are experimented on both register-rich PowerPC and register-limited Intel x86. According to the study of the anomaly, a hard register should not be assigned singly to a variable in an interpreter due to higher register pressure.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "GCC source-code-level register allocation; interpreter; performance", } @Article{Oh:2007:PEU, author = "Minkyoung Oh and Jiyeon Lee and Byeong-Mo Chang and Joonseon Ahn and Kyung-Goo Doh", title = "A programming environment for ubiquitous computing environment", journal = j-SIGPLAN, volume = "42", number = "4", pages = "14--22", month = apr, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1288258.1288261", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:17 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The goal of this research is to provide an advanced programming environment for ubiquitous computing, which facilitates the development of secure and reliable ubiquitous software. A discussion follows on the design and implementation of a ubiquitous programming framework, which is based on high-level policy description language. A context-based access control manager(CACM) was implemented for context-aware access control, while an adaptation engine was integrated for context adaptation in dynamically changing environments. A simulator was also implemented for conducting experiments with this framework for ubiquitous applications.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "access control; adaptation; programming environment; ubiquitous", } @Article{Smirnov:2007:RPA, author = "Igor B. Smirnov", title = "Raw pointers in application classes of {C++} considered harmful", journal = j-SIGPLAN, volume = "42", number = "4", pages = "23--31", month = apr, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1288258.1288262", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:17 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In order to achieve good reliability, clarity, scalability and re-usability of the application high-level programs written in C++ the raw pointers should not be used as class members (fields), because the raw pointers are too dangerous in this role and they do not represent meaningful relations between objects. Instead of raw pointers two smart pointers should be used. The first one describes exclusive unique ownership with synchronization of objects copying and deletion. The second one describes inclusive references to independent alien objects with invalidating the reference at the deletion of the addressed object. All power of object-oriented programming is preserved, but difficulties and errors are eliminated.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "C++; dynamic storage; methodology; raw pointers; smart pointers", } @Article{Shi:2007:ILL, author = "Huihui Shi and Yi Wang and Haibing Guan and Alei Liang", title = "An intermediate language level optimization framework for dynamic binary translation", journal = j-SIGPLAN, volume = "42", number = "5", pages = "3--9", month = may, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1286341.1286342", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:26 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper presents an intermediate language level optimization framework for dynamic binary translation. Performance is important to a dynamic binary translation system, so there has been a growing interest in exploring new optimization algorithms. The framework proposed in this paper includes efficient profiling, hot code recognition and smart code cache management policies. Profiling is responsible for collecting runtime information, which will be used by hot code recognition and code cache management algorithms. We only focus on recognizing the hottest code, and assign priorities to basic blocks according to their hotness to facilitate code cache management.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "binary translation; dynamic compilation; dynamic optimization; run-time profiling", } @Article{Banerjee:2007:SID, author = "Jayasri Banerjee and Anup Kumar Bandyopadhyay and Ajit Kumar Mandal", title = "Some investigations on deadlock freedom issues of a cyclically connected system using {Dijkstra}'s weakest precondition calculus", journal = j-SIGPLAN, volume = "42", number = "5", pages = "10--15", month = may, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1286341.1286343", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:26 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Weakest precondition calculus is used to specify a system implemented by a cyclic interconnection of sequential processes. From this specification a predicate is derived that describes the deadlock freedom property of the system. Invariance of the predicate is proved from the specification.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "deadlock freedom; program correctness; program specification; weakest precondition", } @Article{Novark:2007:EAC, author = "Gene Novark and Emery D. Berger and Benjamin G. Zorn", title = "{Exterminator}: automatically correcting memory errors with high probability", journal = j-SIGPLAN, volume = "42", number = "6", pages = "1--11", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250736", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Programs written in C and C++ are susceptible to memory errors, including buffer overflows and dangling pointers. These errors, which can lead to crashes, erroneous execution, and security vulnerabilities, are notoriously costly to repair. Tracking down their location in the source code is difficult, even when the full memory state of the program is available. Once the errors are finally found, fixing them remains challenging: even for critical security-sensitive bugs, the average time between initial reports and the issuance of a patch is nearly one month.\par We present Exterminator, a system that automatically corrects heap-based memory errors without programmer intervention. Exterminator exploits randomization to pinpoint errors with high precision. From this information, Exterminator derives runtime patches that fix these errors both in current and subsequent executions. In addition, Exterminator enables collaborative bug correction by merging patches generated by multiple users. We present analytical and empirical results that demonstrate Exterminator's effectiveness at detecting and correcting both injected and real faults.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dieFast; dynamic memory allocation; error correction; exterminator; memory errors; probabilistic algorithms; randomized algorithms", } @Article{Burckhardt:2007:CCC, author = "Sebastian Burckhardt and Rajeev Alur and Milo M. K. Martin", title = "{CheckFence}: checking consistency of concurrent data types on relaxed memory models", journal = j-SIGPLAN, volume = "42", number = "6", pages = "12--21", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250737", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Concurrency libraries can facilitate the development of multi-threaded programs by providing concurrent implementations of familiar data types such as queues or sets. There exist many optimized algorithms that can achieve superior performance on multiprocessors by allowing concurrent data accesses without using locks. Unfortunately, such algorithms can harbor subtle concurrency bugs. Moreover, they require memory ordering fences to function correctly on relaxed memory models.\par To address these difficulties, we propose a verification approach that can exhaustively check all concurrent executions of a given test program on a relaxed memory model and can verify that they are observationally equivalent to a sequential execution. Our CheckFence prototype automatically translates the C implementation code and the test program into a SAT formula, hands the latter to a standard SAT solver, and constructs counter example traces if there exist incorrect executions. Applying CheckFence to five previously published algorithms, we were able to (1) find several bugs (some not previously known), and (2) determine how to place memory ordering fences for relaxed memory models.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrent data structures; lock-free synchronization; memory models; multi-threading; sequential consistency; shared-memory multiprocessors; software model checking", } @Article{Narayanasamy:2007:ACB, author = "Satish Narayanasamy and Zhenghao Wang and Jordan Tigani and Andrew Edwards and Brad Calder", title = "Automatically classifying benign and harmful data races all using replay analysis", journal = j-SIGPLAN, volume = "42", number = "6", pages = "22--31", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250738", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Many concurrency bugs in multi-threaded programs are due to dataraces. There have been many efforts to develop static and dynamic mechanisms to automatically find the data races. Most of the prior work has focused on finding the data races and eliminating the false positives.\par In this paper, we instead focus on a dynamic analysis technique to automatically classify the data races into two categories --- the dataraces that are potentially benign and the data races that are potentially harmful. A harmful data race is a real bug that needs to be fixed. This classification is needed to focus the triaging effort on those data races that are potentially harmful. Without prioritizing the data races we have found that there are too many data races to triage. Our second focus is to automatically provide to the developer a reproducible scenario of the data race, which allows the developer to understand the different effects of a harmful data race on a program's execution.\par To achieve the above, we record a multi-threaded program's execution in a replay log. The replay log is used to replay the multi-threaded program, and during replay we find the data races using a happens-before based algorithm. To automatically classify if a data race that we find is potentially benign or potentially harmful, were play the execution twice for a given data race --- one for each possible order between the conflicting memory operations. If the two replays for the two orders produce the same result, then we classify the data race to be potentially benign. We discuss our experiences in using our replay based dynamic data race checker on several Microsoft applications.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "benign data races; concurrency Bbugs; replay", } @Article{Wassermann:2007:SPA, author = "Gary Wassermann and Zhendong Su", title = "Sound and precise analysis of {Web} applications for injection vulnerabilities", journal = j-SIGPLAN, volume = "42", number = "6", pages = "32--41", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250739", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Web applications are popular targets of security attacks. One common type of such attacks is SQL injection, where an attacker exploits faulty application code to execute maliciously crafted database queries. Bothstatic and dynamic approaches have been proposed to detect or prevent SQL injections; while dynamic approaches provide protection for deployed software, static approaches can detect potential vulnerabilities before software deployment. Previous static approaches are mostly based on tainted information flow tracking and have at least some of the following limitations: (1) they do not model the precise semantics of input sanitization routines; (2) they require manually written specifications, either for each query or for bug patterns; or (3) they are not fully automated and may require user intervention at various points in the analysis. In this paper, we address these limitations by proposing a precise, sound, and fully automated analysis technique for SQL injection. Our technique avoids the need for specifications by considering as attacks those queries for which user input changes the intended syntactic structure of the generated query. It checks conformance to this policy by conservatively characterizing the values a string variable may assume with a context free grammar, tracking the nonterminals that represent user-modifiable data, and modeling string operations precisely as language transducers. We have implemented the proposed technique for PHP, the most widely-used web scripting language. Our tool successfully discovered previously unknown and sometimes subtle vulnerabilities in real-world programs, has a low false positive rate, and scales to large programs (with approx. 100K loc).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "static analysis; string analysis; web applications", } @Article{Perry:2007:FTT, author = "Frances Perry and Lester Mackey and George A. Reis and Jay Ligatti and David I. August and David Walker", title = "Fault-tolerant typed assembly language", journal = j-SIGPLAN, volume = "42", number = "6", pages = "42--53", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250741", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A transient hardware fault occurs when an energetic particle strikes a transistor, causing it to change state. Although transient faults do not permanently damage the hardware, they may corrupt computations by altering stored values and signal transfers. In this paper, we propose a new scheme for provably safe and reliable computing in the presence of transient hardware faults. In our scheme, software computations are replicated to provide redundancy while special instructions compare the independently computed results to detect errors before writing critical data. In stark contrast to any previous efforts in this area, we have analyzed our fault tolerance scheme from a formal, theoretical perspective. To be specific, first, we provide an operational semantics for our assembly language, which includes a precise formal definition of our fault model. Second, we develop an assembly-level type system designed to detect reliability problems in compiled code. Third, we provide a formal specification for program fault tolerance under the given fault model and prove that all well-typed programs are indeed fault tolerant. In addition to the formal analysis, we evaluate our detection scheme and show that it only takes 34\% longer to execute than the unreliable version.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "fault tolerance; soft faults; transient hardware faults; typed assembly language", } @Article{Chlipala:2007:CTP, author = "Adam Chlipala", title = "A certified type-preserving compiler from lambda calculus to assembly language", journal = j-SIGPLAN, volume = "42", number = "6", pages = "54--65", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250742", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present a certified compiler from the simply-typed lambda calculus to assembly language. The compiler is certified in the sense that it comes with a machine-checked proof of semantics preservation, performed with the Coq proof assistant. The compiler and the terms of its several intermediate languages are given dependent types that guarantee that only well-typed programs are representable. Thus, type preservation for each compiler pass follows without any significant 'proofs' of the usual kind. Semantics preservation is proved based on denotational semantics assigned to the intermediate languages. We demonstrate how working with a type-preserving compiler enables type-directed proof search to discharge large parts of our proof obligations automatically.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compiler verification; denotational semantics; dependent types; interactive proof assistants", } @Article{Cai:2007:CSM, author = "Hongxu Cai and Zhong Shao and Alexander Vaynberg", title = "Certified self-modifying code", journal = j-SIGPLAN, volume = "42", number = "6", pages = "66--77", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250743", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Self-modifying code (SMC), in this paper, broadly refers to any program that loads, generates, or mutates code at runtime. It is widely used in many of the world's critical software systems to support runtime code generation and optimization, dynamic loading and linking, OS boot loader, just-in-time compilation, binary translation,or dynamic code encryption and obfuscation. Unfortunately, SMC is also extremely difficult to reason about: existing formal verification techniques-including Hoare logic and type system-consistently assume that program code stored in memory is fixed and immutable; this severely limits their applicability and power.\par This paper presents a simple but novel Hoare-logic-like framework that supports modular verification of general von-Neumann machine code with runtime code manipulation. By dropping the assumption that code memory is fixed and immutable, we are forced to apply local reasoning and separation logic at the very beginning, and treat program code uniformly as regular data structure. We address the interaction between separation and code memory and show how to establish the frame rules for local reasoning even in the presence of SMC. Our framework is realistic, but designed to be highly generic, so that it can support assembly code under all modern CPUs (including both x86 and MIPS). Our system is expressive and fully mechanized. We prove its soundness in the Coq proof assistant and demonstrate its power by certifying a series of realistic examples and applications-all of which can directly run on the SPIM simulator or any stock x86 hardware.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "assembly code verification; Hoare logic; modular verification; runtime code manipulation; self-modifying code", } @Article{Shpeisman:2007:EIO, author = "Tatiana Shpeisman and Vijay Menon and Ali-Reza Adl-Tabatabai and Steven Balensiefer and Dan Grossman and Richard L. Hudson and Katherine F. Moore and Bratin Saha", title = "Enforcing isolation and ordering in {STM}", journal = j-SIGPLAN, volume = "42", number = "6", pages = "78--88", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273442.1250744", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Transactional memory provides a new concurrency control mechanism that avoids many of the pitfalls of lock-based synchronization. High-performance software transactional memory (STM) implementations thus far provide weak atomicity: Accessing shared data both inside and outside a transaction can result in unexpected, implementation-dependent behavior. To guarantee isolation and consistent ordering in such a system, programmers are expected to enclose all shared-memory accesses inside transactions.\par A system that provides strong atomicity guarantees isolation even in the presence of threads that access shared data outside transactions. A strongly-atomic system also orders transactions with conflicting non-transactional memory operations in a consistent manner.\par In this paper, we discuss some surprising pitfalls of weak atomicity, and we present an STM system that avoids these problems via strong atomicity. We demonstrate how to implement non-transactional data accesses via efficient read and write barriers, and we present compiler optimizations that further reduce the overheads of these barriers. We introduce a dynamic escape analysis that differentiates private and public data at runtime to make barriers cheaper and a static not-accessed-in-transaction analysis that removes many barriers completely. Our results on a set of Java programs show that strong atomicity can be implemented efficiently in a high-performance STM system.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "code generation; compiler optimizations; escape analysis; isolation; ordering; strong atomicity; transactional memory; virtual machines; weak atomicity", } @Article{Nethercote:2007:VFH, author = "Nicholas Nethercote and Julian Seward", title = "{Valgrind}: a framework for heavyweight dynamic binary instrumentation", journal = j-SIGPLAN, volume = "42", number = "6", pages = "89--100", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273442.1250746", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Dynamic binary instrumentation (DBI) frameworks make it easy to build dynamic binary analysis (DBA) tools such as checkers and profilers. Much of the focus on DBI frameworks has been on performance; little attention has been paid to their capabilities. As a result, we believe the potential of DBI has not been fully exploited.\par In this paper we describe Valgrind, a DBI framework designed for building heavyweight DBA tools. We focus on its unique support for shadow values -a powerful but previously little-studied and difficult-to-implement DBA technique, which requires a tool to shadow every register and memory value with another value that describes it. This support accounts for several crucial design features that distinguish Valgrind from other DBI frameworks. Because of these features, lightweight tools built with Valgrind run comparatively slowly, but Valgrind can be used to build more interesting, heavyweight tools that are difficult or impossible to build with other DBI frameworks such as Pin and DynamoRIO.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dynamic binary analysis; dynamic binary instrumentation; Memcheck; shadow values; Valgrind", } @Article{Ha:2007:IER, author = "Jungwoo Ha and Christopher J. Rossbach and Jason V. Davis and Indrajit Roy and Hany E. Ramadan and Donald E. Porter and David L. Chen and Emmett Witchel", title = "Improved error reporting for software that uses black-box components", journal = j-SIGPLAN, volume = "42", number = "6", pages = "101--111", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273442.1250747", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "An error occurs when software cannot complete a requested action as a result of some problem with its input, configuration, or environment. A high-quality error report allows a user to understand and correct the problem. Unfortunately, the quality of error reports has been decreasing as software becomes more complex and layered. End-users take the cryptic error messages given to them by programs and struggle to fix their problems using search engines and support websites. Developers cannot improve their error messages when they receive an ambiguous or otherwise insufficient error indicator from a black-box software component.\par We introduce Clarify, a system that improves error reporting by classifying application behavior. Clarify uses minimally invasive monitoring to generate a behavior profile, which is a summary of the program's execution history. A machine learning classifier uses the behavior profile to classify the application's behavior, thereby enabling a more precise error report than the output of the application itself.\par We evaluate a prototype Clarify system on ambiguous error messages generated by large, modern applications like gcc, La-TeX, and the Linux kernel. For a performance cost of less than 1\% on user applications and 4.7\% on the Linux kernel, the proto type correctly disambiguates at least 85\% of application behaviors that result in ambiguous error reports. This accuracy does not degrade significantly with more behaviors: a Clarify classifier for 81 La-TeX error messages is at most 2.5\% less accurate than a classifier for 27 LaTeX error messages. Finally, we show that without any human effort to build a classifier, Clarify can provide nearest-neighbor software support, where users who experience a problem are told about 5 other users who might have had the same problem. On average 2.3 of the 5 users that Clarify identifies have experienced the same problem.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "classification; error report; machine learning; profiling; software support", } @Article{Sridharan:2007:TS, author = "Manu Sridharan and Stephen J. Fink and Rastislav Bodik", title = "Thin slicing", journal = j-SIGPLAN, volume = "42", number = "6", pages = "112--122", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250748", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Program slicing systematically identifies parts of a program relevant to a seed statement. Unfortunately, slices of modern programs often grow too large for human consumption. We argue that unwieldy slices arise primarily from an overly broad definition of relevance, rather than from analysis imprecision. While a traditional slice includes all statements that may affect a point of interest, not all such statements appear equally relevant to a human.\par As an improved method of finding relevant statements, we propose thin slicing. A thin slice consists only of producer statements for the seed, i.e., those statements that help compute and copy a value to the seed. Statements that explain why producers affect the seed are excluded. For example, for a seed that reads a value from a container object, a thin slice includes statements that store the value into the container, but excludes statements that manipulate pointers to the container itself. Thin slices can also be hierarchically expanded to include statements explaining how producers affect the seed, yielding a traditional slice in the limit.\par We evaluated thin slicing for a set of debugging and program understanding tasks. The evaluation showed that thin slices usually included the desired statements for the tasks (e.g., the buggy statement for a debugging task). Furthermore, in simulated use of a slicing tool, thin slices revealed desired statements after inspecting 3.3 times fewer statements than traditional slicing for our debugging tasks and 9.4 times fewer statements for our program understanding tasks. Finally, our thin slicing algorithm scales well to relatively large Java benchmarks, suggesting that thin slicing represents an attractive option for practical tools.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "debugging; program understanding; slicing", } @Article{Ramanathan:2007:SSI, author = "Murali Krishna Ramanathan and Ananth Grama and Suresh Jagannathan", title = "Static specification inference using predicate mining", journal = j-SIGPLAN, volume = "42", number = "6", pages = "123--134", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250749", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The reliability and correctness of complex software systems can be significantly enhanced through well-defined specifications that dictate the use of various units of abstraction (e.g., modules, or procedures). Often times, however, specifications are either missing, imprecise, or simply too complex to encode within a signature, necessitating specification inference. The process of inferring specifications from complex software systems forms the focus of this paper. We describe a static inference mechanism for identifying the preconditions that must hold whenever a procedure is called. These preconditions may reflect both data flow properties (e.g., whenever $p$ is called, variable $x$ must be non-null) as well as control-flow properties (e.g., every call to $p$ must be preceded by a call to $q$). We derive these preconditions using an inter-procedural path-sensitive dataflow analysis that gathers predicates at each program point. We apply mining techniques to these predicates to make specification inference robust to errors. This technique also allows us to derive higher-level specifications that abstract structural similarities among predicates (e.g., procedure $p$ is called immediately after a conditional test that checks whether some variable $v$ is non-null.) We describe an implementation of these techniques, and validate the effectiveness of the approach on a number of large open-source benchmarks. Experimental results confirm that our mining algorithms are efficient, and that the specifications derived are both precise and useful-the implementation discovers several critical, yet previously, undocumented preconditions for well-tested libraries.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "preconditions; predicate mining; program analysis; specification inference", } @Article{Scherpelz:2007:AIO, author = "Erika Rice Scherpelz and Sorin Lerner and Craig Chambers", title = "Automatic inference of optimizer flow functions from semantic meanings", journal = j-SIGPLAN, volume = "42", number = "6", pages = "135--145", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250750", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Previous work presented a language called Rhodium for writing program analyses and transformations, in the form of declarative flow functions that propagate instances of user-defined dataflow fact schemas. Each dataflow fact schema specifies a semantic meaning, which allows the Rhodium system to automatically verify the correctness of the user's flow functions. In this work, we have reversed the roles of the flow functions and semantic meanings: rather than checking the correctness of the user-written flow functions using the facts' semantic meanings, we automatically infer correct flow functions solely from the meanings of the dataflow fact schemas. We have implemented our algorithm for inferring flow functions from fact schemas in the context of the Whirlwind compiler, and have used this implementation to infer flow functions for a variety of fact schemas. The automatically generated flow functions cover most of the situations covered by an earlier suite of handwritten rules.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Morita:2007:AIG, author = "Kazutaka Morita and Akimasa Morihata and Kiminori Matsuzaki and Zhenjiang Hu and Masato Takeichi", title = "Automatic inversion generates divide-and-conquer parallel programs", journal = j-SIGPLAN, volume = "42", number = "6", pages = "146--155", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273442.1250752", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Divide-and-conquer algorithms are suitable for modern parallel machines, tending to have large amounts of inherent parallelism and working well with caches and deep memory hierarchies. Among others, list homomorphisms are a class of recursive functions on lists, which match very well with the divide-and-conquer paradigm. However, direct programming with list homomorphisms is a challenge for many programmers. In this paper, we propose and implement a novel system that can automatically derive cost-optimal list homomorphisms from a pair of sequential programs, based on the third homomorphism theorem. Our idea is to reduce extraction of list homomorphisms to derivation of weak right inverses. We show that a weak right inverse always exists and can be automatically generated from a wide class of sequential programs. We demonstrate our system with several nontrivial examples, including the maximum prefix sum problem, the prefix sum computation, the maximum segment sum problem, and the line-of-sight problem. The experimental results show practical efficiency of our automatic parallelization algorithm and good speedups of the generated parallel programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "divide-and-conquer parallelism; inversion; program transformation; third homomorphism theorem", } @Article{Wang:2007:EAP, author = "Perry H. Wang and Jamison D. Collins and Gautham N. Chinya and Hong Jiang and Xinmin Tian and Milind Girkar and Nick Y. Yang and Guei-Yuan Lueh and Hong Wang", title = "{EXOCHI}: architecture and programming environment for a heterogeneous multi-core multithreaded system", journal = j-SIGPLAN, volume = "42", number = "6", pages = "156--166", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250753", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Future mainstream microprocessors will likely integrate specialized accelerators, such as GPUs, onto a single die to achieve better performance and power efficiency. However, it remains a keen challenge to program such a heterogeneous multicore platform, since these specialized accelerators feature ISAs and functionality that are significantly different from the general purpose CPU cores. In this paper, we present EXOCHI: (1) Exoskeleton Sequencer (EXO), an architecture to represent heterogeneous accelerators as ISA-based MIMD architecture resources, and a shared virtual memory heterogeneous multithreaded program execution model that tightly couples specialized accelerator cores with general-purpose CPU cores, and (2) C for Heterogeneous Integration (CHI), an integrated C/C++ programming environment that supports accelerator-specific inline assembly and domain-specific languages. The CHI compiler extends the OpenMP pragma for heterogeneous multithreading programming, and produces a single fat binary with code sections corresponding to different instruction sets. The runtime can judiciously spread parallel computation across the heterogeneous cores to optimize performance and power.\par We have prototyped the EXO architecture on a physical heterogeneous platform consisting of an Intel{\reg} Core{\TM} 2 Duo processor and an 8-core 32-thread Intel{\reg} Graphics Media Accelerator X3000. In addition, we have implemented the CHI integrated programming environment with the Intel{\reg} C++ Compiler, runtime toolset, and debugger. On the EXO prototype system, we have enhanced a suite of production-quality media kernels for video and image processing to utilize the accelerator through the CHI programming interface, achieving significant speedup (1.41X to10.97X) over execution on the IA32 CPU alone.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "GPU; heterogeneous multi-cores; openMP", } @Article{Solar-Lezama:2007:SS, author = "Armando Solar-Lezama and Gilad Arnold and Liviu Tancau and Rastislav Bodik and Vijay Saraswat and Sanjit Seshia", title = "Sketching stencils", journal = j-SIGPLAN, volume = "42", number = "6", pages = "167--178", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250754", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Performance of stencil computations can be significantly improved through smart implementations that improve memory locality, computation reuse, or parallelize the computation. Unfortunately, efficient implementations are hard to obtain because they often involve non-traditional transformations, which means that they cannot be produced by optimizing the reference stencil with a compiler. In fact, many stencils are produced by code generators that were tediously handcrafted.\par In this paper, we show how stencil implementations can be produced with sketching. Sketching is a software synthesis approach where the programmer develops a partial implementation--a sketch--and a separate specification of the desired functionality given by a reference (unoptimized) stencil. The synthesizer then completes the sketch to behave like the specification, filling in code fragments that are difficult to develop manually.\par Existing sketching systems work only for small finite programs, i.e.,, programs that can be represented as small Boolean circuits. In this paper, we develop a sketching synthesizer that works for stencil computations, a large class of programs that, unlike circuits, have unbounded inputs and outputs, as well as an unbounded number of computations. The key contribution is a reduction algorithm that turns a stencil into a circuit, allowing us to synthesize stencils using an existing sketching synthesizer.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "SAT; sketching; stencil", } @Article{Killian:2007:MLS, author = "Charles Edwin Killian and James W. Anderson and Ryan Braud and Ranjit Jhala and Amin M. Vahdat", title = "{Mace}: language support for building distributed systems", journal = j-SIGPLAN, volume = "42", number = "6", pages = "179--188", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250755", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Building distributed systems is particularly difficult because of the asynchronous, heterogeneous, and failure-prone environment where these systems must run. Tools for building distributed systems must strike a compromise between reducing programmer effort and increasing system efficiency. We present Mace, a C++ language extension and source-to-source compiler that translates a concise but expressive distributed system specification into a C++ implementation. Mace overcomes the limitations of low-level languages by providing a unified framework for networking and event handling, and the limitations of high-level languages by allowing programmers to write program components in a controlled and structured manner in C++. By imposing structure and restrictions on how applications can be written, Mace supports debugging at a higher level, including support for efficient model checking and causal-path debugging. Because Mace programs compile to C++, programmers can use existing C++ tools, including optimizers, profilers, and debuggers to analyze their systems.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency; debugging; distributed systems; domain specific languages; event driven programming; Mace; model checking", } @Article{Li:2007:CET, author = "Peng Li and Steve Zdancewic", title = "Combining events and threads for scalable network services implementation and evaluation of monadic, application-level concurrency primitives", journal = j-SIGPLAN, volume = "42", number = "6", pages = "189--199", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273442.1250756", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper proposes to combine two seemingly opposed programming models for building massively concurrent network services: the event-driven model and the multithreaded model. The result is a hybrid design that offers the best of both worlds--the ease of use and expressiveness of threads and the flexibility and performance of events.\par This paper shows how the hybrid model can be implemented entirely at the application level using concurrency monads in Haskell, which provides type-safe abstractions for both events and threads. This approach simplifies the development of massively concurrent software in a way that scales to real-world network services. The Haskell implementation supports exceptions, symmetrical multiprocessing, software transactional memory, asynchronous I/O mechanisms and application-level network protocol stacks. Experimental results demonstrate that this monad-based approach has good performance: the threads are extremely lightweight (scaling to ten million threads), and the I/O performance compares favorably to that of Linux NPTL. tens of thousands of simultaneous, mostly-idle client connections. Such massively-concurrent programs are difficult to implement, especially when other requirements, such as high performance and strong security, must also be met.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency; event; Haskell; implementation; monad; networking; programming; scalability; thread", } @Article{Kothari:2007:REP, author = "Nupur Kothari and Ramakrishna Gummadi and Todd Millstein and Ramesh Govindan", title = "Reliable and efficient programming abstractions for wireless sensor networks", journal = j-SIGPLAN, volume = "42", number = "6", pages = "200--210", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250757", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "It is currently difficult to build practical and reliable programming systems out of distributed and resource-constrained sensor devices. The state of the art in today's sensor-net programming is centered around a component-based language called nesC. nesC is a node-level language-a program is written for an individual node in the network-and nesC programs use the services of an operating system called TinyOS. We are pursuing an approach to programming sensor networks that significantly raises the level of abstraction over this practice. The critical change is one of perspective: rather than writing programs from the point of view of an individual node, programmers implement a central program that conceptually has access to the entire network. This approach pushes to the compiler the task of producing node-level programs that implement the desired behavior.\par We present the Pleiades programming language, its compiler, and its runtime. The Pleiades language extends the C language with constructs that allow programmers to name and access node-local state within the network and to specify simple forms of concurrent execution. The compiler and runtime system cooperate to implement Pleiades programs efficiently and reliably. First, the compiler employs a novel program analysis to translate Pleiades programs into message-efficient units of work implemented in nesC. The Pleiades runtime system orchestrates execution of these units, using TinyOS services, across a network of sensor nodes. Second, the compiler and runtime system employ novel locking, deadlock detection, and deadlock recovery algorithms that guarantee serializability in the face of concurrent execution. We illustrate the readability, reliability and efficiency benefits of the Pleiades language through detailed experiments, and demonstrate that the Pleiades implementation of a realistic application performs similar to a hand-coded nesC version that contains more than ten times as much code.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "deadlocks; energy efficiency; macroprogramming; serializability; wireless sensor networks", } @Article{Kulkarni:2007:OPR, author = "Milind Kulkarni and Keshav Pingali and Bruce Walter and Ganesh Ramanarayanan and Kavita Bala and L. Paul Chew", title = "Optimistic parallelism requires abstractions", journal = j-SIGPLAN, volume = "42", number = "6", pages = "211--222", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250759", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Irregular applications, which manipulate large, pointer-based data structures like graphs, are difficult to parallelize manually. Automatic tools and techniques such as restructuring compilers and run-time speculative execution have failed to uncover much parallelism in these applications, in spite of a lot of effort by the research community. These difficulties have even led some researchers to wonder if there is any coarse-grain parallelism worth exploiting in irregular applications.\par In this paper, we describe two real-world irregular applications: a Delaunay mesh refinement application and a graphics application that performs agglomerative clustering. By studying the algorithms and data structures used in these applications, we show that there is substantial coarse-grain, data parallelism in these applications, but that this parallelism is very dependent on the input data and therefore cannot be uncovered by compiler analysis. In principle, optimistic techniques such as thread-level speculation can be used to uncover this parallelism, but we argue that current implementations cannot accomplish this because they do not use the proper abstractions for the data structures in these programs.\par These insights have informed our design of the Galois system, an object-based optimistic parallelization system for irregular applications. There are three main aspects to Galois: (1) a small number of syntactic constructs for packaging optimistic parallelism as iteration over ordered and unordered sets, (2)assertions about methods in class libraries, and (3) a runtime scheme for detecting and recovering from potentially unsafe accesses to shared memory made by an optimistic computation.\par We show that Delaunay mesh generation and agglomerative clustering can be parallelized in a straight-forward way using the Galois approach, and we present experimental measurements to show that this approach is practical. These results suggest that Galois is a practical approach to exploiting data parallelism in irregular programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstractions; irregular programs; optimistic parallelism", } @Article{Ding:2007:SBO, author = "Chen Ding and Xipeng Shen and Kirk Kelsey and Chris Tice and Ruke Huang and Chengliang Zhang", title = "Software behavior oriented parallelization", journal = j-SIGPLAN, volume = "42", number = "6", pages = "223--234", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273442.1250760", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Many sequential applications are difficult to parallelize because of unpredictable control flow, indirect data access, and input-dependent parallelism. These difficulties led us to build a software system for behavior oriented parallelization (BOP), which allows a program to be parallelized based on partial information about program behavior, for example, a user reading just part of the source code, or a profiling tool examining merely one or few executions.\par The basis of BOP is programmable software speculation, where a user or an analysis tool marks possibly parallel regions in the code, and the run-time system executes these regions speculatively. It is imperative to protect the entire address space during speculation. The main goal of the paper is to demonstrate that the general protection can be made cost effective by three novel techniques: programmable speculation, critical-path minimization, and value-based correctness checking. On a recently acquired multi-core, multi-processor PC, the BOP system reduced the end-to-end execution time by integer factors for a Lisp interpreter, a data compressor, a language parser, and a scientific library, with no change to the underlying hardware or operating system.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "program behavior; speculative parallelization", } @Article{Krishnamoorthy:2007:EAP, author = "Sriram Krishnamoorthy and Muthu Baskaran and Uday Bondhugula and J. Ramanujam and Atanas Rountev and P. Sadayappan", title = "Effective automatic parallelization of stencil computations", journal = j-SIGPLAN, volume = "42", number = "6", pages = "235--244", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273442.1250761", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Performance optimization of stencil computations has been widely studied in the literature, since they occur in many computationally intensive scientific and engineering applications. Compiler frameworks have also been developed that can transform sequential stencil codes for optimization of data locality and parallelism. However, loop skewing is typically required in order to tile stencil codes along the time dimension, resulting in load imbalance in pipelined parallel execution of the tiles. In this paper, we develop an approach for automatic parallelization of stencil codes, that explicitly addresses the issue of load-balanced execution of tiles. Experimental results are provided that demonstrate the effectiveness of the approach.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "automatic parallelization; load; stencil computations; tiling", } @Article{Elmas:2007:GRT, author = "Tayfun Elmas and Shaz Qadeer and Serdar Tasiran", title = "{Goldilocks}: a race and transaction-aware {Java} runtime", journal = j-SIGPLAN, volume = "42", number = "6", pages = "245--255", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273442.1250762", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Data races often result in unexpected and erroneous behavior. In addition to causing data corruption and leading programs to crash, the presence of data races complicates the semantics of an execution which might no longer be sequentially consistent. Motivated by these observations, we have designed and implemented a Java runtime system that monitors program executions and throws a DataRaceException when a data race is about to occur. Analogous to other runtime exceptions, the DataRaceException provides two key benefits. First, accesses causing race conditions are interrupted and handled before they cause errors that may be difficult to diagnose later. Second, if no DataRaceException is thrown in an execution, it is guaranteed to be sequentially consistent. This strong guarantee helps to rule out many concurrency-related possibilities as the cause of erroneous behavior. When a DataRaceException is caught, the operation, thread, or program causing it can be terminated gracefully. Alternatively, the DataRaceException can serve as a conflict-detection mechanism in optimistic uses of concurrency.\par We start with the definition of data-race-free executions in the Java memory model. We generalize this definition to executions that use transactions in addition to locks and volatile variables for synchronization. We present a precise and efficient algorithm for dynamically verifying that an execution is free of data races. This algorithm generalizes the Goldilocks algorithm for data-race detection by handling transactions and providing the ability to distinguish between read and write accesses. We have implemented our algorithm and the DataRaceException in the Kaffe Java Virtual Machine. We have evaluated our system on a variety of publicly available Java benchmarks and a few microbenchmarks that combine lock-based and transaction-based synchronization. Our experiments indicate that our implementation has reasonable overhead. Therefore, we believe that in addition to being a debugging tool, the DataRaceException may be a viable mechanism to enforce the safety of executions of multithreaded Java programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "data-race detection; Java runtime; runtime monitoring; software transactions", } @Article{Guo:2007:SAI, author = "Bolei Guo and Neil Vachharajani and David I. August", title = "Shape analysis with inductive recursion synthesis", journal = j-SIGPLAN, volume = "42", number = "6", pages = "256--265", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250764", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Separation logic with recursively defined predicates allows for concise yet precise description of the shapes of data structures. However, most uses of separation logic for program analysis rely on pre-defined recursive predicates, limiting the class of programs analyzable to those that manipulate only a priori data structures. This paper describes a general algorithm based on inductive program synthesis that automatically infers recursive shape invariants, yielding a shape analysis based on separation logic that can be applied to any program.\par A key strength of separation logic is that it facilitates, via explicit expression of structural separation, local reasoning about heap where the effects of altering one part of a data structure are analyzed in isolation from the rest. The interaction between local reasoning and the global invariants given by recursive predicates is a difficult area, especially in the presence of complex internal sharing in the data structures. Existing approaches, using logic rules specifically designed for the list predicate to unfold and fold linked-lists, again require a priori knowledge about the shapes of the data structures and do not easily generalize to more complex data structures. We introduce a notion of 'truncation points' in a recursive predicate, which gives rise to generic algorithms for unfolding and folding arbitrary data structures.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "artificial intelligence; inductive recursion synthesis; loop invariant inference; separation logic; shape analysis", } @Article{Gotsman:2007:TMS, author = "Alexey Gotsman and Josh Berdine and Byron Cook and Mooly Sagiv", title = "Thread-modular shape analysis", journal = j-SIGPLAN, volume = "42", number = "6", pages = "266--277", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273442.1250765", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present the first shape analysis for multithreaded programs that avoids the explicit enumeration of execution-interleavings. Our approach is to automatically infer a resource invariant associated with each lock that describes the part of the heap protected by the lock. This allows us to use a sequential shape analysis on each thread. We show that resource invariants of a certain class can be characterized as least fixed points and computed via repeated applications of shape analysis only on each individual thread. Based on this approach, we have implemented a thread-modular shape analysis tool and applied it to concurrent heap-manipulating code from Windows device drivers.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstract interpretation; concurrent programming; shape analysis; static analysis", } @Article{Lattner:2007:MCS, author = "Chris Lattner and Andrew Lenharth and Vikram Adve", title = "Making context-sensitive points-to analysis with heap cloning practical for the real world", journal = j-SIGPLAN, volume = "42", number = "6", pages = "278--289", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273442.1250766", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Context-sensitive pointer analysis algorithms with full 'heapcloning' are powerful but are widely considered to be too expensive to include in production compilers. This paper shows, for the first time, that a context-sensitive, field-sensitive algorithm with fullheap cloning (by acyclic call paths) can indeed be both scalable and extremely fast in practice. Overall, the algorithm is able to analyze programs in the range of 100K-200K lines of C code in 1-3 seconds,takes less than 5\% of the time it takes for GCC to compile the code (which includes no whole-program analysis), and scales well across five orders of magnitude of code size. It is also able to analyze the Linux kernel (about 355K lines of code) in 3.1 seconds. The paper describes the major algorithmic and engineering design choices that are required to achieve these results, including (a) using flow-insensitive and unification-based analysis, which are essential to avoid exponential behavior in practice;(b) sacrificing context-sensitivity within strongly connected components of the call graph; and (c) carefully eliminating several kinds of O(N$^2$) behaviors (largely without affecting precision). The techniques used for (b) and (c) eliminated several major bottlenecks to scalability, and both are generalizable to other context-sensitive algorithms. We show that the engineering choices collectively reduce analysis time by factors of up to 10x-15xin our larger programs, and have found that the savings grow strongly with program size. Finally, we briefly summarize results demonstrating the precision of the analysis.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "context-sensitive; field-sensitive; interprocedural; pointer analysis; recursive data structure; static analysis", } @Article{Hardekopf:2007:AGF, author = "Ben Hardekopf and Calvin Lin", title = "The ant and the grasshopper: fast and accurate pointer analysis for millions of lines of code", journal = j-SIGPLAN, volume = "42", number = "6", pages = "290--299", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273442.1250767", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Pointer information is a prerequisite for most program analyses, and the quality of this information can greatly affect their precision and performance. Inclusion-based (i.e. Andersen-style) pointer analysis is an important point in the space of pointer analyses, offering a potential sweet-spot in the trade-off between precision and performance. However, current techniques for inclusion-based pointer analysis can have difficulties delivering on this potential.\par We introduce and evaluate two novel techniques for inclusion-based pointer analysis---one lazy, one eager$^1$ ---that significantly improve upon the current state-of-the-art without impacting precision. These techniques focus on the problem of online cycle detection, a critical optimization for scaling such analyses. Using a suite of six open-source C programs, which range in size from 169K to 2.17M LOC, we compare our techniques against the three best inclusion-based analyses--described by Heintze and Tardieu [11], by Pearce et al. [21], and by Berndl et al. [4]. The combination of our two techniques results in an algorithm which is on average $3.2 \times$ faster than Heintze and Tardieu's algorithm, $6.4 \times$ faster than Pearce et al.'s algorithm, and $20.6 \times$ faster than Berndl et al.'s algorithm.\par We also investigate the use of different data structures to represent points-to sets, examining the impact on both performance and memory consumption. We compare a sparse-bitmap implementation used in the GCC compiler with a BDD-based implementation, and we find that the BDD implementation is on average $2 \times$ slower than using sparse bitmaps but uses $5.5 \times$ less memory.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "pointer analysis", } @Article{Beyer:2007:PI, author = "Dirk Beyer and Thomas A. Henzinger and Rupak Majumdar and Andrey Rybalchenko", title = "Path invariants", journal = j-SIGPLAN, volume = "42", number = "6", pages = "300--309", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250769", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The success of software verification depends on the ability to find a suitable abstraction of a program automatically. We propose a method for automated abstraction refinement which overcomes some limitations of current predicate discovery schemes. In current schemes, the cause of a false alarm is identified as an infeasible error path, and the abstraction is refined in order to remove that path. By contrast, we view the cause of a false alarm -the spurious counterexample --- as a full-fledged program, namely, a fragment of the original program whose control-flow graph may contain loops and represent unbounded computations. There are two advantages to using such path programs as counterexamples for abstraction refinement. First, we can bring the whole machinery of program analysis to bear on path programs, which are typically small compared to the original program. Specifically, we use constraint-based invariant generation to automatically infer invariants of path programs-so-called path invariants. Second, we use path invariants for abstraction refinement in order to remove not one infeasibility at a time, but at once all (possibly infinitely many) infeasible error computations that are represented by a path program. Unlike previous predicate discovery schemes, our method handles loops without unrolling them; it infers abstractions that involve universal quantification and naturally incorporates disjunctive reasoning.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstraction refinement; formal verification; invariant synthesis; predicate abstraction; software model checking", } @Article{Shankar:2007:DAI, author = "Ajeet Shankar and Rastislav Bod{\'\i}k", title = "{DITTO}: automatic incrementalization of data structure invariant checks (in {Java)}", journal = j-SIGPLAN, volume = "42", number = "6", pages = "310--319", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250770", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present DITTO, an automatic incrementalizer for dynamic, side-effect-free data structure invariant checks. Incrementalization speeds up the execution of a check by reusing its previous executions, checking the invariant anew only the changed parts of the data structure. DITTO exploits properties specific to the domain of invariant checks to automate and simplify the process without restricting what mutations the program can perform. Our incrementalizer works for modern imperative languages such as Java and C\#. It can incrementalize,for example, verification of red-black tree properties and the consistency of the hash code in a hash table bucket. Our source-to-source implementation for Java is automatic, portable, and efficient. DITTO provides speedups on data structures with as few as 100 elements; on larger data structures, its speedups are characteristic of non-automatic incrementalizers: roughly 5-fold at 5,000 elements,and growing linearly with data structure size.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "automatic; data structure invariants; dynamic optimization; incrementalization; optimistic memoization; program analysis", } @Article{Cook:2007:PTT, author = "Byron Cook and Andreas Podelski and Andrey Rybalchenko", title = "Proving thread termination", journal = j-SIGPLAN, volume = "42", number = "6", pages = "320--330", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250771", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Concurrent programs are often designed such that certain functions executing within critical threads must terminate. Examples of such cases can be found in operating systems, web servers, e-mail clients, etc. Unfortunately, no known automatic program termination prover supports a practical method of proving the termination of threads. In this paper we describe such a procedure. The procedure's scalability is achieved through the use of environment models that abstract away the surrounding threads. The procedure's accuracy is due to a novel method of incrementally constructing environment abstractions. Our method finds the conditions that a thread requires of its environment in order to establish termination by looking at the conditions necessary to prove that certain paths through the thread represent well-founded relations if executed in isolation of the other threads. The paper gives a description of experimental results using an implementation of our procedure on Windows device drivers and a description of a previously unknown bug found with the tool.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency; formal verification; model checking; program verification; termination; threads", } @Article{Kodumal:2007:RAS, author = "John Kodumal and Alex Aiken", title = "Regularly annotated set constraints", journal = j-SIGPLAN, volume = "42", number = "6", pages = "331--341", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250772", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A general class of program analyses area combination of context-free and regular language reachability. We define regularly annotated set constraints, a constraint formalism that captures this class. Our results extend the class of reachability problems expressible naturally in a single constraint formalism, including such diverse applications as interprocedural dataflow analysis, precise type-based flow analysis, and pushdown model checking.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "annotated inclusion constraints; context-free language reachability; flow analysis; pushdown model checking; set constraints", } @Article{Geneves:2007:ESA, author = "Pierre Genev{\`e}s and Nabil Laya{\"\i}da and Alan Schmitt", title = "Efficient static analysis of {XML} paths and types", journal = j-SIGPLAN, volume = "42", number = "6", pages = "342--351", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273442.1250773", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present an algorithm to solve XPath decision problems under regular tree type constraints and show its use to statically type-check XPath queries. To this end, we prove the decidability of a logic with converse for finite ordered trees whose time complexity is a simple exponential of the size of a formula. The logic corresponds to the alternation free modal $\mu$-calculus without greatest fixpoint, restricted to finite trees, and where formulas are cycle-free.\par Our proof method is based on two auxiliary results. First, XML regular tree types and XPath expressions have a linear translation to cycle-free formulas. Second, the least and greatest fixpoints are equivalent for finite trees, hence the logic is closed under negation.\par Building on these results, we describe a practical, effective system for solving the satisfiability of a formula. The system has been experimented with some decision problems such as XPath emptiness, containment, overlap, and coverage, with or without type constraints. The benefit of the approach is that our system can be effectively used in static analyzers for programming languages manipulating both XPath expressions and XML type annotations (as input and output types).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "modal logic; satisfiability; type checking; XPath", } @Article{Titzer:2007:ESA, author = "Ben L. Titzer and Joshua Auerbach and David F. Bacon and Jens Palsberg", title = "The {ExoVM} system for automatic {VM} and application reduction", journal = j-SIGPLAN, volume = "42", number = "6", pages = "352--362", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250775", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Embedded systems pose unique challenges to Java application developers and virtual machine designers. Chief among these challenges is the memory footprint of both the virtual machine and the applications that run within it. With the rapidly increasing set of features provided by the Java language, virtual machine designers are often forced to build custom implementations that make various tradeoffs between the footprint of the virtual machine and the subset of the Java language and class libraries that are supported. In this paper, we present the ExoVM, a system in which an application is initialized in a fully featured virtual machine, and then the code, data, and virtual machine features necessary to execute it are packaged into a binary image. Key to this process is feature analysis, a technique for computing the reachable code and data of a Java program and its implementation inside the VM simultaneously. The ExoVM reduces the need to develop customized embedded virtual machines by reusing a single VM infrastructure and automatically eliding the implementation of unused Java features on a per-program basis. We present a constraint-based instantiation of the analysis technique, an implementation in IBM's J9 Java VM, experiments evaluating our technique for the EEMBC benchmark suite, and some discussion of the individual costs of some of Java's features. Our evaluation shows that our system can reduce the non-heap memory allocation of the virtual machine by as much as 75\%. We discuss VM and language design decisions that our work shows are important in targeting embedded systems, supporting the long-term goal of a common VM infrastructure spanning from motes to large servers.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dead code elimination; embedded systems; feature analysis; persistence; pre-initialization; static analysis; static compilation; VM design; VM modularity", } @Article{Cooprider:2007:OCC, author = "Nathan Dean Cooprider and John David Regehr", title = "Offline compression for on-chip {RAM}", journal = j-SIGPLAN, volume = "42", number = "6", pages = "363--372", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250776", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present offline RAM compression, an automated source-to-source transformation that reduces a program's data size. Statically allocated scalars, pointers, structures, and arrays are encoded and packed based on the results of a whole-program analysis in the value set and pointer set domains. We target embedded software written in C that relies heavily on static memory allocation and runs on Harvard-architecture microcontrollers supporting just a few KB of on-chip RAM. On a collection of embedded applications for AVR microcontrollers, our transformation reduces RAM usage by an average of 12\%, in addition to a 10\% reduction through a dead-data elimination pass that is also driven by our whole-program analysis, for a total RAM savings of 22\%. We also developed a technique for giving developers access to a flexible spectrum of tradeoffs between RAM consumption, ROM consumption, and CPU efficiency. This technique is based on a model for estimating the cost/benefit ratio of compressing each variable and then selectively compressing only those variables that present a good value proposition in terms of the desired tradeoffs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "data compression; embedded software; memory optimization; sensor networks; static analysis; TinyOS", } @Article{Schneider:2007:OOD, author = "Florian T. Schneider and Mathias Payer and Thomas R. Gross", title = "Online optimizations driven by hardware performance monitoring", journal = j-SIGPLAN, volume = "42", number = "6", pages = "373--382", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250777", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Hardware performance monitors provide detailed direct feedback about application behavior and are an additional source of information that a compiler may use for optimization. A JIT compiler is in a good position to make use of such information because it is running on the same platform as the user applications. As hardware platforms become more and more complex, it becomes more and more difficult to model their behavior. Profile information that captures general program properties (like execution frequency of methods or basic blocks) may be useful, but does not capture sufficient information about the execution platform. Machine-level performance data obtained from a hardware performance monitor can not only direct the compiler to those parts of the program that deserve its attention but also determine if an optimization step actually improved the performance of the application.\par This paper presents an infrastructure based on a dynamic compiler+runtime environment for Java that incorporates machine-level information as an additional kind of feedback for the compiler and runtime environment. The low-overhead monitoring system provides fine-grained performance data that can be tracked back to individual Java bytecode instructions. As an example, the paper presents results for object co-allocation in a generational garbage collector that optimizes spatial locality of objects on-line using measurements about cache misses. In the best case, the execution time is reduced by 14\% and L1 cache misses by 28\%.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dynamic optimization; hardware performance monitors; Java; just-in-time compilation", } @Article{Li:2007:UUC, author = "Weijia Li and Youtao Zhang and Jun Yang and Jiang Zheng", title = "{UCC}: update-conscious compilation for energy efficiency in wireless sensor networks", journal = j-SIGPLAN, volume = "42", number = "6", pages = "383--393", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250778", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Wireless sensor networks (WSN), composed of a large number of low-cost, battery-powered sensors, have recently emerged as promising computing platforms for many non-traditional applications. The preloaded code on remote sensors often needs to be updated after deployment in order for the WSN to adapt to the changing demands from the users. Post-deployment code dissemination is challenging as the data are transmitted via battery-powered wireless communication. Recent studies show that the energy for sending a single bit is about the same as executing 1000 instructions in aWSN. Therefore it is important to achieve energy efficiency in code dissemination.\par In this paper, we propose novel update-conscious compilation(UCC) techniques for energy-efficient code dissemination in WSNs. An update-conscious compiler, when compiling the modified code, includes the compilation decisions that were made when generating the old binary. The compiler employs a detailed energy model and strives to match the old decisions for a more energy-efficient result. In most cases, matching the previous decisions improves the binary code similarity, reduces the amount of data to be transmitted to remote sensors, and thus, consumes less energy. In this paper, we develop update-conscious register allocation and data layout algorithms. Our experimental results show that they can achieve great improvements over the traditional, update-oblivious approaches.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "code dissemination; register allocation; sensor networks", } @Article{Li:2007:PDE, author = "Feihui Li and Guangyu Chen and Mahmut Kandemir and Ibrahim Kolcu", title = "Profile-driven energy reduction in network-on-chips", journal = j-SIGPLAN, volume = "42", number = "6", pages = "394--404", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273442.1250779", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Reducing energy consumption of a Network-on-Chip (NoC) is a critical design goal, especially for power-constrained embedded systems. In response, prior research has proposed several circuit/architectural level mechanisms to reduce NoC power consumption. This paper considers the problem from a different perspective and demonstrates that compiler analysis can be very helpful for enhancing the effectiveness of a hardware-based link power management mechanism by increasing the duration of communication links' idle periods. The proposed profile-based approach achieves its goal by maximizing the communication link reuse through compiler-directed, static message re-routing. That is, it clusters the required data communications into a small set of communication links at any given time, which increases the idle periods for the remaining communication links in the network. This helps hardware shut down more communication links and their corresponding buffers to reduce leakage power. The current experimental evaluation, with twelve data-intensive embedded applications, shows that the proposed profile-driven compiler approach reduces leakage energy by more than 35\% (on average) as compared to a pure hardware-based link power management scheme.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compiler; Network-on-Chip; power; routing", } @Article{Renganarayanan:2007:PTL, author = "Lakshminarayanan Renganarayanan and DaeGon Kim and Sanjay Rajopadhye and Michelle Mills Strout", title = "Parameterized tiled loops for free", journal = j-SIGPLAN, volume = "42", number = "6", pages = "405--414", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250780", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Parameterized tiled loops-where the tile sizes are not fixed at compile time, but remain symbolic parameters until later--are quite useful for iterative compilers and 'auto-tuners' that produce highly optimized libraries and codes. Tile size parameterization could also enable optimizations such as register tiling to become dynamic optimizations. Although it is easy to generate such loops for (hyper) rectangular iteration spaces tiled with (hyper) rectangular tiles, many important computations do not fall into this restricted domain. Parameterized tile code generation for the general case of convex iteration spaces being tiled by (hyper) rectangular tiles has in the past been solved with bounding box approaches or symbolic Fourier Motzkin approaches. However, both approaches have less than ideal code generation efficiency and resulting code quality. We present the theoretical foundations, implementation, and experimental validation of a simple, unified technique for generating parameterized tiled code. Our code generation efficiency is comparable to all existing code generation techniques including those for fixed tile sizes, and the resulting code is as efficient as, if not more than, all previous techniques. Thus the technique provides parameterized tiled loops for free! Our 'one-size-fits-all' solution, which is available as open source software can be adapted for use in production compilers.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bounding box; code generation; Fourier-Motzkin elimination; parameterized tiling", } @Article{Zhang:2007:TLE, author = "Xiangyu Zhang and Sriraman Tallam and Neelam Gupta and Rajiv Gupta", title = "Towards locating execution omission errors", journal = j-SIGPLAN, volume = "42", number = "6", pages = "415--424", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273442.1250782", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Execution omission errors are known to be difficult to locate using dynamic analysis. These errors lead to a failure at runtime because of the omission of execution of some statements that would have been executed if the program had no errors. Since dynamic analysis is typically designed to focus on dynamic information arising from executed statements, and statements whose execution is omitted do not produce dynamic information, detection of execution omission errors becomes a challenging task. For example, while dynamic slices are very effective in capturing faulty code for other types of errors, they fail to capture faulty code in presence of execution omission errors. To address this issue relevant slices have been defined to consider certain static dependences (called potential dependences) in addition to dynamic dependences. However, due to the conservative nature of static analysis, overly large slices are produced. In this paper, we propose a fully dynamic solution to locating execution omission errors using dynamic slices. We introduce the notion of implicit dependences which are dependences that are normally invisible to dynamic slicing due to the omission of execution of some statements. We design a dynamic method that forces the execution of the omitted code by switching outcomes of relevant predicates such that those implicit dependences are exposed and become available for dynamic slicing. Dynamic slices can be computed and effectively pruned to produce fault candidate sets containing the execution omission errors. We solve two main problems: verifying the existence of a single implicit dependence through predicate switching, and recovering the implicit dependences in a demand driven manner such that a small number of verifications are required before the root cause is captured. Our experiments show that the proposed technique is highly effective in capturing execution omission errors.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "debugging; execution omission; implicit dependence; potential dependence; predicate switching; relevant slicing", } @Article{Lerner:2007:STE, author = "Benjamin S. Lerner and Matthew Flower and Dan Grossman and Craig Chambers", title = "Searching for type-error messages", journal = j-SIGPLAN, volume = "42", number = "6", pages = "425--434", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250783", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Advanced type systems often need some form of type inference to reduce the burden of explicit typing, but type inference often leads to poor error messages for ill-typed programs. This work pursues a new approach to constructing compilers and presenting type-error messages in which the type-checker itself does not produce the messages. Instead, it is an oracle for a search procedure that finds similar programs that do type-check. Our two-fold goal is to improve error messages while simplifying compiler construction. Our primary implementation and evaluation is for Caml, a language with full type inference. We also present a prototype for C++ template functions, where type instantiation is implicit. A key extension is making our approach robust even when the program has multiple independent type errors.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "error messages; objective Caml; seminal; type-checking; type-inference", } @Article{Dillig:2007:SED, author = "Isil Dillig and Thomas Dillig and Alex Aiken", title = "Static error detection using semantic inconsistency inference", journal = j-SIGPLAN, volume = "42", number = "6", pages = "435--445", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273442.1250784", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Inconsistency checking is a method for detecting software errors that relies only on examining multiple uses of a value. We propose that inconsistency inference is best understood as a variant of the older and better understood problem of type inference. Using this insight, we describe a precise and formal framework for discovering inconsistency errors. Unlike previous approaches to the problem, our technique for finding inconsistency errors is purely semantic and can deal with complex aliasing and path-sensitive conditions. We have built a null dereference analysis of C programs based on semantic inconsistency inference and have used it to find hundreds of previously unknown null dereference errors in widely used C programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "error detection; inconsistency; satisfiability; static analysis", } @Article{Musuvathi:2007:ICB, author = "Madanlal Musuvathi and Shaz Qadeer", title = "Iterative context bounding for systematic testing of multithreaded programs", journal = j-SIGPLAN, volume = "42", number = "6", pages = "446--455", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273442.1250785", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Multithreaded programs are difficult to get right because of unexpected interaction between concurrently executing threads. Traditional testing methods are inadequate for catching subtle concurrency errors which manifest themselves late in the development cycle and post-deployment. Model checking or systematic exploration of program behavior is a promising alternative to traditional testing methods. However, it is difficult to perform systematic search on large programs as the number of possible program behaviors grows exponentially with the program size. Confronted with this state-explosion problem, traditional model checkers perform iterative depth-bounded search. Although effective for message-passing software, iterative depth-bounding is inadequate for multithreaded software.\par This paper proposes iterative context-bounding, a new search algorithm that systematically explores the executions of a multithreaded program in an order that prioritizes executions with fewer context switches. We distinguish between preempting and nonpreempting context switches, and show that bounding the number of preempting context switches to a small number significantly alleviates the state explosion, without limiting the depth of explored executions. We show both theoretically and empirically that context-bounded search is an effective method for exploring the behaviors of multithreaded programs. We have implemented our algorithm in two model checkers and applied it to a number of real-world multithreaded programs. Our implementation uncovered 9 previously unknown bugs in our benchmarks, each of which was exposed by an execution with at most 2 preempting context switches. Our initial experience with the technique is encouraging and demonstrates that iterative context-bounding is a significant improvement over existing techniques for testing multithreaded programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency; context-bounding; model checking; multithreading; partial-order reduction; shared-memory programs; software testing", } @Article{Vechev:2007:CSA, author = "Martin T. Vechev and Eran Yahav and David F. Bacon and Noam Rinetzky", title = "{CGCExplorer}: a semi-automated search procedure for provably correct concurrent collectors", journal = j-SIGPLAN, volume = "42", number = "6", pages = "456--467", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250787", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Concurrent garbage collectors are notoriously hard to design, implement, and verify. We present a framework for the automatic exploration of a space of concurrent mark-and-sweep collectors. In our framework, the designer specifies a set of 'building blocks' from which algorithms can be constructed. These blocks reflect the designer's insights about the coordination between the collector and the mutator. Given a set of building blocks, our framework automatically explores a space of algorithms, using model checking with abstraction to verify algorithms in the space.\par We capture the intuition behind some common mark-and-sweep algorithms using a set of building blocks. We utilize our framework to automatically explore a space of more than 1,600,000 algorithms built from these blocks, and derive over 100 correct fine-grained algorithms with various space, synchronization, and precision tradeoffs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrent algorithms; concurrent garbage collection; synthesis; verification", } @Article{McCreight:2007:GFC, author = "Andrew McCreight and Zhong Shao and Chunxiao Lin and Long Li", title = "A general framework for certifying garbage collectors and their mutators", journal = j-SIGPLAN, volume = "42", number = "6", pages = "468--479", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273442.1250788", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Garbage-collected languages such as Java and C\# are becoming more and more widely used in both high-end software and real-time embedded applications. The correctness of the GC implementation is essential to the reliability and security of a large portion of the world's mission-critical software. Unfortunately, garbage collectors--especially incremental and concurrent ones--are extremely hard to implement correctly. In this paper, we present a new uniform approach to verifying the safety of both a mutator and its garbage collector in Hoare-style logic. We define a formal garbage collector interface general enough to reason about a variety of algorithms while allowing the mutator to ignore implementation-specific details of the collector. Our approach supports collectors that require read and write barriers. We have used our approach to mechanically verify assembly implementations of mark-sweep, copying and incremental copying GCs in Coq, as well as sample mutator programs that can be linked with any of the GCs to produce a fully-verified garbage-collected program. Our work provides a foundation for reasoning about complex mutator-collector interaction and makes an important advance toward building fully certified production-quality GCs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstract data type; assembly code verification; garbage collection; proof-carrying code; separation logic", } @Article{Cherem:2007:PML, author = "Sigmund Cherem and Lonnie Princehouse and Radu Rugina", title = "Practical memory leak detection using guarded value-flow analysis", journal = j-SIGPLAN, volume = "42", number = "6", pages = "480--491", month = jun, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1250734.1250789", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:55:30 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper presents a practical inter-procedural analysis algorithm for detecting memory leaks in C programs. Our algorithm tracks the flow of values from allocation points to deallocation points using a sparse representation of the program consisting of a value flow graph that captures def-use relations and value flows via program assignments. Edges in the graph are annotated with guards that describe branch conditions in the program. The memory leak analysis is reduced to a reachability problem over the guarded value flowgraph. Our implemented tool has been effective at detecting more than 60 memory leaks in the SPEC2000 benchmarks and in two open-source applications, bash and sshd, while keeping the false positive rate below 20\%. The sparse program representation makes the tool efficient in practice, and allows it to report concise error messages.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "memory leaks; memory management; static error detection; value-flow analysis", } @Article{Permandla:2007:TSP, author = "Pratibha Permandla and Michael Roberson and Chandrasekhar Boyapati", title = "A type system for preventing data races and deadlocks in the {Java Virtual Machine} language: 1", journal = j-SIGPLAN, volume = "42", number = "7", pages = "10--10", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1254766.1254768", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In previous work on SafeJava we presented a type system extension to the Java source language that statically prevents data races and deadlocks in multithreaded programs. SafeJava is expressive enough to support common programming patterns, its type checking is fast and scalable, and it requires little programming overhead. SafeJava thus offers a promising approach for making multithreaded programs more reliable. This paper presents a corresponding type system extension for the Java virtual machine language (JVML). We call the resulting language SafeJVML. Well-typed SafeJVML programs are guaranteed to be free of data races and deadlocks. Designing a corresponding type system for JVML is important because most Java code is shipped in the JVML format. Designing a corresponding type system for JVML is nontrivial because of important differences between Java and JVML. In particular, the absence of block structure in JVML programs and the fact that they do not use named local variables the way Java programs do make the type systems for Java and JVML significantly different. For example, verifying absence of races and deadlocks in JVML programs requires performing an alias analysis, something that was not necessary for verifying absence of races and deadlocks in Java programs. This paper presents static and dynamic semantics for Safe JVML. It also includes a proof that the SafeJVML type system is sound and that it prevents data races and deadlocks. To the best of our knowledge, this is the first type system for JVML that statically ensures absence of synchronization errors.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "data races; deadlocks; ownership types; SafeJava", } @Article{Huang:2007:AFL, author = "Tai-Yi Huang and Pin-Chuan Chou and Cheng-Han Tsai and Hsin-An Chen", title = "Automated fault localization with statistically suspicious program states", journal = j-SIGPLAN, volume = "42", number = "7", pages = "11--20", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1254766.1254769", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A number of fault localization techniques have been developed to reduce the time in manually debugging a faulty program. The technique of code coverage [8] has been recognized by its effectiveness in identifying suspicious statements that may contain the fault. However, a programmer still needs to manually examine each variable referenced in a suspicious statement and such a process can become extremely time-consuming if this suspicious statement is part of a loop. In this paper, we propose a novel technique called state coverage to significantly reduce the time in examining variables. We first insert a set of checkpoints to record the state of each variable referenced in a branching statement. We next execute the faulty program by a test suite consisting of both passed and failed cases. A state is statistically considered to be more suspicious if it appears more in failed cases and less in passed cases. We implemented both code coverage and state coverage in a debugging tool and used a commonly-used benchmark consisting of 58 faulty programs to evaluate their performance. For 34\% of these programs, their faults are within 20 statement steps of the most suspicious statement identified by code coverage. By adding state coverage and breaking at the most suspicious state, we increase this ratio to 64\%, an 88\% performance improvement. Finally, we also explain a few cases in which both state coverage and code coverage cannot perform well.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "automated debugging; fault localization; state coverage", } @Article{Zhong:2007:FAE, author = "Xiliang Zhong and Cheng-Zhong Xu", title = "Frequency-aware energy optimization for real-time periodic and aperiodic tasks", journal = j-SIGPLAN, volume = "42", number = "7", pages = "21--30", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1254766.1254771", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Energy efficiency is an important factor in embedded systems design. We consider an embedded system with a dynamic voltage scaling (DVS) capable processor and its system-wide power consumption is dominated by the processor and memory. We present speed assignment polices for a set of periodic/aperiodic tasks that minimize the overall system energy consumption including active and idle power of CPU and other components. A limitation of most DVS-based system-wide energy optimization techniques is that they assume the number of worst-case execution cycles (WCEC) of a task is a constant, independent of CPU frequency. This is not the case when other system components such as memory are taken into account. In this paper, we decompose task execution time into two parts: on-chip inside CPU and off-chip outside the CPU. We propose a frequency-aware system-wide energy minimization approach and establish necessary and sufficient conditions for the optimality. By exploiting properties of the conditions, we derive a bisection algorithm that finds the optimal solution to offline periodic tasks in a linear time complexity. We apply a similar analytical approach to online aperiodic tasks scheduling and devise an iterative speed assignment algorithm in the complexity of O (n$^2$). We prove it is optimal among all online algorithms without assumptions about future task releases.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dynamic power management; dynamic voltage scaling; power-aware scheduling; real-time systems", } @Article{Zhu:2007:DCL, author = "Yifan Zhu and Frank Mueller", title = "{DVSleak}: combining leakage reduction and voltage scaling in feedback {EDF} scheduling", journal = j-SIGPLAN, volume = "42", number = "7", pages = "31--40", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1254766.1254772", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Recent trends in CMOS fabrication have the demand to conserve power of processors. While dynamic voltage scaling (DVS) is effective in reducing dynamic power, microprocessors produced in ever smaller fabrication processes are increasingly dominated by static power. For such processors, voltage/frequency pairs below a critical speed result in higher energy per cycle than entering a processor sleep mode. Yet, computational demand above this critical speed is best met by DVS techniques while still conserving power.\par We develop a novel combined leakage and DVS scheduling algorithm for real-time systems, DVS leak, based on earliest-deadline-first scheduling (EDF). Our method trades off DVS with leakage, where the former slows down execution while the latter intelligently defers dispatching of jobs when sleeping is beneficial. We further capitalize on feedback knowledge about actual execution times to anticipate computational demands without sacrificing deadline guarantees. As such, we contribute a novel feedback delay policy for leakage awareness, which addresses structural limitations of prior approaches. Experiments show that this combined DVS/leakage algorithm results in an average of (a) 50\% additional energy savings over a leakage-oblivious DVS algorithm, (b) 20\% more energy savings over a more simplistic combination of DVS and sleep policies and (c) 8.5\% or more over dynamic slack reclamation with procrastination. Particularly task sets with periods shorter than ten milliseconds profit from our approach with 15\% energy savings over best prior schemes. This makes DVS leak the best combined DVS/leakage regulation approach for real-time systems that we know of.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dynamic voltage scaling; feedback control; leakage; real-time systems; scheduling", } @Article{AbouGhazaleh:2007:ICL, author = "Nevine AbouGhazaleh and Alexandre Ferreira and Cosmin Rusu and Ruibin Xu and Frank Liberato and Bruce Childers and Daniel Mosse and Rami Melhem", title = "Integrated {CPU} and l2 cache voltage scaling using machine learning", journal = j-SIGPLAN, volume = "42", number = "7", pages = "41--50", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273444.1254773", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Embedded systems serve an emerging and diverse set of applications. As a result, more computational and storage capabilities are added to accommodate ever more demanding applications. Unfortunately, adding more resources typically comes on the expense of higher energy costs. New chip design with Multiple Clock Domains (MCD) opens the opportunity for fine-grain power management within the processor chip. When used with dynamic voltage scaling (DVS), we can control the voltage and power of each domain independently. A significant power and energy improvement has been shown when using MCD design in comparison to managing a single voltage domain for the whole chip, as in traditional chips with global DVS.\par In this paper, we propose PACSL a Power-Aware Compiler-based approach using Supervised Learning. PACSL automatically derives an integrated CPU-core and on-chip L2 cache DVS policy tailored to a specific system and workload. Our approach uses supervised machine learning to discover a policy, which relies on monitoring a few performance counters. We present our approach detailing the role of a compiler in constructing a custom power management policy. We also discuss some implementation issues associated with our technique. We show that PACSL improves on traditional power management techniques that are used in general MCD chips. Our technique saves 22\% on average (up to 46\%) in energy-delay product over a DVS technique that applies independent DVS decisions in each domain. Compared to no-power management, our technique improves energy-delay product by 26\% on average (up to 64\%).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "integrated DVS policy; machine learning; multiple clock domains; power management", } @Article{Auerbach:2007:JTF, author = "Joshua Auerbach and David F. Bacon and Daniel T. Iercan and Christoph M. Kirsch and V. T. Rajan and Harald Roeck and Rainer Trummer", title = "{Java} takes flight: time-portable real-time programming with exotasks", journal = j-SIGPLAN, volume = "42", number = "7", pages = "51--62", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273444.1254775", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Existing programming methodologies for real-time systems suffer from a low level of abstraction and non-determinism in both the timing and the functional domains. As a result, real-time systems are difficult to test and must be re-certified every time changes are made to either the software or hardware environment. Exotasks are a novel Java programming construct that achieve deterministic timing, even in the presence of other Java threads, and across changes of hardware and software platform. They are deterministic functional data-flow tasks written in Java, combined with an orthogonal scheduling policy based on the logical execution time (LET) model. We have built a quad-rotor model helicopter, the JAviator, which we use as a testbed for this work. We evaluate our implementation of exotasks in IBM's J9 real-time virtual machine using actual flights of the helicopter. Our experiments show that we are able to maintain deterministic behavior in the face of variations in both software load and hardware platform.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "real-time scheduling; time-portability; UAVs; virtual machine", } @Article{Hong:2007:JCA, author = "SungHyun Hong and Jin-Chul Kim and Jin Woo Shin and Soo-Mook Moon and Hyeong-Seok Oh and Jaemok Lee and Hyung-Kyu Choi", title = "{Java} client ahead-of-time compiler for embedded systems", journal = j-SIGPLAN, volume = "42", number = "7", pages = "63--72", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1254766.1254776", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The performance of embedded Java virtual machine can be improved by ahead-of-time compiler (AOTC), which translates bytecode into machine code in the server and installs the machine code on the client device. Although AOTC is more advantageous than just-in-time compiler (JITC) due to its absence of the translation overhead, AOTC cannot be applicable to dynamically downloaded classes at runtime. This paper proposes client-AOTC (c-AOTC) which performs AOTC on the client device using the JITC module installed on the device, complementing the server-AOTC. The machine code of a method translated by JITC is cached on a persistent memory of the device, and when the method is invoked again in a later run of the program, the machine code is loaded and executed directly without the translation and interpretation overhead. One of major issues in c-AOTC is relocation because some of the addresses used by the cached machine code are not correct when the machine code is loaded and used in a different run; those addresses should be corrected before they are used. Constant pool resolution and inlining complicate the relocation problem and we propose our solutions. We developed a c-AOTC on Sun's CDC VM reference implementation (RI) and our evaluation results indicate that c-AOTC can improve the performance significantly, as much as an average of 12\%. We also experiment with the issue of reducing the number of c-AOTC methods to be cached when the persistent space is tight, with a graceful degradation of performance.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "early binding; J2ME CDC; Java ahead-of-time compiler; Java virtual machine; just-in-time compiler; relocation", } @Article{Alias:2007:BIL, author = "Christophe Alias and Fabrice Baray and Alain Darte", title = "{Bee+Cl@k}: an implementation of lattice-based array contraction in the source-to-source translator rose", journal = j-SIGPLAN, volume = "42", number = "7", pages = "73--82", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1254766.1254778", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We build on prior work on intra-array memory reuse, for which a general theoretical framework was proposed based on lattice theory. Intra-array memory reuse is a way of reducing the size of a temporary array by folding, thanks to affine mappings and modulo operations, reusing memory locations when they contain a value not used later. We describe the algorithms needed to implement such a strategy. Our implementation has two parts. The first part, Bee, uses the source-to-source transformer ROSE to extract from the program all necessary information on the lifetime of array elements and to generate the code after memory reduction. The second part, Cl@k, is a stand-alone mathematical tool dedicated to optimizations on polyhedra, in particular the computation of successive minima and the computation of good admissible lattices, which are the basis for lattice-based memory reuse. Both tools are developed in C++ and use linear programming and polyhedra manipulations. They can be used either for embedded program optimizations, e.g., to limit memory expansion introduced for parallelization, or in high-level synthesis, e.g., to design memories between communicating hardware accelerators.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "lattices; memory reduction; program analysis; source-to-source transformations", } @Article{Bennett:2007:CSS, author = "Richard Vincent Bennett and Alastair Colin Murray and Bj{\"o}rn Franke and Nigel Topham", title = "Combining source-to-source transformations and processor instruction set extensions for the automated design-space exploration of embedded systems", journal = j-SIGPLAN, volume = "42", number = "7", pages = "83--92", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1254766.1254779", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Industry's demand for flexible embedded solutions providing high performance and short time-to-market has led to the development of configurable and extensible processors. These pre-verified application-specific processors build on proven baseline cores while allowing for some degree of customization through user-defined instruction set extensions (ISE) implemented as functional units in an extended micro-architecture. The traditional design flow for ISE is based on plain C sources of the target application and, after some ISE identification and synthesis stages, a modified source file is produced with explicit handles to the new machine instructions. Further code optimization is left to the compiler. In this paper we develop a novel approach, namely the combined exploration of source-level transformations and ISE identification. We have combined automated code transformation and ISE generators to explore the potential benefits of such a combination. This applies up to 50 transformations from a selection of 70, and synthesizes ISEs for the resulting code. The resulting performance has been measured on 26 applications from the SNU-RT and UTDSP benchmarks. We show that the instruction extensions generated by automated tools are heavily influenced by source code structure. Our results demonstrate that a combination of source-level transformations and instruction set extensions can yield average performance improvements of 47\%. This out performs instruction set extensions when applied in isolation, and in extreme cases yields a speedup of 2.85.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "ASIPs; compilers; customizable processors; design space exploration; instruction set extension; source-level transformations", } @Article{Ahn:2007:OCH, author = "Minwook Ahn and Jooyeon Lee and Yunheung Paek", title = "Optimistic coalescing for heterogeneous register architectures", journal = j-SIGPLAN, volume = "42", number = "7", pages = "93--102", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273444.1254781", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In this paper, Optimistic coalescing has been proven as an elegant and effective technique that provides better chances of safely coloring more registers in register allocation than other coalescing techniques. Its algorithm originally assumes homogeneous registers which are all gathered in the same register file. Although this register architecture is still common in most general-purpose processors, embedded processors often contain heterogeneous registers which are scattered in physically different register files dedicated for each dissimilar purpose and use. In this work, we developed a modified algorithm for optimal coalescing that helps a register allocator for an embedded processor to better handle such heterogeneity of the register architecture. In the experiment, an existing register allocator was able to achieve up to 10\% reduction in code size through our coalescing, and avoid many spills that would have been generated without our scheme.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compiler; embedded processors; heterogeneous register architecture; register allocation; register coalescing", } @Article{Bouchez:2007:CSE, author = "Florent Bouchez and Alain Darte and Fabrice Rastello", title = "On the complexity of spill everywhere under {SSA} form", journal = j-SIGPLAN, volume = "42", number = "7", pages = "103--112", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273444.1254782", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Compilation for embedded processors can be either aggressive (time consuming cross-compilation) or just in time (embedded and usually dynamic). The heuristics used in dynamic compilation are highly constrained by limited resources, time and memory in particular. Recent results on the SSA form open promising directions for the design of new register allocation heuristics for embedded systems and especially for embedded compilation. In particular, heuristics based on tree scan with two separated phases -- one for spilling, then one for coloring/coalescing -- seem good candidates for designing memory-friendly, fast, and competitive register allocators. Still, also because of the side effect on power consumption, the minimization of loads and stores overhead (spilling problem) is an important issue. This paper provides an exhaustive study of the complexity of the 'spill everywhere' problem in the context of the SSA form. Unfortunately, conversely to our initial hopes, many of the questions we raised lead to NP-completeness results. We identify some polynomial cases but that are impractical in JIT context. Nevertheless, they can give hints to simplify formulations for the design of aggressive allocators.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "complexity; register allocation; spill; SSA form", } @Article{Xu:2007:TNR, author = "Weifeng Xu and Russell Tessier", title = "{Tetris}: a new register pressure control technique for {VLIW} processors", journal = j-SIGPLAN, volume = "42", number = "7", pages = "113--122", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273444.1254783", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The run-time performance of VLIW (very long instruction word) microprocessors depends heavily on the effectiveness of its associated optimizing compiler. Typical VLIW compiler phases include instruction scheduling, which maximizes instruction level parallelism (ILP), and register allocation, which minimizes data spills to external memory. If ILP is maximized without considering register constraints, high register pressure may result, leading to increased spill code and reduced run-time performance. In this paper, a new register pressure reduction technique for embedded VLIW processors is presented to control register pressure prior to instruction scheduling and register allocation. By modifying the relative ordering of operations, this technique restructures code to better reduce spills. Our technique has been implemented in Trimaran, an academic VLIW compiler, and evaluated using a series of VLIW benchmarks. Experimental results show that, on average, our algorithm reduces dynamic spills and improves overall cycle counts by 6\% for a VLIW architecture with 8 functional units and 32 registers versus previous spill code reduction techniques.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "instruction level parallelism; register pressure control; very long instruction word (VLIW) processor", } @Article{Pizlo:2007:HRT, author = "Filip Pizlo and Antony L. Hosking and Jan Vitek", title = "Hierarchical real-time garbage collection", journal = j-SIGPLAN, volume = "42", number = "7", pages = "123--133", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273444.1254784", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Memory management is a critical issue for correctness and performance in real-time embedded systems. Recent work on real-time garbage collectors has shown that it is possible to provide guarantees on worst-case pause times and minimum mutator utilization time. This paper presents a new hierarchical real-time garbage collection algorithm for mixed-priority and mixed-criticality environments. With hierarchical garbage collection, real-time programmers can partition the heap into a number of heaplets and for each partition choose to run a separate collector with a schedule that matches the allocation behavior and footprint of the real-time task using it. This approach lowers worst-case response times of real-time applications by 26\%, while almost doubling mutator utilization -- all with only minimal changes to the application code.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "Java memory management; real time systems", } @Article{OBrien:2007:ICC, author = "Kathryn O'Brien", title = "Issues and challenges in compiling for the {CBEA}", journal = j-SIGPLAN, volume = "42", number = "7", pages = "134--134", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273444.1254786", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "It has been demonstrated that expert programmers can develop and hand tune applications to exploit the full performance potential of the CBE architecture. We believe that sophisticated compiler optimization technology can bridge the gap between usability and performance in this arena. To this end we have developed a research prototype compiler targeting the Cell processor.\par In this talk we describe a variety of compiler techniques to exploit the Cell processor. These techniques are aimed at automatically generating high quality codes for the heterogeneous parallelism available on the Cell processor. In particular we will focus the discussion on managing the small local memories of the SPEs and discuss our approach to presenting the user with a single shared memory image through our compiler controlled software cache. We will also report and discuss the results we have achieved to date, which indicate that significant speedup can be achieved on this processor with a high level of support from the compiler.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kaestner:2007:SWC, author = "Daniel Kaestner", title = "Safe worst-case execution time analysis by abstract interpretation of executable code", journal = j-SIGPLAN, volume = "42", number = "7", pages = "135--135", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273444.1254787", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "To verify that a safety-critical application meets all requirements lies in the responsibility of the system designers. Classical software validation methods like code review and testing with debugging are expensive and cannot really guarantee the absence of errors. In contrast, abstract interpretation provides a methodology for static program analysis that yields statements valid for all program runs with all inputs. Employing static analyzers is thus orthogonal to classical testing. A possible cause of catastrophic failure is the violation of timing constraints. Recent trends, e.g. in automotive industries (X-by-wire, time-triggered protocols) require knowledge on the Worst-Case Execution Time (WCET) of each task. Yet WCET determination is a difficult problem because of the characteristics of modern software and hardware. This talk focuses on AbsInt's tool aiT that combines abstract interpretation and integer linear programming to determine upper bounds for the WCETs of code snippets given as routines in executables. The hardware architecture of the underlying processor is precisely taken into account, including cache and pipeline behavior. Bounds are determined without the need to change the code and hold for all executions. aiT is used among others by Airbus in the development of various safety-critical applications for the A380.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Engelsma:2007:ESM, author = "Jonathan Engelsma", title = "Enabling seamless mobility: an enablers, experiences and tools perspective", journal = j-SIGPLAN, volume = "42", number = "7", pages = "136--136", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273444.1254788", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Seamless mobility entails providing consumers an enhanced experience -- with reduced effort -- as they move between different devices and environments. Because of the increasing diversity of user preferences, device capabilities and environmental conditions, engineering efficient and usable seamless mobility solutions can be quite challenge. This talk will present an applications research perspective on realizing seamless mobility, focusing on ongoing research in developing enablers for mobile gaming, device-to-device interactions, sensing, advertising and cross-device context sharing. Understanding the device limitations as well as the user expectations of the technology is critical to developing seamless mobility solutions that are both useful and commercially viable. From the tools and development perspective, we see opportunities and challenges in the four phases of realization -- design \& development, deployment, usage and evolution. This talk will conclude with a look at existing support for tools and enablers for seamless mobility, and a discussion on future research directions for the developer community.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Huang:2007:JTE, author = "Po-Kuan Huang and Matin Hashemi and Soheil Ghiasi", title = "Joint throughput and energy optimization for pipelined execution of embedded streaming applications", journal = j-SIGPLAN, volume = "42", number = "7", pages = "137--139", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1254766.1254790", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present a methodology for synthesizing streaming applications, modeled as task graphs, for pipelined execution on multi-core architectures. We develop a task graph extraction and characterization framework that accurately determines the structure, computation and communication characteristics of application task graph from its specification in C. Furthermore, we develop a provably optimal algorithm that jointly balances the workload assigned to each core, and minimizes inter-core communication traffic. Experiment results show that our versatile method improves the through-put of streaming applications significantly under a variety of hardware configurations.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "embedded soft-ware synthesis; multi-core; performance optimization; task graph", } @Article{Cho:2007:ISH, author = "Hansu Cho and Samar Abdi and Daniel Gajski", title = "Interface synthesis for heterogeneous multi-core systems from transaction level models", journal = j-SIGPLAN, volume = "42", number = "7", pages = "140--142", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1254766.1254791", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper presents a tool for automatic synthesis of RTL interfaces for heterogeneous MPSoC from transaction level models (TLMs). The tool captures the communication parameters in the platform and generates interface modules called universal bridges between buses in the design. The design and configuration of the bridges depend on several platform components including heterogeneity of the components, traffic on the bus, size of messages and so on. We define these parameters and show how the synthesizable RTL code for the bridge can be automatically derived based on these parameters. We use industrial strength design drivers such as an MP3 decoder to test our automatically generated bridges for a variety of platforms and compare them to manually designed bridges on different quality metrics. Our experimental results show that performance of automatically generated bridges are within 5\% of manual design for simple platforms but surpasses them for more complex platforms. The area and RTL code size is consistently better than manual design while giving 5 orders of improvement in development time.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "channel; communication synthesis; HW-SW co-design; interface synthesis; transaction level model; universal bridge", } @Article{Viskic:2007:AGE, author = "Ines Viskic and Samar Abdi and Daniel D. Gajski", title = "Automatic generation of embedded communication {SW} for heterogeneous {MPSoC} platforms", journal = j-SIGPLAN, volume = "42", number = "7", pages = "143--145", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1254766.1254792", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper addresses the problem of long design cycle of MPSoCs communication SW with automatic synthesis. The tool we propose takes as input a transaction level model (TLM) of MPSoC communication and outputs pin and cycle-accurate (PCA) bus drivers that can be linked to the synthesizable PCA model (PCAM).\par The TL communication is simple since TLM channels abstract away protocol details. PCAM communication, in turn, includes explicit definitions for each signal and pin. However, in most cases the TLMs are not suitable for implementation since they do not reflect the MPSoC platform. Usually the designers simulate (fast) TLMs, then manually implement PCA communication.\par Our communication SW synthesis transforms TL send and receive functions into platform specific PCAM bus drivers which can be automatically downloaded to the FPGA board. The presented results demonstrate the significant productivity gain achieved with our tool, with no great cost to either code size or system performance.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "automatic synthesis; custom communication SW; MPSoC; on-chip communication; pin/cycle accurate models; platform based design; system level design; transaction level models", } @Article{Chen:2007:ECF, author = "Chung-Kai Chen and Ling-Hua Tseng and Shih-Chang Chen and Young-Jia Lin and Yi-Ping You and Chia-Han Lu and Jenq-Kuen Lee", title = "Enabling compiler flow for embedded {VLIW DSP} processors with distributed register files", journal = j-SIGPLAN, volume = "42", number = "7", pages = "146--148", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273444.1254793", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "High-performance and low-power VLIW DSP processors are increasingly deployed on embedded devices to process video and multimedia applications. For reducing power and cost in designs of VLIW DSP processors, distributed register files and multi-bank register architectures are being adopted to eliminate the amount of read/write ports in register files. This presents new challenges for devising compiler optimization schemes for such architectures. In this paper, we address the compiler optimization issues for PAC architecture, which is a 5-way issue DSP processor with distributed register files. We present an integrated flow to address several phases of compiler optimizations in interacting with distributed register files and multi-bank register files in the layer of instruction scheduling, software pipelining, and data flow optimizations. Our experiments on a novel 32-bit embedded VLIW DSP (known as the PAC DSP core) exhibit the state of the art performance for embedded VLIW DSP processors with distributed register files by incorporating our proposed schemes in compilers.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "distributed register files; embedded VLIW DSP compilers; software pipelining", } @Article{Walther:2007:ART, author = "Karsten Walther and Ren{\'e} Herzog and J{\"o}rg Nolte", title = "Analyzing the real-time behaviour of deeply embedded event driven systems", journal = j-SIGPLAN, volume = "42", number = "7", pages = "149--151", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1254766.1254794", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Most embedded control systems react on events in the real world by reading sensors and controlling actuators in real-time. This general behavior can be directly mapped onto event-driven systems in a natural and straightforward manner for a large variety of applications. Further real-time analysis and profiling on the same level of abstraction is possible for event-driven systems. This significantly helps developers of deeply embedded real-time applications. In this paper we introduce simulative profiling concepts and static analysis basics for the real-time analysis of event-driven systems. Furthermore we present a prototype analysis tool for the R\par EFLEX operating system that integrates real-time analysis into the software development cycle.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "embedded; event-flow; profiling; real-time", } @Article{Coffman:2007:GPT, author = "Joel Coffman and Christopher Healy and Frank Mueller and David Whalley", title = "Generalizing parametric timing analysis", journal = j-SIGPLAN, volume = "42", number = "7", pages = "152--154", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1254766.1254795", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In the design of real-time and embedded systems, it is important to establish a bound on the worst-case execution time (WCET) of programs to assure via schedulability analysis that deadlines are not missed. Static WCET analysis is performed by a timing analysis tool. This paper describes novel improvements to such a tool, allowing parametric timing analysis to be performed. Parametric timing analyzers receive an upper bound on the number of loop iterations in terms of an expression which is used to create a parametric formula. This parametric formula is later evaluated to determine the WCET based on input values only known at runtime. Effecting a transformation from a numeric to a parametric timing analyzer requires two innovations: 1) a summation solver capable of summation non-constant expressions and 2) a polynomial data structure which can replace integers as the basis for all calculations. Both additions permit other methods of analysis (e.g. caching, pipeline, constraint) to occur simultaneously. Combining these techniques allows our tool to statically bound the WCET for a larger class of benchmarks.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "parametric timing analysis; worst-case execution time (WCET) analysis", } @Article{Chen:2007:CDA, author = "Guangyu Chen and Feihui Li and Mahmut Kandemir", title = "Compiler-directed application mapping for {NoC} based chip multiprocessors", journal = j-SIGPLAN, volume = "42", number = "7", pages = "155--157", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1254766.1254796", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The problem attacked in this paper is one of automatically mapping an application onto a Network-on-Chip (NoC) based chip multi-processor architecture in a locality-aware fashion. The proposed compiler approach has four major steps: task scheduling, processor mapping, data mapping, and packet routing. Our experimental result clearly shows that the proposed framework reduces energy consumption of our applications significantly (27.41\% on average over a pure performance oriented application mapping strategy) as a result of improved locality of data accesses.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "application mapping; compilers; Network-on-Chip (NoC); power optimization", } @Article{Yan:2007:SEW, author = "Shan Yan and Bill Lin", title = "Stream execution on wide-issue clustered {VLIW} architectures", journal = j-SIGPLAN, volume = "42", number = "7", pages = "158--160", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1254766.1254797", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper investigates the mapping of stream programs to wide-issue clustered VLIW processors so that designers can leverage their existing investments in VLIW-based platforms to harness the advantages of stream programming.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compilers; scheduling; stream programming; VLIW processors", } @Article{Chu:2007:CDP, author = "Michael L. Chu and Scott A. Mahlke", title = "Code and data partitioning for fine-grain parallelism", journal = j-SIGPLAN, volume = "42", number = "7", pages = "161--164", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1254766.1254798", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "code and data partitioning; fine-grain parallelism; multicore compilation", } @Article{Hines:2007:AIF, author = "Stephen Roderick Hines and Gary Tyson and David Whalley", title = "Addressing instruction fetch bottlenecks by using an instruction register file", journal = j-SIGPLAN, volume = "42", number = "7", pages = "165--174", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1254766.1254800", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The Instruction Register File (IRF) is an architectural extension for providing improved access to frequently occurring instructions. An optimizing compiler can exploit an IRF by packing an application's instructions, resulting in decreased code size, reduced energy consumption and improved execution time primarily due to a smaller footprint in the instruction cache. The nature of the IRF also allows the execution of packed instructions to overlap with instruction fetch, thus providing a means for tolerating increased fetch latencies, like those experienced by encrypted ICs as well as the presence of low-power L0 caches. Although previous research has focused on the direct benefits of instruction packing, this paper explores the use of increased fetch bandwidth provided by packed instructions. Small L0 caches improve energy efficiency but can increase execution time due to frequent cache misses. We show that this penalty can be significantly reduced by overlapping the execution of packed instructions with miss stalls. The IRF can also be used to supply additional instructions to a more aggressive execution engine, effectively reducing dependence on instruction cache bandwidth. This can improve energy efficiency, in addition to providing additional flexibility for evaluating various design tradeoffs in a pipeline with asymmetric instruction bandwidth. Thus, we show that the IRF is a complementary technique, operating as a buffer tolerating fetch bottlenecks, as well as providing additional fetch bandwidth for an aggressive pipeline backend.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "instruction packing; instruction register file; L0/filter cache", } @Article{Yan:2007:WAI, author = "Jun Yan and Wei Zhang", title = "{WCET} analysis of instruction caches with prefetching", journal = j-SIGPLAN, volume = "42", number = "7", pages = "175--184", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1254766.1254801", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Instruction prefetching is an effective technique to reduce the instruction cache miss latency for improving the average-case performance. For real-time systems, however, the use of instruction prefetching will only be suitable if a reasonably tight worst-case performance of programs using instruction prefetching can be predicted. This paper presents an approach to modeling and computing the worst-case instruction cache performance with prefetching. Our experimental results indicate that instruction prefetching can benefit both the average-case and worst-case performance; however, the degree of the worst-case performance improvement due to instruction prefetching is less than that of the average-case performance, thus leading to increased time variation for real-time computing. Also, we find that the prefetching distance can significantly impact the worst-case performance analysis with instruction prefetching. Particularly, when the prefetching distance is equal to the L1 miss penalty, the worst-case execution time with instruction prefetching is minimized (i.e., optimal).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "hard real-time; instruction cache; instruction prefetching; worst-case execution time analysis", } @Article{Ning:2007:EMP, author = "Ke Ning and David Kaeli", title = "External memory page remapping for embedded multimedia systems", journal = j-SIGPLAN, volume = "42", number = "7", pages = "185--194", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273444.1254803", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "As memory speeds and bus capacitances continue to rise, external memory bus power will make up an increasing portion of the total system power budget for system-on-a-chip embedded systems. Both hardware and software approaches can be explored to balance the power/performance tradeoff associated with the external memory.\par In this paper we present a hardware-based, programmable external memory page remapping mechanism which can significantly improve performance and decrease the power budget due to external memory bus accesses. Our approach was developed by studying common data access patterns present in embedded multimedia applications. In the paper, we evaluate a mechanism that can perform page remapping of external memory. We also develop an efficient algorithm to map application data and instruction memory into external memory pages. We employ graph-coloring techniques to guide the page mapping procedure. The objective is to avoid page misses by remapping conflicting pages to different memory banks (i.e., by assigning them different colors). Our algorithm can significantly reduce the memory page miss rate by 70-80\% on average. For a 4-bank SDRAM memory system, we reduced external memory access time by 12.6\%. The proposed algorithm can reduce power consumption in majority of the benchmarks, averaged by 13.2\% of power reduction. Combining the effects of both power and delay, our algorithm can benefit significantly to the total energy cost.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "embedded systems; memory coloring; memory controllers; memory page remapping", } @Article{Cho:2007:DDS, author = "Hyungmin Cho and Bernhard Egger and Jaejin Lee and Heonshik Shin", title = "Dynamic data scratchpad memory management for a memory subsystem with an {MMU}", journal = j-SIGPLAN, volume = "42", number = "7", pages = "195--206", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1254766.1254804", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In this paper, we propose a dynamic scratchpad memory (SPM)management technique for a horizontally-partitioned memory subsystem with an MMU. The memory subsystem consists of a relatively cheap direct-mapped data cache and SPM. Our technique loads required global data and stack pages into the SPM on demand when a function is called. A scratchpad memory manager loads\slash unloads the data pages and maintains a page table for the MMU. Our approach is based on post-pass analysis and optimization techniques, and it handles the whole program including libraries. The data page mapping is determined by solving an integer linear programming (ILP) formulation that approximates our demand paging technique. The ILP model uses a dynamic call graph annotated with the number of memory accesses and/or cache misses obtained by profiling. We evaluate our technique on thirteen embedded applications. We compare the results to a reference system with a 4-way set associative data cache and the ideal case with the same 4-way cache and SPM, where all global and stack data is placed in the SPM. On average, our approach reduces the total system energy consumption by 8.1\% with no performance degradation. This is equivalent to exploiting 60\% of the room available in energy reduction between the reference case and the ideal case.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compilers; demand paging; horizontally-partitioned memory; post-pass optimization; scratchpad memory", } @Article{Li:2007:SAD, author = "Lian Li and Quan Hoang Nguyen and Jingling Xue", title = "Scratchpad allocation for data aggregates in superperfect graphs", journal = j-SIGPLAN, volume = "42", number = "7", pages = "207--216", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1254766.1254805", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Existing methods place data or code in scratchpad memory, i.e., SPM by either relying on heuristics or resorting to integer programming or mapping it to a graph coloring problem.\par In this work, the SPM allocation problem is formulated as an interval coloring problem. The key observation is that in many embedded applications, arrays (including structs as a special case) are often related in the following way: For any two arrays, their live ranges are often such that one is either disjoint from or contains the other. As a result, array interference graphs are often superperfect graphs and optimal interval colorings for such array interference graphs are possible. This has led to the development of two new SPM allocation algorithms. While differing in whether live range splits and spills are done sequentially or together, both algorithms place arrays in SPM based on examining the cliques in an interference graph. In both cases, we guarantee optimally that all arrays in an interference graph can be placed in SPM if its size is no smaller than the clique number of the graph. In the case that the SPM is not large enough, we rely on heuristics to split or spill a live range until the graph is colorable. Our experiment results using embedded benchmarks show that our algorithms can outperform graph coloring when their interference graphs are superperfect or nearly so although graph coloring is admittedly more general and may also be effective to applications with arbitrary interference graphs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "interval coloring; scratchpad memory; SPM; SPM allocation; superperfect graph", } @Article{In:2007:SSW, author = "Jihyun In and Ilhoon Shin and Hyojun Kim", title = "{SWL}: a search-while-load demand paging scheme with {NAND} flash memory", journal = j-SIGPLAN, volume = "42", number = "7", pages = "217--226", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1254766.1254806", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "As mobile phones become increasingly multifunctional, the number and size of applications installed in phones are rapidly increasing. Consequently, mobile phones require more hardware resources such as NOR/NAND flash memory and DRAM, and their production cost is accordingly becoming higher. One candidate solution to reduce production cost is demand paging using MMU. However, demand paging causes unpredictably long page fault latency, and as such mobile phone manufacturers are reluctant to deploy this scheme. In this paper, we present a method that reduces the long latency of page faults by performing page fault handling in a parallelized manner, considering the characteristics of NAND-Type flash memory. We also discuss how to modify the existing page cache replacement policies so that they can exploit the benefits of the parallelized page fault handler. Experimental results show that the parallelized page fault handler improves the worst case latency of page faults significantly, by up to roughly 20\%, and that the modified page cache replacement policies improve both the average and worst instruction fetch time.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "demand paging; NAND flash memory; page fault handler; page replacement; parallelization", } @Article{Wang:2007:OSC, author = "Qin Wang and Junpu Chen and Weihua Zhang and Min Yang and Binyu Zang", title = "Optimizing software cache performance of packet processing applications", journal = j-SIGPLAN, volume = "42", number = "7", pages = "227--236", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273444.1254808", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Network processors (NPs) are widely used in many types of networking equipment due to their high performance and flexibility. For most NPs, software cache is used instead of hardware cache due to the chip area, cost and power constraints. Therefore, programmers should take full responsibility for software cache management which is neither intuitive nor easy to most of them. Actually, without an effective use of it, long memory access latency will be a critical limiting factor to overall applications. Prior researches like hardware multi-threading, wide-word accesses and packet access combination for caching have already been applied to help programmers to overcome this bottleneck. However, most of them do not make enough use of the characteristics of packet processing applications and often perform intraprocedural optimizations only. As a result, the binary codes generated by those techniques often get lower performance than that comes from hand-tuned assembly programming for some applications. In this paper, we propose an algorithm including two techniques --- Critical Path Based Analysis (CPBA) and Global Adaptive Localization (GAL), to optimize the software cache performance of packet processing applications. Packet processing applications usually have several hot paths and CPBA tries to insert localization instructions according to their execution frequencies. For further optimizations, GAL eliminates some redundant localization instructions by interprocedural analysis and optimizations. Our algorithm is applied on some representative applications. Experiment results show that it leads to an average speedup by a factor of 1.974.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "local memory; network processor; optimization", } @Article{Ravindran:2007:CMP, author = "Rajiv Ravindran and Michael Chu and Scott Mahlke", title = "Compiler-managed partitioned data caches for low power", journal = j-SIGPLAN, volume = "42", number = "7", pages = "237--247", month = jul, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1273444.1254809", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:57:50 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Set-associative caches are traditionally managed using hardware-based lookup and replacement schemes that have high energy overheads. Ideally, the caching strategy should be tailored to the application's memory needs, thus enabling optimal use of this on-chip storage to maximize performance while minimizing power consumption. However, doing this in hardware alone is difficult due to hardware complexity, high power dissipation, overheads of dynamic discovery of application characteristics, and increased likelihood of making locally optimal decisions. The compiler can instead determine the caching strategy by analyzing the application code and providing hints to the hardware. We propose a hardware/software co-managed partitioned cache architecture in which enhanced load/store instructions are used to control fine-grain data placement within a set of cache partitions. In comparison to traditional partitioning techniques, load and store instructions can individually specify the set of partitions for lookup and replacement. This fine grain control can avoid conflicts, thus providing the performance benefits of highly associative caches, while saving energy by eliminating redundant tag and data array accesses. Using four direct-mapped partitions, we eliminated 25\% of the tag checks and recorded an average 15\% reduction in the energy-delay product compared to a hardware-managed 4-way set-associative cache.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "embedded processor; hardware/software co-managed cache; instruction-driven cache management; low-power; partitioned cache", } @Article{Dunlavey:2007:PTI, author = "Michael Dunlavey", title = "Performance tuning with instruction-level cost derived from call-stack sampling", journal = j-SIGPLAN, volume = "42", number = "8", pages = "4--8", month = aug, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1294297.1294298", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:24 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Except for program-counter histogramming, most modern profiling tools summarize at the level of entire functions or basic blocks, with or without additional information such as calling context or call graphs. This paper explicates the value of information about the cost of specific instructions, relative to summaries that do not include it. A good source of this information is time-random sampling of the call stack. To get the diagnostic benefit of instruction costs it is not necessary to measure them with high precision or efficiency. In fact, manual sampling suffices quite well, when it can be used. Other benefits of call stack sampling are that it can be used with unmodified software and libraries, and it is easily confined to the time intervals of interest. As with other profiling techniques, it can be employed repeatedly to remove all significant performance problems in single-thread programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bottleneck; call stack sampling; instrumentation; optimization; performance analysis; profiling; software development", } @Article{Gabay:2007:CJR, author = "Yarom Gabay and Assaf J. Kfoury", title = "A calculus for {Java}'s reference objects", journal = j-SIGPLAN, volume = "42", number = "8", pages = "9--17", month = aug, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1294297.1294299", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:24 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Java's Reference objects provide the programmer with limited control over the process of memory management. Although reference objects are often helpful, they introduce nondeterminism into program evaluation and lead to ambiguous program outcome. In this paper we present a calculus to formally reason about Java's Reference objects. We model multiple levels of reference objects in a single calculus and apply a different garbage collection policy to each one of them. Accordingly, weak references are given the semantics of eager collection and soft references are given the semantics of lazy collection. In addition, we constrain garbage collection with the scarcity of two resources: time and space. We demonstrate the viability of our calculus by modeling a Java program which addresses a commonly-encountered caching problem. Using our model, we reason about the program's evaluation and interaction with the garbage collector.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "formal languages; garbage collection; Java reference objects; weak references", } @Article{Sewell:2007:OET, author = "Peter Sewell and Francesco Zappa Nardelli and Scott Owens and Gilles Peskine and Thomas Ridge and Susmit Sarkar and Rok Strni{\v{s}}a", title = "{Ott}: effective tool support for the working semanticist", journal = j-SIGPLAN, volume = "42", number = "9", pages = "1--12", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291220.1291155", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "It is rare to give a semantic definition of a full-scale programming language, despite the many potential benefits. Partly this is because the available metalanguages for expressing semantics --- usually either L$^a$ T$_E$ X for informal mathematics, or the formal mathematics of a proof assistant --- make it much harder than necessary to work with large definitions.\par We present a metalanguage specifically designed for this problem, and a tool, ott, that sanity-checks such definitions and compiles them into proof assistant code for Coq, HOL, Isabelle, and (in progress) Twelf, together with L$^a$ T$_E$ X code for production-quality typesetting, and OCaml boilerplate. The main innovations are:(1) metalanguage design to make definitions concise, and easy to read and edit;(2) an expressive but intuitive metalanguage for specifying binding structures; and (3) compilation to proof assistant code.\par This has been tested in substantial case studies, including modular specifications of calculi from the TAPL text, a Lightweight Java with Java JSR 277/294 module system proposals, and a large fragment of OCaml (around 306 rules), with machine proofs of various soundness results. Our aim with this work is to enable a phase change: making it feasible to work routinely, without heroic effort, with rigorous semantic definitions of realistic languages.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sozeau:2007:PIF, author = "Matthieu Sozeau", title = "Programming finger trees in {Coq}", journal = j-SIGPLAN, volume = "42", number = "9", pages = "13--24", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291151.1291156", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Finger Trees (Hinze \& Paterson, 2006) are a general purpose persistent data structure with good performance. Their genericity permits developing a wealth of structures like ordered sequences or interval trees on top of a single implementation. However, the type systems used by current functional languages do not guarantee the coherent parameterization and specialization of Finger Trees, let alone the correctness of their implementation. We present a certified implementation of Finger Trees solving these problems using the Program extension of Coq. We not only implement the structure but also prove its invariants along the way, which permit building certified structures on top of Finger Trees in an elegant way.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "certification; C{$<$} dependent types; finger trees; oq{$<$} /scp{$>$} scp>", } @Article{Wazny:2007:ERF, author = "Jeremy Wazny", title = "Experience report: functional programming in c-rules", journal = j-SIGPLAN, volume = "42", number = "9", pages = "25--28", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291220.1291158", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "C-Rules is a business rules management system developed by Constraint Technologies International$^1$ (CTI), designed for use in transportation problems. Users define rules describing various aspects of a problem, such as solution costs and legality, which are then queried from a host application, typically an optimising solver. At its core, C-Rules provides a functional expression language which affords users both power and flexibility when formulating rules. In this paper we will describe our experiences of using functional programming both at the end-user level, as well as at the implementation level. We highlight some of the benefits we, and the product's users, have enjoyed from the decision to base our rule system on features such as: higher-order functions, referential transparency, and static, polymorphic typing. We also outline some of our experiences in using Haskell to build an efficient compiler for the core language.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Syme:2007:EPM, author = "Don Syme and Gregory Neverov and James Margetson", title = "Extensible pattern matching via a lightweight language extension", journal = j-SIGPLAN, volume = "42", number = "9", pages = "29--40", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291151.1291159", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Pattern matching of algebraic data types (ADTs) is a standard feature in typed functional programming languages, but it is well known that it interacts poorly with abstraction. While several partial solutions to this problem have been proposed, few have been implemented or used. This paper describes an extension to the .NET language F\# called active patterns, which supports pattern matching over abstract representations of generic heterogeneous data such as XML and term structures, including where these are represented via object models in other .NET languages. Our design is the first to incorporate both ad hoc pattern matching functions for partial decompositions and 'views' for total decompositions, and yet remains a simple and lightweight extension. We give a description of the language extension along with numerous motivating examples. Finally we describe how this feature would interact with other reasonable and related language extensions: existential types quantified at data discrimination tags, GADTs, and monadic generalizations of pattern matching.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "F#; functional programming; ML; pattern matching", } @Article{Danvy:2007:BSC, author = "Olivier Danvy and Michael Spivey", title = "On {Barron} and {Strachey}'s {Cartesian} product function", journal = j-SIGPLAN, volume = "42", number = "9", pages = "41--46", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291151.1291161", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Over forty years ago, David Barron and Christopher Strachey published a startlingly elegant program for the Cartesian product of a list of lists, expressing it with a three nested occurrences of the function we now call {\tt foldr}. This program is remarkable for its time because of its masterful display of higher-order functions and lexical scope, and we put it forward as possibly the first ever functional pearl. We first characterize it as the result of a sequence of program transformations, and then apply similar transformations to a program for the classical power set example. We also show that using a higher-order representation of lists allows a definition of the Cartesian product function where {\tt foldr} is nested only twice.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "CPL", } @Article{Matsuda:2007:BTB, author = "Kazutaka Matsuda and Zhenjiang Hu and Keisuke Nakano and Makoto Hamana and Masato Takeichi", title = "Bidirectionalization transformation based on automatic derivation of view complement functions", journal = j-SIGPLAN, volume = "42", number = "9", pages = "47--58", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291151.1291162", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Bidirectional transformation is a pair of transformations: a view function and a backward transformation. A view function maps one data structure called source onto another called view. The corresponding backward transformation reflects changes in the view to the source. Its practically useful applications include replicated data synchronization, presentation-oriented editor development, tracing software development, and view updating in the database community. However, developing a bidirectional transformation is hard, because one has to give two mappings that satisfy the bidirectional properties for system consistency.\par In this paper, we propose a new framework for bidirectionalization that can automatically generate a useful backward transformation from a view function while guaranteeing that the two transformations satisfy the bidirectional properties. Our framework is based on two known approaches to bidirectionalization, namely the constant complement approach from the database community and the combinator approach from the programming language community, but it has three new features: (1) unlike the constant complement approach, it can deal with transformations between algebraic data structures rather than just tables; (2) unlike the combinator approach, in which primitive bidirectional transformations have to be explicitly given, it can derive them automatically; (3) it generates a view update checker to validate updates on views, which has not been well addressed so far. The new framework has been implemented and the experimental results show that our framework has promise.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "automatic program generation; bidirectional transformation; program inversion; program transformation; view updating", } @Article{Elliott:2007:TFP, author = "Conal M. Elliott", title = "Tangible functional programming", journal = j-SIGPLAN, volume = "42", number = "9", pages = "59--70", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291220.1291163", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present a user-friendly approach to unifying program creation and execution, based on a notion of 'tangible values' (TVs), which are visual and interactive manifestations of pure values, including functions. Programming happens by gestural composition of TVs. Our goal is to give end-users the ability to create parameterized, composable content without imposing the usual abstract and linguistic working style of programmers. We hope that such a system will put the essence of programming into the hands of many more people, and in particular people with artistic/visual creative style.\par In realizing this vision, we develop algebras for visual presentation and for 'deep' function application, where function and argument may both be nested within a structure of tuples, functions, etc. Composition gestures are translated into chains of combinators that act simultaneously on statically typed values and their visualizations.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "arrows; combinator libraries; end-user programming; gestural composition; interactive programming; interactive visualization", } @Article{Sereni:2007:TAC, author = "Damien Sereni", title = "Termination analysis and call graph construction for higher-order functional programs", journal = j-SIGPLAN, volume = "42", number = "9", pages = "71--84", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291151.1291165", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The analysis and verification of higher-order programs raises the issue of control-flow analysis for higher-order languages. The problem of constructing an accurate call graph for a higher-order program has been the topic of extensive research, and numerous methods for flow analysis, varying in complexity and precision, have been suggested.\par While termination analysis of higher-order programs has been studied, there has been little examination of the impact of call graph construction on the precision of termination checking. We examine the effect of various control-flow analysis techniques on a termination analysis for higher-order functional programs. We present a termination checking framework and instantiate this with three call graph constructions varying in precision and complexity, and illustrate by example the impact of the choice of call graph construction.\par Our second aim is to use the resulting analyses to shed light on the relationship between control-flow analyses. We prove precise inclusions between the classes of programs recognised as terminating by the same termination criterion over different call graph analyses, giving one of the first characterisations of expressive power of flow analyses for higher-order programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "functional programs; program analysis; semantics; termination", } @Article{VanHorn:2007:RCP, author = "David {Van Horn} and Harry G. Mairson", title = "Relating complexity and precision in control flow analysis", journal = j-SIGPLAN, volume = "42", number = "9", pages = "85--96", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291220.1291166", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We analyze the computational complexity of $k$-CFA, a hierarchy of control flow analyses that determine which functions may be applied at a given call-site. This hierarchy specifies related decision problems, quite apart from any algorithms that may implement their solutions. We identify a simple decision problem answered by this analysis and prove that in the 0CFA case, the problem is complete for polynomial time. The proof is based on a nonstandard, symmetric implementation of Boolean logic within multiplicative linear logic (MLL). We also identify a simpler version of 0CFA related to $\eta$-expansion, and prove that it is complete for logarithmic space, using arguments based on computing paths and permutations.\par For any fixed $k > 0$, it is known that $k$-CFA (and the analogous decision problem) can be computed in time exponential in the program size. For $k = 1$, we show that the decision problem is NP-hard, and sketch why this remains true for larger fixed values of $k$. The proof technique depends on using the approximation of CFA as an essentially nondeterministic computing mechanism, as distinct from the exactness of normalization. When $k = n$, so that the 'depth' of the control flow analysis grows linearly in the program length, we show that the decision problem is complete for exponential time.\par In addition, we sketch how the analysis presented here may be extended naturally to languages with control operators. All of the insights presented give clear examples of how straightforward observations about linearity, and linear logic, may in turn be used to give a greater understanding of functional programming and program analysis.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "complexity; continuation; control flow analysis; eta expansion; geometry of interaction; linear logic; normalization; proofnet; static analysis", } @Article{Filinski:2007:IRA, author = "Andrzej Filinski and Kristian St{\o}vring", title = "Inductive reasoning about effectful data types", journal = j-SIGPLAN, volume = "42", number = "9", pages = "97--110", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291220.1291168", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present a pair of reasoning principles, definition and proof by rigid induction, which can be seen as proper generalizations of lazy-datatype induction to monadic effects other than partiality. We further show how these principles can be integrated into logical-relations arguments, and obtain as a particular instance a general and principled proof that the success-stream and failure-continuation models of backtracking are equivalent. As another application, we present a monadic model of general search trees, not necessarily traversed depth-first. The results are applicable to both lazy and eager languages, and we emphasize this by presenting most examples in both Haskell and SML.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstract effects; backtracking; equational reasoning; logical relations; monads; recursive types; streams", } @Article{Leijen:2007:TDT, author = "Daan Leijen", title = "A type directed translation of {MLF} to system {F}", journal = j-SIGPLAN, volume = "42", number = "9", pages = "111--122", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291220.1291169", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The MLF type system by Le Botlan and R{\'e}my is a natural extension of Hindley--Milner type inference that supports full first-class polymorphism, where types can be of higher-rank and impredicatively instantiated. Even though MLF is theoretically very attractive, it has not seen widespread adoption. We believe that this partly because it is unclear how the rich language of MLF types relate to standard System F types. In this article we give the first type directed translation of MLF terms to System F terms. Based on insight gained from this translation, we also define 'Rigid MLF' (MLF$^=$), a restriction of MLF where all bound values have a System F type. The expressiveness of MLF$^=$ is the same as that of boxy types, but MLF$^=$ needs fewer annotations and we give a detailed comparison between them.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "first-class polymorphism; MLF; system F", } @Article{Lloyd:2007:DPA, author = "John W. Lloyd", title = "Declarative programming for artificial intelligence applications", journal = j-SIGPLAN, volume = "42", number = "9", pages = "123--124", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291151.1291152", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In this talk, I will consider some possible extensions to existing functional programming languages that would make them more suitable for the important and growing class of artificial intelligence applications. First, I will motivate the need for these language extensions. Then I will give some technical detail about these extensions that provide the logic programming idioms, probabilistic computation, and modal computation. Some examples will be given to illustrate these ideas which have been implemented in the Bach programming language that is an extension of Haskell.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "functional; logic; modal; probabilistic; programming", } @Article{Fredlund:2007:MMC, author = "Lars-{\AA}ke Fredlund and Hans Svensson", title = "{McErlang}: a model checker for a distributed functional programming language", journal = j-SIGPLAN, volume = "42", number = "9", pages = "125--136", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291220.1291171", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present a model checker for verifying distributed programs written in the Erlang programming language. Providing a model checker for Erlang is especially rewarding since the language is by now being seen as a very capable platform for developing industrial strength distributed applications with excellent failure tolerance characteristics. In contrast to most other Erlang verification attempts, we provide support for a very substantial part of the language. The model checker has full Erlang data type support, support for general process communication, node semantics (inter-process behave subtly different from intra-process communication), fault detection and fault tolerance through process linking, and can verify programs written using the OTP Erlang component library (used by most modern Erlang programs).\par As the model checking tool is itself implemented in Erlang we benefit from the advantages that a (dynamically typed) functional programming language offers: easy prototyping and experimentation with new verification algorithms, rich executable models that use complex data structures directly programmed in Erlang, the ability to treat executable models interchangeably as programs (to be executed directly by the Erlang interpreter) and data, and not least the possibility to cleanly structure and to cleanly combine various verification sub-tasks. In the paper we discuss the design of the tool and provide early indications on its performance.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sims:2007:ERR, author = "Steve Sims and Daniel C. DuVarney", title = "Experience report: the reactis validation tool", journal = j-SIGPLAN, volume = "42", number = "9", pages = "137--140", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291220.1291172", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Reactis is a commercially successful testing and validation tool which is implemented almost entirely in Standard ML. Our experience using a functional language to develop a commercial product has led us to the conclusion that while functional languages have some disadvantages, in the case of Reactis the benefits of a functional language substantially outweigh the drawbacks.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "functional programming; reactis; SML; standard ML", } @Article{Plasmeijer:2007:IES, author = "Rinus Plasmeijer and Peter Achten and Pieter Koopman", title = "{iTasks}: executable specifications of interactive work flow systems for the web", journal = j-SIGPLAN, volume = "42", number = "9", pages = "141--152", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291151.1291174", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In this paper we introduce the iTask system: a set of combinators to specify work flows in a pure functional language at a very high level of abstraction. Work flow systems are automated systems in which tasks are coordinated that have to be executed by humans and computers. The combinators that we propose support work flow patterns commonly found in commercial work flow systems. Compared with most of these commercial systems, the iTask system offers several advantages: tasks are statically typed, tasks can be higher order, the combinators are fully compositional, dynamic and recursive work flows can be specified, and last but not least, the specification is used to generate an executable web-based multi-user work flow application. With the iTask system, useful work flows can be defined which cannot be expressed in other systems: work can be interrupted and subsequently directed to other workers for further processing.\par The implementation is special as well. It is based on the Clean iData toolkit which makes it possible to create fully dynamic, interactive, thin client web applications. Thanks to the generic programming techniques used in the iData toolkit, the programming effort is reduced significantly: state handling, form rendering, user interaction, and storage management is handled automatically. The iTask system allows a task to be regarded as a special kind of persistent redex being reduced by the application user via task completion. The combinators control the order in which these redexes are made available to the application user. The system rewrites the persistent task redexes in a similar way as functions are rewritten in lazy functional languages.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "clean; iData; iTask", } @Article{Welsh:2007:ERS, author = "Noel Welsh and David Gurnell", title = "Experience report: scheme in commercial {Web} application development", journal = j-SIGPLAN, volume = "42", number = "9", pages = "153--156", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291151.1291175", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Over the past year Untyped has developed some 40'000 lines of Scheme code for a variety of web-based applications, which receive over 10'000 hits a day. This is, to our knowledge, the largest web-based application deployment of PLT Scheme. Our experiences developing with PLT Scheme show that deficiencies in the existing infrastructure can be easily overcome, and we can exploit advanced language features to improve productivity. We conclude that PLT Scheme makes an excellent platform for developing web-based applications, and is competitive with more mainstream choices.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "scheme; web", } @Article{Herman:2007:FPG, author = "David Herman", title = "Functional pearl: the great escape or, how to jump the border without getting caught", journal = j-SIGPLAN, volume = "42", number = "9", pages = "157--164", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291220.1291177", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Filinski showed that callcc and a single mutable reference cell are sufficient to express the delimited control operators shift and reset. However, this implementation interacts poorly with dynamic bindings like exception handlers. We present a variation on Filinski's encoding of delimited continuations that behaves appropriately in the presence of exceptions and give an implementation in Standard ML of New Jersey. We prove the encoding correct with respect to the semantics of delimited dynamic binding.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "continuations; delimited control; dynamic binding", } @Article{Flatt:2007:ADC, author = "Matthew Flatt and Gang Yu and Robert Bruce Findler and Matthias Felleisen", title = "Adding delimited and composable control to a production programming environment", journal = j-SIGPLAN, volume = "42", number = "9", pages = "165--176", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291151.1291178", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Operators for delimiting control and for capturing composable continuations litter the landscape of theoretical programming language research. Numerous papers explain their advantages, how the operators explain each other (or don't), and other aspects of the operators' existence. Production programming languages, however, do not support these operators, partly because their relationship to existing and demonstrably useful constructs --- such as exceptions and dynamic binding --- remains relatively unexplored.\par In this paper, we report on our effort of translating the theory of delimited and composable control into a viable implementation for a production system. The report shows how this effort involved a substantial design element, including work with a formal model, as well as significant practical exploration and engineering.\par The resulting version of PLT Scheme incorporates the expressive combination of delimited and composable control alongside dynamic-wind, dynamic binding, and exception handling. None of the additional operators subvert the intended benefits of existing control operators, so that programmers can freely mix and match control operators.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kennedy:2007:CCC, author = "Andrew Kennedy", title = "Compiling with continuations, continued", journal = j-SIGPLAN, volume = "42", number = "9", pages = "177--190", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291151.1291179", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present a series of CPS-based intermediate languages suitable for functional language compilation, arguing that they have practical benefits over direct-style languages based on A -normal form (ANF) or monads. Inlining of functions demonstrates the benefits most clearly: in ANF-based languages, inlining involves a re-normalization step that rearranges let expressions and possibly introduces a new 'join point' function, and in monadic languages, commuting conversions must be applied; in contrast, inlining in our CPS language is a simple substitution of variables for variables.\par We present a contification transformation implemented by simple rewrites on the intermediate language. Exceptions are modelled using so-called 'double-barrelled' CPS. Subtyping on exception constructors then gives a very straightforward effect analysis for exceptions. We also show how a graph-based representation of CPS terms can be implemented extremely efficiently, with linear-time term simplification.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "continuation passing style; continuations; functional programming languages; monads; optimizing compilation", } @Article{Park:2007:TSH, author = "Sungwoo Park", title = "Type-safe higher-order channels in {ML}-like languages", journal = j-SIGPLAN, volume = "42", number = "9", pages = "191--202", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291220.1291181", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "As a means of transmitting not only data but also code encapsulated within functions, higher-order channels provide an advanced form of task parallelism in parallel computations. In the presence of mutable references, however, they pose a safety problem because references may be transmitted to remote threads where they are no longer valid.\par This paper presents an ML-like parallel language with type-safe higher-order channels. By type safety, we mean that no value written to a channel contains references, or equivalently, that no reference escapes via a channel from the thread where it is created. The type system uses a typing judgment that is capable of deciding whether the value to which a term evaluates contains references or not. The use of such a typing judgment also makes it easy to achieve another desirable feature of channels, channel locality, that associates every channel with a unique thread for serving all values addressed to it.\par Our type system permits mutable references in sequential computations and also ensures that mutable references never interfere with parallel computations. Thus it provides both flexibility in sequential programming and ease of implementing parallel computations.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "channel locality; distributed languages; higher-order channels; parallel languages", } @Article{Nystrom:2007:EHL, author = "Jan Nystr{\"o}m and Phil Trinder and David King", title = "Evaluating high-level distributed language constructs", journal = j-SIGPLAN, volume = "42", number = "9", pages = "203--212", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291151.1291182", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The paper investigates the impact of high level distributed programming language constructs on the engineering of realistic software components. Based on reengineering two non-trivial telecoms components, we compare two high-level distributed functional languages, Erlang and GdH, with conventional distributed technologies C++/CORBA and C++/UDP.\par We investigate several aspects of high-level distributed languages including the impact on code size of high-level constructs. We identify three language constructs that primarily contribute to the reduction in application size and quantify their impact. We provide the first evidence based on analysis of a substantial system to support the widely-held supposition that high-level constructs reduce programming effort associated with specifying distributed coordination. We investigate whether a language with sophisticated high-level fault tolerance can produce suitably robust components, and both measure and analyse the additional programming effort needed to introduce robustness. Finally, we investigate some implications of a range of type systems for engineering distributed software.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "distributed programming; Erlang; Haskell; programming languages", } @Article{Beshers:2007:ERU, author = "Clifford Beshers and David Fox and Jeremy Shaw", title = "Experience report: using functional programming to manage a {Linux} distribution", journal = j-SIGPLAN, volume = "42", number = "9", pages = "213--218", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291151.1291184", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We report on our experience using functional programming languages in the development of a commercial GNU/Linux distribution, discussing features of several significant systems: hardware detection and system configuration; OS installer CD creation; package compilation and management. Static typing helps compensate for the lack of a complete testing lab and helps us be effective with a very small team. Most importantly, we believe that going beyond merely using functional languages to using purely functional designs really helps to create simple, effective tools.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Pfenning:2007:SIT, author = "Frank Pfenning", title = "Subtyping and intersection types revisited", journal = j-SIGPLAN, volume = "42", number = "9", pages = "219--219", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291220.1291153", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Church's system of simple types has proven to be remarkably robust: call-by-name, call-by-need, and call-by-value languages, with or without effects, and even logical frameworks can be based on the same typing rules. When type systems become more expressive, this unity fractures. An early example is the value restriction for parametric polymorphism which is necessary for ML but not Haskell; a later manifestation is the lack of distributivity of function types over intersections in call-by-value languages with effects.\par In this talk we reexamine the logical justification for systems of subtyping and intersection types and then explore the consequences in two different settings: logical frameworks and functional programming.\par In logical frameworks functions are pure and their definitions observable, but complications could arise from the presence of dependent types. We show that this is not the case, and that we can obtain soundness and completeness theorems for a certain axiomatization of subtyping. We also sketch a connection to the type-theoretic notion of proof irrelevance.\par In functional programming we investigate how the encapsulation of effects in monads interacts with subtyping and intersection types, providing an updated analysis of the value restriction and related phenomena. While at present this study is far from complete, we believe that its origin in purely logical notions will give rise to a uniform theory that can easily be adapted to specific languages and their operational interpretations.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenzel:2007:ERB, author = "Leif Frenzel", title = "Experience report: building an eclipse-based {IDE} for {Haskell}", journal = j-SIGPLAN, volume = "42", number = "9", pages = "220--222", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291151.1291186", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper summarizes experiences from an open source project that builds a free Haskell IDE based on Eclipse (an open source IDE platform). Eclipse is extensible and has proved to be a good basis for IDEs for several programming languages. Difficulties arise mainly because it is written in Java and requires extensions to be written in Java. This made it hard to reuse existing development tools implemented in Haskell, and turned out to be a considerable obstacle to finding contributors. Several approaches to resolve these issues are described and their advantages and disadvantages discussed.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ennals:2007:UFF, author = "Rob Ennals and David Gay", title = "User-friendly functional programming for {Web} mashups", journal = j-SIGPLAN, volume = "42", number = "9", pages = "223--234", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291151.1291187", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "MashMaker is a web-based tool that makes it easy for a normal user to create web mashups by browsing around, without needing to type, or plan in advance what they want to do.\par Like a web browser, MashMaker allows users to create mashups by browsing, rather than writing code, and allows users to bookmark interesting things they find, forming new widgets --- reusable mashup fragments. Like a spreadsheet, MashMaker mixes program and data and allows ad-hoc unstructured editing of programs.\par MashMaker is also a modern functional programming language with non-side effecting expressions, higher order functions, and lazy evaluation. MashMaker programs can be manipulated either textually, or through an interactive tree representation, in which a program is presented together with the values it produces.\par In order to cope with this unusual domain, MashMaker contains a number of deviations from normal function languages. The most notable of these is that, in order to allow the programmer to write programs directly on their data, all data is stored in a single tree, and evaluation of an expression always takes place at a specific point in this tree, which also functions as its scope.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "browser; end-used programming; mashup; web", } @Article{Hage:2007:GUA, author = "Jurriaan Hage and Stefan Holdermans and Arie Middelkoop", title = "A generic usage analysis with subeffect qualifiers", journal = j-SIGPLAN, volume = "42", number = "9", pages = "235--246", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291151.1291189", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Sharing analysis and uniqueness typing are static analyses that aim at determining which of a program's objects are to be used at most once. There are many commonalities between these two forms of usage analysis. We make their connection precise by developing an expressive generic analysis that can be instantiated to both sharing analysis and uniqueness typing. The resulting system, which combines parametric polymorphism with effect subsumption, is specified within the general framework of qualified types, so that readily available tools and techniques can be used for the development of implementations and metatheory.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "qualified types; sharing analysis; type and effect systems; uniqueness typing", } @Article{Cooper:2007:ERH, author = "Jonathan Cooper and Steve McKeever", title = "Experience report: a {Haskell} interpreter for {cellML}", journal = j-SIGPLAN, volume = "42", number = "9", pages = "247--250", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291151.1291190", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In this paper we present our use of functional programming (FP), specifically Haskell, to provide an operational semantics for a domain-specific language, CellML, that describes mathematical models of biological processes. We analyse the benefits and shortcomings of this approach, in comparison with other semantic definitions for CellML.\par It is our claim that using FP for our semantics results in a more concise and useful artifact for describing what such a model means. The use of lazy evaluation removes the need to explicitly determine an evaluation order for the model, resulting in a more elegant interpreter. Crucially, using FP enables us to prove the correctness of optimisation techniques for such models. This gives us more confidence in scientific deductions from simulation results. We compare the Python implementation of these optimisation techniques with our use of Haskell in proving their correctness.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "cellML; Haskell", } @Article{Harris:2007:FDI, author = "Tim Harris and Satnam Singh", title = "Feedback directed implicit parallelism", journal = j-SIGPLAN, volume = "42", number = "9", pages = "251--264", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291151.1291192", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In this paper we present an automated way of using spare CPU resources within a shared memory multi-processor or multi-core machine. Our approach is (i) to profile the execution of a program, (ii) from this to identify pieces of work which are promising sources of parallelism, (iii) recompile the program with this work being performed speculatively via a work-stealing system and then (iv) to detect at run-time any attempt to perform operations that would reveal the presence of speculation.\par We assess the practicality of the approach through an implementation based on GHC 6.6 along with a limit study based on the execution profiles we gathered. We support the full Concurrent Haskell language compiled with traditional optimizations and including I/O operations and synchronization as well as pure computation. We use 20 of the larger programs from the 'nofib' benchmark suite. The limit study shows that programs vary a lot in the parallelism we can identify: some have none, 16 have a potential 2x speed-up, 4 have 32x. In practice, on a 4-core processor, we get 10-80\% speed-ups on 7 programs. This is mainly achieved at the addition of a second core rather than beyond this.\par This approach is therefore not a replacement for manual parallelization, but rather a way of squeezing extra performance out of the threads of an already-parallel program or out of a program that has not yet been parallelized.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "functional programming; Haskell; implicit parallelism", } @Article{Brassel:2007:LCV, author = "Bernd Bra{\ss}el and Michael Hanus and Sebastian Fischer and Frank Huch and Germ{\'a}n Vidal", title = "Lazy call-by-value evaluation", journal = j-SIGPLAN, volume = "42", number = "9", pages = "265--276", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291151.1291193", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Designing debugging tools for lazy functional programming languages is a complex task which is often solved by expensive tracing of lazy computations. We present a new approach in which the information collected as a trace is reduced considerably (kilobytes instead of megabytes). The idea is to collect a kind of step information for a call-by-value interpreter, which can then efficiently reconstruct the computation for debugging/viewing tools, like declarative debugging. We show the correctness of the approach, discuss a proof-of-concept implementation with a declarative debugger as back end and present some benchmarks comparing our new approach with the Haskell debugger Hat.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "debugging techniques; laziness", } @Article{Marlow:2007:FLU, author = "Simon Marlow and Alexey Rodriguez Yakushev and Simon Peyton Jones", title = "Faster laziness using dynamic pointer tagging", journal = j-SIGPLAN, volume = "42", number = "9", pages = "277--288", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291151.1291194", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In the light of evidence that Haskell programs compiled by GHC exhibit large numbers of mispredicted branches on modern processors, we re-examine the 'tagless' aspect of the STG-machine that GHC uses as its evaluation model.\par We propose two tagging strategies: a simple strategy called semi-tagging that seeks to avoid one common source of unpredictable indirect jumps, and a more complex strategy called dynamic pointer-tagging that uses the spare low bits in a pointer to encode information about the pointed-to object. Both of these strategies have been implemented and exhaustively measured in the context of a production compiler, GHC, and the paper contains detailed descriptions of the implementations. Our measurements demonstrate significant performance improvements (14\% for dynamic pointer-tagging with only a 2\% increase in code size), and we further demonstrate that much of the improvement can be attributed to the elimination of mispredicted branch instructions.\par As part of our investigations we also discovered that one optimisation in the STG-machine, vectored-returns, is no longer worthwhile and we explain why.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Dreyer:2007:TSR, author = "Derek Dreyer", title = "A type system for recursive modules", journal = j-SIGPLAN, volume = "42", number = "9", pages = "289--302", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291220.1291196", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "There has been much work in recent years on extending ML with recursive modules. One of the most difficult problems in the development of such an extension is the double vision problem, which concerns the interaction of recursion and data abstraction. In previous work, I defined a type system called RTG, which solves the double vision problem at the level of a System-F-style core calculus. In this paper, I scale the ideas and techniques of RTG to the level of a recursive ML-style module calculus called RMC, thus establishing that no tradeoff between data abstraction and recursive modules is necessary. First, I describe RMC's typing rules for recursive modules informally and discuss some of the design questions that arose in developing them. Then, I present the formal semantics of RMC, which is interesting in its own right. The formalization synthesizes aspects of both the Definition and the Harper-Stone interpretation of Standard ML, and includes a novel two-pass algorithm for recursive module typechecking in which the coherence of the two passes is emphasized by their representation in terms of the same set of inference rules.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstract data types; modules; recursion; type systems", } @Article{Ghuloum:2007:IPR, author = "Abdulaziz Ghuloum and R. Kent Dybvig", title = "Implicit phasing for {R6RS} libraries", journal = j-SIGPLAN, volume = "42", number = "9", pages = "303--314", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291220.1291197", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The forthcoming Revised$^6$ Report on Scheme differs from previous reports in that the language it describes is structured as a set of libraries. It also provides a syntax for defining new portable libraries. The same library may export both procedure and hygienic macro definitions, which allows procedures and syntax to be freely intermixed, hidden, and exported.\par This paper describes the design and implementation of a portable version of R$^6$ RS libraries that expands libraries into a core language compatible with existing R$^5$ RS implementations. Our implementation is characterized by its use of inference to determine when the bindings of an imported library are needed, e.g., run time or compile time, relieving programmers of the burden of declaring usage requirements explicitly.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "binding phases; hygienic macros; libraries; macro expansion; scheme", } @Article{Coutts:2007:SFL, author = "Duncan Coutts and Roman Leshchinskiy and Don Stewart", title = "Stream fusion: from lists to streams to nothing at all", journal = j-SIGPLAN, volume = "42", number = "9", pages = "315--326", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291151.1291199", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper presents an automatic deforestation system, stream fusion, based on equational transformations, that fuses a wider range of functions than existing short-cut fusion systems. In particular, stream fusion is able to fuse zips, left folds and functions over nested lists, including list comprehensions. A distinguishing feature of the framework is its simplicity: by transforming list functions to expose their structure, intermediate values are eliminated by general purpose compiler optimisations.\par We have reimplemented the Haskell standard List library on top of our framework, providing stream fusion for Haskell lists. By allowing a wider range of functions to fuse, we see an increase in the number of occurrences of fusion in typical Haskell programs. We present benchmarks documenting time and space improvements.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "deforestation; functional programming; program fusion; program optimisation; program transformation", } @Article{Jones:2007:CPS, author = "Simon Peyton Jones", title = "Call-pattern specialisation for {Haskell} programs", journal = j-SIGPLAN, volume = "42", number = "9", pages = "327--337", month = sep, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1291220.1291200", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 10:59:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "User-defined data types, pattern-matching, and recursion are ubiquitous features of Haskell programs. Sometimes a function is called with arguments that are statically known to be in constructor form, so that the work of pattern-matching is wasted. Even worse, the argument is sometimes freshly-allocated, only to be immediately decomposed by the function.\par In this paper we describe a simple, modular transformation that specialises recursive functions according to their argument 'shapes'. We describe our implementation of this transformation in the Glasgow Haskell Compiler, and give measurements that demonstrate substantial performance improvements: a worthwhile 10\% on average, with a factor of 10 in particular cases.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compilers; Haskell; optimisation; specialisation", } @Article{Ekman:2007:JEJ, author = "Torbj{\"o}rn Ekman and G{\"o}rel Hedin", title = "The {JastAdd} Extensible {Java} compiler", journal = j-SIGPLAN, volume = "42", number = "10", pages = "1--18", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297027.1297029", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The JastAdd Extensible Java Compiler is a high quality Java compiler that is easy to extend in order to build static analysis tools for Java, and to extend Java with new language constructs. It is built modularly, with a Java 1.4 compiler that is extended to a Java 5 compiler. Example applications that are built as extensions include an alternative backend that generates Jimple, an extension of Java with AspectJ constructs, and the implementation of a pluggable type system for non-null checking and inference.\par The system is implemented using JastAdd, a declarative Java-like language. We describe the compiler architecture, the major design ideas for building and extending the compiler, in particular, for dealing with complex extensions that affect name and type analysis. Our extensible compiler compares very favorably concerning quality, speed and size with other extensible Java compiler frameworks. It also compares favorably in quality and size compared with traditional non-extensible Java compilers, and it runs within a factor of three compared to javac.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compilers; declarative frameworks; extensibility; Java; modularity; OOP", } @Article{Hirzel:2007:JGJ, author = "Martin Hirzel and Robert Grimm", title = "{Jeannie}: granting {Java Native Interface} developers their wishes", journal = j-SIGPLAN, volume = "42", number = "10", pages = "19--38", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297027.1297030", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Higher-level languages interface with lower-level languages such as C to access platform functionality, reuse legacy libraries, or improve performance. This raises the issue of how to best integrate different languages while also reconciling productivity, safety, portability, and efficiency. This paper presents Jeannie, a new language design for integrating Java with C. In Jeannie, both Javaand C code are nested within each other in the same file and compile down to JNI, the Java platform's standard foreign function interface. By combining the two languages' syntax and semantics, Jeannie eliminates verbose boiler-plate code, enables static error detection across the language boundary, and simplifies dynamic resource management. We describe the Jeannie language and its compiler, while also highlighting lessons from composing two mature programming languages.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "C; foreign function interface; Java; JNI; modular syntax; programming language composition; rats!; xtc", } @Article{Tan:2007:IIL, author = "Gang Tan and Greg Morrisett", title = "{Ilea}: inter-language analysis across {Java} and {C}", journal = j-SIGPLAN, volume = "42", number = "10", pages = "39--56", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297027.1297031", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Java bug finders perform static analysis to find implementation mistakes that can lead to exploits and failures; Java compilers perform static analysis for optimization. If Java programs contain foreign function calls to C libraries, however, static analysis is forced to make either optimistic or pessimistic assumptions about the foreign function calls, since models of the C libraries are typically not available.\par We propose ILEA (stands for Inter-LanguagE Analysis), which is a framework that enables existing Java analyses to understand the behavior of C code. Our framework includes: (1) a novel specification language, which extends the Java Virtual Machine Language (JVML) with a few primitives that approximate the effects that the C code might have; (2) an automatic specification extractor, which builds models of the C code. Comparing to other possible specification languages, our language is expressive, yet facilitates construction of automatic specification extractors. Furthermore, because the specification language is based on the JVML, existing Java analyses can be easily migrated to utilize specifications in the language. We also demonstrate the utility of the specifications generated, by modifying an existing non-null analysis to identify null-related bugs in Java applications that contain C libraries. Our preliminary experiments identified dozens of null-related bugs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "inter-language analysis; Java Native Interface; JNI; JVML; specification extraction", } @Article{Georges:2007:SRJ, author = "Andy Georges and Dries Buytaert and Lieven Eeckhout", title = "Statistically rigorous {Java} performance evaluation", journal = j-SIGPLAN, volume = "42", number = "10", pages = "57--76", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297027.1297033", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Java performance is far from being trivial to benchmark because it is affected by various factors such as the Java application, its input, the virtual machine, the garbage collector, the heap size, etc. In addition, non-determinism at run-time causes the execution time of a Java program to differ from run to run. There are a number of sources of non-determinism such as Just-In-Time (JIT) compilation and optimization in the virtual machine (VM) driven by timer-based method sampling, thread scheduling, garbage collection, and various.\par There exist a wide variety of Java performance evaluation methodologies used by researchers and benchmarkers. These methodologies differ from each other in a number of ways. Some report average performance over a number of runs of the same experiment; others report the best or second best performance observed; yet others report the worst. Some iterate the benchmark multiple times within a single VM invocation; others consider multiple VM invocations and iterate a single benchmark execution; yet others consider multiple VM invocations and iterate the benchmark multiple times.\par This paper shows that prevalent methodologies can be misleading, and can even lead to incorrect conclusions. The reason is that the data analysis is not statistically rigorous. In this paper, we present a survey of existing Java performance evaluation methodologies and discuss the importance of statistically rigorous data analysis for dealing with non-determinism. We advocate approaches to quantify startup as well as steady-state performance, and, in addition, we provide the JavaStats software to automatically obtain performance numbers in a rigorous manner. Although this paper focuses on Java performance evaluation, many of the issues addressed in this paper also apply to other programming languages and systems that build on a managed runtime system.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "benchmarking; data analysis; Java; methodology; statistics", } @Article{Xian:2007:MAP, author = "Feng Xian and Witawas Srisa-an and Hong Jiang", title = "{Microphase}: an approach to proactively invoking garbage collection for improved performance", journal = j-SIGPLAN, volume = "42", number = "10", pages = "77--96", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297027.1297034", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "To date, the most commonly used criterion for invoking garbage collection (GC) is based on heap usage; that is, garbage collection is invoked when the heap or an area inside the heap is full. This approach can suffer from two performance shortcomings: untimely garbage collection invocations and large volumes of surviving objects. In this work, we explore a new GC triggering approach called MicroPhase that exploits two observations: (i) allocation requests occur in phases and (ii) phase boundaries coincide with times when most objects also die. Thus, proactively invoking garbage collection at these phase boundaries can yield high efficiency. We extended the HotSpot virtual machine from Sun Microsystems to support MicroPhase and conducted experiments using 20 benchmarks. The experimental results indicate that our technique can reduce the GC times in 19 applications. The differences in GC overhead range from an increase of 1\% to a decrease of 26\% when the heap is set to twice the maximum live-size. As a result, MicroPhase can improve the overall performance of 13 benchmarks. The performance differences range from a degradation of 2.5\% to an improvement of 14\%.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "execution phase; garbage collection", } @Article{Bond:2007:PCC, author = "Michael D. Bond and Kathryn S. McKinley", title = "Probabilistic calling context", journal = j-SIGPLAN, volume = "42", number = "10", pages = "97--112", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297027.1297035", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Calling context enhances program understanding and dynamic analyses by providing a rich representation of program location. Compared to imperative programs, object-oriented programs use more interprocedural and less intraprocedural control flow, increasing the importance of context sensitivity for analysis. However, prior online methods for computing calling context, such as stack-walking or maintaining the current location in a calling context tree, are expensive in time and space. This paper introduces a new online approach called probabilistic calling context (PCC) that continuously maintains a probabilistically unique value representing the current calling context. For millions of unique contexts, a 32-bit PCC value has few conflicts. Computing the PCC value adds 3\% average overhead to a Java virtual machine. PCC is well-suited to clients that detect new or anomalous behavior since PCC values from training and production runs can be compared easily to detect new context-sensitive behavior; clients that query the PCC value at every system call, Java utility call, and Java API call add 0-9\% overhead on average. PCC adds space overhead proportional to the distinct contexts stored by the client (one word per context). Our results indicate PCC is efficient and accurate enough to use in deployed software for residual testing, bug detection, and intrusion detection.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "anomaly-based bug detection; calling context; dynamic context sensitivity; intrusion detection; managed languages; probabilistic; residual testing", } @Article{Igarashi:2007:VPT, author = "Atsushi Igarashi and Mirko Viroli", title = "Variant path types for scalable extensibility", journal = j-SIGPLAN, volume = "42", number = "10", pages = "113--132", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297027.1297037", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Much recent work in the design of object-oriented programming languages has been focusing on identifying suitable features to support so-called scalable extensibility, where the usual extension mechanism by inheritance works in different scales of software components-that is, classes, groups of classes, groups of groups and so on. Its typing issues has usually been addressed by means of dependent type systems, where nested types are seen as properties of objects. In this work, we seek instead for a different solution, which can be more easily applied to Java-like languages, in which nested types are considered properties of classes.\par We introduce the mechanism of variant path types, which provide a flexible means to express intra-group relationship (among classes) that has to be preserved through extension. In particular, improving and extending existing works on groups and exact types, we feature the new notions of exact and inexact qualifications, providing rich abstractions to express various kinds of set of objects, with a flexible subtyping scheme. We formalize a safe type system for variant path types on top of Feather weight Java. Our development results in a complete solution for scalable extensibility, similarly to previous attempts based on dependent type systems.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "scalable extensibility; subtyping; variance; variant path types", } @Article{Gasiunas:2007:DC, author = "Vaidas Gasiunas and Mira Mezini and Klaus Ostermann", title = "Dependent classes", journal = j-SIGPLAN, volume = "42", number = "10", pages = "133--152", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297027.1297038", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Virtual classes allow nested classes to be refined in subclasses. In this way nested classes can be seen as dependent abstractions of the objects of the enclosing classes. Expressing dependency via nesting, however, has two limitations: Abstractions that depend on more than one object cannot be modeled and a class must know all classes that depend on its objects. This paper presents dependent classes, a generalization of virtual classes that expresses similar semantics by parameterization rather than by nesting. This increases expressivity of class variations as well as the flexibility of their modularization. Besides, dependent classes complement multimethods in scenarios where multi-dispatched abstractions rather than multi-dispatched methods are needed. They can also be used to express more precise signatures of multimethods and even extend their dispatch semantics. We present a formal semantics of dependent classes and a machine-checked type soundness proof in Isabelle/HOL [29], the first of this kind for a language with virtual classes and path-dependent types.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dependent classes; dynamic dispatch; multimethods; multiple dispatch; variability; virtual classes", } @Article{Sasitorn:2007:CNS, author = "James Sasitorn and Robert Cartwright", title = "Component {NEXTGEN}: a sound and expressive component framework for {Java}", journal = j-SIGPLAN, volume = "42", number = "10", pages = "153--170", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297105.1297039", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Developing a general component system for a statically typed, object-oriented language is a challenging design problem for two reasons. First, mutually recursive references across components are common in object-oriented programs --- an issue that has proven troublesome in the context of component systems for functional and procedural languages. Second, inheritance across component boundaries can cause accidental method overrides. Our recent research shows that a component framework can be constructed for a nominally typed object-oriented language supporting first-class generic types simply by adding appropriate annotations, syntactic sugar, and component-level type-checking. The fundamental semantic building blocks for constructing, type-checking and manipulating components are provided by the underlying first-class generic type system. To demonstrate the simplicity and utility of this approach we have designed and implemented an extension of Java called Component NEXTGEN (CGEN). CGEN, which is based on the Sun Java 5.0 javac compiler, is backwards compatible with existing Java binary code and runs on current Java Virtual Machines.\par The primary contribution of this paper is a technical analysis of the subtle design issues involved in building a component framework for a nominally typed object-oriented language supporting first-class generics. In contrast to component systems for structurally typed languages, mutual recursion among components is accommodated in the type system and semantics without incorporating any special machinery. Our analysis includes a presentation of Core CGEN (CCG), a small, core language modeling the CGEN framework. It is based on Featherweight GJ and incorporates some ideas from MIXGEN. CCG adds the essential features to support components, but nothing more. Our discussion includes the type rules and semantics for CCG, as well as a proof of type safety.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "components; custom class loader; first-class generics; Java implementation; modules; signatures", } @Article{Ducasse:2007:UCV, author = "St{\'e}phane Ducasse and Roel Wuyts and Alexandre Bergel and Oscar Nierstrasz", title = "User-changeable visibility: resolving unanticipated name clashes in traits", journal = j-SIGPLAN, volume = "42", number = "10", pages = "171--190", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297105.1297040", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A trait is a unit of behaviour that can be composed with other traits and used by classes. Traits offer an alternative to multiple inheritance. Conflict resolution of traits, while flexible, does not completely handle accidental method name conflicts: if a trait with method $m$ is composed with another trait defining a different method $m$ then resolving the conflict may prove delicate or infeasible in cases where both versions of $m$ are still needed. In this paper we present freezeable traits, which provide an expressive composition mechanism to support unanticipated method composition conflicts. Our solution introduces private trait methods and lets the class composer change method visibility at composition time (from public to private and vice versa). Moreover two class composers may use different composition policies for the same trait, something which is not possible in mainstream languages. This approach respects the two main design principles of traits: the class composer is empowered and traits can be flattened away. We present an implementation of freezable traits in Smalltalk. As a side-effect of this implementation we introduced private (early-bound and invisible) methods to Smalltalk by distinguishing object-sends from self-sends. Our implementation uses compile-time bytecode manipulation and, as such, introduces no run-time penalties.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "composition; dynamic typing; encapsulation; information hiding; traits", } @Article{Smaragdakis:2007:TIC, author = "Yannis Smaragdakis and Anthony Kay and Reimer Behrends and Michal Young", title = "Transactions with isolation and cooperation", journal = j-SIGPLAN, volume = "42", number = "10", pages = "191--210", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297027.1297042", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present the TIC (Transactions with Isolation and Cooperation) model for concurrent programming. TIC adds to standard transactional memory the ability for a transaction to observe the effects of other threads at selected points. This allows transactions to cooperate, as well as to invoke nonrepeatable or irreversible operations, such as I/O. Cooperating transactions run the danger of exposing intermediate state and of having other threads change the transaction's state. The TIC model protects against unanticipated interference by having the type system keep track of all operations that may (transitively) violate the atomicity of a transaction and require the programmer to establish consistency at appropriate points. The result is a programming model that is both general and simple. We have used the TIC model to re-engineer existing lock-based applications including a substantial multi-threaded web mail server and a memory allocator with coarse-grained locking. Our experience confirms the features of the TIC model: It is convenient for the programmer, while maintaining the benefits of transactional memory.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "nested transactions; open-nesting; punctuation; TIC; transactional memory", } @Article{Spring:2007:SHT, author = "Jesper H. Spring and Jean Privat and Rachid Guerraoui and Jan Vitek", title = "{StreamFlex}: high-throughput stream programming in {Java}", journal = j-SIGPLAN, volume = "42", number = "10", pages = "211--228", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297105.1297043", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The stream programming paradigm aims to expose coarse-grained parallelism in applications that must process continuous sequences of events. The appeal of stream programming comes from its conceptual simplicity. A program is a collection of independent filters which communicate by the means of uni-directional data channels. This model lends itself naturally to concurrent and efficient implementations on modern multiprocessors. As the output behavior of filters is determined by the state of their input channels, stream programs have fewer opportunities for the errors (such as data races and deadlocks) that plague shared memory concurrent programming. This paper introduces StreamFlex, an extension to Java which marries streams with objects and thus enables to combine, in the same Java virtual machine, stream processing code with traditional object-oriented components. StreamFlex targets high-throughput low-latency applications with stringent quality-of-service requirements. To achieve these goals, it must, at the same time, extend and restrict Java. To allow for program optimization and provide latency guarantees, the StreamFlex compiler restricts Java by imposing a stricter typing discipline on filters. On the other hand, StreamFlex extends the Java virtual machine with real-time capabilities, transactional memory and type-safe region-based allocation. The result is a rich and expressive language that can be implemented efficiently.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "Java Virtual Machine; memory management; ownership types; real-time systems; stream processing", } @Article{Kuehne:2007:CPL, author = "Thomas Kuehne and Daniel Schreiber", title = "Can programming be liberated from the two-level style: multi-level programming with {DeepJava}", journal = j-SIGPLAN, volume = "42", number = "10", pages = "229--244", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297027.1297044", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Since the introduction of object-oriented programming few programming languages have attempted to provide programmers with more than objects and classes, i.e., more than two levels. Those that did, almost exclusively aimed at describing language properties-i.e., their metaclasses exert linguistic control on language concepts and mechanisms-often in order to make the language extensible. In terms of supporting logical domain classification levels, however, they are still limited to two levels.\par In this paper we conservatively extend the object-oriented programming paradigm to feature an unbounded number of domain classification levels. We can therefore avoid the introduction of accidental complexity into programs caused by accommodating multiple domain levels within only two programming levels. We present a corresponding language design featuring ``deep instantiation'' and demonstrate its features with a running example. Finally, we outline the implementation of our compiler prototype and discuss the potentials of further developing our language design.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "deep characterization; domain metatypes; ontological metamodeling", } @Article{Mitchell:2007:CBL, author = "Nick Mitchell and Gary Sevitsky", title = "The causes of bloat, the limits of health", journal = j-SIGPLAN, volume = "42", number = "10", pages = "245--260", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297105.1297046", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Applications often have large runtime memory requirements. In some cases, large memory footprint helps accomplish an important functional, performance, or engineering requirement. A large cache,for example, may ameliorate a pernicious performance problem. In general, however, finding a good balance between memory consumption and other requirements is quite challenging. To do so, the development team must distinguish effective from excessive use of memory.\par We introduce health signatures to enable these distinctions. Using data from dozens of applications and benchmarks, we show that they provide concise and application-neutral summaries of footprint. We show how to use them to form value judgments about whether a design or implementation choice is good or bad. We show how being independent of any application eases comparison across disparate implementations. We demonstrate the asymptotic nature of memory health: certain designs are limited in the health they can achieve, no matter how much the data size scales up. Finally, we show how to use health signatures to automatically generate formulas that predict this asymptotic behavior, and show how they enable powerful limit studies on memory health.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bloat; limit studies; memory footprint; metrics", } @Article{Dekel:2007:NRC, author = "Uri Dekel and James D. Herbsleb", title = "Notation and representation in collaborative object-oriented design: an observational study", journal = j-SIGPLAN, volume = "42", number = "10", pages = "261--280", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297105.1297047", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Software designers in the object-oriented paradigm can make use of modeling tools and standard notations such as UML. Nevertheless, casual observations from collocated design collaborations suggest that teams tend to use physical mediums to sketch a plethora of informal diagrams in varied representations that often diverge from UML. To better understand such collaborations and support them with tools, we need to understand the origins, roles, uses, and implications of these alternate representations. To this end we conducted observational studies of collaborative design exercises, in which we focused on representation use.\par Our primary finding is that teams intentionally improviserepresentations and organize design information in response to ad-hoc needs, which arise from the evolution of the design, and which are difficult to meet with fixed standard notations. This behavior incurs orientation and grounding difficulties for which teams compensate by relying on memory, other communication mediums, and contextual cues. Without this additional information the artifacts are difficult to interpret and have limited documentation potential. Collaborative design tools and processes should therefore focus on preserving contextual information while permitting unconstrained mixing and improvising of notations.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "collaborative software design; modeling; notation; OOD; representation; UML", } @Article{Leff:2007:WEV, author = "Avraham Leff and James T. Rayfield", title = "{WebRB}: evaluating a visual domain-specific language for building relational web-applications", journal = j-SIGPLAN, volume = "42", number = "10", pages = "281--300", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297105.1297048", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Many web-applications can be characterized as 'relational'. In this paper we introduce and evaluate WebRB, a visual domain-specific language for building such applications. WebRB addresses the limitations of the conventional 'imperative-embedding' approach typically used to build relational web-applications. We describe the WebRB language, present extended examples of its use, and discuss the WebRB visual editor, libraries, and runtime. We then evaluate WebRB by comparing it to alternative approaches, and demonstrate its effectiveness in building relational web-applications.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "data-flow languages; relational web-applications; visual programming languages; web relational blocks; web-application development; WebRB", } @Article{Bierhoff:2007:MTC, author = "Kevin Bierhoff and Jonathan Aldrich", title = "Modular typestate checking of aliased objects", journal = j-SIGPLAN, volume = "42", number = "10", pages = "301--320", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297027.1297050", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Objects often define usage protocols that clients must follow in order for these objects to work properly. Aliasing makes it notoriously difficult to check whether clients and implementations are compliant with such protocols. Accordingly, existing approaches either operate globally or severely restrict aliasing.\par We have developed a sound modular protocol checking approach, based on typestates, that allows a great deal of flexibility in aliasing while guaranteeing the absence of protocol violations at runtime. The main technical contribution is a novel abstraction, access permissions, that combines typestate and object aliasing information. In our methodology, developers express their protocol design intent through annotations based on access permissions. Our checking approach then tracks permissions through method implementations. For each object reference the checker keeps track of the degree of possible aliasing and is appropriately conservative in reasoning about that reference. This helps developers account for object manipulations that may occur through aliases. The checking approach handles inheritance in a novel way, giving subclasses more flexibility in method overriding. Case studies on Java iterators and streams provide evidence that access permissions can model realistic protocols, and protocol checking based on access permissions can be used to reason precisely about the protocols that arise in practice.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "aliasing; behavioral subtyping; linear logic; permissions; typestates", } @Article{Greenfieldboyce:2007:TQI, author = "David Greenfieldboyce and Jeffrey S. Foster", title = "Type qualifier inference for {Java}", journal = j-SIGPLAN, volume = "42", number = "10", pages = "321--336", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297027.1297051", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Java's type system provides programmers with strong guarantees of type and memory safety, but there are many important properties not captured by standard Java types. We describe JQual, a tool that adds user-defined type qualifiers to Java, allowing programmers to quickly and easily incorporate extra lightweight, application-specific type checking into their programs. JQual provides type qualifier inference, so that programmers need only add a few key qualifier annotations to their program, and then JQual infers any remaining qualifiers and checks their consistency. We explore two applications of JQual. First, we introduce opaque and enum qualifiers to track C pointers and enumerations that flow through Java code via the JNI. In our benchmarks we found that these C values are treated correctly, but there are some places where a client could potentially violate safety. Second,we introduce a read only qualifier for annotating references that cannot be used to modify the objects they refer to. We found that JQual is able to automatically infer read only in many places on method signatures. These results suggest that type qualifiers and type qualifier inference are a useful addition to Java.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "context-free language reachability; context-sensitivity; field-sensitivity; Java; JQual; mutable; opaque; readonly; tracked; transparent; type qualifiers", } @Article{Fahndrich:2007:EOI, author = "Manuel Fahndrich and Songtao Xia", title = "Establishing object invariants with delayed types", journal = j-SIGPLAN, volume = "42", number = "10", pages = "337--350", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297027.1297052", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Mainstream object-oriented languages such as C\# and Java provide an initialization model for objects that does not guarantee programmer controlled initialization of fields. Instead, all fields are initialized to default values (0 for scalars and null for non-scalars) on allocation. This is in stark contrast to functional languages, where all parts of an allocation are initialized to programmer-provided values. These choices have a direct impact on two main issues: 1) the prevalence of null in object oriented languages (and its general absence in functional languages), and 2) the ability to initialize circular data structures. This paper explores connections between these differing approaches and proposes a fresh look at initialization. Delayed types are introduced to express and formalize prevalent initialization patterns in object-oriented languages.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "initialization; non-null types; object invariants", } @Article{Shaner:2007:MVH, author = "Steve M. Shaner and Gary T. Leavens and David A. Naumann", title = "Modular verification of higher-order methods with mandatory calls specified by model programs", journal = j-SIGPLAN, volume = "42", number = "10", pages = "351--368", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297105.1297053", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "What we call a ''higher-order method' (HOM) is a method that makes mandatory calls to other dynamically-dispatched methods. Examples include template methods as in the Template method design pattern and notify methods in the Observer pattern. HOMs are particularly difficult to reason about, because standard pre- and postcondition specifications cannot describe the mandatory calls. For reasoning about such methods, existing approaches use either higher order logic or traces, but both are complex and verbose.\par We describe a simple, concise, and modular approach to specifying HOMs We show how to verify calls to HOMs and their code using first-order verification conditions, in a sound and modular way.\par Verification of client code that calls HOMs can take advantage of the client's knowledge about the mandatory calls to make strong conclusions. Our verification technique validates and explains traditional documentation practice for HOMs, which typically shows their code. However, specifications do not have to expose all of the code to clients, but only enough to determine how the HOM makes its mandatory calls.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "grey-box approach; higher order method; Hoare logic; mandatory call; model program; refinement calculus; specification languages; verification", } @Article{Rinard:2007:UEP, author = "Martin C. Rinard", title = "Using early phase termination to eliminate load imbalances at barrier synchronization points", journal = j-SIGPLAN, volume = "42", number = "10", pages = "369--386", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297027.1297055", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present a new technique, early phase termination, for eliminating idle processors in parallel computations that use barrier synchronization. This technique simply terminates each parallel phase as soon as there are too few remaining tasks to keep all of the processors busy.\par Although this technique completely eliminates the idling that would other wise occur at barrier synchronization points, it may also change the computation and therefore the result that the computation produces. We address this issue by providing probabilistic distortion models that characterize how the use of early phase termination distorts the result that the computation produces. Our experimental results show that for our set of benchmark applications, 1) early phase termination can improve the performance of the parallel computation, 2) the distortion is small (or can be made to be small with the use of an appropriate compensation technique) and 3) the distortion models provide accurate and tight distortion bounds. These bounds can enable users to evaluate the effect of early phase termination and confidently accept results from parallel computations that use this technique if they find the distortion bounds to be acceptable.\par Finally, we identify a general computational pattern that works well with early phase termination and explain why computations that exhibit this pattern can tolerate the early termination of parallel tasks without producing unacceptable results.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "barrier synchronization; early phase termination; parallel computing; probabilistic distortion models", } @Article{Elkarablieh:2007:SSA, author = "Bassem Elkarablieh and Sarfraz Khurshid and Duy Vu and Kathryn S. McKinley", title = "{STARC}: static analysis for efficient repair of complex data", journal = j-SIGPLAN, volume = "42", number = "10", pages = "387--404", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297105.1297056", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Data structure corruptions are insidious bugs that reduce the reliability of software systems. Constraint-based datastructure repair promises to help programs recover from potentially crippling corruption errors. Prior work repairs a variety of relatively small data structures, usually with hundreds of nodes.\par We present STARC which uses static analysis to repair data structures with tens of thousands of nodes. Given a Java predicate method that describes the integrity constraints of a structure, STARC statically analyzes the method to identify: (1) the recurrent fields, i.e., fields that the predicate method uses to traverse the structure; and (2) local field constraints, i.e., how the value of an object field is related to the value of a neighboring object field. STARC executes the predicate method on the structure and monitors its execution to identify corrupt object fields, which STARC then repairs using a systematic search of a neighborhood of the given structure. Each repair action is guided by the result of the static analysis, which enables more efficient and effective repair compared to prior work. Experimental results show that STARC can repair structures with tens of thousands of nodes, up to 100 times larger than prior work.\par STARC efficiency is probably not practical for very large data structures in deployed systems, but opens a promising direction for future work.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "data structure repair; static analysis; symbolic execution", } @Article{Bond:2007:TBA, author = "Michael D. Bond and Nicholas Nethercote and Stephen W. Kent and Samuel Z. Guyer and Kathryn S. McKinley", title = "Tracking bad apples: reporting the origin of null and undefined value errors", journal = j-SIGPLAN, volume = "42", number = "10", pages = "405--422", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297027.1297057", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Programs sometimes crash due to unusable values, for example, when Java and C\# programs dereference null pointers and when C and C++ programs use undefined values to affect program behavior. A stack trace produced on such a crash identifies the effect of the unusable value, not its cause, and is often not much help to the programmer.\par This paper presents efficient origin tracking of unusable values; it shows how to record where these values come into existence, correctly propagate them, and report them if they cause an error. The key idea is value piggybacking: when the original program stores an unusable value, value piggybacking instead stores origin information in the spare bits of the unusable value. Modest compiler support alters the program to propagate these modified values through operations such as assignments and comparisons. We evaluate two implementations: the first tracks null pointer origins in a JVM, and the second tracks undefined value origins in a memory-checking tool built with Valgrind. These implementations show that origin tracking via value piggybacking is fast and often useful, and in the Java case, has low enough overhead for use in a production environment.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "debugging; Java; low-overhead run-time support; managed languages; null pointer exceptions; undefined values; valgrind", } @Article{Ma:2007:IAE, author = "Kin-Keung Ma and Jeffrey S. Foster", title = "Inferring aliasing and encapsulation properties for {Java}", journal = j-SIGPLAN, volume = "42", number = "10", pages = "423--440", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297105.1297059", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "There are many proposals for language techniques to control aliasing and encapsulation in object oriented programs, typically based on notions of object ownership and pointer uniqueness. Most of these systems require extensive manual annotations, and thus there is little experience with these properties in large, existing Java code bases. To remedy this situation, we present Uno, a novel static analysis for automatically inferring ownership, uniqueness, and other aliasing and encapsulation properties in Java. Our analysis requires no annotations, and combines an intraprocedural points-to analysis with an interprocedural, demand-driven predicate resolution algorithm. We have applied Uno to a variety of Java applications and found that some aliasing properties, such as temporarily lending a reference to a method, are common, while others, in particular field and argument ownership, are relatively uncommon. As a result, we believe that Uno can be a valuable tool for discovering and understanding aliasing and encapsulation in Java programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "aliasing; encapsulation; Java; lending; ownership; ownership inference; uniqueness; uniqueness inference; Uno", } @Article{Cameron:2007:MO, author = "Nicholas R. Cameron and Sophia Drossopoulou and James Noble and Matthew J. Smith", title = "Multiple ownership", journal = j-SIGPLAN, volume = "42", number = "10", pages = "441--460", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297027.1297060", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Existing ownership type systems require objects to have precisely one primary owner, organizing the heap into an ownership tree. Unfortunately, a tree structure is too restrictive for many programs, and prevents many common design patterns where multiple objects interact.\par Multiple Ownership is an ownership type system where objects can have more than one owner, and the resulting ownership structure forms a DAG. We give a straightforward model for multiple ownership, focusing in particular on how multiple ownership can support a powerful effects system that determines when two computations interfere-in spite of the DAG structure.\par We present a core programming language MOJO, Multiple ownership for Java-like Objects, including a type and effects system, and soundness proof. In comparison to other systems, MOJO imposes absolutely no restrictions on pointers, modifications or programs' structure, but in spite of this, MOJO's effects can be used to reason about or describe programs' behaviour.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "effects; ownership types; type and effect systems", } @Article{Muller:2007:OTU, author = "Peter M{\"u}ller and Arsenii Rudich", title = "Ownership transfer in universe types", journal = j-SIGPLAN, volume = "42", number = "10", pages = "461--478", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297027.1297061", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Ownership simplifies reasoning about object-oriented programs by controlling aliasing and modifications of objects. Several type systems have been proposed to express and check ownership statically.\par For ownership systems to be practical, they must allow objects to migrate from one owner to another. This ownership transfer is common and occurs, for instance, during the initialization of data structures and when data structures are merged. However, existing ownership type systems either do not support ownership transfer at all or they are too restrictive, give rather weak static guarantees, or require a high annotation overhead.\par In this paper, we present UTT, an extension of Universe Types that supports ownership transfer. UTT combines ownership type checking with a modular static analysis to control references to transferable objects. UTT is very flexible because it permits temporary aliases, even across certain method calls. Nevertheless, it guarantees statically that a cluster of objects is externally-unique when it is transferred and, thus, that ownership transfer is type safe. UTT provides the same encapsulation as Universe Types and requires only negligible annotation overhead.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "aliasing; ownership transfer; uniqueness; universe types", } @Article{Bierman:2007:LTF, author = "Gavin M. Bierman and Erik Meijer and Mads Torgersen", title = "Lost in translation: formalizing proposed extensions to {C\#}", journal = j-SIGPLAN, volume = "42", number = "10", pages = "479--498", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297105.1297063", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Current real-world software applications typically involve heavy use of relational and XML data and their query languages. Unfortunately object-oriented languages and database query languages are based on different semantic foundations and optimization strategies. The resulting ''ROX (Relations, Objects, XML) impedance mismatch'' makes life very difficult for developers.\par Microsoft Corporation is developing extensions to the .NET framework to facilitate easier processing of non-object-oriented data models. Part of this project (known as 'LINQ') includes various extensions to the .NET languages to leverage this support.\par In this paper we consider proposals for C$^\#$ 3.0, the next version of the C$^\#$ programming language. We give both an informal introduction to the new language features, and a precise formal account by defining a translation from C$^\#$ 3.0 to C$^\#$ 2.0. This translation also demonstrates how these language extensions do not require any changes to the underlying CLR.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "C\#; LINQ", } @Article{Strnisa:2007:JMS, author = "Rok Strni{\v{s}}a and Peter Sewell and Matthew Parkinson", title = "The {Java} module system: core design and semantic definition", journal = j-SIGPLAN, volume = "42", number = "10", pages = "499--514", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297027.1297064", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Java has no module system. Its packages only subdivide the class name space, allowing only a very limited form of component-level information hiding and reuse. Two Java Community Processes have started addressing this problem: one describes the runtime system and has reached an early draft stage, while the other considers the developer's view and only has a straw-man proposal. Both are natural language documents, which inevitably contain ambiguities.\par In this work we design and formalize a core module system for Java. Where the JCP documents are complete, we follow them closely; elsewhere we make reasonable choices. We define the syntax, the type system, and the operational semantics of an LJAM language, defining these rigorously in the Isabelle/HOL automated proof assistant. Using this formalization, we identify various issues with the module system. We highlight the underlying design decisions, and discuss several alternatives and their benefits. Our Isabelle/HOL definitions should provide a basis for further consideration of the design alternatives, for reference implementations, and for proofs of soundness.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "JAM; Java; LJAM; module; superpackage", } @Article{Kojarski:2007:AAC, author = "Sergei Kojarski and David H. Lorenz", title = "{Awesome}: an aspect co-weaving system for composing multiple aspect-oriented extensions", journal = j-SIGPLAN, volume = "42", number = "10", pages = "515--534", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297105.1297065", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Domain specific aspect-oriented language extensions offer unique capabilities to deal with a variety of cross cutting concerns. Ideally, one should be able to use several of these extensions together in a single program. Unfortunately, each extension generally implements its own specialized weaver and the different weavers are incompatible. Even if the weavers were compatible, combining them is a difficult problem to solve in general, because each extension defines its own language with new semantics. In this paper we present a practical composition framework, named Awesome, for constructing a multi-extension weaver by plugging together independently developed aspect mechanisms. The framework has a component-based and aspect-oriented architecture that facilitates the development and integration of aspect weavers. To be scalable, the framework provides a default resolution of feature interactions in the composition. To be general, the framework provides means for customizing the composition behavior. Furthermore, to be practically useful, there is no framework-associated overhead on the runtime performance of compiled aspect programs. To illustrate the Awesome framework concretely, we demonstrate the construction of a weaver for a multi-extension AOP language that combines Cool and AspectJ. However, the composition method is not exclusive to Cool and AspectJ-it can be applied to combine any comparable reactive aspect mechanisms.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "AOP; aspect extension; aspect mechanism; aspect weaver; composition; DSL; framework; pluggability", } @Article{Pothier:2007:SOD, author = "Guillaume Pothier and {\'E}ric Tanter and Jos{\'e} Piquer", title = "Scalable omniscient debugging", journal = j-SIGPLAN, volume = "42", number = "10", pages = "535--552", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297105.1297067", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Omniscient debuggers make it possible to navigate backwards in time within a program execution trace, drastically improving the task of debugging complex applications. Still, they are mostly ignored in practice due to the challenges raised by the potentially huge size of the execution traces. This paper shows that omniscient debugging can be realistically realized through the use of different techniques addressing efficiency, scalability and usability. We present TOD, a portable Trace-Oriented Debugger for Java, which combines an efficient instrumentation for event generation, a specialized distributed database for scalable storage and efficient querying, support for partial traces in order to reduce the trace volume to relevant events, and innovative interface components for interactive trace navigation and analysis in the development environment. Provided a reasonable infrastructure, the performance of TOD allows a responsive debugging experience in the face of large programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "execution traces; interface components; omniscient debugging; partial traces; scalability; specialized distributed database", } @Article{Buytaert:2007:UHS, author = "Dries Buytaert and Andy Georges and Michael Hind and Matthew Arnold and Lieven Eeckhout and Koen {De Bosschere}", title = "Using {HPM}-sampling to drive dynamic compilation", journal = j-SIGPLAN, volume = "42", number = "10", pages = "553--568", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297105.1297068", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "All high-performance production JVMs employ an adaptive strategy for program execution. Methods are first executed unoptimized and then an online profiling mechanism is used to find a subset of methods that should be optimized during the same execution. This paper empirically evaluates the design space of several profilers for initiating dynamic compilation and shows that existing online profiling schemes suffer from several limitations. They provide an insufficient number of samples, are untimely, and have limited accuracy at determining the frequently executed methods. We describe and comprehensively evaluate HPM-sampling, a simple but effective profiling scheme for finding optimization candidates using hardware performance monitors (HPMs) that addresses the aforementioned limitations. We show that HPM-sampling is more accurate; has low overhead; and improves performance by 5.7\% on average and up to 18.3\% when compared to the default system in Jikes RVM, without changing the compiler.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "hardware performance monitors; Java; just-in-time compilation; profiling", } @Article{Chen:2007:MEG, author = "Feng Chen and Grigore Ro{\c{s}}u", title = "{MOP}: an efficient and generic runtime verification framework", journal = j-SIGPLAN, volume = "42", number = "10", pages = "569--588", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297105.1297069", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Monitoring-Oriented Programming (MOP1) [21, 18, 22, 19] is a formal framework for software development and analysis, in which the developer specifies desired properties using definable specification formalisms, along with code to execute when properties are violated or validated. The MOP framework automatically generates monitors from the specified properties and then integrates them together with the user-defined code into the original system.\par The previous design of MOP only allowed specifications without parameters, so it could not be used to state and monitor safety properties referring to two or more related objects. In this paper we propose a parametric specification formalism-independent extension of MOP, together with an implementation of JavaMOP that supports parameters. In our current implementation, parametric specifications are translated into AspectJ code and then weaved into the application using off-the-shelf AspectJ compilers; hence, MOP specifications can be seen as formal or logical aspects.\par Our JavaMOP implementation was extensively evaluated on two benchmarks, Dacapo [14] and Tracematches [8], showing that runtime verification in general and MOP in particular are feasible. In some of the examples, millions of monitor instances are generated, each observing a set of related objects. To keep the runtime overhead of monitoring and event observation low, we devised and implemented a decentralized indexing optimization. Less than 8\% of the experiments showed more than 10\% runtime overhead; in most cases our tool generates monitoring code as efficient as the hand-optimized code. Despite its genericity, JavaMOP is empirically shown to be more efficient than runtime verification systems specialized and optimized for particular specification formalisms. Many property violations were detected during our experiments; some of them are benign, others indicate defects in programs. Many of these are subtle and hard to find by ordinary testing.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "aspect-oriented programming; monitoring-oriented programming; runtime verification", } @Article{Avgustinov:2007:MTM, author = "Pavel Avgustinov and Julian Tibble and Oege de Moor", title = "Making trace monitors feasible", journal = j-SIGPLAN, volume = "42", number = "10", pages = "589--608", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297105.1297070", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A trace monitor observes an execution trace at runtime; when it recognises a specified sequence of events, the monitor runs extra code. In the aspect-oriented programming community, the idea originated as a generalisation of the advice-trigger mechanism: instead of matching on single events (joinpoints), one matches on a sequence of events. The runtime verification community has been investigating similar mechanisms for a number of years, specifying the event patterns in terms of temporal logic, and applying the monitors to hardware and software.\par In recent years trace monitors have been adapted for use with mainstream object-oriented languages. In this setting, a crucial feature is to allow the programmer to quantify over groups of related objects when expressing the sequence of events to match. While many language proposals exist for allowing such features, until now no implementation had scalable performance: execution on all but very simple examples was infeasible.\par This paper rectifies that situation, by identifying two optimisations for generating feasible trace monitors from declarative specifications of the relevant event pattern. We restrict ourselves to optimisations that do not have a significant impact on compile-time: they only analyse the event pattern, and not the monitored code itself.\par The first optimisation is an important improvement over an earlier proposal in [2] to avoid space leaks. The second optimisation is a form of indexing for partial matches. Such indexing needs to be very carefully designed to avoid introducing new space leaks, and the resulting data structure is highly non-trivial.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "program analysis; program monitors; runtime verification", } @Article{Rinard:2007:LCZ, author = "Martin C. Rinard", title = "Living in the comfort zone", journal = j-SIGPLAN, volume = "42", number = "10", pages = "611--622", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297027.1297072", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A comfort zone is a tested region of a system's input space within which it has been observed to behave acceptably. To keep systems operating within their comfort zones, we advocate the interposition of rectifiers between systems and their input sources. Rectifiers are designed to transform inputs to ensure that they are within the comfort zone before they are presented to the system. Rectifiers enforce a highly constrained input format and, if necessary, discard information to force inputs to conform to this format. Potential benefits of this approach include the elimination of errors and vulnerabilities, the excision of undesirable excess functionality from large, complex systems, and a simplification of the computing environment.\par We have developed a rectifier for email messages and used this rectifier to force messages into a specific constrained form. Our results show that this rectifier can successfully produce messages that keep the Pine email client strictly within code previously confirmed (during a small testing and training session) to function acceptably. Our results also show that the rectifier completely eliminates a security vulnerability in the Pine email client. And finally, the rectifier is able to accomplish these goals while still preserving an acceptable amount of information from the original messages.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "acceptability properties; comfort zone; monitoring; rectification; repair", } @Article{McDirmid:2007:LIL, author = "Sean McDirmid", title = "Living it up with a live programming language", journal = j-SIGPLAN, volume = "42", number = "10", pages = "623--638", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297105.1297073", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A dynamic language promotes ease of use through flexible typing, a focus on high-level programming, and by streamlining the edit-compile-debug cycle. Live languages go beyond dynamic languages with more ease of use features. A live language supports live programming that provides programmers with responsive and continuous feedback about how their edits affect program execution. A live language is also based on high-level constructs such as declarative rules so that programmers can write less code. A live language could also provide programmers with responsive semantic feedback to enable time-saving services such as code completion. This paper describes the design of a textual live language that is based on reactive data-flow values known as signals and dynamic inheritance. Our language, SuperGlue, supports live programming with responsive semantic feedback, which we demonstrate with a working prototype.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "live programming", } @Article{Edwards:2007:NIA, author = "Jonathan Edwards", title = "No ifs, ands, or buts: uncovering the simplicity of conditionals", journal = j-SIGPLAN, volume = "42", number = "10", pages = "639--658", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297027.1297075", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Schematic tables are a new representation for conditionals. Roughly a cross between decision tables and data flowgraphs, they represent computation and decision-making orthogonally. They unify the full range of conditional constructs, from if statements through pattern matching to polymorphic predicate dispatch. Program logic is maintained in a declarative canonical form that enforces completeness and disjointness among choices. Schematic tables can be used either as a code specification/generation tool, or as a self-contained diagrammatic programming language. They give program logic the clarity of truth tables, and support high-level direct manipulation of that logic, avoiding much of the mental computation demanded by conventional conditionals.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "control structures; decision tables; polymorphism; refactoring; visual programming", } @Article{Fleissner:2007:EAA, author = "Sebastian Fleissner and Elisa L. A. Baniassad", title = "Epi-aspects: aspect-oriented conscientious software", journal = j-SIGPLAN, volume = "42", number = "10", pages = "659--674", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297027.1297076", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Conscientious software is a recently proposed paradigm for developing reliable, self-sustaining software systems. Conscientious software systems consist of an allopoietic part, which encapsulates application functionality, and an autopoietic part that is responsible for keeping the system alive by monitoring the application and adapting it to environmental changes. Practical application of the conscientious software paradigm requires solutions to two open problems: The design of suitable autopoietic programming languages and the proposal of concrete architectures for combining the autopoietic and allopoietic parts. In this paper, we tackle the second challenge, and propose a concrete, aspect-oriented architecture for realizing conscientious software. Here, we introduce epi-aspects, a construct for upgrading new and existing applications into conscientious software. This paper provides the architectural design of epi-aspects, an autopoietic simulator, and a concrete framework for developing epi-aspects in Java. The framework and the simulator are used to conduct a case study in which we develop and test a conscientious Java application.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "aspect-oriented programming; conscientious software", } @Article{Meijer:2007:CUP, author = "Erik Meijer", title = "Confessions of a used programming language salesman", journal = j-SIGPLAN, volume = "42", number = "10", pages = "677--694", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297105.1297078", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "For many years I had been fruitlessly trying to sell functional programming and Haskell to solve real world problems such as scripting and data-intensive three-tier distributed web applications. The lack of widespread adoption of Haskell is a real pity. Functional programming concepts are key to curing many of the headaches that plague the majority of programmers, who today are forced to use imperative languages. If the mountain won't come to Mohammed, Mohammed must go to the mountain, and so I left academia to join industry. Instead of trying to convince imperative programmers to forget everything they already know and learn something completely new, I decided to infuse existing imperative object-oriented programming languages with functional programming features. As a result, functional programming has finally reached the masses, except that it is called Visual Basic 9 instead of Haskell 98.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Grossman:2007:TMG, author = "Dan Grossman", title = "The transactional memory \slash garbage collection analogy", journal = j-SIGPLAN, volume = "42", number = "10", pages = "695--706", month = oct, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1297027.1297080", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:00:28 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This essay presents remarkable similarities between transactional memory and garbage collection. The connections are fascinating in their own right, and they let us better understand one technology by thinking about the corresponding issues for the other.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "garbage collection; transactional memory", } @Article{Frenger:2007:HYM, author = "Paul Frenger", title = "Hacking your mouse: errata for {Mar}. 2007", journal = j-SIGPLAN, volume = "42", number = "11", pages = "3--3", month = nov, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328788.1328790", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:02 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sarma:2007:SSS, author = "M. Sarma and R. Mall", title = "Synthesis of system state models", journal = j-SIGPLAN, volume = "42", number = "11", pages = "5--14", month = nov, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328788.1328792", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:02 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Many modern systems are state-based. For such systems, a system state model is important not only for understanding the behavior of the system, but also for test case design, test coverage analysis, maintenance, etc. However, developers rarely construct the system state model for practical systems because it is usually too complex and cumbersome to construct. On the other hand, developers normally construct the state models of individual classes. We propose a novel method to automatically synthesize the state model of a system by analyzing the different sequences of scenarios and determining whether these lead to any state changes of the individual objects.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "automatic test case generation; state coverage; system state model; test coverage analysis; transition coverage; UML", } @Article{Svensson:2007:FXD, author = "Kurt Svensson", title = "Faster {XML} data validation in a programming language with {XML} datatypes", journal = j-SIGPLAN, volume = "42", number = "11", pages = "15--21", month = nov, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328788.1328793", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:02 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "EDI-C is a programming language used in B2B (EDI, WebServices) applications. It is possible to declare XML variables in the language. XML variables are declared in a way similar to structures in C and C++. These variables are accessed through dot-notation. Validation information (facets) can also be declared. The XML structures and their validation values are, at compile time, optimized for fast evaluation and execution in the runtime environment. Usually XSD schema are read and evaluated when an XML document loads -- our method loads and evaluates the XSD schema at compile time. Thus, when executing a program, the XSD schema has already been loaded and evaluated -- i.e., it's no longer necessary to load and evaluate each time the program is executed. This method increases XML processing speed, which is vital for WebServices messaging.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "B2B; data validation; format conversion; WebServices; XML; XML data declarations; XSD schema; XSD schema facets", } @Article{Xia:2007:FSE, author = "Feng Xia and Guosong Tian and Youxian Sun", title = "Feedback scheduling: an event-driven paradigm", journal = j-SIGPLAN, volume = "42", number = "12", pages = "7--14", month = dec, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1341752.1341753", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:09 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Embedded computing systems today increasingly feature resource constraints and workload variability, which lead to uncertainty in resource availability. This raises great challenges to software design and programming in multitasking environments. In this paper, the emerging methodology of feedback scheduling is introduced to address these challenges. As a closed-loop approach to resource management, feedback scheduling promises to enhance the flexibility and resource efficiency of various software programs through dynamically distributing available resources among concurrent tasks based on feedback information about the actual usage of the resources. With emphasis on the behavioral design of feedback schedulers, we describe a general framework of feedback scheduling in the context of real-time control applications. A simple yet illustrative feedback scheduling algorithm is given. From a programming perspective, we describe how to modify the implementation of control tasks to facilitate the application of feedback scheduling. An event-driven paradigm that combines time-triggered and event-triggered approaches is proposed for programming of the feedback scheduler. Simulation results argue that the proposed event-driven paradigm yields better performance than time-triggered paradigm in dynamic environments where the workload varies irregularly and unpredictably.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "event-driven; feedback scheduling; flexibility; overhead; programming; resource efficiency", } @Article{Syropoulos:2007:PMV, author = "Apostolos Syropoulos", title = "{$\Pi$} machines: virtual machines realizing graph structured transition {P} systems", journal = j-SIGPLAN, volume = "42", number = "12", pages = "15--22", month = dec, year = "2007", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1341752.1341754", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:09 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "P systems is a model of computation inspired by the way cells live and function. A typical P system consists of nested compartments surrounded by porous membranes, which contain data that are transformed by transformation rules. P systems can be simulated by a distributed computing system, where each compartment of a given system is simulated by a (remote) process, each running on a different node. By adopting a more 'liberal' membrane structure where compartments do not necessarily form a tree-structure but a graph-structure, we get a more general model of computation, which we call graph structured P systems. Any instance of the new model can be implemented by a network of virtual machines, called $\pi$ machines, where each machine is able to implement the functionality of any simple compartment.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "distributed computing; graph structured P systems; virtual machines", } @Article{Fontana:2008:SBM, author = "Walter Fontana", title = "Systems biology, models, and concurrency", journal = j-SIGPLAN, volume = "43", number = "1", pages = "1--2", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328897.1328439", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Models will play a central role in the representation, storage, manipulation, and communication of knowledge in systems biology. Models capable of fulfilling such a role will likely differ from the all familiar styles deployed with great success in the physical sciences. Molecular systems at the basis of cellular decision processes are concurrent and combinatorial. Their behavior is as much constrained by relationships of causality between molecular interactions as it is by chemical kinetics. Understanding how such systems give rise to coherent behavior and designing effective interventions to fight disease will require a notion of model that is akin to the concept of program in computer science. I will discuss recent progress in implementing a platform and tools for formal analysis that bring us closer to this vision. Protein interactions are represented by means of rules expressed in a formal language that captures a very simple, yet effective and biologically meaningful level of abstraction. Models, then, are collections of rules operating on an initial set of agents, in complete analogy to rules of organic chemical reactions. I will describe tools for analyzing and navigating rule collections as well as exploring their dynamics. We draw on concepts familiar to computer science, especially event structures, and adapt them to biological needs with the goal of formalizing the notion of 'pathway'. The challenges are many, but a road map for the future is discernible. Computer science will play a central role in providing an additional foundational layer, both theoretical and practical, that neither physics nor chemistry can offer on their own in the future definition of the biological sciences.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "kappa; models; systems biology", } @Article{Aydemir:2008:EFM, author = "Brian Aydemir and Arthur Chargu{\'e}raud and Benjamin C. Pierce and Randy Pollack and Stephanie Weirich", title = "Engineering formal metatheory", journal = j-SIGPLAN, volume = "43", number = "1", pages = "3--15", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328897.1328443", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Machine-checked proofs of properties of programming languages have become a critical need, both for increased confidence in large and complex designs and as a foundation for technologies such as proof-carrying code. However, constructing these proofs remains a black art, involving many choices in the formulation of definitions and theorems that make a huge cumulative difference in the difficulty of carrying out large formal developments. There presentation and manipulation of terms with variable binding is a key issue.\par We propose a novel style for formalizing metatheory, combining locally nameless representation of terms and cofinite quantification of free variable names in inductive definitions of relations on terms (typing, reduction, \ldots{}). The key technical insight is that our use of cofinite quantification obviates the need for reasoning about equivariance (the fact that free names can be renamed in derivations); in particular, the structural induction principles of relations defined using cofinite quantification are strong enough for metatheoretic reasoning, and need not be explicitly strengthened. Strong inversion principles follow (automatically, in Coq) from the induction principles. Although many of the underlying ingredients of our technique have been used before, their combination here yields a significant improvement over other methodologies using first-order representations, leading to developments that are faithful to informal practice, yet require no external tool support and little infrastructure within the proof assistant.\par We have carried out several large developments in this style using the Coq proof assistant and have made them publicly available. Our developments include type soundness for System F sub; and core ML (with references, exceptions, datatypes, recursion, and patterns) and subject reduction for the Calculus of Constructions. Not only do these developments demonstrate the comprehensiveness of our approach; they have also been optimized for clarity and robustness, making them good templates for future extension.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "binding; coq; locally nameless", } @Article{Tristan:2008:FVT, author = "Jean-Baptiste Tristan and Xavier Leroy", title = "Formal verification of translation validators: a case study on instruction scheduling optimizations", journal = j-SIGPLAN, volume = "43", number = "1", pages = "17--27", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328897.1328444", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Translation validation consists of transforming a program and a posteriori validating it in order to detect a modification of its semantics. This approach can be used in a verified compiler, provided that validation is formally proved to be correct. We present two such validators and their Coq proofs of correctness. The validators are designed for two instruction scheduling optimizations: list scheduling and trace scheduling.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "scheduling optimizations; the coq proof assistant; translation validation; verified compilers", } @Article{Voigtlander:2008:MAA, author = "Janis Voigtl{\"a}nder", title = "Much ado about two (pearl): a pearl on parallel prefix computation", journal = j-SIGPLAN, volume = "43", number = "1", pages = "29--35", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328897.1328445", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This pearl develops a statement about parallel prefix computation in the spirit of Knuth's 0-1-Principle for oblivious sorting algorithms. It turns out that 0-1 is not quite enough here. The perfect hammer for the nails we are going to drive in is relational parametricity.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "0-1-principle; free theorems; parallel prefix computation; relational parametricity", } @Article{Neamtiu:2008:CEV, author = "Iulian Neamtiu and Michael Hicks and Jeffrey S. Foster and Polyvios Pratikakis", title = "Contextual effects for version-consistent dynamic software updating all and safe concurrent programming", journal = j-SIGPLAN, volume = "43", number = "1", pages = "37--49", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328897.1328447", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper presents a generalization of standard effect systems that we call contextual effects. A traditional effect system computes the effect of an expression e. Our system additionally computes the effects of the computational context in which $e$ occurs. More specifically, we compute the effect of the computation that has already occurred(the prior effect) and the effect of the computation yet to take place (the future effect).\par Contextual effects are useful when the past or future computation of the program is relevant at various program points. We present two substantial examples. First, we show how prior and future effects can be used to enforce transactional version consistency (TVC), a novel correctness property for dynamic software updates. TV Censures that programmer-designated transactional code blocks appear to execute entirely at the same code version, even if a dynamic update occurs in the middle of the block. Second, we show how future effects can be used in the analysis of multi-threaded programs to find thread-shared locations. This is an essential step in applications such as data race detection.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "computation effects; contextual effects; data race detection; dynamic software updating; type and effect systems; version consistency", } @Article{Moore:2008:HLS, author = "Katherine F. Moore and Dan Grossman", title = "High-level small-step operational semantics for transactions", journal = j-SIGPLAN, volume = "43", number = "1", pages = "51--62", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328438.1328448", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Software transactions have received significant attention as a way to simplify shared-memory concurrent programming, but insufficient focus has been given to the precise meaning of software transactions or their interaction with other language features. This work begins to rectify that situation by presenting a family of formal languages that model a wide variety of behaviors for software transactions. These languages abstract away implementation details of transactional memory, providing high-level definitions suitable for programming languages. We use small-step semantics in order to represent explicitly the interleaved execution of threads that is necessary to investigate pertinent issues.\par We demonstrate the value of our core approach to modeling transactions by investigating two issues in depth. First, we consider parallel nesting, in which parallelism and transactions can nest arbitrarily. Second, we present multiple models for weak isolation, in which nontransactional code can violate the isolation of a transaction. For both, type-and-effect systems let us soundly and statically restrict what computation can occur inside or outside a transaction. We prove some key language-equivalence theorems to confirm that under sufficient static restrictions, in particular that each mutable memory location is used outside transactions or inside transactions (but not both), no program can determine whether the language implementation uses weak isolation or strong isolation.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "isolation; operational semantics; parallelism; strong atomicity; transactional memory; weak atomicity", } @Article{Abadi:2008:STM, author = "Mart{\'\i}n Abadi and Andrew Birrell and Tim Harris and Michael Isard", title = "Semantics of transactional memory and automatic mutual exclusion", journal = j-SIGPLAN, volume = "43", number = "1", pages = "63--74", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328438.1328449", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Software Transactional Memory (STM) is an attractive basis for the development of language features for concurrent programming. However, the semantics of these features can be delicate and problematic. In this paper we explore the tradeoffs between semantic simplicity, the viability of efficient implementation strategies, and the flexibility of language constructs. Specifically, we develop semantics and type systems for the constructs of the Automatic Mutual Exclusion (AME) programming model; our results apply also to other constructs, such as atomic blocks. With this semantics as a point of reference, we study several implementation strategies. We model STM systems that use in-place update, optimistic concurrency, lazy conflict detection, and roll-back. These strategies are correct only under non-trivial assumptions that we identify and analyze. One important source of errors is that some efficient implementations create dangerous 'zombie' computations where a transaction keeps running after experiencing a conflict; the assumptions confine the effects of these computations.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "operational semantics; STM; transactional memory", } @Article{Parkinson:2008:SLA, author = "Matthew J. Parkinson and Gavin M. Bierman", title = "Separation logic, abstraction and inheritance", journal = j-SIGPLAN, volume = "43", number = "1", pages = "75--86", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328897.1328451", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Inheritance is a fundamental concept in object-oriented programming, allowing new classes to be defined in terms of old classes. When used with care, inheritance is an essential tool for object-oriented programmers. Thus, for those interested in developing formal verification techniques, the treatment of inheritance is of paramount importance. Unfortunately, inheritance comes in a number of guises, all requiring subtle techniques.\par To address these subtleties, most existing verification methodologies typically adopt one of two restrictions to handle inheritance: either (1) they prevent a derived class from restricting the behaviour of its base class (typically by syntactic means) to trivialize the proof obligations; or (2) they allow a derived class to restrict the behaviour of its base class, but require that every inherited method must be reverified. Unfortunately, this means that typical inheritance-rich code either cannot be verified or results in an unreasonable number of proof obligations.\par In this paper, we develop a separation logic for a core object-oriented language. It allows derived classes which override the behaviour of their base class, yet supports the inheritance of methods without reverification where this is safe. For each method, we require two specifications: a static specification that is used to verify the implementation and direct method calls (in Java this would be with a super call); and a dynamic specification that is used for calls that are dynamically dispatched; along with a simple relationship between the two specifications. Only the dynamic specification is involved with behavioural subtyping. This simple separation of concerns leads to a powerful system that supports all forms of inheritance with low proof-obligation overheads. We both formalize our methodology and demonstrate its power with a series of inheritance examples.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "classes; modularity; separation logic", } @Article{Chin:2008:EMO, author = "Wei-Ngan Chin and Cristina David and Huu Hai Nguyen and Shengchao Qin", title = "Enhancing modular {OO} verification with separation logic", journal = j-SIGPLAN, volume = "43", number = "1", pages = "87--99", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328897.1328452", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Conventional specifications for object-oriented (OO) programs must adhere to behavioral subtyping in support of class inheritance and method overriding. However, this requirement inherently weakens the specifications of overridden methods in superclasses, leading to imprecision during program reasoning. To address this, we advocate a fresh approach to OO verification that focuses on the distinction and relation between specifications that cater to calls with static dispatching from those for calls with dynamic dispatching. We formulate a novel specification subsumption that can avoid code re-verification, where possible. Using a predicate mechanism, we propose a flexible scheme for supporting class invariant and lossless casting. Our aim is to lay the foundation for a practical verification system that is precise, concise and modular for sequential OO programs. We exploit the separation logic formalism to achieve this.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "automated verification; enhanced subsumption; lossless casting; separation logic; static and dynamic specifications", } @Article{Brotherston:2008:CPP, author = "James Brotherston and Richard Bornat and Cristiano Calcagno", title = "Cyclic proofs of program termination in separation logic", journal = j-SIGPLAN, volume = "43", number = "1", pages = "101--112", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328897.1328453", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We propose a novel approach to proving the termination of heap-manipulating programs, which combines separation logic with cyclic proof within a Hoare-style proof system. Judgements in this system express (guaranteed) termination of the program when started from a given line in the program and in a state satisfying a given precondition, which is expressed as a formula of separation logic. The proof rules of our system are of two types: logical rules that operate on preconditions; and symbolic execution rules that capture the effect of executing program commands.\par Our logical preconditions employ inductively defined predicates to describe heap properties, and proofs in our system are cyclic proofs: cyclic derivations in which some inductive predicate is unfolded infinitely often along every infinite path, thus allowing us to discard all infinite paths in the proof by an infinite descent argument. Moreover, the use of this soundness condition enables us to avoid the explicit construction and use of ranking functions for termination. We also give a completeness result for our system, which is relative in that it relies upon completeness of a proof system for logical implications in separation logic. We give examples illustrating our approach, including one example for which the corresponding ranking function is non-obvious: termination of the classical algorithm for in-place reversal of a (possibly cyclic) linked list.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "cyclic proof; Hoare logic; inductive definitions; program verification; separation logic; termination", } @Article{Asperti:2008:ICR, author = "Andrea Asperti", title = "The intensional content of {Rice}'s theorem", journal = j-SIGPLAN, volume = "43", number = "1", pages = "113--119", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328897.1328455", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The proofs of major results of Computability Theory like Rice, Rice-Shapiro or Kleene's fixed point theorem hide more information of what is usually expressed in their respective statements. We make this information explicit, allowing to state stronger, complexity theoretic-versions of all these theorems. In particular, we replace the notion of extensional set of indices of programs, by a set of indices of programs having not only the same extensional behavior but also similar complexity (Complexity Clique). We prove, under very weak complexity assumptions, that any recursive Complexity Clique is trivial, and any r.e. Complexity Clique is an extensional set (and thus satisfies Rice-Shapiro conditions). This allows, for instance, to use Rice's argument to prove that the property of having polynomial complexity is not decidable, and to use Rice-Shapiro to conclude that it is not even semi-decidable. We conclude the paper with a discussion of 'complexity-theoretic' versions of Kleene's Fixed Point Theorem.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "complexity; computability; recursion theory", } @Article{Gaboardi:2008:LAP, author = "Marco Gaboardi and Jean-Yves Marion and Simona Ronchi Della Rocca", title = "A logical account of pspace", journal = j-SIGPLAN, volume = "43", number = "1", pages = "121--131", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328438.1328456", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We propose a characterization of PSPACE by means of a type assignment for an extension of lambda calculus with a conditional construction. The type assignment STA$_B$ is an extension of STA, a type assignment for lambda-calculus inspired by Lafont's Soft Linear Logic.\par We extend STA by means of a ground type and terms for booleans. The key point is that the elimination rule for booleans is managed in an additive way. Thus, we are able to program polynomial time Alternating Turing Machines. Conversely, we introduce a call-by-name evaluation machine in order to compute programs in polynomial space. As far as we know, this is the first characterization of PSPACE which is based on lambda calculus and light logics.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "implicit computational complexity; linear logic; polynomial space; type assignment", } @Article{Danielsson:2008:LST, author = "Nils Anders Danielsson", title = "Lightweight semiformal time complexity analysis for purely functional data structures", journal = j-SIGPLAN, volume = "43", number = "1", pages = "133--144", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328897.1328457", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Okasaki and others have demonstrated how purely functional data structures that are efficient even in the presence of persistence can be constructed. To achieve good time bounds essential use is often made of laziness. The associated complexity analysis is frequently subtle, requiring careful attention to detail, and hence formalising it is valuable. This paper describes a simple library which can be used to make the analysis of a class of purely functional data structures and algorithms almost fully formal. The basic idea is to use the type system to annotate every function with the time required to compute its result. An annotated monad is used to combine time complexity annotations. The library has been used to analyse some existing data structures, for instance the deque operations of Hinze and Paterson's finger trees.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "amortised time complexity; dependent types; lazy evaluation; purely functional data structures", } @Article{McMillan:2008:RHP, author = "K. L. McMillan", title = "Relevance heuristics for program analysis", journal = j-SIGPLAN, volume = "43", number = "1", pages = "145--146", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328438.1328440", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Relevance heuristics allow us to tailor a program analysis to a particular property to be verified. This in turn makes it possible to improve the precision of the analysis where needed, while maintaining scalability. In this talk I will discuss the principles by which SAT solvers and other decision procedures decide what information is relevant to a given proof. Then we will see how these ideas can be exploited in program verification using the method of Craig interpolation. The result is an analysis that is finely tuned to prove a given property of a program. At the end of the talk, I will cover some recent research in this area, including the use of interpolants for verifying heap-manipulating programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstract interpretation; Craig interpolation; model checking", } @Article{Gupta:2008:PNT, author = "Ashutosh Gupta and Thomas A. Henzinger and Rupak Majumdar and Andrey Rybalchenko and Ru-Gang Xu", title = "Proving non-termination", journal = j-SIGPLAN, volume = "43", number = "1", pages = "147--158", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328438.1328459", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The search for proof and the search for counterexamples (bugs) are complementary activities that need to be pursued concurrently in order to maximize the practical success rate of verification tools. While this is well-understood in safety verification, the current focus of liveness verification has been almost exclusively on the search for termination proofs. A counterexample to termination is an infinite program execution. In this paper, we propose a method to search for such counterexamples. The search proceeds in two phases. We first dynamically enumerate lasso-shaped candidate paths for counterexamples, and then statically prove their feasibility. We illustrate the utility of our nontermination prover, called TNT, on several nontrivial examples, some of which require bit-level reasoning about integer representations.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "model checking; non-termination; program verification; recurrent sets; testing", } @Article{Chaudhuri:2008:SAR, author = "Swarat Chaudhuri", title = "Subcubic algorithms for recursive state machines", journal = j-SIGPLAN, volume = "43", number = "1", pages = "159--169", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328438.1328460", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We show that the reachability problem for recursive state machines (or equivalently, pushdown systems), believed for long to have cubic worst-case complexity, can be solved in slightly subcubic time. All that is necessary for the new bound is a simple adaptation of a known technique. We also show that a better algorithm exists if the input machine does not have infinite recursive loops.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "CFL-reachability; context-free languages; cubic bottleneck; interprocedural analysis; pushdown systems; recursive state machines; transitive closure", } @Article{Lahiri:2008:BFR, author = "Shuvendu Lahiri and Shaz Qadeer", title = "Back to the future: revisiting precise program verification using {SMT} solvers", journal = j-SIGPLAN, volume = "43", number = "1", pages = "171--182", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328438.1328461", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper takes a fresh look at the problem of precise verification of heap-manipulating programs using first-order Satisfiability-Modulo-Theories (SMT) solvers. We augment the specification logic of such solvers by introducing the Logic of Interpreted Sets and Bounded Quantification for specifying properties of heap-manipulating programs. Our logic is expressive, closed under weakest preconditions, and efficiently implementable on top of existing SMT solvers. We have created a prototype implementation of our logic over the solvers Simplify and Z3 and used our prototype to verify many programs. Our preliminary experience is encouraging; the completeness and the efficiency of the decision procedure is clearly evident in practice and has greatly improved the user experience of the verifier.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "decision procedures; heap-manipulating programs; linked lists; reachability; SMT solvers; software verification", } @Article{Unkel:2008:AIS, author = "Christopher Unkel and Monica S. Lam", title = "Automatic inference of stationary fields: a generalization of {Java}'s final fields", journal = j-SIGPLAN, volume = "43", number = "1", pages = "183--195", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328897.1328463", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Java programmers can document that the relationship between two objects is unchanging by declaring the field that encodes that relationship to be final. This information can be used in program understanding and detection of errors in new code additions. Unfortunately, few fields in programs are actually declared final. Programs often contain fields that could be final, but are not declared so. Moreover, the definition of final has restrictions on initialization that limit its applicability.\par We introduce stationary fields as a generalization of final. A field in a program is stationary if, for every object that contains it, all writes to the field occur before all the reads. Unlike the definition of final fields, there can be multiple writes during initialization, and initialization can span multiple methods.\par We have developed an efficient algorithm for inferring which fields are stationary in a program, based on the observation that many fields acquire their value very close to object creation. We presume that an object's initialization phase has concluded when its reference is saved in some heap object. We perform precise analysis only regarding recently created objects. Applying our algorithm to real-world Java programs demonstrates that stationary fields are more common than final fields: 44-59\% vs. 11-17\% respectively in our benchmarks.\par These surprising results have several significant implications. First, substantial portions of Java programs appear to be written in a functional style. Second, initialization of these fields occurs very close to object creation, when very good alias information is available. These results open the door for more accurate and efficient pointer alias analysis.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "final; initialization; Java; stationary", } @Article{Zheng:2008:DDA, author = "Xin Zheng and Radu Rugina", title = "Demand-driven alias analysis for {C}", journal = j-SIGPLAN, volume = "43", number = "1", pages = "197--208", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328897.1328464", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper presents a demand-driven, flow-insensitive analysis algorithm for answering may-alias queries. We formulate the computation of alias queries as a CFL-reachability problem, and use this formulation to derive a demand-driven analysis algorithm. The analysis uses a worklist algorithm that gradually explores the program structure and stops as soon as enough evidence is gathered to answer the query. Unlike existing techniques, our approach does not require building or intersecting points-to sets.\par Experiments show that our technique is effective at answering alias queries accurately and efficiently in a demand-driven fashion. For a set of alias queries from the SPEC2000 benchmarks, an implementation of our analysis is able to accurately answer 96\% of the queries in 0.5 milliseconds per query on average, using only 65 KB of memory. Compared to a demand-driven points-to analysis that constructs and intersects points-to sets on the fly, our alias analysis can achieve better accuracy while running more than 30 times faster. The low run-time cost and low memory demands of the analysis make it a very good candidate not only for compilers, but also for interactive tools, such as program understanding tools or integrated development environments (IDEs).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "alias analysis; CFL reachability; demand-driven analysis; memory disambiguation; pointer analysis", } @Article{Nita:2008:TPD, author = "Marius Nita and Dan Grossman and Craig Chambers", title = "A theory of platform-dependent low-level software", journal = j-SIGPLAN, volume = "43", number = "1", pages = "209--220", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328897.1328465", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The C language definition leaves the sizes and layouts of types partially unspecified. When a C program makes assumptions about type layout, its semantics is defined only on platforms (C compilers and the underlying hardware) on which those assumptions hold. Previous work on formalizing C-like languages has ignored this issue, either by assuming that programs do not make such assumptions or by assuming that all valid programs target only one platform. In the latter case, the platform's choices are hard-wired in the language semantics.\par In this paper, we present a practically-motivated model for a C-like language in which the memory layouts of types are left largely unspecified. The dynamic semantics is parameterized by a platform's layout policy and makes manifest the consequence of platform-dependent (i.e., unspecified) steps. A type-and-effect system produces a layout constraint: a logic formula encoding layout conditions under which the program is memory-safe. We prove that if a program type-checks, it is memory-safe on all platforms satisfying its constraint.\par Based on our theory, we have implemented a tool that discovers unportable layout assumptions in C programs. Our approach should generalize to other kinds of platform-dependent assumptions.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "casts; low-level software; portability; type safety", } @Article{Yorsh:2008:GPC, author = "Greta Yorsh and Eran Yahav and Satish Chandra", title = "Generating precise and concise procedure summaries", journal = j-SIGPLAN, volume = "43", number = "1", pages = "221--234", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328438.1328467", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present a framework for generating procedure summaries that are (a) precise --- applying the summary in a given context yields the same result as re-analyzing the procedure in that context, and(b) concise --- the summary exploits the commonalities in the ways the procedure manipulates abstract values, and does not contain superfluous context information.\par The use of a precise and concise procedure summary in modular analyses provides a way to capture infinitely many possible contexts in a finite way; in interprocedural analyses, it provides a compact representation of an explicit input-output summary table without loss of precision.\par We define a class of abstract domains and transformers for which precise and concise summaries can be efficiently generated using our framework. Our framework is rich enough to encode a wide range of problems, including all IFDS and IDE problems. In addition, we show how the framework is instantiated to provide novel solutions to two hard problems: modular linear constant propagation and modular typestate verification, both in the presence of aliasing. We implemented a prototype of our framework that computes summaries for the typestate domain, and report on preliminary experimental results.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "aliasing; composition; dataflow analysis; micro-transformers; relational analysis; summarization; symbolic summary; typestate verification", } @Article{Gulwani:2008:LAI, author = "Sumit Gulwani and Bill McCloskey and Ashish Tiwari", title = "Lifting abstract interpreters to quantified logical domains", journal = j-SIGPLAN, volume = "43", number = "1", pages = "235--246", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328438.1328468", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We describe a general technique for building abstract interpreters over powerful universally quantified abstract domains that leverage existing quantifier-free domains. Our quantified abstract domain can represent universally quantified facts like $\forall i (0 \leq i < n \Rightarrow \alpha[i] = 0$). The principal challenge in this effort is that, while most domains supply over-approximations of operations like join, meet, and variable elimination, working with the guards of quantified facts requires under -approximation. We present an automatic technique to convert the standard over-approximation operations provided with all domains into sound under-approximations. We establish the correctness of our abstract interpreters by identifying two lattices---one that establishes the soundness of the abstract interpreter and another that defines its precision, or completeness. Our experiments on a variety of programs using arrays and pointers (including several sorting algorithms) demonstrate the feasibility of the approach on challenging examples.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstract interpreter; logical lattices; quantified invariants; underapproximation algorithms", } @Article{Chang:2008:RIS, author = "Bor-Yuh Evan Chang and Xavier Rival", title = "Relational inductive shape analysis", journal = j-SIGPLAN, volume = "43", number = "1", pages = "247--260", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328438.1328469", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Shape analyses are concerned with precise abstractions of the heap to capture detailed structural properties. To do so, they need to build and decompose summaries of disjoint memory regions. Unfortunately, many data structure invariants require relations be tracked across disjoint regions, such as intricate numerical data invariants or structural invariants concerning back and cross pointers. In this paper, we identify issues inherent to analyzing relational structures and design an abstract domain that is parameterized both by an abstract domain for pure data properties and by user-supplied specifications of the data structure invariants to check. Particularly, it supports hybrid invariants about shape and data and features a generic mechanism for materializing summaries at the beginning, middle, or end of inductive structures. Around this domain, we build a shape analysis whose interesting components include a pre-analysis on the user-supplied specifications that guides the abstract interpretation and a widening operator over the combined shape and data domain. We then demonstrate our techniques on the proof of preservation of the red-black tree invariants during insertion.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "heap analysis; inductive definitions; materialization; separation logic; shape analysis; symbolic abstract domain", } @Article{Castagna:2008:TCW, author = "Giuseppe Castagna and Nils Gesbert and Luca Padovani", title = "A theory of contracts for {Web} services", journal = j-SIGPLAN, volume = "43", number = "1", pages = "261--272", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328438.1328471", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Contracts are behavioural descriptions of Web services. We devise a theory of contracts that formalises the compatibility of a client to a service, and the safe replacement of a service with another service. The use of contracts statically ensures the successful completion of every possible interaction between compatible clients and services.\par The technical device that underlies the theory is the definition of filters, which are explicit coercions that prevent some possible behaviours of services and, in doing so, they make services compatible with different usage scenarios. We show that filters can be seen as proofs of a sound and complete subcontracting deduction system which simultaneously refines and extends Hennessy's classical axiomatisation of the must testing preorder. The relation is decidable and the decision algorithm is obtained via a cut-elimination process that proves the coherence of subcontracting as a logical system.\par Despite the richness of the technical development, the resulting approach is based on simple ideas and basic intuitions. Remarkably, its application is mostly independent of the language used to program the services or the clients. We also outline the possible practical impact of such a work and the perspectives of future research it opens.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "CCS; concurrency theory; contracts; explicit coercions; must testing; subtyping; type theory; web services", } @Article{Honda:2008:MAS, author = "Kohei Honda and Nobuko Yoshida and Marco Carbone", title = "Multiparty asynchronous session types", journal = j-SIGPLAN, volume = "43", number = "1", pages = "273--284", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328897.1328472", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Communication is becoming one of the central elements in software development. As a potential typed foundation for structured communication-centred programming, session types have been studied over the last decade for a wide range of process calculi and programming languages, focussing on binary (two-party) sessions. This work extends the foregoing theories of binary session types to multiparty, asynchronous sessions, which often arise in practical communication-centred applications. Presented as a typed calculus for mobile processes, the theory introduces a new notion of types in which interactions involving multiple peers are directly abstracted as a global scenario. Global types retain a friendly type syntax of binary session types while capturing complex causal chains of multiparty asynchronous interactions. A global type plays the role of a shared agreement among communication peers, and is used as a basis of efficient type checking through its projection onto individual peers. The fundamental properties of the session type discipline such as communication safety, progress and session fidelity are established for general n-party asynchronous interactions.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "causality; choreography; communications; mobile processes; multiparty; session types; structured programming", } @Article{Minsky:2008:CT, author = "Yaron M. Minsky", title = "{Caml} trading", journal = j-SIGPLAN, volume = "43", number = "1", pages = "285--285", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328438.1328441", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Jane Street Capital is a successful proprietary trading company that has shifted from developing software in mainstream programming languages to developing software almost entirely in OCaml, a statically typed functional programming language that has only modest industrial use. The scope of the enterprise is small but growing: Jane Street now has over 20 OCaml programmers that have collectively written hundreds of thousands of lines of OCaml code. OCaml is used for building everything from trading systems to research infrastructure to user interfaces to systems administration tools. This talk will discuss the motivations behind Jane Street's adoption of OCaml, and why we think that statically typed functional programming languages are such a good fit for the world of trading and finance.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "functional programming; ML", } @Article{McBride:2008:CLM, author = "Conor McBride", title = "Clowns to the left of me, jokers to the right (pearl): dissecting data structures", journal = j-SIGPLAN, volume = "43", number = "1", pages = "287--295", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328438.1328474", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper introduces a small but useful generalisation to the 'derivative' operation on datatypes underlying Huet's notion of 'zipper', giving a concrete representation to one-hole contexts in data which is undergoing transformation. This operator, 'dissection', turns a container-like functor into a bifunctor representing a one-hole context in which elements to the left of the hole are distinguished in type from elements to its right.\par I present dissection here as a generic program, albeit for polynomial functors only. The notion is certainly applicable more widely, but here I prefer to concentrate on its diverse applications. For a start, map-like operations over the functor and fold-like operations over the recursive data structure it induces can be expressed by tail recursion alone. Further, the derivative is readily recovered from the dissection. Indeed, it is the dissection structure which delivers Huet's operations for navigating zippers.\par The original motivation for dissection was to define 'division', capturing the notion of leftmost hole, canonically distinguishing values with no elements from those with at least one. Division gives rise to an isomorphism corresponding to the remainder theorem in algebra. By way of a larger example, division and dissection are exploited to give a relatively efficient generic algorithm for abstracting all occurrences of one term from another in a first-order syntax. The source code for the paper is available online and compiles with recent extensions to the Glasgow Haskell Compiler.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "datatype; differentiation; dissection; division; generic programming; iteration; polynomial; stack; tail recursion; traversal; zipper", } @Article{Johann:2008:FSP, author = "Patricia Johann and Neil Ghani", title = "Foundations for structured programming with {GADTs}", journal = j-SIGPLAN, volume = "43", number = "1", pages = "297--308", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328438.1328475", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "GADTs are at the cutting edge of functional programming and become more widely used every day. Nevertheless, the semantic foundations underlying GADTs are not well understood. In this paper we solve this problem by showing that the standard theory of data types as carriers of initial algebras of functors can be extended from algebraic and nested data types to GADTs. We then use this observation to derive an initial algebra semantics for GADTs, thus ensuring that all of the accumulated knowledge about initial algebras can be brought to bear on them. Next, we use our initial algebra semantics for GADTs to derive expressive and principled tools --- analogous to the well-known and widely-used ones for algebraic and nested data types---for reasoning about, programming with, and improving the performance of programs involving, GADTs; we christen such a collection of tools for a GADT an initial algebra package. Along the way, we give a constructive demonstration that every GADT can be reduced to one which uses only the equality GADT and existential quantification. Although other such reductions exist in the literature, ours is entirely local, is independent of any particular syntactic presentation of GADTs, and can be implemented in the host language, rather than existing solely as a metatheoretical artifact. The main technical ideas underlying our approach are (i) to modify the notion of a higher-order functor so that GADTs can be seen as carriers of initial algebras of higher-order functors, and (ii) to use left Kan extensions to trade arbitrary GADTs for simpler-but-equivalent ones for which initial algebra semantics can be derived.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "GADTs; initial algebra semantics; program fusion", } @Article{Acar:2008:ISA, author = "Umut A. Acar and Amal Ahmed and Matthias Blume", title = "Imperative self-adjusting computation", journal = j-SIGPLAN, volume = "43", number = "1", pages = "309--322", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328438.1328476", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Self-adjusting computation enables writing programs that can automatically and efficiently respond to changes to their data (e.g., inputs). The idea behind the approach is to store all data that can change over time in modifiable references and to let computations construct traces that can drive change propagation. After changes have occurred, change propagation updates the result of the computation by re-evaluating only those expressions that depend on the changed data. Previous approaches to self-adjusting computation require that modifiable references be written at most once during execution---this makes the model applicable only in a purely functional setting.\par In this paper, we present techniques for imperative self-adjusting computation where modifiable references can be written multiple times. We define a language SAIL (Self-Adjusting Imperative Language) and prove consistency, i.e., that change propagation and from-scratch execution are observationally equivalent. Since SAIL programs are imperative, they can create cyclic data structures. To prove equivalence in the presence of cycles in the store, we formulate and use an untyped, step-indexed logical relation, where step indices are used to ensure well-foundedness. We show that SAIL accepts an asymptotically efficient implementation by presenting algorithms and data structures for its implementation. When the number of operations (reads and writes) per modifiable is bounded by a constant, we show that change propagation becomes as efficient as in the non-imperative case. The general case incurs a slowdown that is logarithmic in the maximum number of such operations. We describe a prototype implementation of SAIL as a Standard ML library.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "change propagation; imperative programming; incremental computation; memoization; mutable state; self-adjusting computation; step-indexed logical relations", } @Article{Fournet:2008:CSI, author = "C{\'e}dric Fournet and Tamara Rezk", title = "Cryptographically sound implementations for typed information-flow security", journal = j-SIGPLAN, volume = "43", number = "1", pages = "323--335", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328897.1328478", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In language-based security, confidentiality and integrity policies conveniently specify the permitted flows of information between different parts of a program with diverse levels of trust. These policies enable a simple treatment of security, and they can often be verified by typing. However, their enforcement in concrete systems involves delicate compilation issues.\par We consider cryptographic enforcement mechanisms for imperative programs with untrusted components. Such programs may represent, for instance, distributed systems connected by some untrusted network. In source programs, security depends on an abstract access-control policy for reading and writing the shared memory. In their implementations, shared memory is unprotected and security depends instead on encryption and signing.\par We build a translation from well-typed source programs and policies to cryptographic implementations. To establish its correctness, we develop a type system for the target language. Our typing rules enforce a correct usage of cryptographic primitives against active adversaries; from an information-flow viewpoint, they capture controlled forms of robust declassification and endorsement. We show type soundness for a variant of the non-interference property, then show that our translation preserves typeability.\par We rely on concrete primitives and hypotheses for cryptography, stated in terms of probabilistic polynomial-time algorithms and games. We model these primitives as commands in our target language. Thus, we develop a uniform language-based model of security, ranging from computational non-interference for probabilistic programs down to standard cryptographic hypotheses.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compilers; computational model; confidentiality; cryptography; integrity; non-interference; probabilistic programs; secure information flow; type systems", } @Article{Laud:2008:CSC, author = "Peeter Laud", title = "On the computational soundness of cryptographically masked flows", journal = j-SIGPLAN, volume = "43", number = "1", pages = "337--348", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328897.1328479", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "To speak about the security of information flow in programs employing cryptographic operations, definitions based on computational indistinguishability of distributions over program states have to be used. These definitions, as well as the accompanying analysis tools, are complex and error-prone to argue about. Cryptographically masked flows, proposed by Askarov, Hedin and Sabelfeld, are an abstract execution model and security definition that attempt to abstract away the details of computational security. This abstract model is useful because analysis of programs can be conducted using the usual techniques for enforcing non-interference.\par In this paper we investigate under which conditions this abstract model is computationally sound, i.e. when does the security of a program in their model imply the computational security of this program. This paper spells out a reasonable set of conditions and then proposes a simpler abstract model that is nevertheless no more restrictive than the cryptographically masked flows together with these conditions for soundness.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "computational soundness; cryptographically masked flows; encryption; secure information flow", } @Article{Alavi:2008:EET, author = "Hamed Seiied Alavi and Seth Gilbert and Rachid Guerraoui", title = "Extensible encoding of type hierarchies", journal = j-SIGPLAN, volume = "43", number = "1", pages = "349--358", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328897.1328480", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The subtyping test consists of checking whether a type $t$ is a descendant of a type $r$ (Agrawal et al. 1989). We study how to perform such a test efficiently, assuming a dynamic hierarchy when new types are inserted at run-time. The goal is to achieve time and space efficiency, even as new types are inserted. We propose an extensible scheme, named ESE, that ensures (1) efficient insertion of new types, (2) efficient subtyping tests, and (3) small space usage. On the one hand ESE provides comparable test times to the most efficient existing static schemes (e.g., Zibin et al. (2001)). On the other hand, ESE has comparable insertion times to the most efficient existing dynamic scheme (Baehni et al. 2007), while ESE outperforms it by a factor of 2--3 times in terms of space usage.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dynamic loading; subtyping test", } @Article{Zeilberger:2008:FHO, author = "Noam Zeilberger", title = "Focusing and higher-order abstract syntax", journal = j-SIGPLAN, volume = "43", number = "1", pages = "359--369", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328897.1328482", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Focusing is a proof-search strategy, originating in linear logic, that elegantly eliminates inessential nondeterminism, with one byproduct being a correspondence between focusing proofs and programs with explicit evaluation order. Higher-order abstract syntax (HOAS) is a technique for representing higher-order programming language constructs (e.g., \lambda 's) by higher-order terms at the 'meta-level', thereby avoiding some of the bureaucratic headaches of first-order representations (e.g., capture-avoiding substitution).\par This paper begins with a fresh, judgmental analysis of focusing for intuitionistic logic (with a full suite of propositional connectives), recasting the 'derived rules' of focusing as iterated inductive definitions. This leads to a uniform presentation, allowing concise, modular proofs of the identity and cut principles. Then we show how this formulation of focusing induces, through the Curry--Howard isomorphism, a new kind of higher-order encoding of abstract syntax: functions are encoded by maps from patterns to expressions. Dually, values are encoded as patterns together with explicit substitutions. This gives us pattern-matching 'for free', and lets us reason about a rich type system with minimal syntactic overhead. We describe how to translate the language and proof of type safety almost directly into Coq using HOAS, and finally, show how the system's modular design pays off in enabling a very simple extension with recursion and recursive types.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "focusing; higher-order abstract syntax; pattern-matching", } @Article{Pientka:2008:TTF, author = "Brigitte Pientka", title = "A type-theoretic foundation for programming with higher-order abstract syntax and first-class substitutions", journal = j-SIGPLAN, volume = "43", number = "1", pages = "371--382", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328897.1328483", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Higher-order abstract syntax (HOAS) is a simple, powerful technique for implementing object languages, since it directly supports common and tricky routines dealing with variables, such as capture-avoiding substitution and renaming. This is achieved by representing binders in the object-language via binders in the meta-language. However, enriching functional programming languages with direct support for HOAS has been a major challenge, because recursion over HOAS encodings requires one to traverse lambda-abstractions and necessitates programming with open objects.\par We present a novel type-theoretic foundation based on contextual modal types which allows us to recursively analyze open terms via higher-order pattern matching. By design, variables occurring in open terms can never escape their scope. Using several examples, we demonstrate that our framework provides a name-safe foundation to operations typically found in nominal systems. In contrast to nominal systems however, we also support capture-avoiding substitution operations and even provide first-class substitutions to the programmer. The main contribution of this paper is a syntax-directed bi-directional type system where we distinguish between the data language and the computation language together with the progress and preservation proof for our language.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "logical frameworks; type system", } @Article{Herbelin:2008:ACN, author = "Hugo Herbelin and Silvia Ghilezan", title = "An approach to call-by-name delimited continuations", journal = j-SIGPLAN, volume = "43", number = "1", pages = "383--394", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328897.1328484", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We show that a variant of Parigot's \lambda $\mu$-calculus, originally due to de Groote and proved to satisfy Boehm's theorem by Saurin, is canonically interpretable as a call-by-name calculus of delimited control. This observation is expressed using Ariola et al's call-by-value calculus of delimited control, an extension of \lambda $\mu$-calculus with delimited control known to be equationally equivalent to Danvy and Filinski's calculus with shift and reset. Our main result then is that de Groote and Saurin's variant of \lambda $\mu$-calculus is equivalent to a canonical call-by-name variant of Ariola et al's calculus. The rest of the paper is devoted to a comparative study of the call-by-name and call-by-value variants of Ariola et al's calculus, covering in particular the questions of simple typing, operational semantics, and continuation-passing-style semantics. Finally, we discuss the relevance of Ariola et al's calculus as a uniform framework for representing different calculi of delimited continuations, including 'lazy' variants such as Sabry's shift and lazy reset calculus.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "Boehm separability; classical logic; delimited control; observational completeness", } @Article{Tobin-Hochstadt:2008:DIT, author = "Sam Tobin-Hochstadt and Matthias Felleisen", title = "The design and implementation of typed scheme", journal = j-SIGPLAN, volume = "43", number = "1", pages = "395--406", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328438.1328486", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "When scripts in untyped languages grow into large programs, maintaining them becomes difficult. A lack of types in typical scripting languages means that programmers must (re)discover critical pieces of design information every time they wish to change a program. This analysis step both slows down the maintenance process and may even introduce mistakes due to the violation of undiscovered invariants.\par This paper presents Typed Scheme, an explicitly typed extension of an untyped scripting language. Its type system is based on the novel notion of occurrence typing, which we formalize and mechanically prove sound. The implementation of Typed Scheme additionally borrows elements from a range of approaches, including recursive types, true unions and subtyping, plus polymorphism combined with a modicum of local inference. Initial experiments with the implementation suggest that Typed Scheme naturally accommodates the programming style of the underlying scripting language, at least for the first few thousand lines of ported code.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "scheme; type systems", } @Article{Bohannon:2008:BRL, author = "Aaron Bohannon and J. Nathan Foster and Benjamin C. Pierce and Alexandre Pilkiewicz and Alan Schmitt", title = "{Boomerang}: resourceful lenses for string data", journal = j-SIGPLAN, volume = "43", number = "1", pages = "407--419", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328438.1328487", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A lens is a bidirectional program. When read from left to right, it denotes an ordinary function that maps inputs to outputs. When read from right to left, it denotes an ''update translator'' that takes an input together with an updated output and produces a new input that reflects the update. Many variants of this idea have been explored in the literature, but none deal fully with ordered data. If, for example, an update changes the order of a list in the output, the items in the output list and the chunks of the input that generated them can be misaligned, leading to lost or corrupted data.\par We attack this problem in the context of bidirectional transformations over strings, the primordial ordered data type. We first propose a collection of bidirectional string lens combinators, based on familiar operations on regular transducers (union, concatenation, Kleene-star) and with a type system based on regular expressions. We then design anew semantic space of dictionary lenses, enriching the lenses of Foster et al. (2007) with support for two additional combinators for marking ''reorderable chunks'' and their keys. To demonstrate the effectiveness of these primitives, we describe the design and implementation of Boomerang, a full-blown bidirectional programming language with dictionary lenses at its core. We have used Boomerang to build transformers for complex real-world data formats including the SwissProt genomic database.\par We formalize the essential property of resourcefulness -the correct use of keys to associate chunks in the input and output-by defining a refined semantic space of quasi-oblivious lenses. Several previously studied properties of lenses turn out to have compact characterizations in this space.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bidirectional languages; lenses; regular string transducers; regular types; view update problem", } @Article{Fisher:2008:DSF, author = "Kathleen Fisher and David Walker and Kenny Q. Zhu and Peter White", title = "From dirt to shovels: fully automatic tool generation from ad hoc data", journal = j-SIGPLAN, volume = "43", number = "1", pages = "421--434", month = jan, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1328438.1328488", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:02:13 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "An ad hoc data source is any semistructured data source for which useful data analysis and transformation tools are not readily available. Such data must be queried, transformed and displayed by systems administrators, computational biologists, financial analysts and hosts of others on a regular basis. In this paper, we demonstrate that it is possible to generate a suite of useful data processing tools, including a semi-structured query engine, several format converters, a statistical analyzer and data visualization routines directly from the ad hoc data itself, without any human intervention. The key technical contribution of the work is a multi-phase algorithm that automatically infers the structure of an ad hoc data source and produces a format specification in the PADS data description language. Programmers wishing to implement custom data analysis tools can use such descriptions to generate printing and parsing libraries for the data. Alternatively, our software infrastructure will push these descriptions through the PADS compiler, creating format-dependent modules that, when linked with format-independent algorithms for analysis and transformation, result in fully functional tools. We evaluate the performance of our inference algorithm, showing it scales linearly in the size of the training data --- completing in seconds, as opposed to the hours or days it takes to write a description by hand. We also evaluate the correctness of the algorithm, demonstrating that generating accurate descriptions often requires less than 5\% of the available data.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "ad hoc data; data description languages; grammar induction; tool generation", } @Article{Fitzgerald:2008:VAS, author = "John Fitzgerald and Peter Gorm Larsen and Shin Sahara", title = "{VDMTools}: advances in support for formal modeling in {VDM}", journal = j-SIGPLAN, volume = "43", number = "2", pages = "3--11", month = feb, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1361213.1361214", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:32 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We describe the current status of 'VDMTools', a group of tools supporting the analysis of system models expressed in the formal language of the Vienna Development Method. Three dialects of the language are supported: the ISO standard VDM specification language with support for modular structuring, the extension VDM++ which supports object-oriented structuring and concurrency, and a version extending VDM++ with features for modeling and analysing distributed embedded real-time systems. VDMTools provides extensive static semantics checking, automatic code generation, round-trip mapping to UML class diagrams, documentation support, test coverage analysis and debugging support. The tools' focus is on supporting the cost-effective development and exploitation of formal models in industrial settings. The paper presents the components of VDMTools and reports recent experience using them for the development of large models.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "formal methods; tool support; validation; VDM; Vienna Development Method", } @Article{Lu:2008:CIE, author = "Jia Lu and Jing Ying and Ming hu Wu and Cang Hong Jin", title = "Crosscutting invariant and an efficient checking algorithm using program slicing", journal = j-SIGPLAN, volume = "43", number = "2", pages = "12--20", month = feb, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1361213.1361215", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:32 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Owing to the characteristics of quantification and obliviousness, modular behavioral analysis and modular reasoning in aspect-oriented language are more difficult than that of traditional paradigms. Similar to the method of Design by Contract in object-oriented language, we annotate crosscutting modules and affected modules with pre-conditions and post-conditions. Because assigning blame for pre-condition and post-condition failures during the process of crosscutting is subtle and complex, we introduce a notion of crosscutting invariant and a checking algorithm based on this notion. Since there are some repeated contract checks in the original algorithm, we use the technology of program slicing to search those unnecessary repeat checks and delete them. We also represent an example to represent the algorithm and its improvement.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "aspect-oriented language; crosscutting interference; crosscutting quality; crosscutting safety", } @Article{Qian:2008:PSU, author = "Ju Qian and Baowen Xu", title = "Program slicing under {UML} scenario models", journal = j-SIGPLAN, volume = "43", number = "2", pages = "21--24", month = feb, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1361213.1361216", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:32 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Slicing is an important decomposition technique for program understanding. However, traditional slicing methods tend to produce too large slices for human inspection as modern programs are often huge and static program analyses are hard to be precise enough. According to the state-of-the art research and our own experience, we believe a possible solution to such problem could be incorporating UML scenario models into program slicing. This paper presents a detail discussion on how scenarios can benefit slicing relevant program analyses and proposes a general scenario specified program slicing method. The analyses indicate that scenario specified program slicing may obtain smaller slices for program understanding.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "program slicing; program understanding; scenario", } @Article{Zhang:2008:ASA, author = "Danfeng Zhang and Yao Guo and Xiangqun Chen", title = "{AspectC2C}: a symmetric aspect extension to the {C} language", journal = j-SIGPLAN, volume = "43", number = "2", pages = "25--32", month = feb, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1361213.1361217", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:32 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "By separating crosscutting concerns into modules, aspect-oriented programming (AOP) can greatly improve the maintainability, understandability and reusability of software. However, the asymmetric paradigm adopted by most AOP extensions could bring crosscutting concerns into the aspect code and thus limit the reusability of aspects.\par Symmetric paradigms have been proposed to alleviate such limitations, but few extensions on such paradigm target at non-object-oriented languages, such as C. In this paper, we propose a symmetric aspect extension to the C language, called AspectC2C, and discuss implementation issues and benefits of this new extension comparing to the asymmetric ones.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "aspect extension; aspect-oriented programming; C language; symmetric paradigm", } @Article{Winfree:2008:TMP, author = "Erik Winfree", title = "Toward molecular programming with {DNA}", journal = j-SIGPLAN, volume = "43", number = "3", pages = "1--1", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1353534.1346282", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Biological organisms are beautiful examples of programming. The program and data are stored in biological molecules such as DNA, RNA, and proteins; the algorithms are carried out by molecular and biochemical processes; and the end result is the creation and function of an organism. If we understood how to program molecular systems, what could we create? Lifelike technologies whose basic operations are chemical reactions? The fields of chemistry, physics, biology, and computer science are converging as we begin to synthesize molecules, molecular machines, and molecular systems of ever increasing complexity, leading to subdisciplines such as DNA nanotechnology, DNA computing, and synthetic biology. Having demonstrated simple devices and systems -- self-assembled structures, molecular motors, chemical logic gates -- researchers are now turning to the question of how to create large-scale integrated systems. To do so, we must learn how to manage complexity: how to efficiently specify the structure and behavior of intricate molecular systems, how to compile such specifications down to the design of molecules to be synthesized in the lab, and how to ensure that such systems function robustly. These issues will be illustrated for chemical logic circuits based on cascades of DNA hybridization reactions.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "DNA; molecular programming", } @Article{Chen:2008:OVB, author = "Xiaoxin Chen and Tal Garfinkel and E. Christopher Lewis and Pratap Subrahmanyam and Carl A. Waldspurger and Dan Boneh and Jeffrey Dwoskin and Dan R. K. Ports", title = "{Overshadow}: a virtualization-based approach to retrofitting protection in commodity operating systems", journal = j-SIGPLAN, volume = "43", number = "3", pages = "2--13", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1346281.1346284", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Commodity operating systems entrusted with securing sensitive data are remarkably large and complex, and consequently, frequently prone to compromise. To address this limitation, we introduce a virtual-machine-based system called Overshadow that protects the privacy and integrity of application data, even in the event of a total OS compromise. Overshadow presents an application with a normal view of its resources, but the OS with an encrypted view. This allows the operating system to carry out the complex task of managing an application's resources, without allowing it to read or modify them. Thus, Overshadow offers a last line of defense for application data.\par Overshadow builds on multi-shadowing, a novel mechanism that presents different views of 'physical' memory, depending on the context performing the access. This primitive offers an additional dimension of protection beyond the hierarchical protection domains implemented by traditional operating systems and processor architectures.\par We present the design and implementation of Overshadow and show how its new protection semantics can be integrated with existing systems. Our design has been fully implemented and used to protect a wide range of unmodified legacy applications running on an unmodified Linux operating system. We evaluate the performance of our implementation, demonstrating that this approach is practical.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "cloaking; hypervisors; memory protection; multi-shadowing; operating systems; virtual machine monitors; VMM", } @Article{McCune:2008:HLC, author = "Jonathan M. McCune and Bryan Parno and Adrian Perrig and Michael K. Reiter and Arvind Seshadri", title = "How low can you go?: recommendations for hardware-supported minimal {TCB} code execution", journal = j-SIGPLAN, volume = "43", number = "3", pages = "14--25", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1346281.1346285", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We explore the extent to which newly available CPU-based security technology can reduce the Trusted Computing Base (TCB) for security-sensitive applications. We find that although this new technology represents a step in the right direction, significant performance issues remain. We offer several suggestions that leverage existing processor technology, retain security, and improve performance. Implementing these recommendations will finally allow application developers to focus exclusively on the security of their own code, enabling it to execute in isolation from the numerous vulnerabilities in the underlying layers of legacy code.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "late launch; secure execution; trusted computing", } @Article{Bhargava:2008:ATD, author = "Ravi Bhargava and Benjamin Serebrin and Francesco Spadini and Srilatha Manne", title = "Accelerating two-dimensional page walks for virtualized systems", journal = j-SIGPLAN, volume = "43", number = "3", pages = "26--35", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1346281.1346286", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Nested paging is a hardware solution for alleviating the software memory management overhead imposed by system virtualization. Nested paging complements existing page walk hardware to form a two-dimensional (2D) page walk, which reduces the need for hypervisor intervention in guest page table management. However, the extra dimension also increases the maximum number of architecturally-required page table references.\par This paper presents an in-depth examination of the 2D page table walk overhead and options for decreasing it. These options include using the AMD Opteron processor's page walk cache to exploit the strong reuse of page entry references. For a mix of server and SPEC benchmarks, the presented results show a 15\%-38\% improvement in guest performance by extending the existing page walk cache to also store the nested dimension of the 2D page walk. Caching nested page table translations and skipping multiple page entry references produce an additional 3\%-7\% improvement.\par Much of the remaining 2D page walk overhead is due to low-locality nested page entry references, which result in additional memory hierarchy misses. By using large pages, the hypervisor can eliminate many of these long-latency accesses and further improve the guest performance by 3\%-22\%.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "AMD; hypervisor; memory management; nested paging; page walk caching; TLB; virtual machine monitor; virtualization", } @Article{Lee:2008:ETL, author = "Benjamin C. Lee and David Brooks", title = "Efficiency trends and limits from comprehensive microarchitectural adaptivity", journal = j-SIGPLAN, volume = "43", number = "3", pages = "36--47", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1353534.1346288", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Increasing demand for power-efficient, high-performance computing requires tuning applications and/or the underlying hardware to improve the mapping between workload heterogeneity and computational resources. To assess the potential benefits of hardware tuning, we propose a framework that leverages synergistic interactions between recent advances in (a) sampling, (b) predictive modeling, and (c) optimization heuristics. This framework enables qualitatively new capabilities in analyzing the performance and power characteristics of adaptive microarchitectures. For the first time, we are able to simultaneously consider high temporal and comprehensive spatial adaptivity. In particular, we optimize efficiency for many, short adaptive intervals and identify the best configuration of 15 parameters, which define a space of 240B point.\par With frequent sub-application reconfiguration and a fully reconfigurable hardware substrate, adaptive microarchitectures achieve bips$^3$ /w efficiency gains of up to 5.3x (median 2.4x) relative to their static counterparts already optimized for a given application. This 5.3x efficiency gain is derived from a 1.6x performance gain and 0.8x power reduction. Although several applications achieve a significant fraction of their potential efficiency with as few as three adaptive parameters, the three most significant parameters differ across applications. These differences motivate a hardware substrate capable of comprehensive adaptivity to meet these diverse application requirements.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "adaptivity; efficiency; inference; microarchitecture; performance; power; reconfigurablity; regression; simulation; statistics", } @Article{Raghavendra:2008:NPS, author = "Ramya Raghavendra and Parthasarathy Ranganathan and Vanish Talwar and Zhikui Wang and Xiaoyun Zhu", title = "No 'power' struggles: coordinated multi-level power management for the data center", journal = j-SIGPLAN, volume = "43", number = "3", pages = "48--59", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1353534.1346289", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Power delivery, electricity consumption, and heat management are becoming key challenges in data center environments. Several past solutions have individually evaluated different techniques to address separate aspects of this problem, in hardware and software, and at local and global levels. Unfortunately, there has been no corresponding work on coordinating all these solutions. In the absence of such coordination, these solutions are likely to interfere with one another, in unpredictable (and potentially dangerous) ways. This paper seeks to address this problem. We make two key contributions. First, we propose and validate a power management solution that coordinates different individual approaches. Using simulations based on 180 server traces from nine different real-world enterprises, we demonstrate the correctness, stability, and efficiency advantages of our solution. Second, using our unified architecture as the base, we perform a detailed quantitative sensitivity analysis and draw conclusions about the impact of different architectures, implementations, workloads, and system design choices.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "capping; control theory; coordination; data center; efficiency; power management; virtualization", } @Article{Ballapuram:2008:EAS, author = "Chinnakrishnan S. Ballapuram and Ahmad Sharif and Hsien-Hsin S. Lee", title = "Exploiting access semantics and program behavior to reduce snoop power in chip multiprocessors", journal = j-SIGPLAN, volume = "43", number = "3", pages = "60--69", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1346281.1346290", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Integrating more processor cores on-die has become the unanimous trend in the microprocessor industry. Most of the current research thrusts using chip multiprocessors (CMPs) as the baseline to analyze problems in various domains. One of the main design issues facing CMP systems is the growing number of snoops required to maintain cache coherency and to support self/cross-modifying code that leads to power and performance limitations. In this paper, we analyze the internal and external snoop behavior in a CMP system and relax the snoopy cache coherence protocol based on the program semantics and properties of the shared variables for saving power. Based on the observations and analyses, we propose two novel techniques: Selective Snoop Probe (SSP) and Essential Snoop Probe (ESP) to reduce power without compromising performance. Our simulation results show that using the SSP technique, 5\% to 65\% data cache energy savings per core for different processor configurations can be achieved with 1\% to 2\% performance improvement. We also show that 5\% to 82\% of data cache energy per core is spent on the non-essential snoop probes that can be saved using the ESP technique.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "chip multiprocessors; internal and external snoops; MESI protocol; self-modifying code", } @Article{Mallik:2008:PMU, author = "Arindam Mallik and Jack Cosgrove and Robert P. Dick and Gokhan Memik and Peter Dinda", title = "{PICSEL}: measuring user-perceived performance to control dynamic frequency scaling", journal = j-SIGPLAN, volume = "43", number = "3", pages = "70--79", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1353534.1346291", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The ultimate goal of a computer system is to satisfy its users. The success of architectural or system-level optimizations depends largely on having accurate metrics for user satisfaction. We propose to derive such metrics from information that is 'close to flesh' and apparent to the user rather than from information that is 'close to metal' and hidden from the user. We describe and evaluate PICSEL, a dynamic voltage and frequency scaling (DVFS) technique that uses measurements of variations in the rate of change of a computer's video output to estimate user-perceived performance. Our adaptive algorithms, one conservative and one aggressive, use these estimates to dramatically reduce operating frequencies and voltages for graphically-intensive applications while maintaining performance at a satisfactory level for the user. We evaluate PICSEL through user studies conducted on a Pentium M laptop running Windows XP. Experiments performed with 20 users executing three applications indicate that the measured laptop power can be reduced by up to 12.1\%, averaged across all of our users and applications, compared to the default Windows XP DVFS policy. User studies revealed that the difference in overall user satisfaction between the more aggressive version of PICSEL and Windows DVFS were statistically insignificant, whereas the conservative version of PICSEL actually improved user satisfaction when compared to Windows DVFS.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dynamic voltage and frequency scaling; power management; thermal emergency; user-perceived performance", } @Article{Joao:2008:IPO, author = "Jose A. Joao and Onur Mutlu and Hyesoon Kim and Rishi Agarwal and Yale N. Patt", title = "Improving the performance of object-oriented languages with dynamic predication of indirect jumps", journal = j-SIGPLAN, volume = "43", number = "3", pages = "80--90", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1353535.1346293", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Indirect jump instructions are used to implement increasingly-common programming constructs such as virtual function calls, switch-case statements, jump tables, and interface calls. The performance impact of indirect jumps is likely to increase because indirect jumps with multiple targets are difficult to predict even with specialized hardware.\par This paper proposes a new way of handling hard-to-predict indirect jumps: dynamically predicating them. The compiler (static or dynamic) identifies indirect jumps that are suitable for predication along with their control-flow merge (CFM) points. The hardware predicates the instructions between different targets of the jump and its CFM point if the jump turns out to be hard-to-predict at run time. If the jump would actually have been mispredicted, its dynamic predication eliminates a pipeline flush, thereby improving performance.\par Our evaluations show that Dynamic Indirect jump Predication (DIP) improves the performance of a set of object-oriented applications including the Java DaCapo benchmark suite by 37.8\% compared to a commonly-used branch target buffer based predictor, while also reducing energy consumption by 24.8\%. We compare DIP to three previously proposed indirect jump predictors and find that it provides the best performance and energy-efficiency.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dynamic predication; indirect jumps; object-oriented languages; predicated execution; virtual functions", } @Article{Wegiel:2008:MCV, author = "Michal Wegiel and Chandra Krintz", title = "The mapping collector: virtual memory support for generational, parallel, and concurrent compaction", journal = j-SIGPLAN, volume = "43", number = "3", pages = "91--102", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1353535.1346294", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Parallel and concurrent garbage collectors are increasingly employed by managed runtime environments (MREs) to maintain scalability, as multi-core architectures and multi-threaded applications become pervasive. Moreover, state-of-the-art MREs commonly implement compaction to eliminate heap fragmentation and enable fast linear object allocation.\par Our empirical analysis of object demographics reveals that unreachable objects in the heap tend to form clusters large enough to be effectively managed at the granularity of virtual memory pages. Even though processes can manipulate the mapping of the virtual address space through the standard operating system (OS) interface on most platforms, extant parallel/concurrent compactors do not do so to exploit this clustering behavior and instead achieve compaction by performing, relatively expensive, object moving and pointer adjustment.\par We introduce the Mapping Collector (MC), which leverages virtual memory operations to reclaim and consolidate free space without moving objects and updating pointers. MC is a nearly-single-phase compactor that is simpler and more efficient than previously reported compactors that comprise two to four phases. Through effective MRE-OS coordination, MC maintains the simplicity of a non-moving collector while providing efficient parallel and concurrent compaction.\par We implement both stop-the-world and concurrent MC in a generational garbage collection framework within the open-source HotSpot Java Virtual Machine. Our experimental evaluation using a multiprocessor indicates that MC significantly increases throughput and scalability as well as reduces pause times, relative to state-of-the-art, parallel and concurrent compactors.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compaction; concurrent; parallel; virtual memory", } @Article{Devietti:2008:HAS, author = "Joe Devietti and Colin Blundell and Milo M. K. Martin and Steve Zdancewic", title = "{Hardbound}: architectural support for spatial safety of the {C} programming language", journal = j-SIGPLAN, volume = "43", number = "3", pages = "103--114", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1346281.1346295", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The C programming language is at least as well known for its absence of spatial memory safety guarantees (i.e., lack of bounds checking) as it is for its high performance. C's unchecked pointer arithmetic and array indexing allow simple programming mistakes to lead to erroneous executions, silent data corruption, and security vulnerabilities. Many prior proposals have tackled enforcing spatial safety in C programs by checking pointer and array accesses. However, existing software-only proposals have significant drawbacks that may prevent wide adoption, including: unacceptably high run-time overheads, lack of completeness, incompatible pointer representations, or need for non-trivial changes to existing C source code and compiler infrastructure.\par Inspired by the promise of these software-only approaches, this paper proposes a hardware bounded pointer architectural primitive that supports cooperative hardware/software enforcement of spatial memory safety for C programs. This bounded pointer is a new hardware primitive datatype for pointers that leaves the standard C pointer representation intact, but augments it with bounds information maintained separately and invisibly by the hardware. The bounds are initialized by the software, and they are then propagated and enforced transparently by the hardware, which automatically checks a pointer's bounds before it is dereferenced. One mode of use requires instrumenting only malloc, which enables enforcement of per-allocation spatial safety for heap-allocated objects for existing binaries. When combined with simple intraprocedural compiler instrumentation, hardware bounded pointers enable a low-overhead approach for enforcing complete spatial memory safety in unmodified C programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "C programming language; spatial memory safety", } @Article{Lvin:2008:ATA, author = "Vitaliy B. Lvin and Gene Novark and Emery D. Berger and Benjamin G. Zorn", title = "{Archipelago}: trading address space for reliability and security", journal = j-SIGPLAN, volume = "43", number = "3", pages = "115--124", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1353535.1346296", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Memory errors are a notorious source of security vulnerabilities that can lead to service interruptions, information leakage and unauthorized access. Because such errors are also difficult to debug, the absence of timely patches can leave users vulnerable to attack for long periods of time. A variety of approaches have been introduced to combat these errors, but these often incur large runtime overheads and generally abort on errors, threatening availability.\par This paper presents Archipelago, a runtime system that takes advantage of available address space to substantially reduce the likelihood that a memory error will affect program execution. Archipelago randomly allocates heap objects far apart in virtual address space, effectively isolating each object from buffer overflows. Archipelago also protects against dangling pointer errors by preserving the contents of freed objects after they are freed. Archipelago thus trades virtual address space---a plentiful resource on 64-bit systems---for significantly improved program reliability and security, while limiting physical memory consumption by tracking the working set of an application and compacting cold objects. We show that Archipelago allows applications to continue to run correctly in the face of thousands of memory errors. Across a suite of server applications, Archipelago's performance overhead is 6\% on average (between -7\% and 22\%), making it especially suitable to protect servers that have known security vulnerabilities due to heap memory errors.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "Archipelago; buffer overflow; dynamic memory allocation; memory errors; probabilistic memory safety; randomized algorithms; virtual memory", } @Article{Choi:2008:ABP, author = "Bumyong Choi and Leo Porter and Dean M. Tullsen", title = "Accurate branch prediction for short threads", journal = j-SIGPLAN, volume = "43", number = "3", pages = "125--134", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1353534.1346298", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Multi-core processors, with low communication costs and high availability of execution cores, will increase the use of execution and compilation models that use short threads to expose parallelism. Current branch predictors seek to incorporate large amounts of control flow history to maximize accuracy. However, when that history is absent the predictor fails to work as intended. Thus, modern predictors are almost useless for threads below a certain length.\par Using a Speculative Multithreaded (SpMT) architecture as an example of a system which generates shorter threads, this work examines techniques to improve branch prediction accuracy when a new thread begins to execute on a different core. This paper proposes a minor change to the branch predictor that gives virtually the same performance on short threads as an idealized predictor that incorporates unknowable pre-history of a spawned speculative thread. At the same time, strong performance on long threads is preserved. The proposed technique sets the global history register of the spawned thread to the initial value of the program counter. This novel and simple design reduces branch mispredicts by 29\% and provides as much as a 13\% IPC improvement on selected SPEC2000 benchmarks.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "branch prediction; chip multiprocessors", } @Article{Srikantaiah:2008:ASP, author = "Shekhar Srikantaiah and Mahmut Kandemir and Mary Jane Irwin", title = "Adaptive set pinning: managing shared caches in chip multiprocessors", journal = j-SIGPLAN, volume = "43", number = "3", pages = "135--144", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1353534.1346299", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "As part of the trend towards Chip Multiprocessors (CMPs) for the next leap in computing performance, many architectures have explored sharing the last level of cache among different processors for better performance-cost ratio and improved resource allocation. Shared cache management is a crucial CMP design aspect for the performance of the system. This paper first presents a new classification of cache misses --- CII: Compulsory, Inter-processor and Intra-processor misses --- for CMPs with shared caches to provide a better understanding of the interactions between memory transactions of different processors at the level of shared cache in a CMP. We then propose a novel approach, called set pinning, for eliminating inter-processor misses and reducing intra-processor misses in a shared cache. Furthermore, we show that an adaptive set pinning scheme improves over the benefits obtained by the set pinning scheme by significantly reducing the number of off-chip accesses. Extensive analysis of these approaches with SPEComp 2001 benchmarks is performed using a full system simulator. Our experiments indicate that the set pinning scheme achieves an average improvement of 22.18\% in the L2 miss rate while the adaptive set pinning scheme reduces the miss rates by an average of 47.94\% as compared to the traditional shared cache scheme. They also improve the performance by 7.24\% and 17.88\% respectively.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "CMP; inter-processor; intra-processor; set pinning; shared cache", } @Article{Tuck:2008:SSE, author = "James Tuck and Wonsun Ahn and Luis Ceze and Josep Torrellas", title = "{SoftSig}: software-exposed hardware signatures for code analysis and optimization", journal = j-SIGPLAN, volume = "43", number = "3", pages = "145--156", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1346281.1346300", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Many code analysis techniques for optimization, debugging, or parallelization need to perform runtime disambiguation of sets of addresses. Such operations can be supported efficiently and with low complexity with hardware signatures.\par To enable flexible use of signatures, this paper proposes to expose a Signature Register File to the software through a rich ISA. The software has great flexibility to decide, for each signature,which addresses to collect and which addresses to disambiguate against. We call this architecture SoftSig. In addition, as an example of SoftSig use, we show how to detect redundant function calls efficiently and eliminate them dynamically. We call this algorithm MemoiSE. On average for five popular applications, MemoiSE reduces the number of dynamic instructions by 9.3\%, thereby reducing the execution time of the applications by 9\%.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "memory disambiguation; multi-core architectures; runtime optimization", } @Article{Burcea:2008:PV, author = "Ioana Burcea and Stephen Somogyi and Andreas Moshovos and Babak Falsafi", title = "Predictor virtualization", journal = j-SIGPLAN, volume = "43", number = "3", pages = "157--167", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1346281.1346301", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Many hardware optimizations rely on collecting information about program behavior at runtime. This information is stored in lookup tables. To be accurate and effective, these optimizations usually require large dedicated on-chip tables. Although technology advances offer an increased amount of on-chip resources, these resources are allocated to increase the size of on-chip conventional cache hierarchies.\par This work proposes Predictor Virtualization, a technique that uses the existing memory hierarchy to emulate large predictor tables. We demonstrate the benefits of this technique by virtualizing a state-of-the-art data prefetcher. Full-system, cycle-accurate simulations demonstrate that the virtualized prefetcher preserves the performance benefits of the original design, while reducing the on-chip storage dedicated to the predictor table from 60KB down to less than one kilobyte.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "caches; memory hierarchy; metadata; predictor virtualization", } @Article{Ganapathy:2008:DIM, author = "Vinod Ganapathy and Matthew J. Renzelmann and Arini Balakrishnan and Michael M. Swift and Somesh Jha", title = "The design and implementation of microdrivers", journal = j-SIGPLAN, volume = "43", number = "3", pages = "168--178", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1346281.1346303", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Device drivers commonly execute in the kernel to achieve high performance and easy access to kernel services. However, this comes at the price of decreased reliability and increased programming difficulty. Driver programmers are unable to use user-mode development tools and must instead use cumbersome kernel tools. Faults in kernel drivers can cause the entire operating system to crash. User-mode drivers have long been seen as a solution to this problem, but suffer from either poor performance or new interfaces that require a rewrite of existing drivers.\par This paper introduces the Microdrivers architecture that achieves high performance and compatibility by leaving critical path code in the kernel and moving the rest of the driver code to a user-mode process. This allows data-handling operations critical to I/O performance to run at full speed, while management operations such as initialization and configuration run at reduced speed in user-level. To achieve compatibility, we present DriverSlicer, a tool that splits existing kernel drivers into a kernel-level component and a user-level component using a small number of programmer annotations. Experiments show that as much as 65\% of driver code can be removed from the kernel without affecting common-case performance, and that only 1-6 percent of the code requires annotations.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "device drivers; program partitioning; reliability", } @Article{Weinsberg:2008:TFC, author = "Yaron Weinsberg and Danny Dolev and Tal Anker and Muli Ben-Yehuda and Pete Wyckoff", title = "Tapping into the fountain of {CPUs}: on operating system support for programmable devices", journal = j-SIGPLAN, volume = "43", number = "3", pages = "179--188", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1346281.1346304", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The constant race for faster and more powerful CPUs is drawing to a close. No longer is it feasible to significantly increase the speed of the CPU without paying a crushing penalty in power consumption and production costs. Instead of increasing single thread performance, the industry is turning to multiple CPU threads or cores (such as SMT and CMP) and heterogeneous CPU architectures (such as the Cell Broadband Engine). While this is a step in the right direction, in every modern PC there is a wealth of untapped compute resources. The NIC has a CPU; the disk controller is programmable; some high-end graphics adapters are already more powerful than host CPUs. Some of these CPUs can perform some functions more efficiently than the host CPUs. Our operating systems and programming abstractions should be expanded to let applications tap into these computational resources and make the best use of them.\par Therefore, we propose the H\par YDRA framework, which lets application developers use the combined power of every compute resource in a coherent way. HYDRA is a programming model and a runtime support layer which enables utilization of host processors as well as various programmable peripheral devices' processors. We present the framework and its application for a demonstrative use-case, as well as provide a thorough evaluation of its capabilities. Using HYDRA we were able to cut down the development cost of a system that uses multiple heterogeneous compute resources significantly.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "offloading; operating systems; programming model", } @Article{Shen:2008:HCD, author = "Kai Shen and Ming Zhong and Sandhya Dwarkadas and Chuanpeng Li and Christopher Stewart and Xiao Zhang", title = "Hardware counter driven on-the-fly request signatures", journal = j-SIGPLAN, volume = "43", number = "3", pages = "189--200", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1346281.1346306", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Today's processors provide a rich source of statistical information on application execution through hardware counters. In this paper, we explore the utilization of these statistics as request signatures in server applications for identifying requests and inferring high-level request properties (e.g., CPU and I/O resource needs). Our key finding is that effective request signatures may be constructed using a small amount of hardware statistics while the request is still in an early stage of its execution. Such on-the-fly request identification and property inference allow guided operating system adaptation at request granularity (e.g., resource-aware request scheduling and on-the-fly request classification). We address the challenges of selecting hardware counter metrics for signature construction and providing necessary operating system support for per-request statistics management. Our implementation in the Linux 2.6.10 kernel suggests that our approach requires low overhead suitable for runtime deployment. Our on-the-fly request resource consumption inference (averaging 7\%, 3\%, 20\%, and 41\% prediction errors for four server workloads, TPC-C, TPC-H, J2EE-based RUBiS, and a trace-driven index search, respectively) is much more accurate than the online running-average based prediction (73-82\% errors). Its use for resource-aware request scheduling results in a 15-70\% response time reduction for three CPU-bound applications. Its use for on-the-fly request classification and anomaly detection exhibits high accuracy for the TPC-H workload with synthetically generated anomalous requests following a typical SQL-injection attack pattern.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "anomaly detection; hardware counter; operating system adaptation; request classification; server system", } @Article{VanErtvelde:2008:DPA, author = "Luk {Van Ertvelde} and Lieven Eeckhout", title = "Dispersing proprietary applications as benchmarks through code mutation", journal = j-SIGPLAN, volume = "43", number = "3", pages = "201--210", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1353534.1346307", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Industry vendors hesitate to disseminate proprietary applications to academia and third party vendors. By consequence, the benchmarking process is typically driven by standardized, open-source benchmarks which may be very different from and likely not representative of the real-life applications of interest.\par This paper proposes code mutation, a novel technique that mutates a proprietary application to complicate reverse engineering so that it can be distributed as a benchmark. The benchmark mutant then serves as a proxy for the proprietary application. The key idea in the proposed code mutation approach is to preserve the proprietary application's dynamic memory access and/or control flow behavior in the benchmark mutant while mutating the rest of the application code. To this end, we compute program slices for memory access operations and/or control flow operations trimmed through constant value and branch profiles; and subsequently mutate the instructions not appearing in these slices through binary rewriting.\par Our experimental results using SPEC CPU2000 and MiBench benchmarks show that code mutation is a promising technique that mutates up to 90\% of the static binary, up to 50\% of the dynamically executed instructions, and up to 35\% of the at run time exposed inter-operation data dependencies. The performance characteristics of the mutant are very similar to those of the proprietary application across a wide range of microarchitectures and hardware implementations.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "benchmark generation; code mutation", } @Article{Mysore:2008:UVF, author = "Shashidhar Mysore and Bita Mazloom and Banit Agrawal and Timothy Sherwood", title = "Understanding and visualizing full systems with data flow tomography", journal = j-SIGPLAN, volume = "43", number = "3", pages = "211--221", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1353534.1346308", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "It is not uncommon for modern systems to be composed of a variety of interacting services, running across multiple machines in such a way that most developers do not really understand the whole system. As abstraction is layered atop abstraction, developers gain the ability to compose systems of extraordinary complexity with relative ease. However, many software properties, especially those that cut across abstraction layers, become very difficult to understand in such compositions. The communication patterns involved, the privacy of critical data, and the provenance of information, can be difficult to find and understand, even with access to all of the source code. The goal of Data Flow Tomography is to use the inherent information flow of such systems to help visualize the interactions between complex and interwoven components across multiple layers of abstraction. In the same way that the injection of short-lived radioactive isotopes help doctors trace problems in the cardiovascular system, the use of 'data tagging' can help developers slice through the extraneous layers of software and pin-point those portions of the system interacting with the data of interest. To demonstrate the feasibility of this approach we have developed a prototype system in which tags are tracked both through the machine and in between machines over the network, and from which novel visualizations of the whole system can be derived. We describe the system-level challenges in creating a working system tomography tool and we qualitatively evaluate our system by examining several example real world scenarios.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "data flow tracking; tomography; virtual machine", } @Article{Ottoni:2008:COG, author = "Guilherme Ottoni and David I. August", title = "Communication optimizations for global multi-threaded instruction scheduling", journal = j-SIGPLAN, volume = "43", number = "3", pages = "222--232", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1353535.1346310", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The recent shift in the industry towards chip multiprocessor (CMP) designs has brought the need for multi-threaded applications to mainstream computing. As observed in several limit studies, most of the parallelization opportunities require looking for parallelism beyond local regions of code. To exploit these opportunities, especially for sequential applications, researchers have recently proposed global multi-threaded instruction scheduling techniques, including DSWP and GREMIO. These techniques simultaneously schedule instructions from large regions of code, such as arbitrary loop nests or whole procedures, and have been shown to be effective at extracting threads for many applications. A key enabler of these global instruction scheduling techniques is the Multi-Threaded Code Generation (MTCG) algorithm proposed in [16], which generates multi-threaded code for any partition of the instructions into threads. This algorithm inserts communication and synchronization instructions in order to satisfy all inter-thread dependences.\par In this paper, we present a general compiler framework, COCO, to optimize the communication and synchronization instructions inserted by the MTCG algorithm. This framework, based on thread-aware data-flow analyses and graph min-cut algorithms, appropriately models and optimizes all kinds of inter-thread dependences, including register, memory, and control dependences. Our experiments, using a fully automatic compiler implementation of these techniques, demonstrate significant reductions (about 30\% on average) in the number of dynamic communication instructions in code parallelized with DSWP and GREMIO. This reduction in communication translates to performance gains of up to 40\%.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "communication; data-flow analysis; graph min-cut; instruction scheduling; multi-threading; synchronization", } @Article{Kulkarni:2008:OPB, author = "Milind Kulkarni and Keshav Pingali and Ganesh Ramanarayanan and Bruce Walter and Kavita Bala and L. Paul Chew", title = "Optimistic parallelism benefits from data partitioning", journal = j-SIGPLAN, volume = "43", number = "3", pages = "233--243", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1353534.1346311", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Recent studies of irregular applications such as finite-element mesh generators and data-clustering codes have shown that these applications have a generalized data parallelism arising from the use of iterative algorithms that perform computations on elements of worklists. In some irregular applications, the computations on different elements are independent. In other applications, there may be complex patterns of dependences between these computations.\par The Galois system was designed to exploit this kind of irregular data parallelism on multicore processors. Its main features are (i) two kinds of set iterators for expressing worklist-based data parallelism, and (ii) a runtime system that performs optimistic parallelization of these iterators, detecting conflicts and rolling back computations as needed. Detection of conflicts and rolling back iterations requires information from class implementors.\par In this paper, we introduce mechanisms to improve the execution efficiency of Galois programs: data partitioning, data-centric work assignment, lock coarsening, and over-decomposition. These mechanisms can be used to exploit locality of reference, reduce mis-speculation, and lower synchronization overhead. We also argue that the design of the Galois system permits these mechanisms to be used with relatively little modification to the user code. Finally, we present experimental results that demonstrate the utility of these mechanisms.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "data partitioning; irregular programs; locality; lock coarsening; optimistic parallelism; over-decomposition", } @Article{Cox:2008:XEO, author = "Russ Cox and Tom Bergan and Austin T. Clements and Frans Kaashoek and Eddie Kohler", title = "{Xoc}, an extension-oriented compiler for systems programming", journal = j-SIGPLAN, volume = "43", number = "3", pages = "244--254", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1353535.1346312", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Today's system programmers go to great lengths to extend the languages in which they program. For instance, system-specific compilers find errors in Linux and other systems, and add support for specialized control flow to Qt and event-based programs. These compilers are difficult to build and cannot always understand each other's language changes. However, they can greatly improve code understandability and correctness, advantages that should be accessible to all programmers.\par We describe an extension-oriented compiler for C called xoc. An extension-oriented compiler, unlike a conventional extensible compiler, implements new features via many small extensions that are loaded together as needed. Xoc gives extension writers full control over program syntax and semantics while hiding many compiler internals. Xoc programmers concisely define powerful compiler extensions that, by construction, can be combined; even some parts of the base compiler, such as GNU C compatibility, are structured as extensions.\par Xoc is based on two key interfaces. Syntax patterns allow extension writers to manipulate language fragments using concrete syntax. Lazy computation of attributes allows extension writers to use the results of analyses by other extensions or the core without needing to worry about pass scheduling.\par Extensions built using xoc include xsparse, a 345-line extension that mimics Sparse, Linux's C front end, and xlambda, a 170-line extension that adds function expressions to C. An evaluation of xoc using these and 13 other extensions shows that xoc extensions are typically more concise than equivalent extensions written for conventional extensible compilers and that it is possible to compose extensions.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "extension-oriented compilers", } @Article{Wells:2008:AIF, author = "Philip M. Wells and Koushik Chakraborty and Gurindar S. Sohi", title = "Adapting to intermittent faults in multicore systems", journal = j-SIGPLAN, volume = "43", number = "3", pages = "255--264", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1353536.1346314", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Future multicore processors will be more susceptible to a variety of hardware failures. In particular, intermittent faults, caused in part by manufacturing, thermal, and voltage variations, can cause bursts of frequent faults that last from several cycles to several seconds or more. Due to practical limitations of circuit techniques, cost-effective reliability will likely require the ability to temporarily suspend execution on a core during periods of intermittent faults.\par We investigate three of the most obvious techniques for adapting to the dynamically changing resource availability caused by intermittent faults, and demonstrate their different system-level implications. We show that system software reconfiguration has very high overhead, that temporarily pausing execution on a faulty core can lead to cascading livelock, and that using spare cores has high fault-free cost. To remedy these and other drawbacks of the three baseline techniques, we propose using a thin hardware/firmware layer to manage an overcommitted system -- one where the OS is configured to use more virtual processors than the number of currently available physical cores. We show that this proposed technique can gracefully degrade performance during intermittent faults of various duration with low overhead, without involving system software, and without requiring spare cores.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "intermittent faults; overcommitted system", } @Article{Li:2008:UPH, author = "Man-Lap Li and Pradeep Ramachandran and Swarup Kumar Sahoo and Sarita V. Adve and Vikram S. Adve and Yuanyuan Zhou", title = "Understanding the propagation of hard errors to software and implications for resilient system design", journal = j-SIGPLAN, volume = "43", number = "3", pages = "265--276", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1346281.1346315", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "With continued CMOS scaling, future shipped hardware will be increasingly vulnerable to in-the-field faults. To be broadly deployable, the hardware reliability solution must incur low overheads, precluding use of expensive redundancy. We explore a cooperative hardware-software solution that watches for anomalous software behavior to indicate the presence of hardware faults. Fundamental to such a solution is a characterization of how hardware faults indifferent microarchitectural structures of a modern processor propagate through the application and OS.\par This paper aims to provide such a characterization, resulting in identifying low-cost detection methods and providing guidelines for implementation of the recovery and diagnosis components of such a reliability solution. We focus on hard faults because they are increasingly important and have different system implications than the much studied transients. We achieve our goals through fault injection experiments with a microarchitecture-level full system timing simulator. Our main results are: (1) we are able to detect 95\% of the unmasked faults in 7 out of 8 studied microarchitectural structures with simple detectors that incur zero to little hardware overhead; (2) over 86\% of these detections are within latencies that existing hardware checkpointing schemes can handle, while others require software checkpointing; and (3) a surprisingly large fraction of the detected faults corrupt OS state, but almost all of these are detected with latencies short enough to use hardware checkpointing, thereby enabling OS recovery in virtually all such cases.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "architecture; error detection; fault injection; permanent fault", } @Article{Suleman:2008:FDT, author = "M. Aater Suleman and Moinuddin K. Qureshi and Yale N. Patt", title = "Feedback-driven threading: power-efficient and high-performance execution of multi-threaded workloads on {CMPs}", journal = j-SIGPLAN, volume = "43", number = "3", pages = "277--286", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1346281.1346317", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Extracting high-performance from the emerging Chip Multiprocessors (CMPs) requires that the application be divided into multiple threads. Each thread executes on a separate core thereby increasing concurrency and improving performance. As the number of cores on a CMP continues to increase, the performance of some multi-threaded applications will benefit from the increased number of threads, whereas, the performance of other multi-threaded applications will become limited by data-synchronization and off-chip bandwidth. For applications that get limited by data-synchronization, increasing the number of threads significantly degrades performance and increases on-chip power. Similarly, for applications that get limited by off-chip bandwidth, increasing the number of threads increases on-chip power without providing any performance improvement. Furthermore, whether an application gets limited by data-synchronization, or bandwidth, or neither depends not only on the application but also on the input set and the machine configuration. Therefore, controlling the number of threads based on the run-time behavior of the application can significantly improve performance and reduce power.\par This paper proposes Feedback-Driven Threading (FDT), a framework to dynamically control the number of threads using run-time information. FDT can be used to implement Synchronization-Aware Threading (SAT), which predicts the optimal number of threads depending on the amount of data-synchronization. Our evaluation shows that SAT can reduce both execution time and power by up to 66\% and 78\% respectively. Similarly, FDT can be used to implement Bandwidth-Aware Threading (BAT), which predicts the minimum number of threads required to saturate the off-chip bus. Our evaluation shows that BAT reduces on-chip power by up to 78\%. When SAT and BAT are combined, the average execution time reduces by 17\% and power reduces by 59\%. The proposed techniques leverage existing performance counters and require minimal support from the threading library.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bandwidth; CMP; multi-threaded; synchronization", } @Article{Linderman:2008:MPM, author = "Michael D. Linderman and Jamison D. Collins and Hong Wang and Teresa H. Meng", title = "{Merge}: a programming model for heterogeneous multi-core systems", journal = j-SIGPLAN, volume = "43", number = "3", pages = "287--296", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1346281.1346318", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In this paper we propose the Merge framework, a general purpose programming model for heterogeneous multi-core systems. The Merge framework replaces current ad hoc approaches to parallel programming on heterogeneous platforms with a rigorous, library-based methodology that can automatically distribute computation across heterogeneous cores to achieve increased energy and performance efficiency. The Merge framework provides (1) a predicate dispatch-based library system for managing and invoking function variants for multiple architectures; (2) a high-level, library-oriented parallel language based on map-reduce; and (3) a compiler and runtime which implement the map-reduce language pattern by dynamically selecting the best available function implementations for a given input and machine configuration. Using a generic sequencer architecture interface for heterogeneous accelerators, the Merge framework can integrate function variants for specialized accelerators, offering the potential for to-the-metal performance for a wide range of heterogeneous architectures, all transparent to the user. The Merge framework has been prototyped on a heterogeneous platform consisting of an Intel Core 2 Duo CPU and an 8-core 32-thread Intel Graphics and Media Accelerator X3000, and a homogeneous 32-way Unisys SMP system with Intel Xeon processors. We implemented a set of benchmarks using the Merge framework and enhanced the library with X3000 specific implementations, achieving speedups of 3.6x -- 8.5x using the X3000 and 5.2x -- 22x using the 32-way system relative to the straight C reference implementation on a single IA32 core.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "GPGPU; heterogeneous multi-core; predicate dispatch", } @Article{Gummaraju:2008:SPG, author = "Jayanth Gummaraju and Joel Coburn and Yoshio Turner and Mendel Rosenblum", title = "{Streamware}: programming general-purpose multicore processors using streams", journal = j-SIGPLAN, volume = "43", number = "3", pages = "297--307", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1346281.1346319", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Recently, the number of cores on general-purpose processors has been increasing rapidly. Using conventional programming models, it is challenging to effectively exploit these cores for maximal performance. An interesting alternative candidate for programming multiple cores is the stream programming model, which provides a framework for writing programs in a sequential-style while greatly simplifying the task of automatic parallelization. It has been shown that not only traditional media/image applications but also more general-purpose data-intensive applications can be expressed in the stream programming style.\par In this paper, we investigate the potential to use the stream programming model to efficiently utilize commodity multicore general-purpose processors (e.g., Intel/AMD). Although several stream languages and stream compilers have recently been developed, they typically target special-purpose stream processors. In contrast, we propose a flexible software system, Streamware, which automatically maps stream programs onto a wide variety of general-purpose multicore processor configurations. We leverage existing compilation framework for stream processors and design a runtime environment which takes as input the output of these stream compilers in the form of machine-independent stream virtual machine code. The runtime environment assigns work to processor cores considering processor/cache configurations and adapts to workload variations. We evaluate this approach for a few general-purpose scientific applications on real hardware and a cycle-level simulator set-up to showcase scaling and contention issues. The results show that the stream programming model is a good choice for efficiently exploiting modern and future multicore CPUs for an important class of applications.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "general-purpose multicore processors; programming; runtime system; streams", } @Article{Nightingale:2008:PSC, author = "Edmund B. Nightingale and Daniel Peek and Peter M. Chen and Jason Flinn", title = "Parallelizing security checks on commodity hardware", journal = j-SIGPLAN, volume = "43", number = "3", pages = "308--318", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1346281.1346321", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Speck (Speculative Parallel Check) is a system that accelerates powerful security checks on commodity hardware by executing them in parallel on multiple cores. Speck provides an infrastructure that allows sequential invocations of a particular security check to run in parallel without sacrificing the safety of the system. Speck creates parallelism in two ways. First, Speck decouples a security check from an application by continuing the application, using speculative execution, while the security check executes in parallel on another core. Second, Speck creates parallelism between sequential invocations of a security check by running later checks in parallel with earlier ones. Speck provides a process-level replay system to deterministically and efficiently synchronize state between a security check and the original process. We use Speck to parallelize three security checks: sensitive data analysis, on-access virus scanning, and taint propagation. Running on a 4-core and an 8-core computer, Speck improves performance 4x and 7.5x for the sensitive data analysis check, 3.3x and 2.8x for the on-access virus scanning check, and 1.6x and 2x for the taint propagation check.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "operating systems; parallel; performance; security; speculative execution", } @Article{Castro:2008:BBR, author = "Miguel Castro and Manuel Costa and Jean-Philippe Martin", title = "Better bug reporting with better privacy", journal = j-SIGPLAN, volume = "43", number = "3", pages = "319--328", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1346281.1346322", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Software vendors collect bug reports from customers to improve the quality of their software. These reports should include the inputs that make the software fail, to enable vendors to reproduce the bug. However, vendors rarely include these inputs in reports because they may contain private user data. We describe a solution to this problem that provides software vendors with new input values that satisfy the conditions required to make the software follow the same execution path until it fails, but are otherwise unrelated with the original inputs. These new inputs allow vendors to reproduce the bug while revealing less private information than existing approaches. Additionally, we provide a mechanism to measure the amount of information revealed in an error report. This mechanism allows users to perform informed decisions on whether or not to submit reports. We implemented a prototype of our solution and evaluated it with real errors in real programs. The results show that we can produce error reports that allow software vendors to reproduce bugs while revealing almost no private information.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bug reports; constraint solving; privacy; symbolic execution", } @Article{Lu:2008:LMC, author = "Shan Lu and Soyeon Park and Eunsoo Seo and Yuanyuan Zhou", title = "Learning from mistakes: a comprehensive study on real world concurrency bug characteristics", journal = j-SIGPLAN, volume = "43", number = "3", pages = "329--339", month = mar, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1353536.1346323", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:03:40 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The reality of multi-core hardware has made concurrent programs pervasive. Unfortunately, writing correct concurrent programs is difficult. Addressing this challenge requires advances in multiple directions, including concurrency bug detection, concurrent program testing, concurrent programming model design, etc. Designing effective techniques in all these directions will significantly benefit from a deep understanding of real world concurrency bug characteristics.\par This paper provides the first (to the best of our knowledge) comprehensive real world concurrency bug characteristic study. Specifically, we have carefully examined concurrency bug patterns, manifestation, and fix strategies of 105 randomly selected real world concurrency bugs from 4 representative server and client open-source applications (MySQL, Apache, Mozilla and OpenOffice). Our study reveals several interesting findings and provides useful guidance for concurrency bug detection, testing, and concurrent programming language design.\par Some of our findings are as follows: (1) Around one third of the examined non-deadlock concurrency bugs are caused by violation to programmers' order intentions, which may not be easily expressed via synchronization primitives like locks and transactional memories; (2) Around 34\% of the examined non-deadlock concurrency bugs involve multiple variables, which are not well addressed by existing bug detection tools; (3) About 92\% of the examined concurrency bugs can be reliably triggered by enforcing certain orders among no more than 4 memory accesses. This indicates that testing concurrent programs can target at exploring possible orders among every small groups of memory accesses, instead of among all memory accesses; (4) About 73\% of the examined non-deadlock concurrency bugs were not fixed by simply adding or changing locks, and many of the fixes were not correct at the first try, indicating the difficulty of reasoning concurrent execution by programmers.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bug characteristics; concurrency bug; concurrent program", } @Article{Ce:2008:PVM, author = "Yu Ce and Xu Zhen and Sun Ji-zhou and Meng Xiao-jing and Huang Yan-yan and Wu Hua-bei", title = "{ParaModel}: a visual modeling and code skeleton generation system for programming parallel applications", journal = j-SIGPLAN, volume = "43", number = "4", pages = "4--10", month = apr, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1374752.1374753", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:46 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "ParaModel is an extensible system for simplifying the development of parallel applications, by providing a unified user interface for modeling visually while generating different code skeletons according to specific runtime environment automatically. A set of construction blocks and rules is designed to describe parallel applications in form of graph, and parsers for different parallel environments are implemented to translate graph to source code skeletons. ParaModel is implemented basing on Eclipse and compatible with its plug-in architecture. With the help of ParaModel, developers can focus on high level design and obtain code skeletons from visually constructed graphical models.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "architectural skeleton; design pattern; program parallel application; visual modeling", } @Article{Campanoni:2008:PDC, author = "Simone Campanoni and Giovanni Agosta and Stefano Crespi Reghizzi", title = "A parallel dynamic compiler for {CIL} bytecode", journal = j-SIGPLAN, volume = "43", number = "4", pages = "11--20", month = apr, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1374752.1374754", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:46 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Multi-core technology is being employed in most recent high-performance architectures. Such architectures need specifically designed multi-threaded software to exploit all the potentialities of their hardware parallelism.\par At the same time, object code virtualization technologies are achieving a growing popularity, as they allow higher levels of software portability and reuse.\par Thus, a virtual execution environment running on a multi-core processor has to run complex, high-level applications and to exploit as much as possible the underlying parallel hardware. We propose an approach that leverages on CMP features to expose a novel pipeline synchronization model for the internal threads of the dynamic compiler.\par Thanks to compilation latency masking effect of the pipeline organization, our dynamic compiler, ILDJIT, is able to achieve significant speedups (26\% on average) with respect to the baseline, when the underlying hardware exposes at least two cores.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dynamic compilation; parallel virtual machine; virtual execution system", } @Article{Sui:2008:ART, author = "Yang Yi Sui and Jun Lin and Xiao Tuo Zhang", title = "An automated refactoring tool for dataflow visual programming language", journal = j-SIGPLAN, volume = "43", number = "4", pages = "21--28", month = apr, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1374752.1374755", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:46 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Refactoring tools are extremely important to prevent errors and reduce consumed time. But these tools only support text-based languages, especially in Object Oriented languages. In order to accommodate the situation that Dataflow Visual Programming Languages (DFVPLs) are more and more popular, an automated refactoring tool for DFVPL was proposed. DFVPL was divided into two layers---visual layer and dataflow layer. Two layers mutually evolved, which ensured correctness of visual elements and dataflow semantic during refactoring. Some algorithms like middle graph generation; terminal auto-generation and terminal auto-modification were proposed to implement the changes of two layers. This tool has been proved correct and efficient by some refactoring instances. In addition, we discussed some famous DFVPL like LabVIEW to expose lacking of automated refactoring tool forced refactoring by hand to be time-consuming and error-prone.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dataflow; dataflow visual programming language; refactoring; software engineering", } @Article{Hook:2008:IDC, author = "James Hook and Michael Sperber", title = "The {ICFP} developer conference 2008", journal = j-SIGPLAN, volume = "43", number = "5", pages = "3--4", month = may, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1402227.1402229", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:28 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Functional Programming has seen greatly increased interest in recent years: From being an academic pursuit, functional programming is rapidly becoming a sought-after technology with increasingly broad applications. To accommodate the growing interest in FP, this year's International Conference on Functional Programming (in Victoria, British Columbia, Canada) will be followed by the ICFP Developer Conference, designed to help both decision-makers and developers to learn about the potential of functional programming for their projects, as well as gaining hands-on instruction on how to realize that potential.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Frenger:2008:HJ, author = "Paul Frenger", title = "Hard {Java}", journal = j-SIGPLAN, volume = "43", number = "5", pages = "5--9", month = may, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1402227.1402231", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:28 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Sun Microsystems has been a fantastic repository of talent for years, somewhat reminiscent of Apple Computer and the Xerox PARC (Palo Alto Research Center). Sun developed the SPARC line of CPUs for their Solaris Operating System (a flavor of Unix). This group devised the only-ever hardware- and software-independent computer boot-up system (OpenBoot / Open Firmware / IEEE 1275). They also brought forth Java, a programming language which today seems ubiquitous and indispensable.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Falsafi:2008:I, author = "Babak Falsafi and Pascal Felber", title = "Introduction", journal = j-SIGPLAN, volume = "43", number = "5", pages = "10--10", month = may, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1402227.1402233", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:28 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In recent years, multiprocessors have emerged as the architecture of choice at the chip level to help ride Moore's law and continue exploiting the exponential growth in transistors while maintaining acceptable power consumption levels and complexity. Unfortunately, parallel software has not made it to the mainstream, making technologies to help facilitate parallel software development and programming for commodity chips critical to the sustained growth in IT infrastructure and industry. Transactional programming is emerging as a promising approach to help mitigate many of the difficulties associated with conventional synchronization and coordination mechanisms in parallel programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bailey:2008:TPA, author = "Mark W. Bailey", title = "{TRANSACT 2008} paper abstracts", journal = j-SIGPLAN, volume = "43", number = "5", pages = "11--14", month = may, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1402227.1402234", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:28 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Menon:2008:SGL, author = "Vijay Menon and Steven Balensiefer and Tatiana Shpeisman and Ali-Reza Adl-Tabatabai and Richard L. Hudson and Bratin Saha and Adam Welc", title = "Single global lock semantics in a weakly atomic {STM}", journal = j-SIGPLAN, volume = "43", number = "5", pages = "15--26", month = may, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1402227.1402235", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:28 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "As memory transactions have been proposed as a language-level replacement for locks, there is growing need for well-defined semantics. In contrast to database transactions, transaction memory (TM) semantics are complicated by the fact that programs may access the same memory locations both inside and outside transactions. {\em Strongly atomic\/} semantics, where non-transactional accesses are treated as implicit single-operation transactions, remain difficult to provide without specialized hardware support and/or significant performance overhead. As an alternative, many in the community have informally proposed that a {\em single global lock semantics\/} [16, 9], where transaction semantics are mapped to those of regions protected by a single global lock, provide an intuitive and efficiently implementable model for programmers.\par In this paper, we explore the implementation and performance implications of single global lock semantics in a weakly atomic STM from the perspective of Java, and we discuss why even recent STM implementations fall short of these semantics. We describe a new weakly atomic Java STM implementation that provides single global lock semantics while permitting concurrent execution, but we show that this comes at a significant performance cost. We also propose and implement various alternative semantics that loosen single lock requirements while still providing strong guarantees. We compare our new implementations to previous ones, including a strongly atomic STM. [22]", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Terauchi:2008:CRF, author = "Tachio Terauchi", title = "Checking race freedom via linear programming", journal = j-SIGPLAN, volume = "43", number = "6", pages = "1--10", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379022.1375583", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present a new static analysis for race freedom and race detection. The analysis checks race freedom by reducing the problem to (rational) linear programming. Unlike conventional static analyses for race freedom or race detection, our analysis avoids explicit computation of locksets and lock linearity/must-aliasness. Our analysis can handle a variety of synchronization idioms that more conventional approaches often have difficulties with, such as thread joining, semaphores, and signals. We achieve efficiency by utilizing modern linear programming solvers that can quickly solve large linear programming instances. This paper reports on the formal properties of the analysis and the experience with applying an implementation to real world C programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "fractional capabilities; linear programming", } @Article{Sen:2008:RDR, author = "Koushik Sen", title = "Race directed random testing of concurrent programs", journal = j-SIGPLAN, volume = "43", number = "6", pages = "11--21", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379022.1375584", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Bugs in multi-threaded programs often arise due to data races. Numerous static and dynamic program analysis techniques have been proposed to detect data races. We propose a novel randomized dynamic analysis technique that utilizes potential data race information obtained from an existing analysis tool to separate real races from false races without any need for manual inspection. Specifically, we use potential data race information obtained from an existing dynamic analysis technique to control a random scheduler of threads so that real race conditions get created with very high probability and those races get resolved randomly at runtime. Our approach has several advantages over existing dynamic analysis tools. First, we can create a real race condition and resolve the race randomly to see if an error can occur due to the race. Second, we can replay a race revealing execution efficiently by simply using the same seed for random number generation--we do not need to record the execution. Third, our approach has very low overhead compared to other precise dynamic race detection techniques because we only track all synchronization operations and a single pair of memory access statements that are reported to be in a potential race by an existing analysis. We have implemented the technique in a prototype tool for Java and have experimented on a number of large multi-threaded Java programs. We report a number of previously known and unknown bugs and real races in these Java programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency; dynamic analysis; race detection; random testing", } @Article{Blackburn:2008:IMR, author = "Stephen M. Blackburn and Kathryn S. McKinley", title = "{Immix}: a mark-region garbage collector with space efficiency, fast collection, and mutator performance", journal = j-SIGPLAN, volume = "43", number = "6", pages = "22--32", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375581.1375586", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Programmers are increasingly choosing managed languages for modern applications, which tend to allocate many short-to-medium lived small objects. The garbage collector therefore directly determines program performance by making a classic space-time tradeoff that seeks to provide space efficiency, fast reclamation, and mutator performance. The three canonical tracing garbage collectors: semi-space, mark-sweep, and mark-compact each sacrifice one objective. This paper describes a collector family, called mark-region, and introduces opportunistic defragmentation, which mixes copying and marking in a single pass. Combining both, we implement immix, a novel high performance garbage collector that achieves all three performance objectives. The key insight is to allocate and reclaim memory in contiguous regions, at a coarse block grain when possible and otherwise in groups of finer grain lines. We show that immix outperforms existing canonical algorithms, improving total application performance by 7 to 25\% on average across 20 benchmarks. As the mature space in a generational collector, immix matches or beats a highly tuned generational collector, e.g. it improves jbb2000 by 5\%. These innovations and the identification of a new family of collectors open new opportunities for garbage collector design.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compaction; fragmentation; free-list; immix; locality; mark-region; mark-sweep; semi-space; sweep-to-free-list; sweep-to-region", } @Article{Pizlo:2008:SCR, author = "Filip Pizlo and Erez Petrank and Bjarne Steensgaard", title = "A study of concurrent real-time garbage collectors", journal = j-SIGPLAN, volume = "43", number = "6", pages = "33--44", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379022.1375587", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Concurrent garbage collection is highly attractive for real-time systems, because offloading the collection effort from the executing threads allows faster response, allowing for extremely short deadlines at the microseconds level. Concurrent collectors also offer much better scalability over incremental collectors. The main problem with concurrent real-time collectors is their complexity. The first concurrent real-time garbage collector that can support fine synchronization, STOPLESS, has recently been presented by Pizlo et al. In this paper, we propose two additional (and different) algorithms for concurrent real-time garbage collection: CLOVER and CHICKEN. Both collectors obtain reduced complexity over the first collector STOPLESS, but need to trade a benefit for it. We study the algorithmic strengths and weaknesses of CLOVER and CHICKEN and compare them to STOPLESS. Finally, we have implemented all three collectors on the Bartok compiler and runtime for C\# and we present measurements to compare their efficiency and responsiveness.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrent garbage collection; garbage collection; lock-free computation; memory management; real-time", } @Article{Wang:2008:CCA, author = "Xi Wang and Zhilei Xu and Xuezheng Liu and Zhenyu Guo and Xiaoge Wang and Zheng Zhang", title = "Conditional correlation analysis for safe region-based memory management", journal = j-SIGPLAN, volume = "43", number = "6", pages = "45--55", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379022.1375588", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Region-based memory management is a popular scheme in systems software for better organization and performance. In the scheme, a developer constructs a hierarchy of regions of different lifetimes and allocates objects in regions. When the developer deletes a region, the runtime will recursively delete all its subregions and simultaneously reclaim objects in the regions. The developer must construct a consistent placement of objects in regions; otherwise, if a region that contains pointers to other regions is not always deleted before pointees, an inconsistency will surface and cause dangling pointers, which may lead to either crashes or leaks.\par This paper presents a static analysis tool RegionWiz that can find such lifetime inconsistencies in large C programs using regions. The tool is based on an analysis framework that generalizes the relations and constraints over regions and objects as conditional correlations. This framework allows a succinct formalization of consistency rules for region lifetimes, preserving memory safety and avoiding dangling pointers. RegionWiz uses these consistency rules to implement an efficient static analysis to compute the conditional correlation and reason about region lifetime consistency; the analysis is based on a context-sensitive, field-sensitive pointer analysis with heap cloning.\par Experiments with applying RegionWiz to six real-world software packages (including the RC compiler, Apache web server, and Subversion version control system) with two different region-based memory management interfaces show that RegionWiz can reason about region lifetime consistency in large C programs. The experiments also show that RegionWiz can find several previously unknown inconsistency bugs in these packages.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "conditional correlation; error detection; memory management; program analysis; region", } @Article{Amin:2008:AVM, author = "Ahmed M. Amin and Mithuna Thottethodi and T. N. Vijaykumar and Steven Wereley and Stephen C. Jacobson", title = "Automatic volume management for programmable microfluidics", journal = j-SIGPLAN, volume = "43", number = "6", pages = "56--67", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375581.1375590", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Microfluidics has enabled lab-on-a-chip technology to miniaturize and integrate biological and chemical analyses to a single chip comprising channels, valves, mixers, heaters, separators, and sensors. Recent papers have proposed programmable labs-on-a-chip as an alternative to traditional application-specific chips to reduce design effort, time, and cost. While these previous papers provide the basic support for programmability, this paper identifies and addresses a practical issue, namely, fluid volume management. Volume management addresses the problem that the use of a fluid depletes it and unless the given volume of a fluid is distributed carefully among all its uses, execution may run out of the fluid before all its uses are complete. Additionally, fluid volumes should not overflow (i.e., exceed hardware capacity) or underflow (i.e., fall below hardware resolution). We show that the problem can be formulated as a linear programming problem (LP). Because LP's complexity and slow execution times in practice may be a concern, we propose another approach, called DAGSolve, which over-constrains the problem to achieve linear complexity while maintaining good solution quality. We also propose two optimizations, called cascading and static replication, to handle cases involving extreme mix ratios and numerous fluid uses which may defeat both LP and DAGSolve. Using some real-world assays, we show that our techniques produce good solutions while being faster than LP.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "fluid volume management; microfluidics; programmable lab on a chip", } @Article{Boehm:2008:FCC, author = "Hans-J. Boehm and Sarita V. Adve", title = "Foundations of the {C++} concurrency memory model", journal = j-SIGPLAN, volume = "43", number = "6", pages = "68--78", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379022.1375591", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Currently multi-threaded C or C++ programs combine a single-threaded programming language with a separate threads library. This is not entirely sound [7].\par We describe an effort, currently nearing completion, to address these issues by explicitly providing semantics for threads in the next revision of the C++ standard. Our approach is similar to that recently followed by Java [25], in that, at least for a well-defined and interesting subset of the language, we give sequentially consistent semantics to programs that do not contain data races. Nonetheless, a number of our decisions are often surprising even to those familiar with the Java effort:\par We (mostly) insist on sequential consistency for race-free programs, in spite of implementation issues that came to light after the Java work.\par We give no semantics to programs with data races. There are no benign C++ data races.\par We use weaker semantics for trylock than existing languages or libraries, allowing us to promise sequential consistency with an intuitive race definition, even for programs with trylock.\par This paper describes the simple model we would like to be able to provide for C++ threads programmers, and explain how this, together with some practical, but often under-appreciated implementation constraints, drives us towards the above decisions.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "c++; data race; memory consistency; memory model; sequential consistency; trylock", } @Article{Huang:2008:ESS, author = "Shan Shan Huang and Yannis Smaragdakis", title = "Expressive and safe static reflection with {MorphJ}", journal = j-SIGPLAN, volume = "43", number = "6", pages = "79--89", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375581.1375592", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", 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.\par 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.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "aspect-oriented programming; class morphing; language extensions; meta-programming; object-oriented programming; structural abstraction", } @Article{Pouchet:2008:IOP, author = "Louis-No{\"e}l Pouchet and C{\'e}dric Bastoul and Albert Cohen and John Cavazos", title = "Iterative optimization in the polyhedral model: part ii, multidimensional time", journal = j-SIGPLAN, volume = "43", number = "6", pages = "90--100", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379022.1375594", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "High-level loop optimizations are necessary to achieve good performance over a wide variety of processors. Their performance impact can be significant because they involve in-depth program transformations that aim to sustain a balanced workload over the computational, storage, and communication resources of the target architecture. Therefore, it is mandatory that the compiler accurately models the target architecture as well as the effects of complex code restructuring.\par However, because optimizing compilers (1) use simplistic performance models that abstract away many of the complexities of modern architectures, (2) rely on inaccurate dependence analysis, and (3) lack frameworks to express complex interactions of transformation sequences, they typically uncover only a fraction of the peak performance available on many applications. We propose a complete iterative framework to address these issues. We rely on the polyhedral model to construct and traverse a large and expressive search space. This space encompasses only legal, distinct versions resulting from the restructuring of any static control loop nest. We first propose a feedback-driven iterative heuristic tailored to the search space properties of the polyhedral model. Though, it quickly converges to good solutions for small kernels, larger benchmarks containing higher dimensional spaces are more challenging and our heuristic misses opportunities for significant performance improvement. Thus, we introduce the use of a genetic algorithm with specialized operators that leverage the polyhedral representation of program dependences. We provide experimental evidence that the genetic algorithm effectively traverses huge optimization spaces, achieving good performance improvements on large loop nests.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "affine scheduling; genetic algorithm; iterative compilation; loop transformation", } @Article{Bondhugula:2008:PAP, author = "Uday Bondhugula and Albert Hartono and J. Ramanujam and P. Sadayappan", title = "A practical automatic polyhedral parallelizer and locality optimizer", journal = j-SIGPLAN, volume = "43", number = "6", pages = "101--113", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379022.1375595", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present the design and implementation of an automatic polyhedral source-to-source transformation framework that can optimize regular programs (sequences of possibly imperfectly nested loops) for parallelism and locality simultaneously. Through this work, we show the practicality of analytical model-driven automatic transformation in the polyhedral model -- far beyond what is possible by current production compilers. Unlike previous works, our approach is an end-to-end fully automatic one driven by an integer linear optimization framework that takes an explicit view of finding good ways of tiling for parallelism and locality using affine transformations. The framework has been implemented into a tool to automatically generate OpenMP parallel code from C program sections. Experimental results from the tool show very high speedups for local and parallel execution on multi-cores over state-of-the-art compiler frameworks from the research community as well as the best native production compilers. The system also enables the easy use of powerful empirical/iterative optimization for general arbitrarily nested loop sequences.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "affine transformations; automatic parallelization; locality optimization; loop transformations; polyhedral model; tiling", } @Article{Kudlur:2008:OES, author = "Manjunath Kudlur and Scott Mahlke", title = "Orchestrating the execution of stream programs on multicore platforms", journal = j-SIGPLAN, volume = "43", number = "6", pages = "114--124", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379022.1375596", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "While multicore hardware has become ubiquitous, explicitly parallel programming models and compiler techniques for exploiting parallelism on these systems have noticeably lagged behind. Stream programming is one model that has wide applicability in the multimedia, graphics, and signal processing domains. Streaming models execute as a set of independent actors that explicitly communicate data through channels. This paper presents a compiler technique for planning and orchestrating the execution of streaming applications on multicore platforms. An integrated unfolding and partitioning step based on integer linear programming is presented that unfolds data parallel actors as needed and maximally packs actors onto cores. Next, the actors are assigned to pipeline stages in such a way that all communication is maximally overlapped with computation on the cores. To facilitate experimentation, a generalized code generation template for mapping the software pipeline onto the Cell architecture is presented. For a range of streaming applications, a geometric mean speedup of 14.7x is achieved on a 16-core Cell platform compared to a single core.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "cell processor; multicore; software pipelining; stream programming; streamit", } @Article{Vechev:2008:DLF, author = "Martin Vechev and Eran Yahav", title = "Deriving linearizable fine-grained concurrent objects", journal = j-SIGPLAN, volume = "43", number = "6", pages = "125--135", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379022.1375598", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Practical and efficient algorithms for concurrent data structures are difficult to construct and modify. Algorithms in the literature are often optimized for a specific setting, making it hard to separate the algorithmic insights from implementation details. The goal of this work is to systematically construct algorithms for a concurrent data structure starting from its sequential implementation. Towards that goal, we follow a construction process that combines manual steps corresponding to high-level insights with automatic exploration of implementation details. To assist us in this process, we built a new tool called Paraglider. The tool quickly explores large spaces of algorithms and uses bounded model checking to check linearizability of algorithms.\par Starting from a sequential implementation and assisted by the tool, we present the steps that we used to derive various highly-concurrent algorithms. Among these algorithms is a new fine-grained set data structure that provides a wait-free contains operation, and uses only the compare-and-swap (CAS) primitive for synchronization.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "algorithms; concurrency; data structures; linearizability; model checking", } @Article{Solar-Lezama:2008:SCD, author = "Armando Solar-Lezama and Christopher Grant Jones and Rastislav Bodik", title = "Sketching concurrent data structures", journal = j-SIGPLAN, volume = "43", number = "6", pages = "136--148", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375581.1375599", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We describe PSketch, a program synthesizer that helps programmers implement concurrent data structures. The system is based on the concept of sketching, a form of synthesis that allows programmers to express their insight about an implementation as a partial program: a sketch. The synthesizer automatically completes the sketch to produce an implementation that matches a given correctness criteria.\par PSketch is based on a new counterexample-guided inductive synthesis algorithm (CEGIS) that generalizes the original sketch synthesis algorithm from Solar-Lezama et.al. to cope efficiently with concurrent programs. The new algorithm produces a correct implementation by iteratively generating candidate implementations, running them through a verifier, and if they fail, learning from the counterexample traces to produce a better candidate; converging to a solution in a handful of iterations.\par PSketch also extends Sketch with higher-level sketching constructs that allow the programmer to express her insight as a 'soup' of ingredients from which complicated code fragments must be assembled. Such sketches can be viewed as syntactic descriptions of huge spaces of candidate programs (over 10$^8$ candidates for some sketches we resolved).\par We have used the PSketch system to implement several classes of concurrent data structures, including lock-free queues and concurrent sets with fine-grained locking. We have also sketched some other concurrent objects including a sense-reversing barrier and a protocol for the dining philosophers problem; all these sketches resolved in under an hour.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency; sat; sketching; spin; synthesis", } @Article{Anderson:2008:SCD, author = "Zachary Anderson and David Gay and Rob Ennals and Eric Brewer", title = "{SharC}: checking data sharing strategies for multithreaded {C}", journal = j-SIGPLAN, volume = "43", number = "6", pages = "149--158", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379022.1375600", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Unintended or unmediated data sharing is a frequent cause of insidious bugs in multithreaded programs. We present a tool called SharC (short for Sharing Checker) that allows a user to write lightweight annotations to declare how they believe objects are being shared between threads in their program. SharC uses a combination of static and dynamic analyses to check that the program conforms to this specification.\par SharC allows any type to have one of five 'sharing modes' -- private to the current thread, read-only, shared under the control of a specified lock, intentionally racy, or checked dynamically. The dynamic mode uses run-time checking to verify that objects are either read-only, or only accessed by one thread. This allows us to check programs that would be difficult to check with a purely static system. If the user does not give a type an explicit annotation, then SharC uses a static type-qualifier analysis to infer that it is either private or should be checked dynamically.\par SharC allows objects to move between different sharing modes at runtime by using reference counting to check that there are no other references to the objects when they change mode.\par SharC's baseline dynamic analysis can check any C program, but is slow, and will generate false warnings about intentional data sharing. As the user adds more annotations, false warnings are reduced, and performance improves. We have found in practice that very few annotations are needed to describe all sharing and give reasonable performance. We ran SharC on 6 legacy C programs, summing to over 600k lines of code, and found that a total of only 60 simple annotations were needed to remove all false positives and to reduce performance overhead to only 2-14\%.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "data-race", } @Article{Rondon:2008:LT, author = "Patrick M. Rondon and Ming Kawaguci and Ranjit Jhala", title = "Liquid types", journal = j-SIGPLAN, volume = "43", number = "6", pages = "159--169", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379022.1375602", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present Logically Qualified Data Types, abbreviated to Liquid Types, a system that combines Hindley--Milner type inference with Predicate Abstraction to automatically infer dependent types precise enough to prove a variety of safety properties. Liquid types allow programmers to reap many of the benefits of dependent types, namely static verification of critical properties and the elimination of expensive run-time checks, without the heavy price of manual annotation. We have implemented liquid type inference in DSOLVE, which takes as input an OCAML program and a set of logical qualifiers and infers dependent types for the expressions in the OCAML program. To demonstrate the utility of our approach, we describe experiments using DSOLVE to statically verify the safety of array accesses on a set of OCAML benchmarks that were previously annotated with dependent types as part of the DML project. We show that when used in conjunction with a fixed set of array bounds checking qualifiers, DSOLVE reduces the amount of manual annotation required for proving safety from 31\% of program text to under 1\%.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dependent types; Hindley--Milner; predicate abstraction; type inference", } @Article{Feng:2008:CLL, author = "Xinyu Feng and Zhong Shao and Yuan Dong and Yu Guo", title = "Certifying low-level programs with hardware interrupts and preemptive threads", journal = j-SIGPLAN, volume = "43", number = "6", pages = "170--182", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379022.1375603", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Hardware interrupts are widely used in the world's critical software systems to support preemptive threads, device drivers, operating system kernels, and hypervisors. Handling interrupts properly is an essential component of low-level system programming. Unfortunately, interrupts are also extremely hard to reason about: they dramatically alter the program control flow and complicate the invariants in low-level concurrent code (e.g., implementation of synchronization primitives). Existing formal verification techniques---including Hoare logic, typed assembly language, concurrent separation logic, and the assume-guarantee method---have consistently ignored the issues of interrupts; this severely limits the applicability and power of today's program verification systems.\par In this paper we present a novel Hoare-logic-like framework for certifying low-level system programs involving both hardware interrupts and preemptive threads. We show that enabling and disabling interrupts can be formalized precisely using simple ownership-transfer semantics, and the same technique also extends to the concurrent setting. By carefully reasoning about the interaction among interrupt handlers, context switching, and synchronization libraries, we are able to---for the first time---successfully certify a preemptive thread implementation and a large number of common synchronization primitives. Our work provides a foundation for reasoning about interrupt-based kernel programs and makes an important advance toward building fully certified operating system kernels and hypervisors.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "certified system software; concurrency; hardware interrupts; preemptive threads; separation logic", } @Article{Chen:2008:TPC, author = "Juan Chen and Chris Hawblitzel and Frances Perry and Mike Emmi and Jeremy Condit and Derrick Coetzee and Polyvios Pratikaki", title = "Type-preserving compilation for large-scale optimizing object-oriented compilers", journal = j-SIGPLAN, volume = "43", number = "6", pages = "183--192", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379022.1375604", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Type-preserving compilers translate well-typed source code, such as Java or C\#, into verifiable target code, such as typed assembly language or proof-carrying code. This paper presents the implementation of type-preserving compilation in a complex, large-scale optimizing compiler. Compared to prior work, this implementation supports extensive optimizations, and it verifies a large portion of the interface between the compiler and the runtime system. This paper demonstrates the practicality of type-preserving compilation in complex optimizing compilers: the generated typed assembly language is only 2.3\% slower than the base compiler's generated untyped assembly language, and the type-preserving compiler is 82.8\% slower than the base compiler.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "object-oriented compilers; type-preserving compilation", } @Article{McCamant:2008:QIF, author = "Stephen McCamant and Michael D. Ernst", title = "Quantitative information flow as network flow capacity", journal = j-SIGPLAN, volume = "43", number = "6", pages = "193--205", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375581.1375606", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present a new technique for determining how much information about a program's secret inputs is revealed by its public outputs. In contrast to previous techniques based on reachability from secret inputs (tainting), it achieves a more precise quantitative result by computing a maximum flow of information between the inputs and outputs. The technique uses static control-flow regions to soundly account for implicit flows via branches and pointer operations, but operates dynamically by observing one or more program executions and giving numeric flow bounds specific to them (e.g., '17 bits'). The maximum flow in a network also gives a minimum cut (a set of edges that separate the secret input from the output), which can be used to efficiently check that the same policy is satisfied on future executions. We performed case studies on 5 real C, C++, and Objective C programs, 3 of which had more than 250K lines of code. The tool checked multiple security policies, including one that was violated by a previously unknown bug.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dynamic analysis; implicit flow; information-flow analysis", } @Article{Godefroid:2008:GBW, author = "Patrice Godefroid and Adam Kiezun and Michael Y. Levin", title = "Grammar-based whitebox fuzzing", journal = j-SIGPLAN, volume = "43", number = "6", pages = "206--215", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379022.1375607", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Whitebox fuzzing is a form of automatic dynamic test generation, based on symbolic execution and constraint solving, designed for security testing of large applications. Unfortunately, the current effectiveness of whitebox fuzzing is limited when testing applications with highly-structured inputs, such as compilers and interpreters. These applications process their inputs in stages, such as lexing, parsing and evaluation. Due to the enormous number of control paths in early processing stages, whitebox fuzzing rarely reaches parts of the application beyond those first stages.\par In this paper, we study how to enhance whitebox fuzzing of complex structured-input applications with a grammar-based specification of their valid inputs. We present a novel dynamic test generation algorithm where symbolic execution directly generates grammar-based constraints whose satisfiability is checked using a custom grammar-based constraint solver. We have implemented this algorithm and evaluated it on a large security-critical application, the JavaScript interpreter of Internet Explorer 7 (IE7). Results of our experiments show that grammar-based whitebox fuzzing explores deeper program paths and avoids dead-ends due to non-parsable inputs. Compared to regular whitebox fuzzing, grammar-based whitebox fuzzing increased coverage of the code generation module of the IE7 JavaScript interpreter from 53\% to 81\% while using three times fewer tests.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "automatic test generation; grammars; program verification; software testing", } @Article{Pereira:2008:RAP, author = "Fernando Magno Quint{\~a}o Pereira and Jens Palsberg", title = "Register allocation by puzzle solving", journal = j-SIGPLAN, volume = "43", number = "6", pages = "216--226", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379022.1375609", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We show that register allocation can be viewed as solving a collection of puzzles. We model the register file as a puzzle board and the program variables as puzzle pieces; pre-coloring and register aliasing fit in naturally. For architectures such as PowerPC, x86, and StrongARM, we can solve the puzzles in polynomial time, and we have augmented the puzzle solver with a simple heuristic for spilling. For SPEC CPU2000, the compilation time of our implementation is as fast as that of the extended version of linear scan used by LLVM, which is the JIT compiler in the openGL stack of Mac OS 10.5. Our implementation produces x86 code that is of similar quality to the code produced by the slower, state-of-the-art iterated register coalescing of George and Appel with the extensions proposed by Smith, Ramsey, and Holloway in 2004.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "puzzle solving; register aliasing; register allocation", } @Article{Hack:2008:CCG, author = "Sebastian Hack and Gerhard Goos", title = "Copy coalescing by graph recoloring", journal = j-SIGPLAN, volume = "43", number = "6", pages = "227--237", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379022.1375610", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Register allocation is always a trade-off between live-range splitting and coalescing. Live-range splitting generally leads to less spilling at the cost of inserting shuffle code. Coalescing removes shuffle code while potentially raising the register demand and causing spilling.\par Recent research showed that the live-range splitting of the SSA form's {\AE}-functions leads to chordal interference graphs. This improves upon two long-standing inconveniences of graph coloring register allocation: First, chordal graphs are optimally colorable in quadratic time. Second, the number of colors needed to color the graph is equal to the maximal register pressure in the program. However, the inserted shuffle code incurred by the {\AE}-functions can slow down the program severely. Hence, to make such an approach work in practice, a coalescing technique is needed that removes most of the shuffle code without causing further spilling.\par In this paper, we present a coalescing technique designed for, but not limited to, SSA-form register allocation. We exploit that a valid coloring can be easily obtained by an SSA-based register allocator. This initial coloring is then improved by recoloring the interference graph and assigning shuffle-code related nodes the same color. Thereby, we always keep the coloring of the graph valid. Hence, the coalescing is safe, i.e. no spill code will be caused by coalescing.\par Comparing to iterated register coalescing, the state of the art in safe coalescing, our method is able to remove 22.5\% of the costs and 44.3\% of the copies iterated coalescing left over. The best solution possible, found by a coalescer using integer linear programming (ILP), was 35.9\% of the costs and 51.9\% of the copies iterated coalescing left over. The runtime of programs compiled with our heuristic matches that of the programs compiled with the ILP technique.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "graph coloring; register allocation; ssa form", } @Article{Xin:2008:EPE, author = "Bin Xin and William N. Sumner and Xiangyu Zhang", title = "Efficient program execution indexing", journal = j-SIGPLAN, volume = "43", number = "6", pages = "238--248", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375581.1375611", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Execution indexing uniquely identifies a point in an execution. Desirable execution indices reveal correlations between points in an execution and establish correspondence between points across multiple executions. Therefore, execution indexing is essential for a wide variety of dynamic program analyses, for example, it can be used to organize program profiles; it can precisely identify the point in a re-execution that corresponds to a given point in an original execution and thus facilitate debugging or dynamic instrumentation. In this paper, we formally define the concept of execution index and propose an indexing scheme based on execution structure and program state. We present a highly optimized online implementation of the technique. We also perform a client study, which targets producing a failure inducing schedule for a data race by verifying the two alternative happens-before orderings of a racing pair. Indexing is used to precisely locate corresponding points across multiple executions in the presence of non-determinism so that no heavyweight tracing/replay system is needed.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "control dependence; data race; execution alignment; execution indexing; semantic augmentation; structural indexing", } @Article{Kahlon:2008:BTS, author = "Vineet Kahlon", title = "Bootstrapping: a technique for scalable flow and context-sensitive pointer alias analysis", journal = j-SIGPLAN, volume = "43", number = "6", pages = "249--259", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375581.1375613", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We propose a framework for improving both the scalability as well as the accuracy of pointer alias analysis, irrespective of its flow or context-sensitivities, by leveraging a three-pronged strategy that effectively combines divide and conquer, parallelization and function summarization. A key step in our approach is to first identify small subsets of pointers such that the problem of computing aliases of any pointer can be reduced to computing them in these small subsets instead of the entire program. In order to identify these subsets, we first apply a series of increasingly accurate but highly scalable (context and flow-insensitive) alias analyses in a cascaded fashion such that each analysis A$_i$ works on the subsets generated by the previous one A$_{i-1}$. Restricting the application of A$_i$ to subsets generated by A$_{i-1}$, instead of the entire program, improves it scalability, i.e., A$_i$ is bootstrapped by A$_{i-1}$. Once these small subsets have been computed, in order to make our overall analysis accurate, we employ our new summarization-based flow and context-sensitive alias analysis. The small size of each subset offsets the higher computational complexity of the context-sensitive analysis. An important feature of our framework is that the analysis for each of the subsets can be carried out independently of others thereby allowing us to leverage parallelization further improving scalability.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "context-sensitive analysis; demand-driven analysis; divide and conquer; Steensgaard partitioning; summarization", } @Article{vonDincklage:2008:EFP, author = "Daniel von Dincklage and Amer Diwan", title = "Explaining failures of program analyses", journal = j-SIGPLAN, volume = "43", number = "6", pages = "260--269", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375581.1375614", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "With programs getting larger and often more complex with each new release, programmers need all the help they can get in understanding and transforming programs. Fortunately, modern development environments, such as Eclipse, incorporate tools for understanding, navigating, and transforming programs. These tools typically use program analyses to extract relevant properties of programs.\par These tools are often invaluable to developers; for example, many programmers use refactoring tools regularly. However, poor results by the underlying analyses can compromise a tool's usefulness. For example, a bug finding tool may produce too many false positives if the underlying analysis is overly conservative, and thus overwhelm the user with too many possible errors in the program. In such cases it would be invaluable for the tool to explain to the user why it believes that each bug exists. Armed with this knowledge, the user can decide which bugs are worth pursing and which are false positives.\par The contributions of this paper are as follows: (i) We describe requirements on the structure of an analysis so that we can produce reasons when the analysis fails; the user of the analysis determines whether or not an analysis's results constitute failure. We also describe a simple language that enforces these requirements; (ii) We describe how to produce necessary and sufficient reasons for analysis failure; (iii) We evaluate our system with respect to a number of analyses and programs and find that most reasons are small (and thus usable) and that our system is fast enough for interactive use.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "analyses; reasons", } @Article{Dillig:2008:SCS, author = "Isil Dillig and Thomas Dillig and Alex Aiken", title = "Sound, complete and scalable path-sensitive analysis", journal = j-SIGPLAN, volume = "43", number = "6", pages = "270--280", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379022.1375615", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present a new, precise technique for fully path- and context-sensitive program analysis. Our technique exploits two observations: First, using quantified, recursive formulas, path- and context-sensitive conditions for many program properties can be expressed exactly. To compute a closed form solution to such recursive constraints, we differentiate between observable and unobservable variables, the latter of which are existentially quantified in our approach. Using the insight that unobservable variables can be eliminated outside a certain scope, our technique computes satisfiability- and validity-preserving closed-form solutions to the original recursive constraints. We prove the solution is as precise as the original system for answering may and must queries as well as being small in practice, allowing our technique to scale to the entire Linux kernel, a program with over 6 million lines of code.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "path- and context-sensitive analysis; static analysis; strongest necessary/weakest sufficient conditions", } @Article{Gulwani:2008:PAC, author = "Sumit Gulwani and Saurabh Srivastava and Ramarathnam Venkatesan", title = "Program analysis as constraint solving", journal = j-SIGPLAN, volume = "43", number = "6", pages = "281--292", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379022.1375616", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A constraint-based approach to invariant generation in programs translates a program into constraints that are solved using off-the-shelf constraint solvers to yield desired program invariants.\par In this paper we show how the constraint-based approach can be used to model a wide spectrum of program analyses in an expressive domain containing disjunctions and conjunctions of linear inequalities. In particular, we show how to model the problem of context-sensitive interprocedural program verification. We also present the first constraint-based approach to weakest precondition and strongest postcondition inference. The constraints we generate are boolean combinations of quadratic inequalities over integer variables. We reduce these constraints to SAT formulae using bitvector modeling and use off-the-shelf SAT solvers to solve them.\par Furthermore, we present interesting applications of the above analyses, namely bounds analysis and generation of most-general counter-examples for both safety and termination properties. We also present encouraging preliminary experimental results demonstrating the feasibility of our technique on a variety of challenging examples.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bounds analysis; constraint solving; most-general counterexamples; non-termination analysis; program verification; strongest postcondition; weakest precondition", } @Article{Flanagan:2008:VSC, author = "Cormac Flanagan and Stephen N. Freund and Jaeheon Yi", title = "{Velodrome}: a sound and complete dynamic atomicity checker for multithreaded programs", journal = j-SIGPLAN, volume = "43", number = "6", pages = "293--303", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375581.1375618", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Atomicity is a fundamental correctness property in multithreaded programs, both because atomic code blocks are amenable to sequential reasoning (which significantly simplifies correctness arguments), and because atomicity violations often reveal defects in a program's synchronization structure. Unfortunately, all atomicity analyses developed to date are incomplete in that they may yield false alarms on correctly synchronized programs, which limits their usefulness.\par We present the first dynamic analysis for atomicity that is both sound and complete. The analysis reasons about the exact dependencies between operations in the observed trace of the target program, and it reports error messages if and only if the observed trace is not conflict-serializable. Despite this significant increase in precision, the performance and coverage of our analysis is competitive with earlier incomplete dynamic analyses for atomicity.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "atomicity; dynamic analysis; serializability", } @Article{Cherem:2008:ILA, author = "Sigmund Cherem and Trishul Chilimbi and Sumit Gulwani", title = "Inferring locks for atomic sections", journal = j-SIGPLAN, volume = "43", number = "6", pages = "304--315", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379022.1375619", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Atomic sections are a recent and popular idiom to support the development of concurrent programs. Updates performed within an atomic section should not be visible to other threads until the atomic section has been executed entirely. Traditionally, atomic sections are supported through the use of optimistic concurrency, either using a transactional memory hardware, or an equivalent software emulation (STM).\par This paper explores automatically supporting atomic sections using pessimistic concurrency. We present a system that combines compiler and runtime techniques to automatically transform programs written with atomic sections into programs that only use locking primitives. To minimize contention in the transformed programs, our compiler chooses from several lock granularities, using fine-grain locks whenever it is possible.\par This paper formally presents our framework, shows that our compiler is sound (i.e., it protects all shared locations accessed within atomic sections), and reports experimental results.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "atomic sections; concurrency; static lock inference", } @Article{Chugh:2008:DAC, author = "Ravi Chugh and Jan W. Voung and Ranjit Jhala and Sorin Lerner", title = "Dataflow analysis for concurrent programs using datarace detection", journal = j-SIGPLAN, volume = "43", number = "6", pages = "316--326", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375581.1375620", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Dataflow analyses for concurrent programs differ from their single-threaded counterparts in that they must account for shared memory locations being overwritten by concurrent threads. Existing dataflow analysis techniques for concurrent programs typically fall at either end of a spectrum: at one end, the analysis conservatively kills facts about all data that might possibly be shared by multiple threads; at the other end, a precise thread-interleaving analysis determines which data may be shared, and thus which dataflow facts must be invalidated. The former approach can suffer from imprecision, whereas the latter does not scale.\par We present RADAR, a framework that automatically converts a dataflow analysis for sequential programs into one that is correct for concurrent programs. RADAR uses a race detection engine to kill the dataflow facts, generated and propagated by the sequential analysis, that become invalid due to concurrent writes. Our approach of factoring all reasoning about concurrency into a race detection engine yields two benefits. First, to obtain analyses for code using new concurrency constructs, one need only design a suitable race detection engine for the constructs. Second, it gives analysis designers an easy way to tune the scalability and precision of the overall analysis by only modifying the race detection engine. We describe the RADAR framework and its implementation using a pre-existing race detection engine. We show how RADAR was used to generate a concurrent version of a null-pointer dereference analysis, and we analyze the result of running the generated concurrent analysis on several benchmarks.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "interprocedural analysis; locksets; multithreaded programs; summaries", } @Article{Wegiel:2008:XTS, author = "Michal Wegiel and Chandra Krintz", title = "{XMem}: type-safe, transparent, shared memory for cross-runtime communication and coordination", journal = j-SIGPLAN, volume = "43", number = "6", pages = "327--338", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375581.1375621", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Developers commonly build contemporary enterprise applications using type-safe, component-based platforms, such as J2EE, and architect them to comprise multiple tiers, such as a web container, application server, and database engine. Administrators increasingly execute each tier in its own managed runtime environment (MRE) to improve reliability and to manage system complexity through the fault containment and modularity offered by isolated MRE instances. Such isolation, however, necessitates expensive cross-tier communication based on protocols such as object serialization and remote procedure calls. Administrators commonly co-locate communicating MREs on a single host to reduce communication overhead and to better exploit increasing numbers of available processing cores. However, state-of-the-art MREs offer no support for more efficient communication between co-located MREs, while fast inter-process communication mechanisms, such as shared memory, are widely available as a standard operating system service on most modern platforms.\par To address this growing need, we present the design and implementation of XMem ? type-safe, transparent, shared memory support for co-located MREs. XMem guarantees type-safety through coordinated, parallel, multi-process class loading and garbage collection. To avoid introducing any level of indirection, XMem manipulates virtual memory mapping. In addition, object sharing in XMem is fully transparent: shared objects are identical to local objects in terms of field access, synchronization, garbage collection, and method invocation, with the only difference being that shared-to-private pointers are disallowed. XMem facilitates easy integration and use by existing communication technologies and software systems, such as RMI, JNDI, JDBC, serialization/XML, and network sockets.\par We have implemented XMem in the open-source, production-quality HotSpot Java Virtual Machine. Our experimental evaluation, based on core communication technologies underlying J2EE, as well as using open-source server applications, indicates that XMem significantly improves throughput and response time by avoiding the overheads imposed by object serialization and network communication.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "class loading; garbage collection; interprocess communication; managed runtimes; parallel; shared memory; synchronization; transparent; type-safe", } @Article{Halbwachs:2008:DPA, author = "Nicolas Halbwachs and Mathias P{\'e}ron", title = "Discovering properties about arrays in simple programs", journal = j-SIGPLAN, volume = "43", number = "6", pages = "339--348", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379022.1375623", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Array bound checking and array dependency analysis (for parallelization) have been widely studied. However, there are much less results about analyzing properties of array contents. In this paper, we propose a way of using abstract interpretation for discovering properties about array contents in some restricted cases: one-dimensional arrays, traversed by simple 'for' loops. The basic idea, borrowed from [GRS05], consists in partitioning arrays into symbolic intervals (e.g., [1, i - 1], [i, i], [i + 1, n]), and in associating with each such interval I and each array A an abstract variable $A_I$; the new idea is to consider relational abstract properties $\psi(A_I, B_I, \ldots{})$ about these abstract variables, and to interpret such a property pointwise on the interval $I$: $\forall l \in I, \psi(A[l], B[l], \ldots{})$. The abstract semantics of our simple programs according to these abstract properties has been defined and implemented in a prototype tool. The method is able, for instance, to discover that the result of an insertion sort is a sorted array, or that, in an array traversal guarded by a 'sentinel', the index stays within the bounds.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "`sentinel' sorting algorithms; abstract interpretation; arrays; invariant synthesis; program verification", } @Article{Zee:2008:FFV, author = "Karen Zee and Viktor Kuncak and Martin Rinard", title = "Full functional verification of linked data structures", journal = j-SIGPLAN, volume = "43", number = "6", pages = "349--361", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379022.1375624", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present the first verification of full functional correctness for a range of linked data structure implementations, including mutable lists, trees, graphs, and hash tables. Specifically, we present the use of the Jahob verification system to verify formal specifications, written in classical higher-order logic, that completely capture the desired behavior of the Java data structure implementations (with the exception of properties involving execution time and/or memory consumption). Given that the desired correctness properties include intractable constructs such as quantifiers, transitive closure, and lambda abstraction, it is a challenge to successfully prove the generated verification conditions.\par Our Jahob verification system uses integrated reasoning to split each verification condition into a conjunction of simpler subformulas, then apply a diverse collection of specialized decision procedures, first-order theorem provers, and, in the worst case, interactive theorem provers to prove each subformula. Techniques such as replacing complex subformulas with stronger but simpler alternatives, exploiting structure inherently present in the verification conditions, and, when necessary, inserting verified lemmas and proof hints into the imperative source code make it possible to seamlessly integrate all of the specialized decision procedures and theorem provers into a single powerful integrated reasoning system. By appropriately applying multiple proof techniques to discharge different subformulas, this reasoning system can effectively prove the complex and challenging verification conditions that arise in this context.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "data structure; decision procedure; Java; theorem prover; verification", } @Article{Musuvathi:2008:FSM, author = "Madanlal Musuvathi and Shaz Qadeer", title = "Fair stateless model checking", journal = j-SIGPLAN, volume = "43", number = "6", pages = "362--371", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379022.1375625", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Stateless model checking is a useful state-space exploration technique for systematically testing complex real-world software. Existing stateless model checkers are limited to the verification of safety properties on terminating programs. However, realistic concurrent programs are nonterminating, a property that significantly reduces the efficacy of stateless model checking in testing them. Moreover, existing stateless model checkers are unable to verify that a nonterminating program satisfies the important liveness property of livelock-freedom, a property that requires the program to make continuous progress for any input.\par To address these shortcomings, this paper argues for incorporating a fair scheduler in stateless exploration. The key contribution of this paper is an explicit scheduler that is (strongly) fair and at the same time sufficiently nondeterministic to guarantee full coverage of safety properties. We have implemented the fair scheduler in the CHESS model checker. We show through theoretical arguments and empirical evaluation that our algorithm satisfies two important properties: 1) it visits all states of a finite-state program achieving state coverage at a faster rate than existing techniques, and 2) it finds all livelocks in a finite-state program. Before this work, nonterminating programs had to be manually modified in order to apply CHESS to them. The addition of fairness has allowed CHESS to be effectively applied to real-world nonterminating programs without any modification. For example, we have successfully booted the Singularity operating system under the control of CHESS.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency; fairness; liveness; model checking; multi-threading; shared-memory programs; software testing", } @Article{Guerraoui:2008:MCT, author = "Rachid Guerraoui and Thomas A. Henzinger and Barbara Jobstmann and Vasu Singh", title = "Model checking transactional memories", journal = j-SIGPLAN, volume = "43", number = "6", pages = "372--382", month = jun, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375581.1375626", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:04:53 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Model checking software transactional memories (STMs) is difficult because of the unbounded number, length, and delay of concurrent transactions and the unbounded size of the memory. We show that, under certain conditions, the verification problem can be reduced to a finite-state problem, and we illustrate the use of the method by proving the correctness of several STMs, including two-phase locking, DSTM, TL2, and optimistic concurrency control. The safety properties we consider include strict serializability and opacity; the liveness properties include obstruction freedom, livelock freedom, and wait freedom.\par Our main contribution lies in the structure of the proofs, which are largely automated and not restricted to the STMs mentioned above. In a first step we show that every STM that enjoys certain structural properties either violates a safety or liveness requirement on some program with two threads and two shared variables, or satisfies the requirement on all programs. In the second step we use a model checker to prove the requirement for the STM applied to a most general program with two threads and two variables. In the safety case, the model checker constructs a simulation relation between two carefully constructed finite-state transition systems, one representing the given STM applied to a most general program, and the other representing a most liberal safe STM applied to the same program. In the liveness case, the model checker analyzes fairness conditions on the given STM transition system.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "model checking; transactional memories", } @Article{Auerbach:2008:FTG, author = "Joshua Auerbach and David F. Bacon and Rachid Guerraoui and Jesper Honig Spring and Jan Vitek", title = "Flexible task graphs: a unified restricted thread programming model for {Java}", journal = j-SIGPLAN, volume = "43", number = "7", pages = "1--11", month = jul, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375657.1375659", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:05:54 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The disadvantages of unconstrained shared-memory multi-threading in Java, especially with regard to latency and determinism in realtime systems, have given rise to a variety of language extensions that place restrictions on how threads allocate, share, and communicate memory, leading to order-of-magnitude reductions in latency and jitter. However, each model makes different trade-offs with respect to expressiveness, efficiency, enforcement, and latency, and no one model is best for all applications.\par In this paper we present Flexible Task Graphs (Flexotasks), a single system that allows different isolation policies and mechanisms to be combined in an orthogonal manner, subsuming four previously proposed models as well as making it possible to use new combinations best suited to the needs of particular applications. We evaluate our implementation on top of the IBM Web-Sphere Real Time Java virtual machine using both a microbenchmark and a 30 KLOC avionics collision detector. We show that Flexotasks are capable of executing periodic threads at 10 KHz with a standard deviation of 1.2$\mu$s and that it achieves significantly better performance than RTSJ's scoped memory constructs while remaining impervious to interference from global garbage collection.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "Java Virtual Machine; memory management; ownership types; real-time systems", } @Article{Lee:2008:EHS, author = "Seong-Won Lee and Soo-Mook Moon and Seong-Moo Kim", title = "Enhanced hot spot detection heuristics for embedded {Java} just-in-time compilers", journal = j-SIGPLAN, volume = "43", number = "7", pages = "13--22", month = jul, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375657.1375660", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:05:54 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Most Java just-in-time compilers (JITC) try to compile only hot methods since the compilation overhead is part of the running time. This requires precise and efficient hot spot detection, which includes distinguishing hot methods from cold methods, detecting them as early as possible, and paying a small runtime overhead for detection. A hot method could be identified by measuring its running time during interpretation since a long-running method is likely to be a hot method. However, precise measurement of the running time during execution is too expensive, especially in embedded systems, so many counter-based heuristics have been proposed to estimate it. The Simple heuristic counts only method invocations without any consideration of loops [1], while Sun's HotSpot heuristic counts loop iterations as well, but does not consider loop sizes or method sizes [2,14]. The static analysis heuristic estimates the running time of a method by statically analyzing loops or heavy-cost bytecodes but does not measure their dynamic counts [3]. Although the overhead of these heuristics is low, they do not estimate the running time precisely, which may lead to imprecise hot spot detection.\par This paper proposes a new hot spot detection heuristic which can estimate the running time more precisely than others with a relatively low overhead. It dynamically counts only important bytecodes interpreted, but with a simple arithmetic calculation it can obtain the precise count of all interpreted bytecodes. We also propose employing a static analysis technique to predict those hot methods which spend a huge execution time once invoked. This static prediction can allow compiling these methods at their first-invocation, complementing the proposed dynamic estimation technique. We implemented both, which led to a performance benefit of 10\% compared to the HotSpot heuristic.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "hot spot detection; J2ME CDC; Java just-in-time compilation; Java Virtual Machine; Sun's Hotspot heuristic", } @Article{Badea:2008:IJS, author = "Carmen Badea and Alexandru Nicolau and Alexander V. Veidenbaum", title = "Impact of {JVM} superoperators on energy consumption in resource-constrained embedded systems", journal = j-SIGPLAN, volume = "43", number = "7", pages = "23--30", month = jul, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379023.1375661", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:05:54 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Energy consumption is one of the most important issues in resource-constrained embedded systems. Many such systems run Java-based applications due to Java's architecture-independent format (bytecode). Standard techniques for executing bytecode programs, e.g. interpretation or just-in-time compilation, have performance or memory issues that make them unsuitable for resource-constrained embedded systems.\par A superoperator-extended, lightweight Java Virtual Machine (JVM) can be used in resource-constrained embedded systems to improve performance and reduce memory consumption. This paper shows that such a JVM also significantly reduces energy consumption. This is due primarily to a considerable reduction in the number of memory accesses and thus in energy consumption in the instruction and data TLBs and caches and, in most cases, in DRAM energy consumption. Since the fraction of processor energy dissipated in these units is approximately 60\%, the energy savings achieved are significant.\par The paper evaluates the number of load, store, and computational instructions eliminated by the use of proposed superoperators as compared to a simple interpreter on a set of embedded benchmarks. Using cache and DRAM per access energy we estimate the total processor/DRAM energy saved by using our JVM. Our results show that with 32KB caches the reduction in energy consumption ranges from 40\% to 60\% of the overall processor, plus DRAM energy. Even higher savings may be achieved with smaller caches and increased access to DRAM as DRAM access energy is fairly high.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "embedded systems; energy estimation; Java Virtual Machine; profile-guided optimization; superoperators", } @Article{Ebner:2008:GIS, author = "Dietmar Ebner and Florian Brandner and Bernhard Scholz and Andreas Krall and Peter Wiedermann and Albrecht Kadlec", title = "Generalized instruction selection using {\em {SSA\/}}-graphs", journal = j-SIGPLAN, volume = "43", number = "7", pages = "31--40", month = jul, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375657.1375663", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:05:54 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Instruction selection is a well-studied compiler phase that translates the compiler's intermediate representation of programs to a sequence of target-dependent machine instructions optimizing for various compiler objectives (e.g. speed and space). Most existing instruction selection techniques are limited to the scope of a single statement or a basic block and cannot cope with irregular instruction sets that are frequently found in embedded systems.\par We consider an optimal technique for instruction selection that uses Static Single Assignment (SSA) graphs as an intermediate representation of programs and employs the Partitioned Boolean Quadratic Problem (PBQP) for finding an optimal instruction selection. While existing approaches are limited to instruction patterns that can be expressed in a simple tree structure, we consider complex patterns producing multiple results at the same time including pre/post increment addressing modes, div-mod instructions, and SIMD extensions frequently found in embedded systems. Although both instruction selection on SSA-graphs and PBQP are known to be NP-complete, the problem can be solved efficiently --- even for very large instances.\par Our approach has been implemented in LLVM for an embedded ARMv5 architecture. Extensive experiments show speedups of up to 57\% on typical DSP kernels and up to 10\% on SPECINT 2000 and MiBench benchmarks. All of the test programs could be compiled within less than half a minute using a heuristic PBQP solver that solves 99.83\% of all instances optimally.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "code generation; compiler; instruction selection; PBQP", } @Article{Cho:2008:CDD, author = "Doosan Cho and Sudeep Pasricha and Ilya Issenin and Nikil Dutt and Yunheung Paek and SunJun Ko", title = "Compiler driven data layout optimization for regular\slash irregular array access patterns", journal = j-SIGPLAN, volume = "43", number = "7", pages = "41--50", month = jul, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379023.1375664", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:05:54 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Embedded multimedia applications consist of regular and irregular memory access patterns. Particularly, irregular pattern are not amenable to static analysis for extraction of access patterns, and thus prevent efficient use of a Scratch Pad Memory (SPM) hierarchy for performance and energy improvements. To resolve this, we present a compiler strategy to optimize data layout in regular/irregular multimedia applications running on embedded multiprocessor environments. The goal is to maximize the amount of accesses to the SPM over the entire system which leads to a reduction in the energy consumption of the system. This is achieved by optimizing data placement of application-wide reused data so that it resides in the SPMs of processing elements. Specifically, our scheme is based on a profiling that generates a memory access footprint. The memory access footprint is used to identify data elements with fine granularity that can profitably be placed in the SPMs to maximize performance and energy gains. We present a heuristic approach that efficiently exploits the SPMs using memory access footprint. Our experimental results show that our approach is able to reduce energy consumption by 30\% and improve performance by 18\% over cache based memory subsystems for various multimedia applications.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compiler; data placement; energy consumption; memory hierarchy", } @Article{Reineke:2008:RCA, author = "Jan Reineke and Daniel Grund", title = "Relative competitive analysis of cache replacement policies", journal = j-SIGPLAN, volume = "43", number = "7", pages = "51--60", month = jul, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375657.1375665", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:05:54 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Caches are commonly employed to hide the latency gap between memory and the CPU by exploiting locality in memory accesses. On today's architectures a cache miss may cost several hundred CPU cycles.\par In order to fulfill stringent performance requirements, caches are now also used in hard real-time systems. In such systems, upper and sometimes also lower bounds on the execution times of a task have to be computed. To obtain tight bounds, timing analyses must take into account the cache architecture. However, developing cache analyses -- analyses that determine whether a memory access is a hit or a miss -- is a difficult problem for some cache architectures.\par In this paper, we present a tool to automatically compute relative competitive ratios for a large class of replacement policies, including LRU, FIFO, and PLRU. Relative competitive ratios bound the performance of one policy relative to the performance of another policy.\par These performance relations allow us to use cache-performance predictions for one policy to compute predictions for another, including policies that could previously not be dealt with.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "cache performance; predictability; replacement policy; wcet analysis; worst-case execution time", } @Article{Anand:2008:RSS, author = "Madhukar Anand and Insup Lee", title = "Robust and sustainable schedulability analysis of embedded software", journal = j-SIGPLAN, volume = "43", number = "7", pages = "61--70", month = jul, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375657.1375666", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:05:54 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "For real-time systems, most of the analysis involves efficient or exact schedulability checking. While this is important, analysis is often based on the assumption that the task parameters such as execution requirements and inter-arrival times between jobs are known exactly. In most cases, however, only a worst-case estimate of these quantities is available at the time of analysis. It is therefore imperative that schedulability analysis hold for better parameter values (Sustainable Analysis). On the other hand, if the task or system parameters turn out to be worse off, then the analysis should tolerate some deterioration (Robust Analysis). Robust analysis is especially important, because the implication of task schedulability is often weakened in the presence of optimizations that are performed on its code, or dynamic system parameters.\par In this work, we define and address sustainability and robustness questions for analysis of embedded real-time software that is modeled by conditional real-time tasks. Specifically, we show that, while the analysis is sustainable for changes in the task such as lower job execution times and increased relative deadlines, it is not the case for code changes such as job splitting and reordering. We discuss the impact of these results in the context of common compiler optimizations, and then develop robust schedulability techniques for operations where the original analysis is not sustainable.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "robust schedulability analysis; schedulability analysis; sustainable schedulability analysis", } @Article{Homayoun:2008:IPR, author = "Houman Homayoun and Sudeep Pasricha and Mohammad Makhzan and Alex Veidenbaum", title = "Improving performance and reducing energy-delay with adaptive resource resizing for out-of-order embedded processors", journal = j-SIGPLAN, volume = "43", number = "7", pages = "71--78", month = jul, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375657.1375668", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:05:54 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "While Ultra Deep Submicron (UDSM) CMOS scaling gives embedded processor designers ample silicon budget to increase processor resources to improve performance, restrictions with the power budget and practically achievable operating clock frequencies act as limiting factors. In this paper we show how just increasing processor resource size is not effective in improving performance due to constraints on achievable operating clock frequency. In response we propose two adaptive resource resizing techniques L2RS and L2ML1RS that adaptively resize resources by exploiting cache misses. Our results show a significant performance improvement and overall energy-delay reduction of on average 9.2\% (upto 34\%) and 3.8\% respectively across SPEC2K benchmarks for L2ML1RS. Applying L2RS resulted in 6.8\% performance improvement (upto 24\%) and 4.6\% energy-delay reduction. We also present the required circuit modification to apply these techniques which shown to be minimal.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "architecture; energy-delay; out-of-order embedded processor; performance; resource resizing", } @Article{Rajopadhye:2008:DSI, author = "Sanjay Rajopadhye and Gautam Gupta and Lakshminarayanan Renganarayanan", title = "A domain specific interconnect for reconfigurable computing", journal = j-SIGPLAN, volume = "43", number = "7", pages = "79--88", month = jul, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379023.1375669", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:05:54 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Affine Control Loops (ACLs) occur frequently in data- and compute intensive applications. Implementing ACLs directly on dedicated hardware has the potential for spectacular performance improvement in area, time and energy. An important challenge for such direct hardware compilation of ACLs is the interconnection between the different processing elements, which may be non-local as well as dynamic. We propose a generic, reconfigurable interconnection fabric which can realize the data-path of any ACL and be dynamically reconfigured in constant time. We have applied for a patent for this technology.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "coarse grain reconfiguration; FPGA; silicon compilation", } @Article{Lee:2008:FFC, author = "Jaejin Lee and Junghyun Kim and Choonki Jang and Seungkyun Kim and Bernhard Egger and Kwangsub Kim and SangYong Han", title = "{FaCSim}: a fast and cycle-accurate architecture simulator for embedded systems", journal = j-SIGPLAN, volume = "43", number = "7", pages = "89--100", month = jul, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375657.1375670", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:05:54 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "There have been strong demands for a fast and cycle-accurate virtual platforms in the embedded systems area where developers can do meaningful software development including performance debugging in the context of the entire platform. In this paper, we describe the design and implementation of a fast and cycle-accurate architecture simulator called FaCSim as a first step towards such a virtual platform. FacSim accurately models the ARM9E-S processor core and ARM926EJ-S processor's memory subsystem. It accurately simulates exceptions and interrupts to enable whole-system simulation including the OS. Since it is implemented in a modular manner in C++, it can be easily extended with other system components by subclassing or adding new classes. FaCSim is based on an interpretive simulation technique to provide flexibility, yet achieving high speed. It enables fast cycle-accurate architecture simulation by means of three mechanisms. First, it computes elapsed cycles in each pipeline stage as a chunk and incrementally adds it up to advance the core clock instead of performing cycle-by-cycle simulation. Second, it uses a basic-block cache that caches decoded instructions at the basic-block level. Finally, it is parallelized to exploit multicore systems that are available everywhere these days. Using 21 applications from the EEMBC benchmark suite, FaCSim's accuracy is validated against the ARM926EJ-S development board from ARM, and is accurate in a $\pm$7\% error margin. Due to basic-block level caching and parallelization, FaCSim is, on average, more than three times faster than ARMulator and more than six times faster than SimpleScalar.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "architecture simulator; cycle-accurate simulation; full-system simulation; simulator parallelization; virtual prototyping", } @Article{Delaval:2008:TSA, author = "Gwena{\"e}l Delaval and Alain Girault and Marc Pouzet", title = "A type system for the automatic distribution of higher-order synchronous dataflow programs", journal = j-SIGPLAN, volume = "43", number = "7", pages = "101--110", month = jul, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375657.1375672", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:05:54 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We address the design of distributed systems with synchronous dataflow programming languages. As modular design entails handling both architectural and functional modularity, our first contribution is to extend an existing synchronous dataflow programming language with primitives allowing the description of a distributed architecture and the localization of some expressions onto some processors. We also present a distributed semantics to formalize the distributed execution of synchronous programs. Our second contribution is to provide a type system, in order to infer the localization of non-annotated values by means of type inference and to ensure, at compilation time, the consistency of the distribution. Our third contribution is to provide a type-directed projection operation to obtain automatically, from a centralized typed program, the local program to be executed by each computing resource. The type system as well as the automatic distribution mechanism has been fully implemented in the compiler of an existing synchronous data-flow programming language.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "distribution; functional programming; synchronous programming; type systems", } @Article{Cohen:2008:EEP, author = "Norman H. Cohen and Karl Trygve Kalleberg", title = "{EventScript}: an event-processing language based on regular expressions with actions", journal = j-SIGPLAN, volume = "43", number = "7", pages = "111--120", month = jul, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375657.1375673", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:05:54 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "EventScript is a simple but powerful language for programming reactive processes. A stream of incoming events is matched against a regular expression. Actions embedded within the regular expression are executed in response to the matching of patterns of events. These actions include assigning computed values to variables and emitting output events. The definition of EventScript presented a number of novel and interesting language-design choices. EventScript has an efficient implementation, and has been used in a development environment for complex event-based applications. We have used EventScript to program both small examples and large industrial applications. Readers of EventScript programs find them easy to understand, and are comfortable with the familiar model of matching regular expressions.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "actuators; event processing; reactive programs; regular expressions; sensors", } @Article{Biernacki:2008:CDM, author = "Dariusz Biernacki and Jean-Louis Cola{\c{c}}o and Gregoire Hamon and Marc Pouzet", title = "Clock-directed modular code generation for synchronous data-flow languages", journal = j-SIGPLAN, volume = "43", number = "7", pages = "121--130", month = jul, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375657.1375674", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:05:54 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The compilation of synchronous block diagrams into sequential imperative code has been addressed in the early eighties and can now be considered as folklore. However, separate, or modular, code generation, though largely used in existing compilers and particularly in industrial ones, has never been precisely described or entirely formalized. Such a formalization is now fundamental in the long-term goal to develop a mathematically certified compiler for a synchronous language as well as in simplifying existing implementations.\par This article presents in full detail the modular compilation of synchronous block diagrams into sequential code. We consider a first-order functional language reminiscent of LUSTRE, which it extends with a general $n$-ary merge operator, a reset construct, and a richer notion of clocks. The clocks are used to express activation of computations in the program and are specifically taken into account during the compilation process to produce efficient imperative code. We introduce a generic machine-based intermediate language to represent transition functions, and we present a concise clock-directed translation from the source to this intermediate language. We address the target code generation phase by describing a translation from the intermediate language to JAVA and C.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compilation; real-time systems; semantics; synchronous languages; type systems", } @Article{Newton:2008:DEC, author = "Ryan R. Newton and Lewis D. Girod and Michael B. Craig and Samuel R. Madden and John Gregory Morrisett", title = "Design and evaluation of a compiler for embedded stream programs", journal = j-SIGPLAN, volume = "43", number = "7", pages = "131--140", month = jul, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375657.1375675", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:05:54 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Applications that combine live data streams with embedded, parallel, and distributed processing are becoming more commonplace. WaveScript is a domain-specific language that brings high-level, type-safe, garbage-collected programming to these domains. This is made possible by three primary implementation techniques, each of which leverages characteristics of the streaming domain. First, we employ a novel evaluation strategy that uses a combination of interpretation and reification to partially evaluate programs into stream dataflow graphs. Second, we use profile-driven compilation to enable many optimizations that are normally only available in the synchronous (rather than asynchronous) dataflow domain. Finally, we incorporate an extensible system for rewrite rules to capture algebraic properties in specific domains (such as signal processing).\par We have used our language to build and deploy a sensor network for the acoustic localization of wild animals, in particular, the Yellow-Bellied marmot. We evaluate WaveScript's performance on this application, showing that it yields good performance on both embedded and desktop-class machines, including distributed execution and substantial parallel speedups. Our language allowed us to implement the application rapidly, while outperforming a previous C implementation by over 35\%, using fewer than half the lines of code. We evaluate the contribution of our optimizations to this success.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "sensor networks; stream processing language", } @Article{Bachir:2008:PPP, author = "Mounira Bachir and Sid-Ahmed-Ali Touati and Albert Cohen", title = "Post-pass periodic register allocation to minimise loop unrolling degree", journal = j-SIGPLAN, volume = "43", number = "7", pages = "141--150", month = jul, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375657.1375677", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:05:54 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper solves an open problem regarding loop unrolling after periodic register allocation. Although software pipelining is a powerful technique to extract fine-grain parallelism, it generates reuse circuits spanning multiple loop iterations. These circuits require periodic register allocation, which in turn yield a code generation challenge, generally addressed through: (1) hardware support --- rotating register files --- deemed too expensive for embedded processors, (2) insertion of register moves with a high risk of reducing the computation throughput --- initiation interval (II) --- of software pipelining, and (3) post-pass loop unrolling that does not compromise throughput but often leads to unpractical code growth. The latter approach relies on the proof that MAXLIVE registers are sufficient for periodic register allocation (2; 3; 5); yet the only heuristic to control the amount of post-pass loop unrolling does not achieve this bound and leads to undesired register spills (4; 7).\par We propose a periodic register allocation technique allowing a software-only code generation that does not trade the optimality of the II for compactness of the generated code. Our idea is based on using the remaining registers: calling R$_{arch}$ the number of architectural registers of the target processor, then the number of remaining registers that can be used for minimising the unrolling degree is equal to R$_{arch}$ -MAXLIVE.\par We provide a complete formalisation of the problem and algorithm, followed by extensive experiments. We achieve practical loop unrolling degrees in most cases --- with no increase of the II --- while state-of-the-art techniques would either induce register spilling, degrade the II or lead to unacceptable code growth.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "embedded code optimisation; loop unrolling; periodic register allocation; software pipelining", } @Article{DeSutter:2008:PRB, author = "Bjorn {De Sutter} and Paul Coene and Tom {Vander Aa} and Bingfeng Mei", title = "Placement-and-routing-based register allocation for coarse-grained reconfigurable arrays", journal = j-SIGPLAN, volume = "43", number = "7", pages = "151--160", month = jul, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1375657.1375678", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:05:54 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "DSP architectures often feature multiple register files with sparse connections to a large set of ALUs. For such DSPs, traditional register allocation algorithms suffer from a lot of problems, including a lack of retargetability and phase-ordering problems. This paper studies alternative register allocation techniques based on placement and routing. Different register file models are studied and evaluated on a state-of-the art coarse-grained reconfigurable array DSP, together with a new post-pass register allocator for rotating register files.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "coarse-grained; placement and routing; reconfigurable arrays; register allocation", } @Article{Wang:2008:OSA, author = "Li Wang and Xuejun Yang and Jingling Xue and Yu Deng and Xiaobo Yan and Tao Tang and Quan Hoang Nguyen", title = "Optimizing scientific application loops on stream processors", journal = j-SIGPLAN, volume = "43", number = "7", pages = "161--170", month = jul, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1379023.1375679", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Jun 18 11:05:54 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper describes a graph coloring compiler framework to allocate on-chip SRF(Stream Register File) storage for optimizing scientific applications on stream processors. Our framework consists of first applying enabling optimizations such as loop unrolling to expose stream reuse and opportunities for maximizing parallelism, i.e., overlapping kernel execution and memory transfers. Then the three SRF management tasks are solved in a unified manner via graph coloring: (1) placing streams in the SRF, (2) exploiting stream use, and (3) maximizing parallelism. We evaluate the performance of our compiler framework by actually running nine representative scientific computing kernels on our FT64 stream processor. Our preliminary results show that compiler management achieves an average speedup of 2.3x compared to First-Fit allocation. In comparison with the performance results obtained from running these benchmarks on Itanium 2, an average speedup of 2.1x is observed.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "data reuse; graph coloring; loop optimization; prefetching; software-managed cache; stream processor; streaming", } @Article{McKinley:2008:IPQ, author = "Kathryn S. McKinley", title = "Improving publication quality by reducing bias with double-blind reviewing and author response", journal = j-SIGPLAN, volume = "43", number = "8", pages = "5--9", month = aug, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1416216.1416218", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Oct 6 14:59:58 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, articleno = "5--9", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Jones:2008:ISM, author = "Richard Jones and Steve Blackburn", title = "{International Symposium of Memory Management (ISMM 2008)}", journal = j-SIGPLAN, volume = "43", number = "8", pages = "12--14", month = aug, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1416216.1416220", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Oct 6 14:59:58 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The ACM SIGPLAN International Symposium on Memory Management (ISMM) is a premier forum for research in the management of dynamically allocated memory. We interpret this remit widely: areas of interest include but are not limited to explicit storage allocation and deallocation; garbage collection algorithms and implementations; compiler analyses to aid memory management; interactions with languages, operating systems and hardware (especially the memory system); memory management related tools; and empirical studies of allocation and referencing behavior in programs that make significant use of dynamic memory.", acknowledgement = ack-nhfb, articleno = "12--14", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bailey:2008:IPA, author = "Mark W. Bailey", title = "{ISMM 2008} paper abstracts", journal = j-SIGPLAN, volume = "43", number = "8", pages = "15--19", month = aug, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1416216.1416221", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Oct 6 14:59:58 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, articleno = "15--19", fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lampson:2008:LSE, author = "Butler W. Lampson", title = "Lazy and speculative execution in computer systems", journal = j-SIGPLAN, volume = "43", number = "9", pages = "1--2", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411204.1411205", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The distinction between lazy and eager (or strict) evaluation has been studied in programming languages since Algol 60's call by name, as a way to avoid unnecessary work and to deal gracefully with infinite structures such as streams. It is deeply integrated in some languages, notably Haskell, and can be simulated in many languages by wrapping a lazy expression in a lambda. Less well studied is the role of laziness, and its opposite, speculation, in computer systems, both hardware and software. A wide range of techniques can be understood as applications of these two ideas. Laziness is the idea behind:\par Redo logging for maintaining persistent state and replicated state machines: the log represents the current state, but it is evaluated only after a failure or to bring a replica online.\par Copy-on-write schemes for maintaining multiple versions of a large, slowly changing state, usually in a database or file system.\par Write buffers and writeback caches in memory and file systems, which are lazy about updating the main store.\par Relaxed memory models and eventual consistency replication schemes (which require weakening the spec).\par Clipping regions and expose events in graphics and window systems.\par Carry-save adders, which defer propagating carries until a clean result is needed.\par 'Infinity' and 'Not a number' results of floating point operations.\par Futures (in programming) and out of order execution (in CPUs), which launch a computation but are lazy about consuming the result. Dataflow is a generalization.\par 'Formatting operators' in text editors, which apply properties such as 'italic' to large regions of text by attaching a sequence of functions that compute the properties; the functions are not evaluated until the text needs to be displayed.\par Stream processing in database queries, Unix pipes, etc., which conceptually applies operators to unbounded sequences of data, but rearranges the computation when possible to apply a sequence of operators to each data item in turn. Speculation is the idea behind:\par Optimistic concurrency control in databases, and more recently in transactional memory\par Prefetching in memory and file systems.\par Branch prediction, and speculative execution in general in modern CPUs.\par Data speculation, which works especially well when the data is cached but might be updated by a concurrent process. This is a form of optimistic concurrency control.\par Exponential backoff schemes for scheduling a resource, most notably in LANs such as WiFi or classical Ethernet.\par All forms of caching, which speculate that it's worth filling up some memory with data in the hope that it will be used again. In both cases it is usual to insist that the laziness or speculation is strictly a matter of scheduling that doesn't affect the result of a computation but only improves the performance. Sometimes, however, the spec is weakened, for example in eventual consistency. I will discuss many of these examples in detail and examine what they have in common, how they differ, and what factors govern the effectiveness of laziness and speculation in computer systems.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "lazy evaluation", } @Article{Cheney:2008:FFU, author = "James Cheney", title = "{FLUX}: functional updates for {XML}", journal = j-SIGPLAN, volume = "43", number = "9", pages = "3--14", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411204.1411209", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "XML database query languages have been studied extensively, but XML database updates have received relatively little attention, and pose many challenges to language design. We are developing an XML update language called FLUX, which stands for FunctionaL Updates for XML, drawing upon ideas from functional programming languages. In prior work, we have introduced a core language for FLUX with a clear operational semantics and a sound, decidable static type system based on regular expression types.\par Our initial proposal had several limitations. First, it lacked support for recursive types or update procedures. Second, although a high-level source language can easily be translated to the core language, it is difficult to propagate meaningful type errors from the core language back to the source. Third, certain updates are wellformed yet contain {\em path errors}, or 'dead' subexpressions which never do any useful work. It would be useful to detect path errors, since they often represent errors or optimization opportunities.\par In this paper, we address all three limitations. Specifically, we present an improved, sound type system that handles recursion. We also formalize a source update language and give a translation to the core language that {\em preserves\/} and {\em reflects\/} typability. We also develop a {\em path-error analysis\/} (a form of dead-code analysis) for updates.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "static analysis; type systems; update languages; XML", } @Article{Castagna:2008:TIX, author = "Giuseppe Castagna and Kim Nguyen", title = "Typed iterators for {XML}", journal = j-SIGPLAN, volume = "43", number = "9", pages = "15--26", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411204.1411210", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "XML transformations are very sensitive to types: XML types describe the tags and attributes of XML elements as well as the number, kind, and order of their sub-elements. Therefore, operations, even simple ones, that modify these features may affect the types of documents. Operations on XML documents are performed by iterators that, to be useful, need to be typed by a kind of polymorphism that goes beyond what currently exists. For this reason these {\em iterators\/} are not programmed but, rather, hard-coded in the languages. However, this approach soon reaches its limits, as the hard-coded iterators cannot cover fairly standard usage scenarios.\par As a solution to this problem we propose a generic language to define iterators for XML data. This language can either be used as a compilation target (e.g., for XPATH) or it can be grafted on any statically typed host programming language (as long as this has product types) to endow it with XML processing capabilities. We show that our language mostly offers the required degree of polymorphism, study its formal properties, and show its expressiveness and practical impact by providing several usage examples and encodings.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "iterators; polymorphism; subtyping; XML", } @Article{Jia:2008:APL, author = "Limin Jia and Jeffrey A. Vaughan and Karl Mazurak and Jianzhou Zhao and Luke Zarko and Joseph Schorr and Steve Zdancewic", title = "{AURA}: a programming language for authorization and audit", journal = j-SIGPLAN, volume = "43", number = "9", pages = "27--38", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411204.1411212", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper presents AURA, a programming language for access control that treats ordinary programming constructs (e.g., integers and recursive functions) and authorization logic constructs (e.g., principals and access control policies) in a uniform way. AURA is based on polymorphic DCC and uses dependent types to permit assertions that refer directly to AURA values while keeping computation out of the assertion level to ensure tractability. The main technical results of this paper include fully mechanically verified proofs of the decidability and soundness for AURA's type system, and a prototype typechecker and interpreter.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "access control; audit; authorization logic; type systems", } @Article{Oury:2008:PP, author = "Nicolas Oury and Wouter Swierstra", title = "The power of {Pi}", journal = j-SIGPLAN, volume = "43", number = "9", pages = "39--50", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411203.1411213", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper exhibits the power of programming with dependent types by dint of embedding three domain-specific languages: Cryptol, a language for cryptographic protocols; a small data description language; and relational algebra. Each example demonstrates particular design patterns inherent to dependently-typed programming. Documenting these techniques paves the way for further research in domain-specific embedded type systems.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dependent types; domain-specific embedded languages", } @Article{Schrijvers:2008:TCO, author = "Tom Schrijvers and Simon Peyton Jones and Manuel Chakravarty and Martin Sulzmann", title = "Type checking with open type functions", journal = j-SIGPLAN, volume = "43", number = "9", pages = "51--62", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411203.1411215", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We report on an extension of Haskell with open type-level functions and equality constraints that unifies earlier work on GADTs, functional dependencies, and associated types. The contribution of the paper is that we identify and characterise the key technical challenge of {\em entailment checking\/}; and we give a novel, decidable, sound, and complete algorithm to solve it, together with some practically-important variants. Our system is implemented in GHC, and is already in active use.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "Haskell; type checking; type families; type functions", } @Article{Remy:2008:MMG, author = "Didier R{\'e}my and Boris Yakobowski", title = "From {ML} to {ML$^F$}: graphic type constraints with efficient type inference", journal = j-SIGPLAN, volume = "43", number = "9", pages = "63--74", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411204.1411216", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "ML$^F$ is a type system that seamlessly merges ML-style type inference with System-F polymorphism. We propose a system of graphic (type) constraints that can be used to perform type inference in both ML or ML$^F$. We show that this constraint system is a small extension of the formalism of graphic types, originally introduced to represent ML$^F$ types. We give a few semantic preserving transformations on constraints and propose a strategy for applying them to solve constraints. We show that the resulting algorithm has optimal complexity for ML$^F$ type inference, and argue that, as for ML, this complexity is linear under reasonable assumptions.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "binders; graphs; ML; ML F; system F; type constraints; type generalization; type inference; type instantiation; types; unification", } @Article{Guillemette:2008:TPC, author = "Louis-Julien Guillemette and Stefan Monnier", title = "A type-preserving compiler in {Haskell}", journal = j-SIGPLAN, volume = "43", number = "9", pages = "75--86", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411204.1411218", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "There has been a lot of interest of late for programming languages that incorporate features from dependent type systems and proof assistants, in order to capture important invariants of the program in the types. This allows type-based program verification and is a promising compromise between plain old types and full blown Hoare logic proofs. The introduction of GADTs in GHC (and more recently type families) made such dependent typing available in an industry-quality implementation, making it possible to consider its use in large scale programs.\par We have undertaken the construction of a complete compiler for System {\em F}, whose main property is that the GHC type checker verifies mechanically that each phase of the compiler properly preserves types. Our particular focus is on 'types rather than proofs': reasonably few annotations that do not overwhelm the actual code.\par We believe it should be possible to write such a type-preserving compiler with an amount of extra code comparable to what is necessary for typical typed intermediate languages, but with the advantage of static checking. We will show in this paper the remaining hurdles to reach this goal.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compilation; de Bruijn; higher-order abstract syntax; typed assembly language", } @Article{Jones:2008:ERP, author = "Mark P. Jones", title = "Experience report: playing the {DSL} card", journal = j-SIGPLAN, volume = "43", number = "9", pages = "87--90", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411203.1411219", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper describes our experience using a functional language, Haskell, to build an embedded, domain-specific language (DSL) for component configuration in large-scale, real-time, embedded systems. Prior to the introduction of the DSL, engineers would describe the steps needed to configure a particular system in a handwritten XML document. In this paper, we outline the application domain, give a brief overview of the DSL that we developed, and provide concrete data to demonstrate its effectiveness. In particular, we show that the DSL has several significant benefits over the original, XML-based approach including reduced code size, increased modularity and scalability, and detection and prevention of common defects. For example, using the DSL, we were able to produce clear and intuitive descriptions of component configurations that were sometimes less than 1/30 of the size of the original XML.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "component configuration; domain-specific languages; functional programming; Haskell; Timber", } @Article{Henglein:2008:GDS, author = "Fritz Henglein", title = "Generic discrimination: sorting and partitioning unshared data in linear time", journal = j-SIGPLAN, volume = "43", number = "9", pages = "91--102", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411204.1411220", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We introduce the notion of {\em discrimination\/} as a generalization of both sorting and partitioning and show that worst-case linear-time discrimination functions (discriminators) can be defined {\em generically}, by (co-)induction on an expressive language of {\em order denotations}. The generic definition yields discriminators that generalize both distributive sorting and multiset discrimination. The generic discriminator can be coded compactly using list comprehensions, with order denotations specified using Generalized Algebraic Data Types (GADTs). A GADT-free combinator formulation of discriminators is also given.\par We give some examples of the uses of discriminators, including a new most-significant-digit lexicographic sorting algorithm.\par Discriminators generalize binary comparison functions: They operate on $n$ arguments at a time, but do not expose more information than the underlying equivalence, respectively ordering relation on the arguments. We argue that primitive types with equality (such as references in ML) and ordered types (such as the machine integer type), should expose their equality, respectively standard ordering relation, as discriminators: Having {\em only\/} a binary equality test on a type requires $\Theta$($n$$^2$) time to find all the occurrences of an element in a list of length {\em n}, for each element in the list, even if the equality test takes only constant time. A discriminator accomplishes this in linear time. Likewise, having only a (constant-time) comparison function requires $\Theta$($n$ log $n$) time to sort a list of $n$ elements. A discriminator can do this in linear time.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "discrimination; discriminator; equivalence; functional; generic; multiset discrimination; order; partitioning; sorting; total preorder", } @Article{Effinger-Dean:2008:TEM, author = "Laura Effinger-Dean and Matthew Kehrt and Dan Grossman", title = "Transactional events for {ML}", journal = j-SIGPLAN, volume = "43", number = "9", pages = "103--114", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411203.1411222", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Transactional events (TE) are an approach to concurrent programming that enriches the first-class synchronous message-passing of Concurrent ML (CML) with a combinator that allows multiple messages to be passed as part of one all-or-nothing synchronization. Donnelly and Fluet (2006) designed and implemented TE as a Haskell library and demonstrated that it enables elegant solutions to programming patterns that are awkward or impossible in CML. However, both the definition and the implementation of TE relied fundamentally on the code in a synchronization not using mutable memory, an unreasonable assumption for mostly functional languages like ML where functional interfaces may have impure implementations.\par We present a definition and implementation of TE that supports ML-style references and nested synchronizations, both of which were previously unnecessary due to Haskell's more restrictive type system. As in prior work, we have a high-level semantics that makes nondeterministic choices such that synchronizations succeed whenever possible and a low-level semantics that uses search to implement the high-level semantics soundly and completely. The key design trade-off in the semantics is to allow updates to mutable memory without requiring the implementation to consider all possible thread interleavings. Our solution uses first-class heaps and allows interleavings only when a message is sent or received. We have used Coq to prove the high- and low-level semantics equivalent.\par We have implemented our approach by modifying the Objective Caml run-time system. By modifying the run-time system, rather than relying solely on a library, we can eliminate the potential for nonterminating computations within unsuccessful synchronizations to run forever.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency; synchronous message passing; transactional events", } @Article{Convey:2008:ERE, author = "Christian Convey and Andrew Fredricks and Christopher Gagner and Douglas Maxwell and Lutz Hamel", title = "Experience report: {Erlang} in acoustic ray tracing", journal = j-SIGPLAN, volume = "43", number = "9", pages = "115--118", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411203.1411223", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We investigated the relative merits of C++ and Erlang in the implementation of a parallel acoustic ray tracing algorithm for the U.S. Navy. We found a much smaller learning curve and better debugging environment for parallel Erlang than for pthreads-based C++ programming. Our C++ implementation outperformed the Erlang program by at least 12x. Attempts to use Erlang on the IBM Cell BE microprocessor were frustrated by Erlang's memory footprint.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "acoustic ray tracing; C++; Erlang", } @Article{Fluet:2008:ITP, author = "Matthew Fluet and Mike Rainey and John Reppy and Adam Shaw", title = "Implicitly-threaded parallelism in {Manticore}", journal = j-SIGPLAN, volume = "43", number = "9", pages = "119--130", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411203.1411224", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The increasing availability of commodity multicore processors is making parallel computing available to the masses. Traditional parallel languages are largely intended for large-scale scientific computing and tend not to be well-suited to programming the applications one typically finds on a desktop system. Thus we need new parallel-language designs that address a broader spectrum of applications. In this paper, we present Manticore, a language for building parallel applications on commodity multicore hardware including a diverse collection of parallel constructs for different granularities of work. We focus on the implicitly-threaded parallel constructs in our high-level functional language. We concentrate on those elements that distinguish our design from related ones, namely, a novel parallel binding form, a nondeterministic parallel case form, and exceptions in the presence of data parallelism. These features differentiate the present work from related work on functional data parallel language designs, which has focused largely on parallel problems with regular structure and the compiler transformations --- most notably, flattening --- that make such designs feasible. We describe our implementation strategies and present some detailed examples utilizing various mechanisms of our language.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "data parallelism; exceptions; implicitly-threaded parallelism; parallel binding; parallel case", } @Article{Danvy:2008:DIP, author = "Olivier Danvy", title = "Defunctionalized interpreters for programming languages", journal = j-SIGPLAN, volume = "43", number = "9", pages = "131--142", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411204.1411206", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This document illustrates how functional implementations of formal semantics (structural operational semantics, reduction semantics, small-step and big-step abstract machines, natural semantics, and denotational semantics) can be transformed into each other. These transformations were foreshadowed by Reynolds in 'Definitional Interpreters for Higher-Order Programming Languages' for functional implementations of denotational semantics, natural semantics, and big-step abstract machines using closure conversion, CPS transformation, and defunctionalization. Over the last few years, the author and his students have further observed that functional implementations of small-step and of big-step abstract machines are related using fusion by fixed-point promotion and that functional implementations of reduction semantics and of small-step abstract machines are related using refocusing and transition compression. It furthermore appears that functional implementations of structural operational semantics and of reduction semantics are related as well, also using CPS transformation and defunctionalization. This further relation provides an element of answer to Felleisen's conjecture that any structural operational semantics can be expressed as a reduction semantics: for deterministic languages, a reduction semantics is a structural operational semantics in continuation style, where the reduction context is a defunctionalized continuation. As the defunctionalized counterpart of the continuation of a one-step reduction function, a reduction context represents the rest of the reduction, just as an evaluation context represents the rest of the evaluation since it is the defunctionalized counterpart of the continuation of an evaluation function.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "big-step abstract machines; context-sensitive reduction semantics; continuations; cps transformation; defunctionalization; interruptions; natural semantics; reduction semantics; refocusing; small-step abstract machines; structural operational semantics", } @Article{Chlipala:2008:PHO, author = "Adam Chlipala", title = "Parametric higher-order abstract syntax for mechanized semantics", journal = j-SIGPLAN, volume = "43", number = "9", pages = "143--156", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411204.1411226", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present {\em parametric higher-order abstract syntax (PHOAS)}, a new approach to formalizing the syntax of programming languages in computer proof assistants based on type theory. Like higher-order abstract syntax (HOAS), PHOAS uses the meta language's binding constructs to represent the object language's binding constructs. Unlike HOAS, PHOAS types are definable in general-purpose type theories that support traditional functional programming, like Coq's Calculus of Inductive Constructions. We walk through how Coq can be used to develop certified, executable program transformations over several statically-typed functional programming languages formalized with PHOAS; that is, each transformation has a machine-checked proof of type preservation and semantic preservation. Our examples include CPS translation and closure conversion for simply-typed lambda calculus, CPS translation for System F, and translation from a language with ML-style pattern matching to a simpler language with no variable-arity binding constructs. By avoiding the syntactic hassle associated with first-order representation techniques, we achieve a very high degree of proof automation.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compiler verification; dependent types; interactive proof assistants; type-theoretic semantics", } @Article{Ahmed:2008:TCC, author = "Amal Ahmed and Matthias Blume", title = "Typed closure conversion preserves observational equivalence", journal = j-SIGPLAN, volume = "43", number = "9", pages = "157--168", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411203.1411227", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Language-based security relies on the assumption that all potential attacks are bound by the rules of the language in question. When programs are compiled into a different language, this is true only if the translation process preserves observational equivalence.\par We investigate the problem of fully abstract compilation, i.e., compilation that both {\em preserves\/} and {\em reflects\/} observational equivalence. In particular, we prove that typed closure conversion for the polymorphic $\lambda$-calculus with existential and recursive types is fully abstract. Our proof uses operational techniques in the form of a step-indexed logical relation and construction of certain {\em wrapper\/} terms that 'back-translate' from target values to source values.\par Although typed closure conversion has been assumed to be fully abstract, we are not aware of any previous result that actually proves this.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "equivalence-preserving compilation; full abstraction; step-indexed logical relations; typed closure conversion", } @Article{Morihata:2008:WIR, author = "Akimasa Morihata and Kiminori Matsuzaki and Masato Takeichi", title = "Write it recursively: a generic framework for optimal path queries", journal = j-SIGPLAN, volume = "43", number = "9", pages = "169--178", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411204.1411229", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "{\em Optimal path queries\/} are queries to obtain an optimal path specified by a given criterion of optimality. There have been many studies to give efficient algorithms for classes of optimal path problem. In this paper, we propose a generic framework for optimal path queries. We offer a domain-specific language to describe optimal path queries, together with an algorithm to find an optimal path specified in our language. One of the most distinct features of our framework is the use of recursive functions to specify queries. Recursive functions reinforce expressiveness of our language so that we can describe many problems including known ones; thus, we need not learn existing results. Moreover, we can derive an efficient querying algorithm from the description of a query written in recursive functions. Our algorithm is a generalization of existing algorithms, and answers a query in $O(n \log n)$ time on a graph of $O(n)$ size. We also explain our implementation of an optimal path querying system, and report some experimental results.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "finite state automaton; optimal path query; program transformation; recursive function", } @Article{Adams:2008:ENE, author = "Michael D. Adams and R. Kent Dybvig", title = "Efficient nondestructive equality checking for trees and graphs", journal = j-SIGPLAN, volume = "43", number = "9", pages = "179--188", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411203.1411230", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The Revised$^6$ Report on Scheme requires its generic equivalence predicate, equal?, to terminate even on cyclic inputs. While the terminating equal? can be implemented via a DFA-equivalence or union-find algorithm, these algorithms usually require an additional pointer to be stored in each object, are not suitable for multithreaded code due to their destructive nature, and may be unacceptably slow for the small acyclic values that are the most likely inputs to the predicate.\par This paper presents a variant of the union-find algorithm for equal? that addresses these issues. It performs well on large and small, cyclic and acyclic inputs by interleaving a low-overhead algorithm that terminates only for acyclic inputs with a more general algorithm that handles cyclic inputs. The algorithm terminates for all inputs while never being more than a small factor slower than whichever of the acyclic or union-find algorithms would have been faster. Several intermediate algorithms are also presented, each of which might be suitable for use in a particular application, though only the final algorithm is suitable for use in a library procedure, like equal?, that must work acceptably well for all inputs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dfa equivalence; eq hash tables; equality; scheme; union-find", } @Article{Hinze:2008:FPS, author = "Ralf Hinze", title = "Functional pearl: streams and unique fixed points", journal = j-SIGPLAN, volume = "43", number = "9", pages = "189--200", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411204.1411232", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Streams, infinite sequences of elements, live in a coworld: they are given by a coinductive data type, operations on streams are implemented by corecursive programs, and proofs are conducted using coinduction. But there is more to it: suitably restricted, stream equations possess {\em unique solutions}, a fact that is not very widely appreciated. We show that this property gives rise to a simple and attractive proof technique essentially bringing equational reasoning to the coworld. In fact, we redevelop the theory of recurrences, finite calculus and generating functions using streams and stream operators building on the cornerstone of unique solutions. The development is constructive: streams and stream operators are implemented in Haskell, usually by one-liners. The resulting calculus or library, if you wish, is elegant and fun to use. Finally, we rephrase the proof of uniqueness using generalised algebraic data types.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "coinduction; finite calculus; generating functions; recurrences; streams; unique fixed points", } @Article{Fischer:2008:DFT, author = "Sebastian Fischer and Herbert Kuchen", title = "Data-flow testing of declarative programs", journal = j-SIGPLAN, volume = "43", number = "9", pages = "201--212", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411203.1411233", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We propose a novel notion of data-flow coverage for testing declarative programs. Moreover, we extend an automatic test-case generator such that it can achieve data-flow coverage. The coverage information is obtained by instrumenting a program such that it collects coverage information during its execution. Finally, we show the benefits of data-flow based testing for a couple of example applications.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "code coverage; curry; data flow", } @Article{Chargueraud:2008:FTC, author = "Arthur Chargu{\'e}raud and Fran{\c{c}}ois Pottier", title = "Functional translation of a calculus of capabilities", journal = j-SIGPLAN, volume = "43", number = "9", pages = "213--224", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411203.1411235", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Reasoning about imperative programs requires the ability to track aliasing and ownership properties. We present a type system that provides this ability, by using regions, capabilities, and singleton types. It is designed for a high-level calculus with higher-order functions, algebraic data structures, and references (mutable memory cells). The type system has polymorphism, yet does not require a value restriction, because capabilities act as explicit store typings.\par We exhibit a type-directed, type-preserving, and meaning-preserving translation of this imperative calculus into a pure calculus. Like the monadic translation, this is a store-passing translation. Here, however, the store is partitioned into multiple fragments, which are threaded through a computation only if they are relevant to it. Furthermore, the decomposition of the store into fragments can evolve dynamically to reflect ownership transfers.\par The translation offers deep insight about the inner workings and soundness of the type system. If coupled with a semantic model of its target calculus, it leads to a semantic model of its imperative source calculus. Furthermore, it provides a foundation for our long-term objective of designing a system for specifying and certifying imperative programs with dynamic memory allocation.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "aliasing; capabilities; effects; linearity; monads; ownership; regions; type systems", } @Article{Augustsson:2008:PTS, author = "Lennart Augustsson and Howard Mansell and Ganesh Sittampalam", title = "{Paradise}: a two-stage {DSL} embedded in {Haskell}", journal = j-SIGPLAN, volume = "43", number = "9", pages = "225--228", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411203.1411236", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We have implemented a two-stage language, Paradise, for building reusable components which are used to price financial products. Paradise is embedded in Haskell and makes heavy use of type-class based overloading, allowing the second stage to be compiled into a variety of backend platforms.\par Paradise has enabled us to begin moving away from implementation directly in monolithic Excel spreadsheets and towards a more modular and retargetable approach.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dsels; Haskell; metaprogramming; paradise", } @Article{Nanevski:2008:YDT, author = "Aleksandar Nanevski and Greg Morrisett and Avraham Shinnar and Paul Govereau and Lars Birkedal", title = "{Ynot}: dependent types for imperative programs", journal = j-SIGPLAN, volume = "43", number = "9", pages = "229--240", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411204.1411237", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We describe an axiomatic extension to the Coq proof assistant, that supports writing, reasoning about, and extracting higher-order, dependently-typed programs with {\em side-effects}. Coq already includes a powerful functional language that supports dependent types, but that language is limited to pure, total functions. The key contribution of our extension, which we call Ynot, is the added support for computations that may have effects such as non-termination, accessing a mutable store, and throwing/catching exceptions.\par The axioms of Ynot form a small trusted computing base which has been formally justified in our previous work on Hoare Type Theory (HTT). We show how these axioms can be combined with the powerful type and abstraction mechanisms of Coq to build higher-level reasoning mechanisms which in turn can be used to build realistic, verified software components. To substantiate this claim, we describe here a representative series of modules that implement imperative finite maps, including support for a higher-order (effectful) iterator. The implementations range from simple (e.g., association lists) to complex (e.g., hash tables) but share a common interface which abstracts the implementation details and ensures that the modules properly implement the finite map abstraction.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "Hoare logic; monads; separation logic; type theory", } @Article{Fluet:2008:SFG, author = "Matthew Fluet and Mike Rainey and John Reppy", title = "A scheduling framework for general-purpose parallel languages", journal = j-SIGPLAN, volume = "43", number = "9", pages = "241--252", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411204.1411239", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The trend in microprocessor design toward multicore and manycore processors means that future performance gains in software will largely come from harnessing parallelism. To realize such gains, we need languages and implementations that can enable parallelism at many different levels. For example, an application might use both explicit threads to implement course-grain parallelism for independent tasks and implicit threads for fine-grain data-parallel computation over a large array. An important aspect of this requirement is supporting a wide range of different scheduling mechanisms for parallel computation.\par In this paper, we describe the scheduling framework that we have designed and implemented for Manticore, a strict parallel functional language. We take a micro-kernel approach in our design: the compiler and runtime support a small collection of scheduling primitives upon which complex scheduling policies can be implemented. This framework is extremely flexible and can support a wide range of different scheduling policies. It also supports the nesting of schedulers, which is key to both supporting multiple scheduling policies in the same application and to hierarchies of speculative parallel computations.\par In addition to describing our framework, we also illustrate its expressiveness with several popular scheduling techniques. We present a (mostly) modular approach to extending our schedulers to support cancellation. This mechanism is essential for implementing eager and speculative parallelism. We finally evaluate our framework with a series of benchmarks and an analysis.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compilers; heterogeneous parallel languages; run-time systems; scheduling", } @Article{Spoonhower:2008:SPP, author = "Daniel Spoonhower and Guy E. Blelloch and Robert Harper and Phillip B. Gibbons", title = "Space profiling for parallel functional programs", journal = j-SIGPLAN, volume = "43", number = "9", pages = "253--264", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411203.1411240", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper presents a semantic space profiler for parallel functional programs. Building on previous work in sequential profiling, our tools help programmers to relate runtime resource use back to program source code. Unlike many profiling tools, our profiler is based on a cost semantics. This provides a means to reason about performance without requiring a detailed understanding of the compiler or runtime system. It also provides a specification for language implementers. This is critical in that it enables us to separate cleanly the performance of the application from that of the language implementation.\par Some aspects of the implementation can have significant effects on performance. Our cost semantics enables programmers to understand the impact of different scheduling policies while hiding many of the details of their implementations. We show applications where the choice of scheduling policy has asymptotic effects on space use. We explain these use patterns through a demonstration of our tools. We also validate our methodology by observing similar performance in our implementation of a parallel extension of Standard ML.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "cost semantics; parallelism; profiling; scheduling; standard ml", } @Article{Jones:2008:PPT, author = "Mark P. Jones", title = "Polymorphism and page tables: systems programming from a functional programmer's perspective", journal = j-SIGPLAN, volume = "43", number = "9", pages = "265--266", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411204.1411207", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "With features that include lightweight syntax, expressive type systems, and deep semantic foundations, functional languages are now being used to develop an increasingly broad range of complex, real-world applications. In the area of systems software, however, where performance and interaction with low-level aspects of hardware are central concerns, many practitioners still eschew the advantages of higher-level languages for the potentially unsafe but predictable behavior of traditional imperative languages like C. It is ironic that critical applications such as operating systems kernels, device drivers, and VMMs --- where a single bug could compromise the reliability or security of a whole system --- are among the least likely to benefit from the abstractions and safety guarantees of modern language designs.\par Over the last few years, our group has been investigating the potential for using Haskell to develop realistic operating systems that can boot and run on bare metal. The House system, developed primarily by Thomas Hallgren and Andrew Tolmach, demonstrates that it is indeed possible to construct systems software in a functional language. But House still relies on a layer of runtime support primitives --- some written using unsafe Haskell primitives and others written in C --- to provide services ranging from garbage collection to control of the page table structures used by the hardware memory management unit. We would like to replace as much of this layer as possible with code written in a functional language without compromising on type or memory safety.\par Our experiences with House have led us to believe that a new functional language is required to reflect the needs of the systems domain more directly. Interestingly, however, we have concluded that this does not require fundamental new language design. In this invited talk, I will give an update on the current status of our project and I will describe how we are leveraging familiar components of the Haskell type system --- including polymorphism, kinds, qualified types and improvement --- to capture more precise details of effect usage, data representation, and termination. I will also discuss the challenges of writing and compiling performance-sensitive code written in a functional style. It was once considered radical to use C in place of assembly language to construct systems software. Is it possible that functional languages might one day become as commonplace in this application domain as C is today?", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "data representation; functional programming; memory manipulation; systems programming; type systems", } @Article{Krauss:2008:PMP, author = "Alexander Krauss", title = "Pattern minimization problems over recursive data types", journal = j-SIGPLAN, volume = "43", number = "9", pages = "267--274", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411203.1411242", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In the context of program verification in an interactive theorem prover, we study the problem of transforming function definitions with ML-style (possibly overlapping) pattern matching into minimal sets of independent equations. Since independent equations are valid unconditionally, they are better suited for the equational proof style using induction and rewriting, which is often found in proofs in theorem provers or on paper.\par We relate the problem to the well-known minimization problem for propositional DNF formulas and show that it is $\pounds P/2$-complete. We then develop a concrete algorithm to compute minimal patterns, which naturally generalizes the standard Quine-McCluskey procedure to the domain of term patterns.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "complexity; pattern matching; theorem proving", } @Article{VanHorn:2008:DCC, author = "David {Van Horn} and Harry G. Mairson", title = "Deciding $k$ {CFA} is complete for {EXPTIME}", journal = j-SIGPLAN, volume = "43", number = "9", pages = "275--282", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411204.1411243", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We give an exact characterization of the computational complexity of the $k$ CFA hierarchy. For any $k > 0$, we prove that the control flow decision problem is complete for deterministic exponential time. This theorem validates empirical observations that such control flow analysis is intractable. It also provides more general insight into the complexity of abstract interpretation.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "complexity; flow analysis", } @Article{Leijen:2008:HST, author = "Daan Leijen", title = "{HMF}: simple type inference for first-class polymorphism", journal = j-SIGPLAN, volume = "43", number = "9", pages = "283--294", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411203.1411245", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "HMF is a conservative extension of Hindley-Milner type inference with first-class polymorphism. In contrast to other proposals, HML uses regular System F types and has a simple type inference algorithm that is just a small extension of the usual Damas-Milner algorithm W. Given the relative simplicity and expressive power, we feel that HMF can be an attractive type system in practice. There is a reference implementation of the type system available online together with a technical report containing proofs (Leijen 2007a,b).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "first-class polymorphism; type inference", } @Article{Vytiniotis:2008:FFC, author = "Dimitrios Vytiniotis and Stephanie Weirich and Simon Peyton Jones", title = "{FPH}: first-class polymorphism for {Haskell}", journal = j-SIGPLAN, volume = "43", number = "9", pages = "295--306", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411203.1411246", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Languages supporting polymorphism typically have ad-hoc restrictions on where polymorphic types may occur. Supporting 'firstclass' polymorphism, by lifting those restrictions, is obviously desirable, but it is hard to achieve this without sacrificing type inference. We present a new type system for higher-rank and impredicative polymorphism that improves on earlier proposals: it is an extension of Damas-Milner; it relies only on System F types; it has a simple, declarative specification; it is robust to program transformations; and it enjoys a complete and decidable type inference algorithm.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "higher-rank types; impredicativity; type inference", } @Article{Dreyer:2008:MMM, author = "Derek Dreyer and Andreas Rossberg", title = "Mixin' up the {ML} module system", journal = j-SIGPLAN, volume = "43", number = "9", pages = "307--320", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411203.1411248", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "ML modules provide hierarchical namespace management, as well as fine-grained control over the propagation of type information, but they do not allow modules to be broken up into mutually recursive, separately compilable components. Mixin modules facilitate recursive linking of separately compiled components, but they are not hierarchically composable and typically do not support type abstraction. We synthesize the complementary advantages of these two mechanisms in a novel module system design we call MixML.\par A MixML module is like an ML structure in which some of the components are specified but not defined. In other words, it unifies the ML structure and signature languages into one. MixML seamlessly integrates hierarchical composition, translucent MLstyle data abstraction, and mixin-style recursive linking. Moreover, the design of MixML is clean and minimalist; it emphasizes how all the salient, semantically interesting features of the ML module system (as well as several proposed extensions to it) can be understood simply as stylized uses of a small set of orthogonal underlying constructs, with mixin composition playing a central role.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstract data types; hierarchical composability; mixin modules; ML modules; recursive modules; type systems", } @Article{Ley-Wild:2008:CSA, author = "Ruy Ley-Wild and Matthew Fluet and Umut A. Acar", title = "Compiling self-adjusting programs with continuations", journal = j-SIGPLAN, volume = "43", number = "9", pages = "321--334", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411203.1411249", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Self-adjusting programs respond automatically and efficiently to input changes by tracking the dynamic data dependences of the computation and incrementally updating the output as needed. In order to identify data dependences, previously proposed approaches require the user to make use of a set of monadic primitives. Rewriting an ordinary program into a self-adjusting program with these primitives, however, can be difficult and error-prone due to various monadic and proper-usage restrictions, some of which cannot be enforced statically. Previous work therefore suggests that self-adjusting computation would benefit from direct language and compiler support.\par In this paper, we propose a language-based technique for writing and compiling self-adjusting programs from ordinary programs. To compile self-adjusting programs, we use a continuation-passing style (cps) transformation to automatically infer a conservative approximation of the dynamic data dependences. To prevent the inferred, approximate dependences from degrading the performance of change propagation, we generate memoized versions of cps functions that can reuse previous work even when they are invoked with different continuations. The approach offers a natural programming style that requires minimal changes to existing code, while statically enforcing the invariants required by self-adjusting computation.\par We validate the feasibility of our proposal by extending Standard ML and by integrating the transformation into MLton, a whole-program optimizing compiler for Standard ML. Our experiments indicate that the proposed compilation technique can produce self-adjusting programs whose performance is consistent with the asymptotic bounds and experimental results obtained via manual rewriting (up to a constant factor).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "continuation-passing style; memoization; self-adjusting computation", } @Article{Mainland:2008:FSF, author = "Geoffrey Mainland and Greg Morrisett and Matt Welsh", title = "{Flask}: staged functional programming for sensor networks", journal = j-SIGPLAN, volume = "43", number = "9", pages = "335--346", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411204.1411251", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Severely resource-constrained devices present a confounding challenge to the functional programmer: we are used to having powerful abstraction facilities at our fingertips, but how can we make use of these tools on a device with an 8- or 16-bit CPU and at most tens of kilobytes of RAM? Motivated by this challenge, we have developed Flask, a domain specific language embedded in Haskell that brings the power of functional programming to sensor networks, collections of highly resource-constrained devices. Flask consists of a staging mechanism that cleanly separates node-level code from the meta-language used to generate node-level code fragments; syntactic support for embedding standard sensor network code; a restricted subset of Haskell that runs on sensor networks and constrains program space and time consumption; a higher-level 'data stream' combinator library for quickly constructing sensor network programs; and an extensible runtime that provides commonly-used services.\par We demonstrate Flask through several small code examples as well as a compiler that generates node-level code to execute a network-wide query specified in a SQL-like language. We show how using Flask ensures constraints on space and time behavior. Through microbenchmarks and measurements on physical hardware, we demonstrate that Flask produces programs that are efficient in terms of CPU and memory usage and that can run effectively on existing sensor network hardware.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "meta programming", } @Article{Nanavati:2008:ERP, author = "Ravi Nanavati", title = "Experience report: a pure shirt fits", journal = j-SIGPLAN, volume = "43", number = "9", pages = "347--352", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411203.1411252", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Bluespec is a hardware-design tools startup whose core technology is developed using Haskell. Haskell is an unusual choice for a startup because it adds technical risk to the inherent business risk. In the years since Bluespec's founding, we have discovered that Haskell's purity is an unexpected match for the development needs of a startup. Based on Bluespec's experience, we conclude that pure programming languages can be the source of a competitive advantage for startup software companies.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "Bluespec; functional programming; Haskell; monads", } @Article{Park:2008:FN, author = "Sungwoo Park and Jinha Kim and Hyeonseung Im", title = "Functional netlists", journal = j-SIGPLAN, volume = "43", number = "9", pages = "353--366", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411204.1411253", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In efforts to overcome the complexity of the syntax and the lack of formal semantics of conventional hardware description languages, a number of functional hardware description languages have been developed. Like conventional hardware description languages, however, functional hardware description languages eventually convert all source programs into netlists, which describe wire connections in hardware circuits at the lowest level and conceal all high-level descriptions written into source programs.\par We develop a variant of the lambda calculus, called $l$ \lambda (linear lambda), which may serve as a high-level substitute for netlists. In order to support higher-order functions, $l$ \lambda uses a linear type system which enforces the linear use of variables of function type. The translation of $l$ \lambda into structural descriptions of hardware circuits is sound and complete in the sense that it maps expressions only to realizable hardware circuits and that every realizable hardware circuit has a corresponding expression in $l$ \lambda . To illustrate the use of $l$ \lambda as a high-level substitute for netlists, we design a simple hardware description language that extends $l$ \lambda with polymorphism, and use it to implement a Fast Fourier Transform circuit.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "functional language; hardware description language; linear type system", } @Article{Dolstra:2008:NPF, author = "Eelco Dolstra and Andres L{\"o}h", title = "{NixOS}: a purely functional {Linux} distribution", journal = j-SIGPLAN, volume = "43", number = "9", pages = "367--378", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411204.1411255", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib; https://www.math.utah.edu/pub/tex/bib/unix.bib", abstract = "Existing package and system configuration management tools suffer from an {\em imperative model}, where system administration actions such as upgrading packages or changes to system configuration files are stateful: they destructively update the state of the system. This leads to many problems, such as the inability to roll back changes easily, to run multiple versions of a package side-by-side, to reproduce a configuration deterministically on another machine, or to reliably upgrade a system. In this paper we show that we can overcome these problems by moving to a {\em purely functional system configuration model}. This means that all static parts of a system (such as software packages, configuration files and system startup scripts) are built by pure functions and are immutable, stored in a way analogously to a heap in a purely function language. We have implemented this model in {\em NixOS}, a non-trivial Linux distribution that uses the {\em Nix package manager\/} to build the entire system configuration from a purely functional specification.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "nix; NixOS; package management; purely functional deployment model; purely functional language; software deployment; system configuration management", } @Article{Duke:2008:ERV, author = "David J. Duke and Rita Borgo and Colin Runciman and Malcolm Wallace", title = "Experience report: visualizing data through functional pipelines", journal = j-SIGPLAN, volume = "43", number = "9", pages = "379--382", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411203.1411256", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Scientific visualization is the transformation of data into images. The {\em pipeline model\/} is a widely-used implementation strategy. This term refers not only to linear chains of processing stages, but more generally to demand-driven networks of components. Apparent parallels with functional programming are more than superficial: e.g. some pipelines support streams of data, and a limited form of lazy evaluation. Yet almost all visualization systems are implemented in imperative languages. We challenge this position. Using Haskell, we have reconstructed several fundamental visualization techniques, with encouraging results both in terms of novel insight and performance. In this paper we set the context for our modest rebellion, report some of our results, and reflect on the lessons that we have learned.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "evaluation; Haskell; pipeline; streaming; visualization", } @Article{Foster:2008:QL, author = "J. Nathan Foster and Alexandre Pilkiewicz and Benjamin C. Pierce", title = "Quotient lenses", journal = j-SIGPLAN, volume = "43", number = "9", pages = "383--396", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411203.1411257", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "There are now a number of BIDIRECTIONAL PROGRAMMING LANGUAGES, where every program can be read both as a forward transformation mapping one data structure to another and as a reverse transformation mapping an edited output back to a correspondingly edited input. Besides parsimony --- the two related transformations are described by just one expression --- such languages are attractive because they promise strong behavioral laws about how the two transformations fit together --- e.g., their composition is the identity function. It has repeatedly been observed, however, that such laws are actually a bit too strong: in practice, we do not want them 'on the nose,' but only up to some equivalence, allowing inessential details, such as whitespace, to be modified after a round trip. Some bidirectional languages loosen their laws in this way, but only for specific, baked-in equivalences.\par In this work, we propose a general theory of QUOTIENT LENSES --- bidirectional transformations that are well behaved modulo equivalence relations controlled by the programmer. Semantically, quotient lenses are a natural refinement of LENSES, which we have studied in previous work. At the level of syntax, we present a rich set of constructs for programming with CANONIZERS and for quotienting lenses by canonizers. We track equivalences explicitly, with the type of every quotient lens specifying the equivalences it respects.\par We have implemented quotient lenses as a refinement of the bidirectional string processing language Boomerang. We present a number of useful primitive canonizers for strings, and give a simple extension of Boomerang's regular-expression-based type system to statically typecheck quotient lenses. The resulting language is an expressive tool for transforming real-world, ad-hoc data formats. We demonstrate the power of our notation by developing an extended example based on the UniProt genome database format and illustrate the generality of our approach by showing how uses of quotienting in other bidirectional languages can be translated into our notation.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bidirectional languages; bijective languages; boomerang; canonizers; equivalences; lenses; regular string transducers; regular types; view update problem", } @Article{Dolstra:2008:RTI, author = "Eelco Dolstra and Jurriaan Hage and Bastiaan Heeren and Stefan Holdermans and Johan Jeuring and Andres L{\"o}h and Clara L{\"o}h and Arie Middelkoop and Alexey Rodriguez and John van Schie", title = "Report on the {Tenth ICFP Programming Contest}", journal = j-SIGPLAN, volume = "43", number = "9", pages = "397--408", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411203.1411259", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Sep 23 17:31:25 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The ICFP programming contest is a 72-hour contest, which attracts thousands of contestants from all over the world. In this report we describe what it takes to organise this contest, the main ideas behind the contest we organised, the task, how to solve it, how we created it, and how well the contestants did.\par This year's task was to reverse engineer the DNA of a stranded alien life form to enable it to survive on our planet. The alien's DNA had to be modified by means of a {\em prefix\/} that modified its meaning so that the alien's phenotype would approximate a given 'ideal' outcome, increasing its probability of survival. About 357 teams from 39 countries solved at least part of the contest. The language of choice for discriminating hackers turned out to be C++.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "programming contest; reverse engineering", } @Article{Willis:2008:CIJ, author = "Darren Willis and David J. Pearce and James Noble", title = "Caching and incrementalisation in the {Java Query Language}", journal = j-SIGPLAN, volume = "43", number = "10", pages = "1--18", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449764.1449766", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Many contemporary object-oriented programming languages support first-class queries or comprehensions. These language extensions make it easier for programmers to write queries, but are generally implemented no more efficiently than the code using collections, iterators, and loops that they replace. Crucially, whenever a query is re-executed, it is recomputed from scratch. We describe a general approach to optimising queries over mutable objects: query results are cached, and those caches are incrementally maintained whenever the collections and objects underlying those queries are updated. We hope that the performance benefits of our optimisations may encourage more general adoption of first-class queries by object-oriented programmers.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "incrementalization; Java; querying", } @Article{Wiedermann:2008:IQE, author = "Ben Wiedermann and Ali Ibrahim and William R. Cook", title = "Interprocedural query extraction for transparent persistence", journal = j-SIGPLAN, volume = "43", number = "10", pages = "19--36", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449764.1449767", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Transparent persistence promises to integrate programming languages and databases by allowing programs to access persistent data with the same ease as non-persistent data. In this work we demonstrate the feasibility of optimizing transparently persistent programs by extracting queries to efficiently prefetch required data. A static analysis derives query structure and conditions across methods that access persistent data. Using the static analysis, our system transforms the program to execute explicit queries. The transformed program composes queries across methods to handle method calls that return persistent data. We extend an existing Java compiler to implement the static analysis and program transformation, handling recursion and parameterized queries. We evaluate the effectiveness of query extraction on the OO7 and TORPEDO benchmarks. This work is focused on programs written in the current version of Java, without languages changes. However, the techniques developed here may also be of value in conjunction with object-oriented languages extended with high-level query syntax.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "attribute grammars; databases; object-relational mapping; programming languages; static analysis", } @Article{Tatlock:2008:DTR, author = "Zachary Tatlock and Chris Tucker and David Shuffelton and Ranjit Jhala and Sorin Lerner", title = "Deep typechecking and refactoring", journal = j-SIGPLAN, volume = "43", number = "10", pages = "37--52", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449764.1449768", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Large software systems are typically composed of multiple layers, written in different languages and loosely coupled using a string-based interface. For example, in modern web-applications, a server written in Java communicates with a database back-end by passing in query strings. This widely prevalent approach is unsafe as the analyses developed for the individual layers are oblivious to the semantics of the dynamically constructed strings, making it impossible to statically reason about the correctness of the interaction. Further, even simple refactoring in such systems is daunting and error prone as the changes must also be applied to isolated string fragments scattered across the code base.\par We present techniques for deep typechecking and refactoring for systems that combine Java code with a database back-end using the Java Persistence API [10]. Deep typechecking ensures that the queries that are constructed dynamically are type safe and that the values returned from the queries are used safely by the program. Deep refactoring builds upon typechecking to allow programmers to safely and automatically propagate code refactorings through the query string fragments.\par Our algorithms are implemented in a tool called QUAIL. We present experiments evaluating the effectiveness of QUAIL on several benchmarks ranging from 3,369 to 82,907 lines of code. We show that QUAIL is able to verify that 84\% of query strings in our benchmarks are type safe. Finally, we show that QUAIL reduces the number of places in the code that a programmer must look at in order to perform a refactoring by several orders of magnitude.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "cross language refactoring; cross language typechecking; JPA query analysis", } @Article{Russo:2008:JPV, author = "Claudio V. Russo", title = "Join patterns for {Visual Basic}", journal = j-SIGPLAN, volume = "43", number = "10", pages = "53--72", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449764.1449770", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We describe an extension of Visual Basic 9.0 with asynchronous concurrency constructs --- join patterns --- based on the join calculus. Our design of Concurrent Basic (CB) builds on earlier work on Polyphonic C\# and Comega. Since that work, the need for language-integrated concurrency has only grown, both due to the arrival of commodity, multi-core hardware, and the trend for Rich Internet Applications that rely on asynchronous client-server communication to hide latency. Unlike its predecessors, CB adopts an event-like syntax that should be familiar to existing VB programmers. Coupled with Generics, CB allows one to declare re-usable concurrency abstractions that were clumsy to express previously. CB removes its ancestors' inconvenient inheritance restriction, while providing new extensibility points useful in practical applications that must co-exist with or want to exploit alternative threading models available on the platform. CB is implemented as an extension of the production VB 9.0 compiler.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "asynchronous message passing; join patterns; visual basic", } @Article{Gil:2008:WIS, author = "Joseph Gil and Itay Maman", title = "{Whiteoak}: introducing structural typing into {Java}", journal = j-SIGPLAN, volume = "43", number = "10", pages = "73--90", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449764.1449771", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper presents WHITEOAK: a JAVA extension that introduces structural type equivalence and subtyping into the language. We argue that structural subtyping addresses common software design problems, and promotes the development of loosely coupled modules without compromising type safety.\par We discuss language design issues, including subtyping in face of self-referencing structural types, compile-time operators for computing the new types from existing ones, and the semantics of constructors and non-abstract methods in structural types. We describe implementation techniques, including the compile-time and run-time challenges that we faced (in particular, preserving the identity of objects). Measurement indicate that the performance of our implementation of structural dispatching is comparable to that of the JVM's standard invocation mechanisms.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstraction; Java; structural subtyping", } @Article{Kats:2008:MSB, author = "Lennart C. L. Kats and Martin Bravenboer and Eelco Visser", title = "Mixing source and bytecode: a case for compilation by normalization", journal = j-SIGPLAN, volume = "43", number = "10", pages = "91--108", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449955.1449772", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Language extensions increase programmer productivity by providing concise, often domain-specific syntax, and support for static verification of correctness, security, and style constraints. Language extensions can often be realized through translation to the base language, supported by preprocessors and extensible compilers. However, various kinds of extensions require further adaptation of a base compiler's internal stages and components, for example to support separate compilation or to make use of low-level primitives of the platform (e.g., jump instructions or unbalanced synchronization). To allow for a more loosely coupled approach, we propose an open compiler model based on normalization steps from a high-level language to a subset of it, the core language. We developed such a compiler for a mixed Java and (core) bytecode language, and evaluate its effectiveness for composition mechanisms such as traits, as well as statement-level and expression-level language extensions.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bytecode; compilers; domain-specific languages; dryad compiler; embedded languages; iterators; Java; language extensions; meta programming; SDF; source tracing; stratego; traits", } @Article{Bond:2008:TML, author = "Michael D. Bond and Kathryn S. McKinley", title = "Tolerating memory leaks", journal = j-SIGPLAN, volume = "43", number = "10", pages = "109--126", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449764.1449774", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Type safety and garbage collection in managed languages eliminate memory errors such as dangling pointers, double frees, and leaks of unreachable objects. Unfortunately, a program still leaks memory if it maintains references to objects it will never use again. Leaked objects decrease program locality and increase garbage collection frequency and workload. A growing leak will eventually exhaust memory and crash the program.\par This paper introduces a {\em leak tolerance\/} approach called {\em Melt\/} that safely eliminates performance degradations and crashes due to leaks of dead but reachable objects in managed languages, given sufficient disk space to hold leaking objects. Melt (1) identifies {\em stale\/} objects that the program is not accessing; (2) segregates in-use and stale objects by storing stale objects to disk; and (3) preserves safety by activating stale objects if the program subsequently accesses them. We design and build a prototype implementation of Melt in a Java VM and show it adds overhead low enough for production systems. Whereas existing VMs grind to a halt and then crash on programs with leaks, Melt keeps many of these programs running much longer without significantly degrading performance. Melt provides users the illusion of a fixed leak and gives developers more time to fix leaky programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bug tolerance; managed languages; memory leaks", } @Article{Shankar:2008:JLD, author = "Ajeet Shankar and Matthew Arnold and Rastislav Bodik", title = "{Jolt}: lightweight dynamic analysis and removal of object churn", journal = j-SIGPLAN, volume = "43", number = "10", pages = "127--142", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449764.1449775", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "It has been observed that component-based applications exhibit {\em object churn}, the excessive creation of short-lived objects, often caused by trading performance for modularity. Because churned objects are short-lived, they appear to be good candidates for stack allocation. Unfortunately, most churned objects escape their allocating function, making escape analysis ineffective.\par We reduce object churn with three contributions. First, we formalize two measures of churn, {\em capture\/} and {\em control\/} (15). Second, we develop lightweight dynamic analyses for measuring both {\em capture\/} and {\em control}. Third, we develop an algorithm that uses {\em capture\/} and {\em control\/} to inline portions of the call graph to make churned objects non-escaping, enabling churn optimization via escape analysis.\par JOLT is a lightweight dynamic churn optimizer that uses our algorithms. We embedded JOLT in the JIT compiler of the IBM J9 commercial JVM, and evaluated JOLT on large application frameworks, including Eclipse and JBoss. We found that JOLT eliminates over 4 times as many allocations as a state-of-the-art escape analysis alone.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "allocation optimization; churn; escape analysis; inlining; Java; selective optimization; virtual machine", } @Article{Arnold:2008:QER, author = "Matthew Arnold and Martin Vechev and Eran Yahav", title = "{QVM}: an efficient runtime for detecting defects in deployed systems", journal = j-SIGPLAN, volume = "43", number = "10", pages = "143--162", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449764.1449776", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Coping with software defects that occur in the post-deployment stage is a challenging problem: bugs may occur only when the system uses a specific configuration and only under certain usage scenarios. Nevertheless, halting production systems until the bug is tracked and fixed is often impossible. Thus, developers have to try to reproduce the bug in laboratory conditions. Often the reproduction of the bug consists of the lion share of the debugging effort.\par In this paper we suggest an approach to address the aforementioned problem by using a specialized runtime environment (QVM, for {\em Quality Virtual Machine\/}). QVM efficiently detects defects by continuously monitoring the execution of the application in a production setting. QVM enables the efficient checking of violations of user-specified correctness properties, e.g., typestate safety properties, Java assertions, and heap properties pertaining to ownership.\par QVM is markedly different from existing techniques for continuous monitoring by using a novel overhead manager which enforces a user-specified overhead budget for quality checks. Existing tools for error detection in the field usually disrupt the operation of the deployed system. QVM, on the other hand, provides a balanced trade off between the cost of the monitoring process and the maintenance of sufficient accuracy for detecting defects. Specifically, the overhead cost of using QVM instead of a standard JVM, is low enough to be acceptable in production environments.\par We implemented QVM on top of IBM's J9 Java Virtual Machine and used it to detect and fix various errors in real-world applications.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "algorithms; reliability; virtual machines", } @Article{Xian:2008:CAS, author = "Feng Xian and Witawas Srisa-an and Hong Jiang", title = "Contention-aware scheduler: unlocking execution parallelism in multithreaded {Java} programs", journal = j-SIGPLAN, volume = "43", number = "10", pages = "163--180", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449955.1449778", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In multithreaded programming, locks are frequently used as a mechanism for synchronization. Because today's operating systems do not consider lock usage as a scheduling criterion, scheduling decisions can be unfavorable to multithreaded applications, leading to performance issues such as convoying and heavy lock contention in systems with multiple processors. Previous efforts to address these issues (e.g., transactional memory, lock-free data structure) often treat scheduling decisions as 'a fact of life,' and therefore these solutions try to cope with the consequences of undesirable scheduling instead of dealing with the problem directly.\par In this paper, we introduce {\em Contention-Aware Scheduler (CA-Scheduler)}, which is designed to support efficient execution of large multithreaded Java applications in multiprocessor systems. Our proposed scheduler employs a scheduling policy that reduces lock contention. As will be shown in this paper, our prototype implementation of the CA-Scheduler in Linux and Sun HotSpot virtual machine only incurs 3.5\% runtime overhead, while the overall performance differences, when compared with a system with no contention awareness, range from a degradation of 3\% in a small multithreaded benchmark to an improvement of 15\% in a large Java application server benchmark.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "Java; operating systems; scheduling", } @Article{Schneider:2008:DOE, author = "Florian T. Schneider and Vijay Menon and Tatiana Shpeisman and Ali-Reza Adl-Tabatabai", title = "Dynamic optimization for efficient strong atomicity", journal = j-SIGPLAN, volume = "43", number = "10", pages = "181--194", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449955.1449779", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Transactional memory (TM) is a promising concurrency control alternative to locks. Recent work has highlighted important memory model issues regarding TM semantics and exposed problems in existing TM implementations. For safe, managed languages such as Java, there is a growing consensus towards strong atomicity semantics as a sound, scalable solution. Strong atomicity has presented a challenge to implement efficiently because it requires instrumentation of non-transactional memory accesses, incurring significant overhead even when a program makes minimal or no use of transactions. To minimize overhead, existing solutions require either a sophisticated type system, specialized hardware, or static whole-program analysis. These techniques do not translate easily into a production setting on existing hardware. In this paper, we present novel dynamic optimizations that significantly reduce strong atomicity overheads and make strong atomicity practical for dynamic language environments. We introduce analyses that optimistically track which non-transactional memory accesses can avoid strong atomicity instrumentation, and we describe a lightweight speculation and recovery mechanism that applies these analyses to generate speculatively-optimized but safe code for strong atomicity in a dynamically-loaded environment. We show how to implement these mechanisms efficiently by leveraging existing dynamic optimization infrastructure in a Java system. Measurements on a set of transactional and non-transactional Java workloads demonstrate that our techniques substantially reduce the overhead of strong atomicity from a factor of 5x down to 10\% or less over an efficient weak atomicity baseline.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "code generation; compiler optimizations; dynamic optimizations; strong atomicity; transactional memory; virtual machines", } @Article{Ni:2008:DIT, author = "Yang Ni and Adam Welc and Ali-Reza Adl-Tabatabai and Moshe Bach and Sion Berkowits and James Cownie and Robert Geva and Sergey Kozhukow and Ravi Narayanaswamy and Jeffrey Olivier and Serguei Preis and Bratin Saha and Ady Tal and Xinmin Tian", title = "Design and implementation of transactional constructs for {C\slash C++}", journal = j-SIGPLAN, volume = "43", number = "10", pages = "195--212", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449764.1449780", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper presents a software transactional memory system that introduces first-class C++ language constructs for transactional programming. We describe new C++ language extensions, a production-quality optimizing C++ compiler that translates and optimizes these extensions, and a high-performance STM runtime library. The transactional language constructs support C++ language features including classes, inheritance, virtual functions, exception handling, and templates. The compiler automatically instruments the program for transactional execution and optimizes TM overheads. The runtime library implements multiple execution modes and implements a novel STM algorithm that supports both optimistic and pessimistic concurrency control. The runtime switches a transaction's execution mode dynamically to improve performance and to handle calls to precompiled functions and I/O libraries. We present experimental results on 8 cores (two quad-core CPUs) running a set of 20 non-trivial parallel programs. Our measurements show that our system scales well as the numbers of cores increases and that our compiler and runtime optimizations improve scalability.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "C/C++; transactional memory", } @Article{Distefano:2008:JTP, author = "Dino Distefano and Matthew J. Parkinson J.", title = "{jStar}: towards practical verification for {Java}", journal = j-SIGPLAN, volume = "43", number = "10", pages = "213--226", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449764.1449782", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In this paper we introduce a novel methodology for verifying a large set of Java programs which builds on recent theoretical developments in program verification: it combines the idea of abstract predicate families and the idea of symbolic execution and abstraction using separation logic. The proposed technology has been implemented in a new automatic verification system, called jStar, which combines theorem proving and abstract interpretation techniques. We demonstrate the effectiveness of our methodology by using jStar to verify example programs implementing four popular design patterns (subject/observer, visitor, factory, and pooling). Although these patterns are extensively used by object-oriented developers in real-world applications, so far they have been highly challenging for existing object-oriented verification techniques.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "classes; design patterns; moduarity; separation logic", } @Article{Beckman:2008:VCU, author = "Nels E. Beckman and Kevin Bierhoff and Jonathan Aldrich", title = "Verifying correct usage of atomic blocks and typestate", journal = j-SIGPLAN, volume = "43", number = "10", pages = "227--244", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449955.1449783", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The atomic block, a synchronization primitive provided to programmers in transactional memory systems, has the potential to greatly ease the development of concurrent software. However, atomic blocks can still be used incorrectly, and race conditions can still occur at the level of application logic. In this paper, we present a intraprocedural static analysis, formalized as a type system and proven sound, that helps programmers use atomic blocks correctly. Using {\em access permissions}, which describe how objects are aliased and modified, our system statically prevents race conditions and enforces typestate properties in concurrent programs. We have implemented a prototype static analysis for the Java language based on our system and have used it to verify several realistic examples.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "permissions; transactional memory; typestate", } @Article{Gopinathan:2008:EOP, author = "Madhu Gopinathan and Sriram K. Rajamani", title = "Enforcing object protocols by combining static and runtime analysis", journal = j-SIGPLAN, volume = "43", number = "10", pages = "245--260", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449955.1449784", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In this paper, we consider object protocols that constrain interactions between objects in a program. Several such protocols have been proposed in the literature. For many APIs (such as JDOM, JDBC), API designers constrain how API clients interact with API objects. In practice, API clients violate such constraints, as evidenced by postings in discussion forums for these APIs. Thus, it is important that API designers specify constraints using appropriate object protocols and enforce them. The goal of an object protocol is expressed as a protocol invariant. Fundamental properties such as ownership can be expressed as protocol invariants. We present a language, PROLANG, to specify object protocols along with their protocol invariants, and a tool, INVCOP++, to check if a program satisfies a protocol invariant. INVCOP++ separates the problem of checking if a protocol satisfies its protocol invariant (called protocol correctness), from the problem of checking if a program conforms to a protocol (called program conformance). The former is solved using static analysis, and the latter using runtime analysis. Due to this separation (1) errors made in protocol design are detected at a higher level of abstraction, independent of the program's source code, and (2) performance of conformance checking is improved as protocol correctness has been verified statically. We present theoretical guarantees about the way we combine static and runtime analysis, and empirical evidence that our tool INVCOP++ finds usage errors in widely used APIs. We also show that statically checking protocol correctness greatly optimizes the overhead of checking program conformance, thus enabling API clients to test whether their programs use the API as intended by the API designer.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "aspect oriented programming; invariants; program verification", } @Article{Chern:2008:ISD, author = "Rick Chern and Kris De Volder", title = "The impact of static-dynamic coupling on remodularization", journal = j-SIGPLAN, volume = "43", number = "10", pages = "261--276", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449955.1449786", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We explore the concept of {\em static-dynamic coupling\/} --the degree to which changes in a program's static modular structure imply changes to its dynamic structure. This paper investigates the impact of static-dynamic coupling in a programming language on the effort required to evolve the coarse modular structure of programs written in that language. We performed a series of remodularization case studies in both Java and SubjectJ. SubjectJ is designed to be similar to Java, but have strictly less static-dynamic coupling. Our results include quantitative measures-time taken and number of bugs introduced--as well as a more subjective qualitative analysis of the remodularization process. All results point in the same direction and suggest that static-dynamic coupling causes substantial accidental complexity for the remodularization of Java programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "hyperslices; language design; refactoring; remodularization; static-dynamic coupling; subject-oriented programming", } @Article{Schafer:2008:SER, author = "Max Sch{\"a}fer and Torbj{\"o}rn Ekman and Oege de Moor", title = "Sound and extensible renaming for {Java}", journal = j-SIGPLAN, volume = "43", number = "10", pages = "277--294", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449764.1449787", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Descriptive names are crucial to understand code. However, good names are notoriously hard to choose and manually changing a globally visible name can be a maintenance nightmare. Hence, tool support for automated renaming is an essential aid for developers and widely supported by popular development environments.\par This work improves on two limitations in current refactoring tools: too weak preconditions that lead to unsoundness where names do not bind to the correct declarations after renaming, and too strong preconditions that prevent renaming of certain programs. We identify two main reasons for unsoundness: complex name lookup rules make it hard to define sufficient preconditions, and new language features require additional preconditions. We alleviate both problems by presenting a novel extensible technique for creating symbolic names that are guaranteed to bind to a desired entity in a particular context by inverting lookup functions. The inverted lookup functions can then be tailored to create qualified names where otherwise a conflict would occur, allowing the refactoring to proceed and improve on the problem with too strong preconditions.\par We have implemented renaming for Java as an extension to the JastAdd Extensible Java Compiler and integrated it in Eclipse. We show examples for which other refactoring engines have too weak preconditions, as well as examples where our approach succeeds in renaming entities by inserting qualifications. To validate the extensibility of the approach we have implemented renaming support for Java 5 and AspectJ like inter-type declarations as modular extensions to the initial Java 1.4 refactoring engine. The renaming engine is only a few thousand lines of code including extensions and performance is on par with industrial strength refactoring tools.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "extensible compilers; name analysis; refactoring; renaming", } @Article{Tansey:2008:ARI, author = "Wesley Tansey and Eli Tilevich", title = "Annotation refactoring: inferring upgrade transformations for legacy applications", journal = j-SIGPLAN, volume = "43", number = "10", pages = "295--312", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449764.1449788", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Since annotations were added to the Java language, many frameworks have moved to using annotated Plain Old Java Objects (POJOs) in their newest releases. Legacy applications are thus forced to undergo extensive restructuring in order to migrate from old framework versions to new versions based on annotations ({\em Version Lock-in\/}). Additionally, because annotations are embedded in the application code, changing between framework vendors may also entail largescale manual changes ({\em Vendor Lock-in\/}).\par This paper presents a novel refactoring approach that effectively solves these two problems. Our approach infers a concise set of semantics-preserving transformation rules from two versions of a single class. Unlike prior approaches that detect only simple structural refactorings, our algorithm can infer general composite refactorings and is more than 97\% accurate on average. We demonstrate the effectiveness of our approach by automatically upgrading more than 80K lines of the unit testing code of four open-source Java applications to use the latest version of the popular JUnit testing framework.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "annotations; eclipse; frameworks; Java; JUnit; metadata; refactoring; upgrading", } @Article{Dagenais:2008:ESA, author = "Barth{\'e}l{\'e}my Dagenais and Laurie Hendren", title = "Enabling static analysis for partial {Java} programs", journal = j-SIGPLAN, volume = "43", number = "10", pages = "313--328", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449764.1449790", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Software engineering tools often deal with the source code of programs retrieved from the web or source code repositories. Typically, these tools only have access to a subset of a program's source code (one file or a subset of files) which makes it difficult to build a complete and typed intermediate representation (IR). Indeed, for incomplete object-oriented programs, it is not always possible to completely disambiguate the syntactic constructs and to recover the declared type of certain expressions because the declaration of many types and class members are not accessible.\par We present a framework that performs partial type inference and uses heuristics to recover the declared type of expressions and resolve ambiguities in partial Java programs. Our framework produces a complete and typed IR suitable for further static analysis. We have implemented this framework and used it in an empirical study on four large open source systems which shows that our system recovers most declared types with a low error rate, even when only one class is accessible.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "Java; partial programs; type inference", } @Article{Ferrara:2008:SUC, author = "Pietro Ferrara and Francesco Logozzo and Manuel Fahndrich", title = "Safer unsafe code for {.NET}", journal = j-SIGPLAN, volume = "43", number = "10", pages = "329--346", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449955.1449791", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The .NET intermediate language (MSIL) allows expressing both statically verifiable memory and type safe code (typically called managed), as well as unsafe code using direct pointer manipulations. Unsafe code can be expressed in C\# by marking regions of code as {\em unsafe}. Writing unsafe code can be useful where the rules of managed code are too strict. The obvious drawback of unsafe code is that it opens the door to programming errors typical of C and C++, namely memory access errors such as buffer overruns. Worse, a single piece of unsafe code may corrupt memory and destabilize the entire runtime or allow attackers to compromise the security of the platform.\par We present a new static analysis based on abstract interpretation to check memory safety for unsafe code in the .NET framework. The core of the analysis is a new numerical abstract domain, Strp, which is used to efficiently compute memory invariants. Strp is combined with lightweight abstract domains to raise the precision, yet achieving scalability.\par We implemented this analysis in Clousot, a generic static analyzer for .NET. In combination with contracts expressed in FoxTrot, an MSIL based annotation language for .NET, our analysis provides {\em static\/} safety guarantees on memory accesses in unsafe code. We tested it on all the assemblies of the .NET framework. We compare our results with those obtained using existing domains, showing how they are either too imprecise ({\em e.g.}, Intervals or Octagons) or too expensive (Polyhedra) to be used in practice.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = ".NET; abstract domains; abstract interpretation; bounds checking; design by contract; pointer indexing; static analysis", } @Article{Naeem:2008:TLA, author = "Nomair A. Naeem and Ondrej Lhotak", title = "Typestate-like analysis of multiple interacting objects", journal = j-SIGPLAN, volume = "43", number = "10", pages = "347--366", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449764.1449792", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper presents a static analysis of typestate-like temporal specifications of groups of interacting objects, which are expressed using tracematches. Whereas typestate expresses a temporal specification of one object, a tracematch state may change due to operations on any of a set of related objects bound by the tracematch. The paper proposes a lattice-based operational semantics equivalent to the original tracematch semantics but better suited to static analysis. The paper defines a static analysis that computes precise local points-to sets and tracks the flow of individual objects, thereby enabling strong updates of the tracematch state. The analysis has been proved sound with respect to the semantics. A context-sensitive version of the analysis has been implemented as instances of the IFDS and IDE algorithms. The analysis was evaluated on tracematches used in earlier work and found to be very precise. Remaining imprecisions could be eliminated with more precise modeling of references from the heap and of exceptional control flow.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "static analysis; tracematches; typestate", } @Article{Georges:2008:JPE, author = "Andy Georges and Lieven Eeckhout and Dries Buytaert", title = "{Java} performance evaluation through rigorous replay compilation", journal = j-SIGPLAN, volume = "43", number = "10", pages = "367--384", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449764.1449794", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A managed runtime environment, such as the Java virtual machine, is non-trivial to benchmark. Java performance is affected in various complex ways by the application and its input, as well as by the virtual machine (JIT optimizer, garbage collector, thread scheduler, etc.). In addition, non-determinism due to timer-based sampling for JIT optimization, thread scheduling, and various system effects further complicate the Java performance benchmarking process.\par Replay compilation is a recently introduced Java performance analysis methodology that aims at controlling non-determinism to improve experimental repeatability. The key idea of replay compilation is to control the compilation load during experimentation by inducing a pre-recorded compilation plan at replay time. Replay compilation also enables teasing apart performance effects of the application versus the virtual machine.\par This paper argues that in contrast to current practice which uses a single compilation plan at replay time, multiple compilation plans add statistical rigor to the replay compilation methodology. By doing so, replay compilation better accounts for the variability observed in compilation load across compilation plans. In addition, we propose matched-pair comparison for statistical data analysis. Matched-pair comparison considers the performance measurements per compilation plan before and after an innovation of interest as a pair, which enables limiting the number of compilation plans needed for accurate performance analysis compared to statistical analysis assuming unpaired measurements.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "benchmarking; Java; matched-pair comparison; performance evaluation; replay compilation; virtual machine", } @Article{Kawachiya:2008:ARM, author = "Kiyokuni Kawachiya and Kazunori Ogata and Tamiya Onodera", title = "Analysis and reduction of memory inefficiencies in {Java} strings", journal = j-SIGPLAN, volume = "43", number = "10", pages = "385--402", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449764.1449795", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper describes a novel approach to reduce the memory consumption of Java programs, by focusing on their 'string memory inefficiencies'. In recent Java applications, string data occupies a large amount of the heap area. For example, about 40\% of the live heap area is used for string data when a production J2EE application server is running. By investigating the string data in the live heap, we identified two types of memory inefficiencies -- 'duplication' and 'unused literals'. In the heap, there are many string objects that have the same values. There also exist many string literals whose values are not actually used by the application. Since these inefficiencies exist as live objects, they cannot be eliminated by existing garbage collection techniques, which only remove dead objects. Quantitative analysis of Java heaps in real applications revealed that more than 50\% of the string data in the live heap is wasted by these inefficiencies. To reduce the string memory inefficiencies, this paper proposes two techniques at the Java virtual machine level, 'StringGC' for eliminating duplicated strings at the time of garbage collection, and 'Lazy Body Creation' for delaying part of the literal instantiation until the literal's value is actually used. We also present an interesting technique at the Java program level, which we call 'BundleConverter', for preventing unused message literals from being instantiated. Prototype implementations on a production Java virtual machine have achieved about 18\% reduction of the live heap in the production application server. The proposed techniques could also reduce the live heap of standard Java benchmarks by 11.6\% on average, without noticeable performance degradation.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "footprint analysis and reduction; garbage collection; Java; memory management; string", } @Article{Prokopski:2008:APC, author = "Gregory B. Prokopski and Clark Verbrugge", title = "Analyzing the performance of code-copying virtual machines", journal = j-SIGPLAN, volume = "43", number = "10", pages = "403--422", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449955.1449796", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Many popular programming languages use interpreter-based execution for portability, supporting dynamic or reflective properties, and ease of implementation. {\em Code-copying\/} is an optimization technique for interpreters that reduces the performance gap between interpretation and {\em JIT\/} compilation, offering significant speedups over direct-threading interpretation. Due to varying language features and virtual machine design, however, not all languages benefit from codecopying to the same extent. We consider here properties of interpreted languages, and in particular bytecode and virtual machine construction that enhance or reduce the impact of code-copying. We implemented code-copying and compared performance with the original direct-threading virtual machines for three languages, Java (SableVM), OCaml, and Ruby (Yarv), examining performance on three different architectures, ia32 (Pentium 4), x86\_64 (AMD64) and PowerPC (G5). Best speedups are achieved on ia32 by OCaml (maximum 4.88 times, 2.81 times on average), where a small and simple bytecode design facilitates improvements to branch prediction brought by code-copying. Yarv only slightly improves over direct-threading; large working sizes of bytecodes, and a relatively small fraction of time spent in the actual interpreter loop both limit the application of codecopying and its overall net effect. We are able to show that simple ahead of time analysis of VM and execution properties can help determine the suitability of code-copying for a particular VM before an implementation of code-copying is even attempted.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "branch prediction; code-copying; compiler optimization; dynamic analysis; performance; virtual machines", } @Article{Moors:2008:GHK, author = "Adriaan Moors and Frank Piessens and Martin Odersky", title = "Generics of a higher kind", journal = j-SIGPLAN, volume = "43", number = "10", pages = "423--438", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449764.1449798", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "With Java 5 and C\# 2.0, first-order parametric polymorphism was introduced in mainstream object-oriented programming languages under the name of generics. Although the first-order variant of generics is very useful, it also imposes some restrictions: it is possible to abstract over a type, but the resulting type constructor cannot be abstracted over. This can lead to code duplication. We removed this restriction in Scala, by allowing type constructors as type parameters and abstract type members. This paper presents the design and implementation of the resulting type constructor polymorphism. Furthermore, we study how this feature interacts with existing object-oriented constructs, and show how it makes the language more expressive.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "higher-kinded types; higher-order genericity; Scala; type constructor polymorphism", } @Article{Oliveira:2008:VPR, author = "Bruno C.d.S. Oliveira and Meng Wang and Jeremy Gibbons", title = "The visitor pattern as a reusable, generic, type-safe component", journal = j-SIGPLAN, volume = "43", number = "10", pages = "439--456", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449764.1449799", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The V\par ISITOR design pattern shows how to separate the structure of an object hierarchy from the behaviour of traversals over that hierarchy. The pattern is very flexible; this very flexibility makes it difficult to capture the pattern as anything more formal than prose, pictures and prototypes. We show how to capture the essence of the V\par ISITOR pattern as a reusable software library, by using advanced type system features appearing in modern object-oriented languages such as Scala. We preserve {\em type-safety statically and modularly\/}: no reflection or similar mechanisms are used and modules can be independently compiled. The library is {\em generic}, in two senses: not only is it parametrised by both the return type and the shape of the object hierarchy, but also it allows a number of implementation choices (internal versus external control, imperative versus functional behaviour, orthogonal aspects such as tracing and memoisation) to be specified by parameters rather than fixed in early design decisions. Finally, we propose a generalised {\em datatype\/} -like notation,on top of our visitor library: this provides a convenient functional decomposition style in object-oriented languages.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "algebraic datatypes; design patterns; program extensibility; software components; traversal; visitor pattern", } @Article{Nystrom:2008:CTO, author = "Nathaniel Nystrom and Vijay Saraswat and Jens Palsberg and Christian Grothoff", title = "Constrained types for object-oriented languages", journal = j-SIGPLAN, volume = "43", number = "10", pages = "457--474", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449764.1449800", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "X10 is a modern object-oriented language designed for productivity and performance in concurrent and distributed systems. In this setting, dependent types offer significant opportunities for detecting design errors statically, documenting design decisions, eliminating costly run-time checks (e.g., for array bounds, null values), and improving the quality of generated code.\par We present the design and implementation of {\em constrained types}, a natural, simple, clean, and expressive extension to object-oriented programming: A type C{c} names a class or interface C and a {\em constraint\/} c on the immutable state of C and in-scope final variables. Constraints may also be associated with class definitions (representing class invariants) and with method and constructor definitions (representing preconditions). Dynamic casting is permitted. The system is parametric on the underlying constraint system: the compiler supports a simple equality-based constraint system but, in addition, supports extension with new constraint systems using compiler plugins.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "constraints; dependent types; object-oriented programming languages", } @Article{Bellamy:2008:ELT, author = "Ben Bellamy and Pavel Avgustinov and Oege de Moor and Damien Sereni", title = "Efficient local type inference", journal = j-SIGPLAN, volume = "43", number = "10", pages = "475--492", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449955.1449802", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Inference of static types for local variables in Java bytecode is the first step of any serious tool that manipulates bytecode, be it for decompilation, transformation or analysis. It is important, therefore, to perform that step as accurately and efficiently as possible. Previous work has sought to give solutions with good worst-case complexity.\par We present a novel algorithm, which is optimised for the common case rather than worst-case performance. It works by first finding a set of minimal typings that are valid for all assignments, and then checking whether these minimal typings satisfy all uses. Unlike previous algorithms, it does not explicitly build a data structure of type constraints, and it is easy to implement efficiently. We prove that the algorithm produces a typing that is both sound (obeying the rules of the language) and as tight as possible.\par We then go on to present extensive experiments, comparing the results of the new algorithm against the previously best known method. The experiments include bytecode that is generated in other ways than compilation of Java source. The new algorithm is always faster, typically by a factor 6, but on some real benchmarks the gain is as high as a factor of 92. Furthermore, whereas that previous method is sometimes suboptimal, our algorithm always returns a tightest possible type.\par We also discuss in detail how we handle primitive types, which is a difficult issue due to the discrepancy in their treatment between Java bytecode and Java source. For the application to decompilation, however, it is very important to handle this correctly.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "program analysis; type inference", } @Article{Roberson:2008:ESM, author = "Michael Roberson and Melanie Harries and Paul T. Darga and Chandrasekhar Boyapati", title = "Efficient software model checking of soundness of type systems", journal = j-SIGPLAN, volume = "43", number = "10", pages = "493--504", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449955.1449803", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper presents novel techniques for checking the soundness of a type system automatically using a software model checker. Our idea is to systematically generate every type correct intermediate program state (within some finite bounds), execute the program one step forward if possible using its small step operational semantics, and then check that the resulting intermediate program state is also type correct--but do so efficiently by detecting similarities in this search space and pruning away large portions of the search space. Thus, given only a specification of type correctness and the small step operational semantics for a language, our system automatically checks type soundness by checking that the progress and preservation theorems hold for the language (albeit for program states of at most some finite size). Our preliminary experimental results on several languages--including a language of integer and boolean expressions, a simple imperative programming language, an object-oriented language which is a subset of Java, and a language with ownership types--indicate that our approach is feasible and that our search space pruning techniques do indeed significantly reduce what is otherwise an extremely large search space. Our paper thus makes contributions both in the area of checking soundness of type systems, and in the area of reducing the state space of a software model checker.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "software model checking; type soundness", } @Article{Smith:2008:JTI, author = "Daniel Smith and Robert Cartwright", title = "{Java} type inference is broken: can we fix it?", journal = j-SIGPLAN, volume = "43", number = "10", pages = "505--524", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449955.1449804", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Java 5, the most recent major update to the Java Programming Language, introduced a number of sophisticated features, including a major extension to the type system. While the technical details of these new features are complex, much of this complexity is hidden from the typical Java developer by an ambitious type inference mechanism. Unfortunately, the extensions to the Java 5 type system were so novel that their technical details had not yet been thoroughly investigated in the research literature. As a result, the Java 5 compiler includes a pragmatic but flawed type inference algorithm that is, by design, neither sound nor locally complete. The language specification points out that neither of these failures is catastrophic: the correctness of potentially-unsound results must be verified during type checking; and incompleteness can usually be worked around by manually providing the method type parameter bindings for a given call site.\par This paper dissects the type inference algorithm of Java 5 and proposes a significant revision that is sound and able to calculate correct results where the Java 5 algorithm fails. The new algorithm is locally complete with the exception of a difficult corner case. Moreover, the new algorithm demonstrates that several arbitrary restrictions in the Java type system---most notably the ban on lower-bounded type parameter declarations and the limited expressibility of intersection types---are unnecessary. We hope that this work will spur the evolution of a more coherent, more comprehensive generic type system for Java.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bounded quantification; generics; intersection types; parameterized types; polymorphic methods; subtyping; type argument inference; type inference; union types; wildcards", } @Article{Schippers:2008:DBS, author = "Hans Schippers and Dirk Janssens and Michael Haupt and Robert Hirschfeld", title = "Delegation-based semantics for modularizing crosscutting concerns", journal = j-SIGPLAN, volume = "43", number = "10", pages = "525--542", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449955.1449806", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We describe semantic mappings of four high-level programming languages to our delegation-based machine model for aspect-oriented programming. One of the languages is a class-based object-oriented one. The other three represent extensions thereof that support various approaches to modularizing crosscutting concerns. We explain informally that an operational semantics expressed in terms of the model's concepts preserves the behavior of a program written in one of the high-level languages. We hence argue our model to be semantically sound in that sense, as well as sufficiently expressive in order to correctly support features such as class-based object-oriented programming, the open-classes and pointcut-and-advice flavors of aspect-oriented programming, and dynamic layers. For the latter, being a core feature of context-oriented programming, we also provide a formal semantics.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "aspect-oriented semantics; context-oriented programming; modularization; semantic mappings", } @Article{Baldi:2008:TAL, author = "Pierre F. Baldi and Cristina V. Lopes and Erik J. Linstead and Sushil K. Bajracharya", title = "A theory of aspects as latent topics", journal = j-SIGPLAN, volume = "43", number = "10", pages = "543--562", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449955.1449807", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "After more than 10 years, Aspect-Oriented Programming (AOP) is still a controversial idea. While the concept of aspects appeals to everyone's intuitions, concrete AOP solutions often fail to convince researchers and practitioners alike. This discrepancy results in part from a lack of an adequate theory of aspects, which in turn leads to the development of AOP solutions that are useful in limited situations.\par We propose a new theory of aspects that can be summarized as follows: concerns are latent topics that can be automatically extracted using statistical topic modeling techniques adapted to software. Software scattering and tangling can be measured precisely by the entropies of the underlying topic-over-files and files-over-topics distributions. Aspects are latent topics with high scattering entropy.\par The theory is validated empirically on both the large scale, with a study of 4,632 Java projects, and the small scale, with a study of 5 individual projects. From these analyses, we identify two dozen topics that emerge as general-purpose aspects across multiple projects, as well as project-specific topics/concerns. The approach is also shown to produce results that are compatible with previous methods for identifying aspects, and also extends them.\par Our work provides not only a concrete approach for identifying aspects at several scales in an unsupervised manner but, more importantly, a formulation of AOP grounded in information theory. The understanding of aspects under this new perspective makes additional progress toward the design of models and tools that facilitate software development.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "aspect-oriented programming; scattering; tangling; topic models", } @Article{Muschevici:2008:MDP, author = "Radu Muschevici and Alex Potanin and Ewan Tempero and James Noble", title = "Multiple dispatch in practice", journal = j-SIGPLAN, volume = "43", number = "10", pages = "563--582", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449764.1449808", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Multiple dispatch uses the run time types of more than one argument to a method call to determine which method body to run. While several languages over the last 20 years have provided multiple dispatch, most object-oriented languages still support only single dispatch forcing programmers to implement multiple dispatch manually when required. This paper presents an empirical study of the use of multiple dispatch in practice, considering six languages that support multiple dispatch, and also investigating the potential for multiple dispatch in Java programs. We hope that this study will help programmers understand the uses and abuses of multiple dispatch; virtual machine implementors optimise multiple dispatch; and language designers to evaluate the choice of providing multiple dispatch in new programming languages.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "double dispatch; empirical software engineering; instanceof; multimethods; multiple dispatch", } @Article{Bouillet:2008:TBA, author = "Eric Bouillet and Mark Feblowitz and Zhen Liu and Anand Ranganathan and Anton Riabov", title = "A tag-based approach for the design and composition of information processing applications", journal = j-SIGPLAN, volume = "43", number = "10", pages = "585--602", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449955.1449810", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In the realm of component-based software systems, pursuers of the holy grail of automated application composition face many significant challenges. In this paper we argue that, while the general problem of automated composition in response to high-level goal statements is indeed very difficult to solve, we can realize composition in a restricted context, supporting varying degrees of manual to automated assembly for specific types of applications. We propose a novel paradigm for composition in flow-based information processing systems, where application design and component development are facilitated by the pervasive use of faceted, tag-based descriptions of processing goals, of component capabilities, and of structural patterns of families of application. The facets and tags represent different dimensions of both data and processing, where each facet is modeled as a finite set of tags that are defined in a controlled folksonomy. All data flowing through the system, as well as the functional capabilities of components are described using tags. A customized AI planner is used to automatically build an application, in the form of a flow of components, given a high-level goal specification in the form of a set of tags. End-users use an automatically populated faceted search and navigation mechanism to construct these high-level goals. We also propose a novel software engineering methodology to design and develop a set of reusable, well-described components that can be assembled into a variety of applications. With examples from a case study in the Financial Services domain, we demonstrate that composition using a faceted, tag-based application design is not only possible, but also extremely useful in helping end-users create situational applications from a wide variety of available components.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "automated application assembly; component reuse; composition; faceted navigation; programmable web; tag cloud; tag-based component description", } @Article{Simpkins:2008:TAP, author = "Christopher Simpkins and Sooraj Bhat and Charles {Isbell, Jr.} and Michael Mateas", title = "Towards adaptive programming: integrating reinforcement learning into a programming language", journal = j-SIGPLAN, volume = "43", number = "10", pages = "603--614", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449955.1449811", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Current programming languages and software engineering paradigms are proving insufficient for building intelligent multi-agent systems--such as interactive games and narratives--where developers are called upon to write increasingly complex behavior for agents in dynamic environments. A promising solution is to build adaptive systems; that is, to develop software written specifically to adapt to its environment by changing its behavior in response to what it observes in the world. In this paper we describe a new programming language, An Adaptive Behavior Language (A2BL), that implements adaptive programming primitives to support partial programming, a paradigm in which a programmer need only specify the details of behavior known at code-writing time, leaving the run-time system to learn the rest. Partial programming enables programmers to more easily encode software agents that are difficult to write in existing languages that do not offer language-level support for adaptivity. We motivate the use of partial programming with an example agent coded in a cutting-edge, but non-adaptive agent programming language (ABL), and show how A2BL can encode the same agent much more naturally.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "adaptive programming; object-oriented programming; partial programming; reinforcement learning", } @Article{Gabriel:2008:DD, author = "Richard P. Gabriel", title = "Designed as designer", journal = j-SIGPLAN, volume = "43", number = "10", pages = "617--632", month = sep, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1449764.1449813", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Oct 22 09:57:37 MDT 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Conceptual integrity arises not (simply) from one mind or from a small number of agreeing resonant minds, but from sometimes hidden co-authors and the thing designed itself.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "conceptual integrity; design", } @Article{Bailey:2008:SPLa, author = "Mark W. Bailey", title = "{SIGPLAN} programming language curriculum workshop: {Workshop} organization", journal = j-SIGPLAN, volume = "43", number = "11", pages = "1--6", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480830", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bailey:2008:SPLb, author = "Mark W. Bailey", title = "{SIGPLAN} programming language curriculum workshop: {Discussion} Summaries and recommendations", journal = j-SIGPLAN, volume = "43", number = "11", pages = "6--29", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480831", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bailey:2008:SPLc, author = "Mark W. Bailey", title = "{SIGPLAN} programming language curriculum workshop: {Workshop} report summary", journal = j-SIGPLAN, volume = "43", number = "11", pages = "29--30", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480832", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Allen:2008:STC, author = "Eric Allen", title = "Some things that computer science majors should know", journal = j-SIGPLAN, volume = "43", number = "11", pages = "32--35", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480834", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "programming languages curriculum", } @Article{Bailey:2008:IPL, author = "Mark W. Bailey", title = "Injecting programming language concepts throughout the curriculum: an inclusive strategy", journal = j-SIGPLAN, volume = "43", number = "11", pages = "36--38", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480835", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "As research in programming language design,implementation,and application advances,we must regularly revisit the undergraduate curriculum to ensure course content advances similarly. However,no matter how diligent our efforts,the undergraduate curriculum will continue to undergo pressure from all fields of the discipline to include courses covering those fields. Though we could advocate for core placement of programming language courses,it is likely,even inevitable,that a growing number of colleges and universities will choose not to mandate programming language courses for their degree programs. Thus,we must develop an inclusive strategy that encourages the teaching of programming language topics even in colleges and universities that choose not to devote an entire course to the study of them. I have proposed one such strategy that supports the injection of programming language concepts into other courses of interest to both students and faculty.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "programming language curriculum", } @Article{Bodik:2008:SLU, author = "Rastislav Bodik", title = "Small languages in an undergraduate {PL\slash Compiler} course", journal = j-SIGPLAN, volume = "43", number = "11", pages = "39--44", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480836", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Bruce:2008:PLL, author = "Kim Bruce and Stephen N. Freund", title = "Programming languages in a liberal arts education", journal = j-SIGPLAN, volume = "43", number = "11", pages = "45--49", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480837", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Liberal arts curricula emphasize breadth of a student's educational experience, critical reasoning, and intellectual discourse to a greater degree than pre-professional training or engineering programs. This substantially impacts how the topic of programming languages (and computer science in general) is taught. We highlight some key aspects of teaching programming languages in a liberal arts program, and we discuss why we believe this approach prepares students for problems they will encounter throughout their careers.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "programming languages curriculum", } @Article{Bruce:2008:PLP, author = "Kim Bruce and Stephen N. Freund", title = "Programming languages as part of core computer science", journal = j-SIGPLAN, volume = "43", number = "11", pages = "50--54", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480838", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "While the programming languages course played a key role in Curricula '68, '78, and '91, Curriculum 2001 replaced most of the content in programming languages with sections on learning to program. We argue that the need for a programming languages course has not diminished, but instead increased, especially as we move into an era of many-core computing.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "programming languages curriculum", } @Article{Cook:2008:HLP, author = "William R. Cook", title = "High-level problems in teaching undergraduate programming languages", journal = j-SIGPLAN, volume = "43", number = "11", pages = "55--58", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480839", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper discusses several problems in teaching programming languages. A language tends to indoctrinate its users and desensitize us to its problems and limitations. In addition, many language issues don't arise until programs reach a certain scale, which can be difficult to do in a one-semester course. No solution is proposed; instead the focus is to better understand the difficulty of designing an effective curriculum. One way to cut through the accidental combination of surface features in programming languages is to focus on semantics and programs themselves as object of study.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "programming languages curriculum", } @Article{Felleisen:2008:WTP, author = "Matthias Felleisen", title = "Why teach programming languages in this day and age and how to go about it", journal = j-SIGPLAN, volume = "43", number = "11", pages = "59--61", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480840", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The question is not whether a computing curriculum should include a rigorous course on programming languages, but which topics make up the minimum that we wish every student to understand, and how we should teach these topics.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "programming languages curriculum", } @Article{Fisher:2008:WNM, author = "Kathleen Fisher", title = "We need more than one: why students need a sophisticated understanding of programming languages", journal = j-SIGPLAN, volume = "43", number = "11", pages = "62--65", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480841", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Over the course of their careers, students will need to master a number of diverse programming languages because different languages are best suited to different tasks and because the set of 'popular' languages evolves over time. In addition, sometimes the best way to solve a problem is to invent a little language particular to the task. Students need to be able to evaluate which languages to use for which tasks and whether to design a domain-specific language. Consequently, it is critical that students develop a sophisticated understanding of programming languages during their undergraduate studies.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "programming languages curriculum", } @Article{Fisler:2008:IDS, author = "Kathi Fisler", title = "Implementing domain-specific languages as the foundation of an honors intro {CS} course", journal = j-SIGPLAN, volume = "43", number = "11", pages = "66--70", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480842", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This position paper describes an honors introductory Computer Science course focused on designing and implementing domain-specific programming languages. The course presents programming language design as a fundamental tool for software engineering. Students build languages for prototypes of several nontrivial products (such as PowerPoint and TurboTax). The course aims to convey fundamental ideas behind programming languages in a form that mainstream Computer Science students can appreciate early in their careers. The paper includes descriptions of and links to assignments and course materials.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "programming languages curriculum", } @Article{Harper:2008:PPP, author = "Robert Harper", title = "Position paper: practical foundations for programming languages", journal = j-SIGPLAN, volume = "43", number = "11", pages = "71--73", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480843", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hind:2008:ADB, author = "Michael Hind", title = "Addressing the disconnect between the good and the popular", journal = j-SIGPLAN, volume = "43", number = "11", pages = "74--76", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480844", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "For several decades universities have taught programming languages as a fundamental part of their undergraduate curriculum. These courses cover the core topics used in the design of good programming languages. However, widely used commercial languages quite often seem to go against the conventional wisdom of good language design that is taught in these courses. This disconnect between what is taught as good language design and what languages are used in industry has put the programming language course in a bind. Specifically, as computer science departments feel the increased pressure to add new emerging topics, many departments are choosing to remove the programming language course from the core curriculum. In this position paper, we argue that the disconnect between good language design and industry practice is exactly why a programming language course should be a crucial ingredient in any undergraduate computer science education.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "programming languages curriculum", } @Article{Hughes:2008:ETF, author = "John Hughes", title = "Experiences from teaching functional programming at {Chalmers}", journal = j-SIGPLAN, volume = "43", number = "11", pages = "77--80", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480845", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "programming languages curriculum", } @Article{Krishnamurthi:2008:TPL, author = "Shriram Krishnamurthi", title = "Teaching programming languages in a post-{Linnaean} age", journal = j-SIGPLAN, volume = "43", number = "11", pages = "81--83", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480846", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Programming language 'paradigms' are a moribund and tedious legacy of a bygone age. Modern language designers pay them no respect, so why do our courses slavishly adhere to them? This paper argues that we should abandon this method of teaching languages, offers an alternative, reconciles an important split in programming language education, and describes a textbook that explores these matters.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "programming languages curriculum", } @Article{Larus:2008:PRC, author = "James Larus", title = "{PL} research and its consequences on {PL} curriculum", journal = j-SIGPLAN, volume = "43", number = "11", pages = "84--86", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480847", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Lea:2008:LPE, author = "Doug Lea and David F. Bacon and David Grove", title = "Languages and performance engineering: method, instrumentation, and pedagogy", journal = j-SIGPLAN, volume = "43", number = "11", pages = "87--92", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480848", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Programs encounter increasingly complex and fragile mappings to computing platforms, resulting in performance characteristics that are often mysterious to students, practitioners, and even researchers. We discuss some steps toward an experimental methodology that demands and provides a deep understanding of complete systems, the necessary instrumentation and tools to support such a methodology, and a curriculum that teaches the methodology and tools as a fundamental part of the discipline.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "programming languages curriculum", } @Article{Leavens:2008:UCP, author = "Gary T. Leavens", title = "Use concurrent programming models to motivate teaching of programming languages", journal = j-SIGPLAN, volume = "43", number = "11", pages = "93--98", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480849", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Undergraduate computer science students typically have only a limited understanding of their favorite languages and no inkling of other programming paradigms. Yet modern programmers typically work with several languages, and the availability of cheap concurrency is exposing fundamental problems in standard concurrent programming techniques (mutable objects and threads). This situation presents a great opportunity: by exploring nonstandard techniques for gaining intellectual control over concurrent programs, one can motivate and teach important semantic concepts (such as scoping) and important programming concepts (such as functional abstraction). Such a curriculum stimulates student interest in exploring new programming paradigms.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "computational models; concepts; concurrency; paradigms; programming language curriculum; programming models", } @Article{Pollock:2008:RPT, author = "Lori Pollock", title = "Rethinking pedagogy for teaching {PL} with more than {PL} concepts in mind", journal = j-SIGPLAN, volume = "43", number = "11", pages = "99--103", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480850", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Individual department goals drive undergraduate computer science educators to teach with varying priorities on preparing students for continuing to graduate school or embarking on a career that leverages their education immediately after college. Programming languages play a key role in that education for both student profiles, even in curricula that include no core programming language concepts course. The 'fattening' of our discipline into many subareas has prompted curricula reviews and rethinking of the undergraduate CS content, including programming language concepts (PL) and where they are taught in the curriculum. This paper proposes that we also rethink the pedagogy for teaching PL with diversity in mind.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "programming languages curriculum", } @Article{Reges:2008:MPL, author = "Stuart Reges", title = "Marketing the programming languages course", journal = j-SIGPLAN, volume = "43", number = "11", pages = "104--107", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480851", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Programming languages as a required course is disappearing from undergraduate computer science programs. This is not surprising given that the course often proves to be challenging for faculty to teach and unpopular among students. The author argues that the best way to convince departments to retain this material is to emphasize the benefit to undergraduates of stretching their understanding of programming early in their careers.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Reynolds:2008:STT, author = "John C. Reynolds", title = "Some thoughts on teaching programming and programming languages", journal = j-SIGPLAN, volume = "43", number = "11", pages = "108--110", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480852", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "It is argued that the teaching of programming is central to the education of skilled computer professionals, that the teaching of programming languages is central to the teaching of programming. that these topics must include the specification, structuring, and verification of software, and that they should be taught with the same regard to rigor and precision as in traditional mathematics.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "programming; programming languages; teaching; undergraduate curriculum", } @Article{Rinard:2008:UPL, author = "Martin Rinard", title = "Using programming language concepts to teach general thinking skills", journal = j-SIGPLAN, volume = "43", number = "11", pages = "111--118", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480853", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sestoft:2008:PLC, author = "Peter Sestoft", title = "Programming language concepts for software developers", journal = j-SIGPLAN, volume = "43", number = "11", pages = "119--123", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480854", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This note describes and motivates our current plans for an undergraduate course on programming language concepts for software development students. We describe the competences we expect students to acquire as well as the topics covered by the course. We plan to use C\# and Scheme as instruction languages, and will study the implementation of Java and C\# with their underlying platforms, the Java Virtual Machine and .NET Common Language Runtime. We emphasize implementation exercises and experiments. This comes at the expense of classical compiler course subjects such as register allocation and optimization of imperative loop-intensive code.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "programming languages curriculum", } @Article{Sheldon:2008:AOA, author = "Mark A. Sheldon and Franklyn Turbak", title = "An aspect-oriented approach to the undergraduate programming language curriculum", journal = j-SIGPLAN, volume = "43", number = "11", pages = "124--129", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480855", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Three key forces are shaping the modern Computer Science (CS) curriculum: (1) new topics/courses are squeezing out existing ones; (2) a focus on 'big picture' and interdisciplinary aspects of CS is leading to curricula in which the traditional core courses + electives model is being superseded by a more flexible approach based on tracks/threads; and (3) project-based courses are increasingly relying on a notion of {\em just-in-time\/} teaching in which particular skills are not bundled into a particular course, but are covered at a point when they are needed for particular project work.\par The undergraduate programming language curriculum is feeling the pressure of these forces. Core courses on programming languages and compilers are being changed to electives, relegated to a software/systems track, or phased out altogether. Particular programming languages and programming language concepts are being taught in a more piecemeal fashion on an as-needed basis. Unfortunately, these changes make it increasingly likely that CS majors can graduate without being exposed to certain 'big ideas' of programming languages.\par Programming languages (along with many other subdisciplines of CS) contains ideas that every well-educated computer scientist needs to know and which are relevant to a wide variety of projects/careers. In a CS curriculum based on tracks and projects, how can we ensure that vital intellectual components are not lost in the shuffle?\par One way to think about this problem is to view the CS curriculum as a collection of {\em aspects\/} that can be combined in different arrangements to produce various projects/courses. In this paper, we consider the benefits and challenges of an aspect-oriented view of the CS curriculum, particularly in regard to programming language concepts.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "programming languages curriculum", } @Article{Shivers:2008:WTP, author = "Olin Shivers", title = "Why teach programming languages", journal = j-SIGPLAN, volume = "43", number = "11", pages = "130--132", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480856", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "programming languages curriculum", } @Article{Wand:2008:PLF, author = "Mitchell Wand and Daniel P. Friedman", title = "Programming languages: fundamental concepts for expanding and disciplining the mind", journal = j-SIGPLAN, volume = "43", number = "11", pages = "133--135", month = nov, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480828.1480857", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Wed Dec 31 12:36:25 MST 2008", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In this white paper, we propose a list of essential concepts of programming languages, and discuss the techniques we have used to teach these concepts.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "curricula", } @Article{Pistoia:2008:WPL, author = "Marco Pistoia and {\'U}lfar Erlingsson", title = "{Workshop on Programming Languages and Analysis for Security (PLAS 2008)}", journal = j-SIGPLAN, volume = "43", number = "12", pages = "3--4", month = dec, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1513443.1513445", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Mar 17 17:31:15 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Pistoia:2008:PPA, author = "Marco Pistoia and {\'U}lfar Erlingsson", title = "{PLAS 2008} paper abstracts", journal = j-SIGPLAN, volume = "43", number = "12", pages = "5--8", month = dec, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1513443.1513446", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Mar 17 17:31:15 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chaudhuri:2008:TSD, author = "Avik Chaudhuri and Prasad Naldurg and Sriram Rajamani", title = "A type system for data-flow integrity on {Windows Vista}", journal = j-SIGPLAN, volume = "43", number = "12", pages = "9--20", month = dec, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1513443.1513447", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Mar 17 17:31:15 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The Windows Vista operating system implements an interesting model of multi-level integrity. We observe that in this model, trusted code must participate in any information-flow attack. Thus, it is possible to eliminate such attacks by statically restricting trusted code. We formalize this model by designing a type system that can efficiently enforce data-flow integrity on Windows Vista. Typechecking guarantees that objects whose contents are statically trusted never contain untrusted values, regardless of what untrusted code runs in the environment. Some of Windows Vista's runtime access checks are necessary for soundness; others are redundant and can be optimized away.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "data-flow integrity; dynamic access control; explicit substitution; hybrid type system", } @Article{Swamy:2008:VES, author = "Nikhil Swamy and Michael Hicks", title = "Verified enforcement of stateful information release policies", journal = j-SIGPLAN, volume = "43", number = "12", pages = "21--31", month = dec, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1513443.1513448", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Mar 17 17:31:15 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Many organizations specify information release policies to describe the terms under which sensitive information may be released to other organizations. This paper presents a new approach for ensuring that security-critical software correctly enforces its information release policy. Our approach has two parts. First, an information release policy is specified as a security automaton written in a new language called AIR. Second, we enforce an AIR policy by translating it into an API for programs written in lAIR, a core formalism for a functional programming language. lAIR uses a novel combination of dependent, affine, and singleton types to ensure that the API is used correctly. As a consequence we can certify that programs written in lAIR meet the requirements of the original AIR policy specification.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "affine types; certified evaluation; declassification; dependent types; singleton types; state modifying policies", } @Article{Pistoia:2008:PLP, author = "Marco Pistoia and {\'U}lfar Erlingsson", title = "Programming languages and program analysis for security: a three-year retrospective", journal = j-SIGPLAN, volume = "43", number = "12", pages = "32--39", month = dec, year = "2008", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1513443.1513449", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Mar 17 17:31:15 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Software security has been traditionally enforced at the level of operating systems. However, operating systems have become increasingly large and complex, and it is very difficult--if not impossible--to enforce software security solely through them. Moreover, operating-system security allows dealing primarily with access-control policies on resources such as files and network connections. However, attacks may happen at both lower and higher levels of abstraction, and may target the internal behavior of applications, such as today's Web-based applications. Therefore, defenses must offer protection at the level of applications. Language-based security is the area of research that studies how to enforce application-level security using programming-language and program-analysis techniques. This area of research has become very active with the advent of Web applications. In 2006, the ACM SIGPLAN has introduced a new yearly forum entirely dedicated to the discussion of language-based-security research: Programming Languages and Analysis for Security (PLAS). This paper is a three-year survey of PLAS papers that discusses the progress made in the area of language-based security.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "language-based security; program analysis; programming languages; security", } @Article{Harris:2009:LCT, author = "Tim Harris", title = "Language constructs for transactional memory", journal = j-SIGPLAN, volume = "44", number = "1", pages = "1--1", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594834.1480883", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Building concurrent shared-memory data structures is a notoriously difficult problem, and so the widespread move to multi-core and multi-processor hardware has led to increasing interest in language constructs that may make concurrent programming easier. One technique that has been studied widely is the use of atomic blocks built over transactional memory (TM): the programmer marks a section of code as atomic, and the language implementation speculatively executes it using transactions. Transactions can run in parallel so long as they access different data.\par In this talk I'll introduce some of the challenges that I've seen in building robust implementations of this idea. What are the language design choices that exist? What language features can be used inside atomic blocks, and where can atomic blocks occur? Which uses of atomic blocks should be considered correct, and which uses should be considered 'racy'? What are the likely impacts of different design choices on performance? What are the impacts on flexibility for the language implementer, and what are the impacts on flexibility to the programmer using these constructs?\par I'll argue that one way of trying to resolve these questions is to be rigorous about keeping the ideas of atomic blocks and TM separate; in practice they've often been conflated (not least in languages that I've worked on). I'll argue that, when thinking about atomic blocks, we should keep a wide range of possible implementations in mind (for example, TM, lock inference, or simply control over preemption). Similarly, when thinking about TM, we should recognize that it can be exposed to programmers through a wide range of abstractions and language constructs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "atomic blocks; STM; transactional memory", } @Article{Elmas:2009:CAA, author = "Tayfun Elmas and Shaz Qadeer and Serdar Tasiran", title = "A calculus of atomic actions", journal = j-SIGPLAN, volume = "44", number = "1", pages = "2--15", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480881.1480885", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present a proof calculus and method for the static verification of assertions and procedure specifications in shared-memory concurrent programs. The key idea in our approach is to use atomicity as a proof tool and to simplify the verification of assertions by rewriting programs to consist of larger atomic actions. We propose a novel, iterative proof style in which alternating use of abstraction and reduction is exploited to compute larger atomic code blocks in a sound manner. This makes possible the verification of assertions in the transformed program by simple sequential reasoning within atomic blocks, or significantly simplified application of existing concurrent program verification techniques such as the Owicki-Gries or rely-guarantee methods. Our method facilitates a clean separation of concerns where at each phase of the proof, the user worries only about only either the sequential properties or the concurrency control mechanisms in the program. We implemented our method in a tool called QED. We demonstrate the simplicity and effectiveness of our approach on a number of benchmarks including ones with intricate concurrency protocols.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstraction; atomicity; concurrent programs; reduction", } @Article{Gotsman:2009:PNB, author = "Alexey Gotsman and Byron Cook and Matthew Parkinson and Viktor Vafeiadis", title = "Proving that non-blocking algorithms don't block", journal = j-SIGPLAN, volume = "44", number = "1", pages = "16--28", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480881.1480886", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A concurrent data-structure implementation is considered non-blocking if it meets one of three following liveness criteria: wait-freedom, lock-freedom, or obstruction-freedom. Developers of non-blocking algorithms aim to meet these criteria. However, to date their proofs for non-trivial algorithms have been only manual pencil-and-paper semi-formal proofs. This paper proposes the first fully automatic tool that allows developers to ensure that their algorithms are indeed non-blocking. Our tool uses rely-guarantee reasoning while overcoming the technical challenge of sound reasoning in the presence of interdependent liveness properties.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrent programming; formal verification; liveness; termination", } @Article{Abadi:2009:MCT, author = "Martin Abadi and Gordon Plotkin", title = "A model of cooperative threads", journal = j-SIGPLAN, volume = "44", number = "1", pages = "29--40", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480881.1480887", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We develop a model of concurrent imperative programming with threads. We focus on a small imperative language with cooperative threads which execute without interruption until they terminate or explicitly yield control. We define and study a trace-based denotational semantics for this language; this semantics is fully abstract but mathematically elementary. We also give an equational theory for the computational effects that underlie the language, including thread spawning. We then analyze threads in terms of the free algebra monad for this theory.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "denotational semantics; monad; operational semantics; transaction", } @Article{Xu:2009:SCC, author = "Dana N. Xu and Simon Peyton Jones and Koen Claessen", title = "Static contract checking for {Haskell}", journal = j-SIGPLAN, volume = "44", number = "1", pages = "41--52", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594834.1480889", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Program errors are hard to detect and are costly both to programmers who spend significant efforts in debugging, and for systems that are guarded by runtime checks. Static verification techniques have been applied to imperative and object-oriented languages, like Java and C\#, but few have been applied to a higher-order lazy functional language, like Haskell. In this paper, we describe a sound and automatic static verification framework for Haskell, that is based on contracts and symbolic execution. Our approach is modular and gives precise blame assignments at compile-time in the presence of higher-order functions and laziness.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "contract satisfaction; static contract checking", } @Article{Qi:2009:MTS, author = "Xin Qi and Andrew C. Myers", title = "Masked types for sound object initialization", journal = j-SIGPLAN, volume = "44", number = "1", pages = "53--65", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594834.1480890", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper presents a type-based solution to the long-standing problem of object initialization. Constructors, the conventional mechanism for object initialization, have semantics that are surprising to programmers and that lead to bugs. They also contribute to the problem of null-pointer exceptions, which make software less reliable. Masked types are a new type-state mechanism that explicitly tracks the initialization state of objects and prevents reading from uninitialized fields. In the resulting language, constructors are ordinary methods that operate on uninitialized objects, and no special default value (null) is needed in the language. Initialization of cyclic data structures is achieved with the use of conditionally masked types. Masked types are modular and compatible with data abstraction. The type system is presented in a simplified object calculus and is proved to soundly prevent reading from uninitialized fields. Masked types have been implemented as an extension to Java, in which compilation simply erases extra type information. Experience using the extended language suggests that masked types work well on real code.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "conditional masks; cyclic data structures; data abstraction; invariants; null pointer exceptions", } @Article{Leijen:2009:FTR, author = "Daan Leijen", title = "Flexible types: robust type inference for first-class polymorphism", journal = j-SIGPLAN, volume = "44", number = "1", pages = "66--77", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480881.1480891", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present HML, a type inference system that supports full first-class polymorphism where few annotations are needed: only function parameters with a polymorphic type need to be annotated. HML is a simplification of MLF where only flexibly quantified types are used. This makes the types easier to work with from a programmers perspective, and simplifies the implementation of the type inference algorithm. Still, HML retains much of the expressiveness of MLF, it is robust with respect to small program transformations, and has a simple specification of the type rules with an effective type inference algorithm that infers principal types. A small reference implementation with many examples is available at: http://research.microsoft.com/users/daan/pubs.html.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "first-class polymorphism; MLF; System F", } @Article{Lublinerman:2009:MCG, author = "Roberto Lublinerman and Christian Szegedy and Stavros Tripakis", title = "Modular code generation from synchronous block diagrams: modularity vs. code size", journal = j-SIGPLAN, volume = "44", number = "1", pages = "78--89", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480881.1480893", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We study modular, automatic code generation from hierarchical block diagrams with synchronous semantics. Such diagrams are the fundamental model behind widespread tools in the embedded software domain, such as Simulink and SCADE. Code is modular in the sense that it is generated for a given composite block independently from context (i.e., without knowing in which diagrams the block is to be used) and using minimal information about the internals of the block. In previous work, we have shown how modular code can be generated by computing a set of interface functions for each block and a set of dependencies between these functions that is exported along with the interface. We have also introduced a quantified notion of modularity in terms of the number of interface functions generated per block, and showed how to minimize this number, which is essential for scalability. Finally, we have exposed the fundamental trade-off between modularity and reusability (set of diagrams the block can be used in).\par In this paper we explore another trade-off: modularity vs. code size. We show that our previous technique, although it achieves maximal reusability and is optimal in terms of modularity, may result in code replication and therefore large code sizes, something often unacceptable in an embedded system context. We propose to remedy this by generating code with no replication, and show that this generally results in some loss of modularity. We show that optimizing modularity while maintaining maximal reusability and zero replication is an intractable problem (NP-complete). We also show that this problem can be solved using a simple iterative procedure that checks satisfiability of a sequence of propositional formulas. We report on a new prototype implementation and experimental results. The latter demonstrate the practical interest in our methods.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "block diagrams; clustering; code generation; embedded software; NP-complete; synchronous languages", } @Article{Barthe:2009:FCC, author = "Gilles Barthe and Benjamin Gr{\'e}goire and Santiago Zanella B{\'e}guelin", title = "Formal certification of code-based cryptographic proofs", journal = j-SIGPLAN, volume = "44", number = "1", pages = "90--101", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480881.1480894", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "As cryptographic proofs have become essentially unverifiable, cryptographers have argued in favor of developing techniques that help tame the complexity of their proofs. Game-based techniques provide a popular approach in which proofs are structured as sequences of games and in which proof steps establish the validity of transitions between successive games. Code-based techniques form an instance of this approach that takes a code-centric view of games, and that relies on programming language theory to justify proof steps. While code-based techniques contribute to formalize the security statements precisely and to carry out proofs systematically, typical proofs are so long and involved that formal verification is necessary to achieve a high degree of confidence. We present Certicrypt, a framework that enables the machine-checked construction and verification of code-based proofs. Certicrypt is built upon the general-purpose proof assistant Coq, and draws on many areas, including probability, complexity, algebra, and semantics of programming languages. Certicrypt provides certified tools to reason about the equivalence of probabilistic programs, including a relational Hoare logic, a theory of observational equivalence, verified program transformations, and game-based techniques such as reasoning about failure events. The usefulness of Certicrypt is demonstrated through various examples, including a proof of semantic security of OAEP (with a bound that improves upon existing published results), and a proof of existential unforgeability of FDH signatures. Our work provides a first yet significant step towards Halevi's ambitious programme of providing tool support for cryptographic proofs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "coq proof assistant; cryptographic proofs; observational equivalence; program transformations; relational Hoare logic", } @Article{Ganty:2009:VLA, author = "Pierre Ganty and Rupak Majumdar and Andrey Rybalchenko", title = "Verifying liveness for asynchronous programs", journal = j-SIGPLAN, volume = "44", number = "1", pages = "102--113", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594834.1480895", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Asynchronous or 'event-driven' programming is a popular technique to efficiently and flexibly manage concurrent interactions. In these programs, the programmer can post tasks that get stored in a task buffer and get executed atomically by a non-preemptive scheduler at a future point. We give a decision procedure for the fair termination property of asynchronous programs. The fair termination problem asks, given an asynchronous program and a fairness condition on its executions, does the program always terminate on fair executions? The fairness assumptions rule out certain undesired bad behaviors, such as where the scheduler ignores a set of posted tasks forever, or where a non-deterministic branch is always chosen in one direction. Since every liveness property reduces to a fair termination property, our decision procedure extends to liveness properties of asynchronous programs. Our decision procedure for the fair termination of asynchronous programs assumes all variables are finite-state. Even though variables are finite-state, asynchronous programs can have an unbounded stack from recursive calls made by tasks, as well as an unbounded task buffer of pending tasks. We show a reduction from the fair termination problem for asynchronous programs to fair termination problems on Petri Nets, and our main technical result is a reduction of the latter problem to Presburger satisfiability. Our decidability result is in contrast to multithreaded recursive programs, for which liveness properties are undecidable. While we focus on fair termination, we show our reduction to Petri Nets can be used to prove related properties such as fair nonstarvation (every posted task is eventually executed) and safety properties such as boundedness (find a bound on the maximum number of posted tasks that can be in the task buffer at any point).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "asynchronous (event-driven) programming; fair termination; liveness; Petri nets", } @Article{Brunel:2009:FFB, author = "Julien Brunel and Damien Doligez and Ren{\'e} Rydhof Hansen and Julia L. Lawall and Gilles Muller", title = "A foundation for flow-based program matching: using temporal logic and model checking", journal = j-SIGPLAN, volume = "44", number = "1", pages = "114--126", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594834.1480897", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Reasoning about program control-flow paths is an important functionality of a number of recent program matching languages and associated searching and transformation tools. Temporal logic provides a well-defined means of expressing properties of control-flow paths in programs, and indeed an extension of the temporal logic CTL has been applied to the problem of specifying and verifying the transformations commonly performed by optimizing compilers. Nevertheless, in developing the Coccinelle program transformation tool for performing Linux collateral evolutions in systems code, we have found that existing variants of CTL do not adequately support rules that transform subterms other than the ones matching an entire formula. Being able to transform any of the subterms of a matched term seems essential in the domain targeted by Coccinelle.\par In this paper, we propose an extension to CTL named CTLVW (CTL with variables and witnesses) that is a suitable basis for the semantics and implementation of the Coccinelles program matching language. Our extension to CTL includes existential quantification over program fragments, which allows metavariables in the program matching language to range over different values within different control-flow paths, and a notion of witnesses that record such existential bindings for use in the subsequent program transformation process. We formalize CTL-VW and describe its use in the context of Coccinelle. We then assess the performance of the approach in practice, using a transformation rule that fixes several reference count bugs in Linux code.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bug finding; CTL; model checking; program matching; program transformation", } @Article{Gulwani:2009:SPE, author = "Sumit Gulwani and Krishna K. Mehra and Trishul Chilimbi", title = "{SPEED}: precise and efficient static estimation of program computational complexity", journal = j-SIGPLAN, volume = "44", number = "1", pages = "127--139", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480881.1480898", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper describes an inter-procedural technique for computing symbolic bounds on the number of statements a procedure executes in terms of its scalar inputs and user-defined quantitative functions of input data-structures. Such computational complexity bounds for even simple programs are usually disjunctive, non-linear, and involve numerical properties of heaps. We address the challenges of generating these bounds using two novel ideas.\par We introduce a proof methodology based on multiple counter instrumentation (each counter can be initialized and incremented at potentially multiple program locations) that allows a given linear invariant generation tool to compute linear bounds individually on these counter variables. The bounds on these counters are then composed together to generate total bounds that are non-linear and disjunctive. We also give an algorithm for automating this proof methodology. Our algorithm generates complexity bounds that are usually precise not only in terms of the computational complexity, but also in terms of the constant factors.\par Next, we introduce the notion of user-defined quantitative functions that can be associated with abstract data-structures, e.g., length of a list, height of a tree, etc. We show how to compute bounds in terms of these quantitative functions using a linear invariant generation tool that has support for handling uninterpreted functions. We show application of this methodology to commonly used data-structures (namely lists, list of lists, trees, bit-vectors) using examples from Microsoft product code. We observe that a few quantitative functions for each data-structure are usually sufficient to allow generation of symbolic complexity bounds of a variety of loops that iterate over these data-structures, and that it is straightforward to define these quantitative functions.\par The combination of these techniques enables generation of precise computational complexity bounds for real-world examples (drawn from Microsoft product code and C++ STL library code) for some of which it is non-trivial to even prove termination. Such automatically generated bounds are very useful for early detection of egregious performance problems in large modular codebases that are constantly being changed by multiple developers who make heavy use of code written by others without a good understanding of their implementation complexity.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "counter instrumentation; quantitative functions; symbolic complexity bounds; termination analysis", } @Article{Monniaux:2009:AMA, author = "David P. Monniaux", title = "Automatic modular abstractions for linear constraints", journal = j-SIGPLAN, volume = "44", number = "1", pages = "140--151", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480881.1480899", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We propose a method for automatically generating abstract transformers for static analysis by abstract interpretation. The method focuses on linear constraints on programs operating on rational, real or floating-point variables and containing linear assignments and tests.\par In addition to loop-free code, the same method also applies for obtaining least fixed points as functions of the precondition, which permits the analysis of loops and recursive functions. Our algorithms are based on new quantifier elimination and symbolic manipulation techniques.\par Given the specification of an abstract domain, and a program block, our method automatically outputs an implementation of the corresponding abstract transformer. It is thus a form of program transformation.\par The motivation of our work is data-flow synchronous programming languages, used for building control-command embedded systems, but it also applies to imperative and functional programming.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstract interpretation; linear inequalities; program transformation; quantifier elimination", } @Article{Barker:2009:WCO, author = "Chris Barker", title = "Wild control operators", journal = j-SIGPLAN, volume = "44", number = "1", pages = "152--152", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480881.1480901", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Linguists seek to understand the semantics of expressions in human languages. Certainly there are many natural language expressions--operators in the wild, so to speak--that control evaluation in ways that are familiar from programming languages: just think of the natural-language counterparts of {\em if}, {\em unless}, {\em while}, etc. But in general, how well-behaved are control operators found in the wild? Can we always understand them in terms of familiar programming constructs, or do they go significantly beyond the expressive power of programming languages?\par As an example where operators from a programming language can provide an insightful analysis of a natural language construction, consider the difference in meaning between the following two sentences:\par (1) a. \& John only drinks PERRIER. (emphasis on {\em Perrier\/})\par b. John only DRINKS Perrier. (emphasis on {\em drinks\/})\par The first sentence entails that John never drinks, say, Evian, but the second sentence entails instead that John never does anything (relevant) with Perrier except drink it. I will suggest that we can understand this difference by expressing the meanings of these sentences in terms of Sitaram's {\em fcontrol\/} and {\em run\/} operators (variants on {\em throw\/} and {\em catch\/}).\par But not all wild operators are so easily captured. I will discuss in some detail the meaning of the word {\em same\/} in English as it occurs in the following sentence:\par (2) \& John and Bill read the same book.\par This sentence has a prominent interpretation on which it means (roughly) 'there is some book {\em x\/} such that John read {\em x\/} and Bill read {\em x}. I provide a preliminary analysis based on Danvy and Filinski's {\em shift\/} and {\em reset}. However, the {\em shift reset\/} approach does not generalize to the full range of related sentences in English. I give a more general solution expressed in a Type Logical Grammar (a certain kind of substructural logic) with explicit continuations. But even this is inadequate: I go on to discuss additional, only slightly less ordinary uses of {\em same\/} that remain untamed by any known compositional semantics.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "continuations; control operators; fcontrol; focus; natural language; reset; same; shift", } @Article{Garcia:2009:LED, author = "Ronald Garcia and Andrew Lumsdaine and Amr Sabry", title = "Lazy evaluation and delimited control", journal = j-SIGPLAN, volume = "44", number = "1", pages = "153--164", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594834.1480903", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The call-by-need lambda calculus provides an equational framework for reasoning syntactically about lazy evaluation. This paper examines its operational characteristics.\par By a series of reasoning steps, we systematically unpack the standard-order reduction relation of the calculus and discover a novel abstract machine definition which, like the calculus, goes 'under lambdas.' We prove that machine evaluation is equivalent to standard-order evaluation.\par Unlike traditional abstract machines, delimited control plays a significant role in the machine's behavior. In particular, the machine replaces the manipulation of a heap using store-based effects with disciplined management of the evaluation stack using control-based effects. In short, state is replaced with control.\par To further articulate this observation, we present a simulation of call-by-need in a call-by-value language using delimited control operations.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstract machines; call-by-need; delimited continuations; lambda calculus; reduction semantics", } @Article{Voigtlander:2009:BFP, author = "Janis Voigtl{\"a}nder", title = "Bidirectionalization for free! (Pearl)", journal = j-SIGPLAN, volume = "44", number = "1", pages = "165--176", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594834.1480904", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A bidirectional transformation consists of a function get that takes a source (document or value) to a view and a function put that takes an updated view and the original source back to an updated source, governed by certain consistency conditions relating the two functions. Both the database and programming language communities have studied techniques that essentially allow a user to specify only one of get and put and have the other inferred automatically. All approaches so far to this bidirectionalization task have been syntactic in nature, either proposing a domain-specific language with limited expressiveness but built-in (and composable) backward components, or restricting get to a simple syntactic form from which some algorithm can synthesize an appropriate definition for put. Here we present a semantic approach instead. The idea is to take a general-purpose language, Haskell, and write a higher-order function that takes (polymorphic) get-functions as arguments and returns appropriate put-functions. All this on the level of semantic values, without being willing, or even able, to inspect the definition of get, and thus liberated from syntactic restraints. Our solution is inspired by relational parametricity and uses free theorems for proving the consistency conditions. It works beautifully.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bidirectionalization; free theorems; generic programming; haskell; program transformation; relational parametricity; view-update problem", } @Article{Morihata:2009:THT, author = "Akimasa Morihata and Kiminori Matsuzaki and Zhenjiang Hu and Masato Takeichi", title = "The third homomorphism theorem on trees: downward \& upward lead to divide-and-conquer", journal = j-SIGPLAN, volume = "44", number = "1", pages = "177--185", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594834.1480905", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Parallel programs on lists have been intensively studied. It is well known that associativity provides a good characterization for divide-and-conquer parallel programs. In particular, the third homomorphism theorem is not only useful for systematic development of parallel programs on lists, but it is also suitable for automatic parallelization. The theorem states that if two sequential programs iterate the same list leftward and rightward, respectively, and compute the same value, then there exists a divide-and-conquer parallel program that computes the same value as the sequential programs.\par While there have been many studies on lists, few have been done for characterizing and developing of parallel programs on trees. Naive divide-and-conquer programs, which divide a tree at the root and compute independent subtrees in parallel, take time that is proportional to the height of the input tree and have poor scalability with respect to the number of processors when the input tree is ill-balanced.\par In this paper, we develop a method for systematically constructing scalable divide-and-conquer parallel programs on trees, in which two sequential programs lead to a scalable divide-and-conquer parallel program. We focus on paths instead of trees so as to utilize rich results on lists and demonstrate that associativity provides good characterization for scalable divide-and-conquer parallel programs on trees. Moreover, we generalize the third homomorphism theorem from lists to trees. We demonstrate the effectiveness of our method with various examples. Our results, being generalizations of known results for lists, are generic in the sense that they work well for all polynomial data structures.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "divide-and-conquer; Huet's zippers; polynomial data structures; the third homomorphism theorem", } @Article{Ley-Wild:2009:CSS, author = "Ruy Ley-Wild and Umut A. Acar and Matthew Fluet", title = "A cost semantics for self-adjusting computation", journal = j-SIGPLAN, volume = "44", number = "1", pages = "186--199", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480881.1480907", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Self-adjusting computation is an evaluation model in which programs can respond efficiently to small changes to their input data by using a change-propagation mechanism that updates computation by re-building only the parts affected by changes. Previous work has proposed language techniques for self-adjusting computation and showed the approach to be effective in a number of application areas. However, due to the complex semantics of change propagation and the indirect nature of previously proposed language techniques, it remains difficult to reason about the efficiency of self-adjusting programs and change propagation.\par In this paper, we propose a cost semantics for self-adjusting computation that enables reasoning about its effectiveness. As our source language, we consider a direct-style \lambda -calculus with first-class mutable references and develop a notion of trace distance for source programs. To facilitate asymptotic analysis, we propose techniques for composing and generalizing concrete distances via trace contexts (traces with holes). We then show how to translate the source language into a self-adjusting target language such that the translation (1) preserves the extensional semantics of the source programs and the cost of from-scratch runs, and (2) ensures that change propagation between two evaluations takes time bounded by their relative distance. We consider several examples and analyze their effectiveness by considering upper and lower bounds.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "self-adjusting computation", } @Article{Tozawa:2009:CWP, author = "Akihiko Tozawa and Michiaki Tatsubori and Tamiya Onodera and Yasuhiko Minamide", title = "Copy-on-write in the {PHP} language", journal = j-SIGPLAN, volume = "44", number = "1", pages = "200--212", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594834.1480908", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "PHP is a popular language for server-side applications. In PHP, assignment to variables copies the assigned values, according to its so-called {\em copy-on-assignment\/} semantics. In contrast, a typical PHP implementation uses a {\em copy-on-write\/} scheme to reduce the copy overhead by delaying copies as much as possible. This leads us to ask if the semantics and implementation of PHP coincide, and actually this is not the case in the presence of sharings within values. In this paper, we describe the copy-on-assignment semantics with three possible strategies to copy values containing sharings. The current PHP implementation has inconsistencies with these semantics, caused by its naive use of copy-on-write. We fix this problem by the novel {\em mostly copy-on-write\/} scheme, making the copy-on-write implementations faithful to the semantics. We prove that our copy-on-write implementations are correct, using bisimulation with the copy-on-assignment semantics.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "graph rewriting; PHP", } @Article{Bronson:2009:FDB, author = "Nathan G. Bronson and Christos Kozyrakis and Kunle Olukotun", title = "Feedback-directed barrier optimization in a strongly isolated {STM}", journal = j-SIGPLAN, volume = "44", number = "1", pages = "213--225", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1504176.1504200", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Researchers in transactional memory (TM) have proposed open nesting as a methodology for increasing the concurrency of transactional programs. The idea is to ignore ``low-level'' memory operations of an open-nested transaction when detecting conflicts for its parent transaction, and instead perform abstract concurrency control for the ``high-level'' operation that the nested transaction represents. To support this methodology, TM systems use an open-nested commit mechanism that commits all changes performed by an open-nested transaction directly to memory, thereby avoiding low-level conflicts. Unfortunately, because the TM runtime is unaware of the different levels of memory, unconstrained use of open-nested commits can lead to anomalous program behavior.\par We describe the framework of {\em ownership-aware transactional memory\/} which incorporates the notion of modules into the TM system and requires that transactions and data be associated with specific {\em transactional modules\/} or Xmodules. We propose a new {\em ownership-aware commit mechanism\/}, a hybrid between an open-nested and closed-nested commit which commits a piece of data differently depending on which Xmodule owns the data. Moreover, we provide a set of precise constraints on interactions and sharing of data among the Xmodules based on familiar notions of abstraction. The ownership-aware commit mechanism and these restrictions on Xmodules allow us to prove that ownership-aware TM has clean memory-level semantics. In particular, it guarantees {\em serializability by modules\/}, an adaptation of the definition of multilevel serializability from database systems. In addition, we describe how a programmer can specify Xmodules and ownership in a Java-like language. Our type system can enforce most of the constraints required by ownership-aware TM statically, and can enforce the remaining constraints dynamically. Finally, we prove that if transactions in the process of aborting obey restrictions on their memory footprint, then ownership-aware TM is free from {\em semantic deadlock\/}.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstract serializability; open-nested transactions; ownership types; ownership-aware transactions; safe nesting; semantic deadlock; semantics; serializability by modules; transactional memory; transactional memory semantics; xmodules", } @Article{Hardekopf:2009:SSF, author = "Ben Hardekopf and Calvin Lin", title = "Semi-sparse flow-sensitive pointer analysis", journal = j-SIGPLAN, volume = "44", number = "1", pages = "226--238", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594834.1480911", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Pointer analysis is a prerequisite for many program analyses, and the effectiveness of these analyses depends on the precision of the pointer information they receive. Two major axes of pointer analysis precision are flow-sensitivity and context-sensitivity, and while there has been significant recent progress regarding scalable context-sensitive pointer analysis, relatively little progress has been made in improving the scalability of flow-sensitive pointer analysis.\par This paper presents a new interprocedural, flow-sensitive pointer analysis algorithm that combines two ideas-semi-sparse analysis and a novel use of BDDs-that arise from a careful understanding of the unique challenges that face flow-sensitive pointer analysis. We evaluate our algorithm on 12 C benchmarks ranging from 11K to 474K lines of code. Our fastest algorithm is on average 197x faster and uses 4.6x less memory than the state of the art, and it can analyze programs that are an order of magnitude larger than the previous state of the art.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "alias analysis; pointer analysis", } @Article{Gulwani:2009:CFT, author = "Sumit Gulwani and Tal Lev-Ami and Mooly Sagiv", title = "A combination framework for tracking partition sizes", journal = j-SIGPLAN, volume = "44", number = "1", pages = "239--251", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594834.1480912", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We describe an abstract interpretation based framework for proving relationships between sizes of memory partitions. Instances of this framework can prove traditional properties such as memory safety and program termination but can also establish upper bounds on usage of dynamically allocated memory. Our framework also stands out in its ability to prove properties of programs manipulating both heap and arrays which is considered a difficult task. Technically, we define an abstract domain that is parameterized by an abstract domain for tracking memory partitions (sets of memory locations) and by a numerical abstract domain for tracking relationships between cardinalities of the partitions. We describe algorithms to construct the transfer functions for the abstract domain in terms of the corresponding transfer functions of the parameterized abstract domains. A prototype of the framework was implemented and used to prove interesting properties of realistic programs, including programs that could not have been automatically analyzed before.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "combining analyses; memory safety; numerical analysis; set analysis; shape analysis; space bounds; termination", } @Article{Wang:2009:TDA, author = "Yin Wang and St{\'e}phane Lafortune and Terence Kelly and Manjunath Kudlur and Scott Mahlke", title = "The theory of deadlock avoidance via discrete control", journal = j-SIGPLAN, volume = "44", number = "1", pages = "252--263", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480881.1480913", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Deadlock in multithreaded programs is an increasingly important problem as ubiquitous multicore architectures force parallelization upon an ever wider range of software. This paper presents a theoretical foundation for dynamic deadlock avoidance in concurrent programs that employ conventional mutual exclusion and synchronization primitives (e.g., multithreaded C/Pthreads programs). Beginning with control flow graphs extracted from program source code, we construct a formal model of the program and then apply Discrete Control Theory to automatically synthesize deadlock-avoidance control logic that is implemented by program instrumentation. At run time, the control logic avoids deadlocks by postponing lock acquisitions. Discrete Control Theory guarantees that the program instrumented with our synthesized control logic cannot deadlock. Our method furthermore guarantees that the control logic is maximally permissive: it postpones lock acquisitions only when necessary to prevent deadlocks, and therefore permits maximal runtime concurrency. Our prototype for C/Pthreads scales to real software including Apache, OpenLDAP, and two kinds of benchmarks, automatically avoiding both injected and naturally occurring deadlocks while imposing modest runtime overheads.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrent programming; discrete control theory; dynamic deadlock avoidance; multicore processors; multithreaded programming; parallel programming", } @Article{Tate:2009:ESN, author = "Ross Tate and Michael Stepp and Zachary Tatlock and Sorin Lerner", title = "Equality saturation: a new approach to optimization", journal = j-SIGPLAN, volume = "44", number = "1", pages = "264--276", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480881.1480915", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Optimizations in a traditional compiler are applied sequentially, with each optimization destructively modifying the program to produce a transformed program that is then passed to the next optimization. We present a new approach for structuring the optimization phase of a compiler. In our approach, optimizations take the form of equality analyses that add equality information to a common intermediate representation. The optimizer works by repeatedly applying these analyses to infer equivalences between program fragments, thus saturating the intermediate representation with equalities. Once saturated, the intermediate representation encodes multiple optimized versions of the input program. At this point, a profitability heuristic picks the final optimized program from the various programs represented in the saturated representation. Our proposed way of structuring optimizers has a variety of benefits over previous approaches: our approach obviates the need to worry about optimization ordering, enables the use of a global optimization heuristic that selects among fully optimized programs, and can be used to perform translation validation, even on compilers other than our own. We present our approach, formalize it, and describe our choice of intermediate representation. We also present experimental results showing that our approach is practical in terms of time and space overhead, is effective at discovering intricate optimization opportunities, and is effective at performing translation validation for a realistic optimizer.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compiler optimization; equality reasoning; intermediate representation", } @Article{Jonsson:2009:PSH, author = "Peter A. Jonsson and Johan Nordlander", title = "Positive supercompilation for a higher order call-by-value language", journal = j-SIGPLAN, volume = "44", number = "1", pages = "277--288", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480881.1480916", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Previous deforestation and supercompilation algorithms may introduce accidental termination when applied to call-by-value programs. This hides looping bugs from the programmer, and changes the behavior of a program depending on whether it is optimized or not. We present a supercompilation algorithm for a higher-order call-by-value language and we prove that the algorithm both terminates and preserves termination properties. This algorithm utilizes strictness information for deciding whether to substitute or not and compares favorably with previous call-by-name transformations.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "call-by-value; deforestation; supercompilation", } @Article{Calcagno:2009:CSA, author = "Cristiano Calcagno and Dino Distefano and Peter O'Hearn and Hongseok Yang", title = "Compositional shape analysis by means of bi-abduction", journal = j-SIGPLAN, volume = "44", number = "1", pages = "289--300", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594834.1480917", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper describes a compositional shape analysis, where each procedure is analyzed independently of its callers. The analysis uses an abstract domain based on a restricted fragment of separation logic, and assigns a collection of Hoare triples to each procedure; the triples provide an over-approximation of data structure usage. Compositionality brings its usual benefits -- increased potential to scale, ability to deal with unknown calling contexts, graceful way to deal with imprecision -- to shape analysis, for the first time.\par The analysis rests on a generalized form of abduction (inference of explanatory hypotheses) which we call {\em bi-abduction}. Bi-abduction displays abduction as a kind of inverse to the frame problem: it jointly infers anti-frames (missing portions of state) and frames (portions of state not touched by an operation), and is the basis of a new interprocedural analysis algorithm. We have implemented our analysis algorithm and we report case studies on smaller programs to evaluate the quality of discovered specifications, and larger programs (e.g., an entire Linux distribution) to test scalability and graceful imprecision.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abduction; program analysis; proof theory", } @Article{Simpson:2009:LTC, author = "Alex Simpson", title = "Linear types for computational effects", journal = j-SIGPLAN, volume = "44", number = "1", pages = "301--301", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594834.1480919", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "I shall present an extension of Moggi's computational metalanguage with primitives from linear logic, the enriched effect-calculus. Illustrative applications to side effects, continuations, nondeterminism and polymorphism will be considered. The talk is based on joint work with Jeff Egger and Rasmus Mogelberg.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "computational effects; computational monads; linear logic", } @Article{Condit:2009:UTC, author = "Jeremy Condit and Brian Hackett and Shuvendu K. Lahiri and Shaz Qadeer", title = "Unifying type checking and property checking for low-level code", journal = j-SIGPLAN, volume = "44", number = "1", pages = "302--314", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594834.1480921", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present a unified approach to type checking and property checking for low-level code. Type checking for low-level code is challenging because type safety often depends on complex, program-specific invariants that are difficult for traditional type checkers to express. Conversely, property checking for low-level code is challenging because it is difficult to write concise specifications that distinguish between locations in an untyped program's heap. We address both problems simultaneously by implementing a type checker for low-level code as part of our property checker.\par We present a low-level formalization of a C program's heap and its types that can be checked with an SMT solver, and we provide a decision procedure for checking type safety. Our type system is flexible enough to support a combination of nominal and structural subtyping for C, on a per-structure basis. We discuss several case studies that demonstrate the ability of this tool to express and check complex type invariants in low-level C code, including several small Windows device drivers.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "assertion checking; decision procedure; low-level code; property checking; SMT solver; type checking", } @Article{Feng:2009:LRG, author = "Xinyu Feng", title = "Local rely-guarantee reasoning", journal = j-SIGPLAN, volume = "44", number = "1", pages = "315--327", month = jan, year = "2009", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Brotherston:2009:CBL, author = "James Brotherston and Cristiano Calcagno", title = "Classical {BI}: a logic for reasoning about dualising resources", journal = j-SIGPLAN, volume = "44", number = "1", pages = "328--339", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480881.1480923", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We show how to extend O'Hearn and Pym's logic of bunched implications, BI, to classical BI (CBI), in which both the additive and the multiplicative connectives behave classically. Specifically, CBI is a non-conservative extension of (propositional) Boolean BI that includes multiplicative versions of falsity, negation and disjunction. We give an algebraic semantics for CBI that leads us naturally to consider resource models of CBI in which every resource has a unique dual. We then give a cut-eliminating proof system for CBI, based on Belnap's display logic, and demonstrate soundness and completeness of this proof system with respect to our semantics.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bunched implications; classical bi; completeness; cut-elimination; display logic; resource models; semantics", } @Article{Ahmed:2009:SDR, author = "Amal Ahmed and Derek Dreyer and Andreas Rossberg", title = "State-dependent representation independence", journal = j-SIGPLAN, volume = "44", number = "1", pages = "340--353", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594834.1480925", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Mitchell's notion of representation independence is a particularly useful application of Reynolds' relational parametricity -- two different implementations of an abstract data type can be shown contextually equivalent so long as there exists a relation between their type representations that is preserved by their operations. There have been a number of methods proposed for proving representation independence in various pure extensions of System F (where data abstraction is achieved through existential typing), as well as in Algol- or Java-like languages (where data abstraction is achieved through the use of local mutable state). However, none of these approaches addresses the interaction of existential type abstraction and local state. In particular, none allows one to prove representation independence results for generative ADTs -- i.e. ADTs that both maintain some local state and define abstract types whose internal representations are dependent on that local state.\par In this paper, we present a syntactic, logical-relations-based method for proving representation independence of generative ADTs in a language supporting polymorphic types, existential types, general recursive types, and unrestricted ML-style mutable references. We demonstrate the effectiveness of our method by using it to prove several interesting contextual equivalences that involve a close interaction between existential typing and local state, as well as some well-known equivalences from the literature (such as Pitts and Stark's 'awkward' example) that have caused trouble for previous logical-relations-based methods.\par The success of our method relies on two key technical innovations. First, in order to handle generative ADTs, we develop a possible-worlds model in which relational interpretations of types are allowed to grow over time in a manner that is tightly coupled with changes to some local state. Second, we employ a step-indexed stratification of possible worlds, which facilitates a simplified account of mutable references of higher type.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstract data types; existential types; local state; representation independence; step-indexed logical relations", } @Article{Montagu:2009:MAT, author = "Beno{\^\i}t Montagu and Didier R{\'e}my", title = "Modeling abstract types in modules with open existential types", journal = j-SIGPLAN, volume = "44", number = "1", pages = "354--365", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480881.1480926", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We propose F-zip, a calculus of open existential types that is an extension of System F obtained by decomposing the introduction and elimination of existential types into more atomic constructs. Open existential types model modular type abstraction as done in module systems. The static semantics of F-zip adapts standard techniques to deal with linearity of typing contexts, its dynamic semantics is a small-step reduction semantics that performs extrusion of type abstraction as needed during reduction, and the two are related by subject reduction and progress lemmas. Applying the Curry--Howard isomorphism, F-zip can be also read back as a logic with the same expressive power as second-order logic but with more modular ways of assembling partial proofs. We also extend the core calculus to handle the double vision problem as well as type-level and term-level recursion. The resulting language turns out to be a new formalization of (a minor variant of) Dreyer's internal language for recursive and mixin modules.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstract types; existential types; generativity; lambda-calculus; linear type systems; modularity; modules; type systems", } @Article{Krishnaswami:2009:FPM, author = "Neelakantan R. Krishnaswami", title = "Focusing on pattern matching", journal = j-SIGPLAN, volume = "44", number = "1", pages = "366--378", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480881.1480927", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In this paper, we show how pattern matching can be seen to arise from a proof term assignment for the focused sequent calculus. This use of the Curry--Howard correspondence allows us to give a novel coverage checking algorithm, and makes it possible to give a rigorous correctness proof for the classical pattern compilation strategy of building decision trees via matrices of patterns.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "Curry--Howard; focusing; pattern matching; type theory", } @Article{Sarkar:2009:SXC, author = "Susmit Sarkar and Peter Sewell and Francesco Zappa Nardelli and Scott Owens and Tom Ridge and Thomas Braibant and Magnus O. Myreen and Jade Alglave", title = "The semantics of {x86-CC} multiprocessor machine code", journal = j-SIGPLAN, volume = "44", number = "1", pages = "379--391", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480881.1480929", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Multiprocessors are now dominant, but real multiprocessors do not provide the sequentially consistent memory that is assumed by most work on semantics and verification. Instead, they have subtle relaxed (or weak) memory models, usually described only in ambiguous prose, leading to widespread confusion.\par We develop a rigorous and accurate semantics for x86 multiprocessor programs, from instruction decoding to relaxed memory model, mechanised in HOL. We test the semantics against actual processors and the vendor litmus-test examples, and give an equivalent abstract-machine characterisation of our axiomatic memory model. For programs that are (in some precise sense) data-race free, we prove in HOL that their behaviour is sequentially consistent. We also contrast the x86 model with some aspects of Power and ARM behaviour.\par This provides a solid intuition for low-level programming, and a sound foundation for future work on verification, static analysis, and compilation of low-level concurrent code.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "relaxed memory models; semantics", } @Article{Boudol:2009:RMM, author = "G{\'e}rard Boudol and Gustavo Petri", title = "Relaxed memory models: an operational approach", journal = j-SIGPLAN, volume = "44", number = "1", pages = "392--403", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480881.1480930", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Memory models define an interface between programs written in some language and their implementation, determining which behaviour the memory (and thus a program) is allowed to have in a given model. A minimal guarantee memory models should provide to the programmer is that well-synchronized, that is, data-race free code has a standard semantics. Traditionally, memory models are defined axiomatically, setting constraints on the order in which memory operations are allowed to occur, and the programming language semantics is implicit as determining some of these constraints. In this work we propose a new approach to formalizing a memory model in which the model itself is part of a weak operational semantics for a (possibly concurrent) programming language. We formalize in this way a model that allows write operations to the store to be buffered. This enables us to derive the ordering constraints from the weak semantics of programs, and to prove, at the programming language level, that the weak semantics implements the usual interleaving semantics for data-race free programs, hence in particular that it implements the usual semantics for sequential code.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "memory models; operational semantics", } @Article{Guerraoui:2009:SPL, author = "Rachid Guerraoui and Michal Kapalka", title = "The semantics of progress in lock-based transactional memory", journal = j-SIGPLAN, volume = "44", number = "1", pages = "404--415", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1480881.1480931", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Transactional memory (TM) is a promising paradigm for concurrent programming. Whereas the number of TM implementations is growing, however, little research has been conducted to precisely define TM semantics, especially their progress guarantees. This paper is the first to formally define the progress semantics of lock-based TMs, which are considered the most effective in practice.\par We use our semantics to reduce the problems of reasoning about the correctness and computability power of lock-based TMs to those of simple try-lock objects. More specifically, we prove that checking the progress of any set of transactions accessing an arbitrarily large set of shared variables can be reduced to verifying a simple property of each individual (logical) try-lock used by those transactions. We use this theorem to determine the correctness of state-of-the-art lock-based TMs and highlight various configuration ambiguities. We also prove that lock-based TMs have consensus number 2. This means that, on the one hand, a lock-based TM cannot be implemented using only read-write memory, but, on the other hand, it does not need very powerful instructions such as the commonly used compare-and-swap.\par We finally use our semantics to formally capture an inherent trade-off in the performance of lock-based TM implementations. Namely, we show that the space complexity of every lock-based software TM implementation that uses invisible reads is at least exponential in the number of objects accessible to transactions.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "consensus number; impossibility; lock; lower bound; reduction; semantics; transactional memory; try-lock", } @Article{Kobayashi:2009:THO, author = "Naoki Kobayashi", title = "Types and higher-order recursion schemes for verification of higher-order programs", journal = j-SIGPLAN, volume = "44", number = "1", pages = "416--428", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594834.1480933", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We propose a new verification method for temporal properties of higher-order functional programs, which takes advantage of Ong's recent result on the decidability of the model-checking problem for higher-order recursion schemes (HORS's). A program is transformed to an HORS that generates a tree representing all the possible event sequences of the program, and then the HORS is model-checked. Unlike most of the previous methods for verification of higher-order programs, our verification method is sound and complete. Moreover, this new verification framework allows a smooth integration of abstract model checking techniques into verification of higher-order programs. We also present a type-based verification algorithm for HORS's. The algorithm can deal with only a fragment of the properties expressed by modal mu-calculus, but the algorithm and its correctness proof are (arguably) much simpler than those of Ong's game-semantics-based algorithm. Moreover, while the HORS model checking problem is n-EXPTIME in general, our algorithm is linear in the size of HORS, under the assumption that the sizes of types and specification formulas are bounded by a constant.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "higher-order recursion scheme; model checking; type system", } @Article{Ridge:2009:VDS, author = "Thomas Ridge", title = "Verifying distributed systems: the operational approach", journal = j-SIGPLAN, volume = "44", number = "1", pages = "429--440", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594834.1480934", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This work develops an integrated approach to the verification of behaviourally rich programs, founded directly on operational semantics. The power of the approach is demonstrated with a state-of-the-art verification of a core piece of distributed infrastructure, involving networking, a filesystem, and concurrent OCaml code. The formalization is in higher-order logic and proof support is provided by the HOL4 theorem prover.\par Difficult verification problems demand a wide range of techniques. Here these include ground and symbolic evaluation, local reasoning, separation, invariants, Hoare-style assertional reasoning, rely/guarantee, inductive reasoning about protocol correctness, multiple refinement, and linearizability. While each of these techniques is useful in isolation, they are even more so in combination. The first contribution of this paper is to present the operational approach and describe how existing techniques, including all those mentioned above, may be cleanly and precisely integrated in this setting.\par The second contribution is to show how to combine verifications of individual library functions with arbitrary and unknown user code in a compositional manner, focusing on the problems of private state and encapsulation.\par The third contribution is the example verification itself. The infrastructure must behave correctly under arbitrary patterns of host and network failure, whilst for performance reasons the code also includes data races on shared state. Both features make the verification particularly challenging.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "distributed; ground and symbolic evaluation; Hoare-style assertions; HOL; inductive reasoning; infrastructure; invariants; linearizability; local reasoning; network protocol; OCAML; operational semantics; persistent queue; refinement; rely/guarantee; separation", } @Article{Hawblitzel:2009:AVP, author = "Chris Hawblitzel and Erez Petrank", title = "Automated verification of practical garbage collectors", journal = j-SIGPLAN, volume = "44", number = "1", pages = "441--453", month = jan, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594834.1480935", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:38 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Garbage collectors are notoriously hard to verify, due to their low-level interaction with the underlying system and the general difficulty in reasoning about reachability in graphs. Several papers have presented verified collectors, but either the proofs were hand-written or the collectors were too simplistic to use on practical applications. In this work, we present two mechanically verified garbage collectors, both practical enough to use for real-world C\# benchmarks. The collectors and their associated allocators consist of x86 assembly language instructions and macro instructions, annotated with preconditions, postconditions, invariants, and assertions. We used the Boogie verification generator and the Z3 automated theorem prover to verify this assembly language code mechanically. We provide measurements comparing the performance of the verified collector with that of the standard Bartok collectors on off-the-shelf C\# benchmarks, demonstrating their competitiveness.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "garbage collection; verification", } @Article{Kiselyov:2009:LMR, author = "Oleg Kiselyov and Chung-chieh Shan", title = "Lightweight monadic regions", journal = j-SIGPLAN, volume = "44", number = "2", pages = "1--12", month = feb, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411286.1411288", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "16 June 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present Haskell libraries that statically ensure the safe use of resources such as file handles. We statically prevent accessing an already closed handle or forgetting to close it. The libraries can be trivially extended to other resources such as database connections and graphic contexts.\par Because file handles and similar resources are scarce, we want to not just assure their safe use but further deallocate them soon after they are no longer needed. Relying on Fluet and Morrisett's [4] calculus of nested regions, we contribute a novel, improved, and extended implementation of the calculus in Haskell, with file handles as resources.\par Our library supports region polymorphism and implicit region subtyping, along with higher-order functions, mutable state, recursion, and run-time exceptions. A program may allocate arbitrarily many resources and dispose of them in any order, not necessarily LIFO. Region annotations are part of an expression's inferred type.\par Our new Haskell encoding of monadic regions as monad transformers needs no witness terms. It assures timely deallocation even when resources have markedly different lifetimes and the identity of the longest-living resource is determined only dynamically.\par For contrast, we also implement a Haskell library for manual resource management, where deallocation is explicit and safety is assured by a form of linear types. We implement the linear typing in Haskell with the help of phantom types and a parameterized monad to statically track the type-state of resources.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "effect systems; monads; parametric polymorphism; regions; resource management; subtyping; type classes; type systems", } @Article{Russo:2009:LLW, author = "Alejandro Russo and Koen Claessen and John Hughes", title = "A library for light-weight information-flow security in haskell", journal = j-SIGPLAN, volume = "44", number = "2", pages = "13--24", month = feb, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411286.1411289", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:38:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Protecting confidentiality of data has become increasingly important for computing systems. Information-flow techniques have been developed over the years to achieve that purpose, leading to special-purpose languages that guarantee information-flow security in programs. However, rather than producing a new language from scratch, information-flow security can also be provided as a library. This has been done previously in Haskell using the arrow framework. In this paper, we show that arrows are not necessary to design such libraries and that a less general notion, namely monads, is sufficient to achieve the same goals. We present a monadic library to provide information-flow security for Haskell programs. The library introduces mechanisms to protect confidentiality of data for pure computations, that we then easily, and modularly, extend to include dealing with side-effects. We also present combinators to dynamically enforce different declassification policies when release of information is required in a controlled manner. It is possible to enforce policies related to what, by whom, and when information is released or a combination of them. The well-known concept of monads together with the light-weight characteristic of our approach makes the library suitable to build applications where confidentiality of data is an issue.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "declassification; information-flow; library; monad", } @Article{Pucella:2009:HST, author = "Riccardo Pucella and Jesse A. Tov", title = "{Haskell} session types with (almost) no class", journal = j-SIGPLAN, volume = "44", number = "2", pages = "25--36", month = feb, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411286.1411290", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:38:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We describe an implementation of session types in Haskell. Session types statically enforce that client-server communication proceeds according to protocols. They have been added to several concurrent calculi, but few implementations of session types are available.\par Our embedding takes advantage of Haskell where appropriate, but we rely on no exotic features. Thus our approach translates with minimal modification to other polymorphic, typed languages such as ML and Java. Our implementation works with existing Haskell concurrency mechanisms, handles multiple communication channels and recursive session types, and infers protocols automatically.\par While our implementation uses unsafe operations in Haskell, it does not violate Haskell's safety guarantees. We formalize this claim in a concurrent calculus with unsafe communication primitives over which we layer our implementation of session types, and we prove that the session types layer is safe. In particular, it enforces that channel-based communication follows consistent protocols.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency; embedded type systems; functional programming; haskell; phantom types; session types; type classes", } @Article{Runciman:2009:SLS, author = "Colin Runciman and Matthew Naylor and Fredrik Lindblad", title = "{SmallCheck} and {Lazy SmallCheck}: automatic exhaustive testing for small values", journal = j-SIGPLAN, volume = "44", number = "2", pages = "37--48", month = feb, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543134.1411292", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:38:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper describes two Haskell libraries for property-based testing. Following the lead of QuickCheck, these testing libraries SmallCheck and Lazy SmallCheck also use type-based generators to obtain test-sets of finite values for which properties are checked, and report any counter-examples found. But instead of using a sample of randomly generated values they test properties for all values up to some limiting depth, progressively increasing this limit. The paper explains the design and implementation of both libraries and evaluates them in comparison with each other and with QuickCheck.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "embedded language; exhaustive search; lazy evaluation; property-based testing; type classes", } @Article{Mitchell:2009:APE, author = "Neil Mitchell and Colin Runciman", title = "Not all patterns, but enough: an automatic verifier for partial but sufficient pattern matching", journal = j-SIGPLAN, volume = "44", number = "2", pages = "49--60", month = feb, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543134.1411293", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:38:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We describe an automated analysis of Haskell 98 programs to check statically that, despite the possible use of partial (or non-exhaustive) pattern matching, no pattern-match failure can occur. Our method is an iterative backward analysis using a novel form of pattern-constraint to represent sets of data values. The analysis is defined for a core first-order language to which Haskell 98 programs are reduced. Our analysis tool has been successfully applied to a range of programs, and our techniques seem to scale well. Throughout the paper, methods are represented much as we have implemented them in practice, again in Haskell.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "automatic verification; functional programming; haskell; pattern-match errors; preconditions", } @Article{Bernardy:2009:YEH, author = "Jean-Philippe Bernardy", title = "{Yi}: an editor in {Haskell} for {Haskell}", journal = j-SIGPLAN, volume = "44", number = "2", pages = "61--62", month = feb, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543134.1411294", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:38:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Yi is a text editor written in Haskell and extensible in Haskell. We take advantage of Haskell's expressive power to define embedded DSLs that form the foundation of the editor. In turn, these DSLs provide a flexible mechanism to create extended versions of the editor. Yi also provides some support for editing Haskell code.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "editor; functional programming; haskell", } @Article{Viera:2009:HDY, author = "Marcos Viera and S. Doaitse Swierstra and Eelco Lempsink", title = "{Haskell}, do you read me?: constructing and composing efficient top-down parsers at runtime", journal = j-SIGPLAN, volume = "44", number = "2", pages = "63--74", month = feb, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543134.1411296", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:38:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The Haskell definition and implementation of read is far from perfect. In the first place read is not able to handle the associativities defined for infix operators. Furthermore, it puts constraints on the way show is defined, and especially forces it to generate far more parentheses than expected. Lastly, it may give rise to exponential parsing times. All this is due to the compositionality requirement for read functions, which imposes a top-down parsing strategy.\par We propose a different approach, based on typed abstract syntax, in which grammars describing the data types are composed dynamically. Using the transformation libraries described in a companion paper these syntax descriptions are combined and transformed into parsers at runtime, from which the required read function are constructed. In this way we obtain linear parsing times, achieve consistency with the defined associativities, and may use a version of show which generates far fewer parentheses, thus improving readability of printed values.\par The described transformation algorithms can be incorporated in a Haskell compiler, thus moving most of the work involved to compile time.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "GADT; haskell; left-corner transform; meta programming; parser combinators; type systems; typed abstract syntax; typed transformations", } @Article{Ahn:2009:SSS, author = "Ki Yung Ahn and Tim Sheard", title = "Shared subtypes: subtyping recursive parametrized algebraic data types", journal = j-SIGPLAN, volume = "44", number = "2", pages = "75--86", month = feb, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543134.1411297", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:38:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A newtype declaration in Haskell introduces a new type renaming an existing type. The two types are viewed by the programmer as semantically different, but share the same runtime representation. When operations on the two semantic views coincide, the run-time cost of conversion between the two types is reduced to zero (in both directions) because of this common representation.\par We describe a new language feature called Shared Subtypes (SSubtypes), which generalizes these properties of the newtype declaration. SSubtypes allow programmers to specify subtype rules between types and sharing rules between data constructors. A value of a type T, where T is a subtype of U, can always be cast, at no cost, to value of type U. This free up-casting allows library functions that consume the supertype to be applied without cost to subtypes. Yet any semantic interpretations desired by the programmer can be enforced by the compiler. SSubtype declarations work particularly well with GADTs. GADTs use differing type indexes to make explicit semantic differences, by using a different index for each way of viewing the data. Shared subtypes allow GADTs to share the same runtime representation as a reference type, of which the GADT is a refinement.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "algebraic data types; datatypes; GADTs; parametrized types; recursive types; sharing representation; subtype; subtyping", } @Article{Jones:2009:LPD, author = "Mark P. Jones and Iavor S. Diatchki", title = "Language and program design for functional dependencies", journal = j-SIGPLAN, volume = "44", number = "2", pages = "87--98", month = feb, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543134.1411298", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:38:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Eight years ago, functional dependencies, a concept from the theory of relational databases, were proposed as a mechanism for avoiding common problems with multiple parameter type classes in Haskell. In this context, functional dependencies give programmers a means to specify the semantics of a type class more precisely, and to obtain more accurate inferred types as a result. As time passed, however, several issues were uncovered --- both in the design of a language to support functional dependencies, and in the ways that programmers use them --- that led some to search for new, better alternatives.\par This paper focusses on two related aspects of design for functional dependencies: (i) the design of language/type system extensions that implement them; and (ii) the design of programs that use them. Our goal is to clarify the issues of what functional dependencies are, how they should be used, and how the problems encountered with initial proposals and implementations can be addressed.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "functional dependencies; haskell; qualified types; relational databases; type functions; type inference", } @Article{Kariotis:2009:MMF, author = "Pericles S. Kariotis and Adam M. Procter and William L. Harrison", title = "Making monads first-class with {Template Haskell}", journal = j-SIGPLAN, volume = "44", number = "2", pages = "99--110", month = feb, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411286.1411300", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:38:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Monads as an organizing principle for programming and semantics are notoriously difficult to grasp, yet they are a central and powerful abstraction in Haskell. This paper introduces a domain-specific language, MonadLab, that simplifies the construction of monads, and describes its implementation in Template Haskell. MonadLab makes monad construction truly first class, meaning that arcane theoretical issues with respect to monad transformers are completely hidden from the programmer. The motivation behind the design of MonadLab is to make monadic programming in Haskell simpler while providing a tool for non-Haskell experts that will assist them in understanding this powerful abstraction.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "domain-specific languages; monads; staged programming", } @Article{Rodriguez:2009:CLG, author = "Alexey Rodriguez and Johan Jeuring and Patrik Jansson and Alex Gerdes and Oleg Kiselyov and Bruno C. d. S. Oliveira", title = "Comparing libraries for generic programming in haskell", journal = j-SIGPLAN, volume = "44", number = "2", pages = "111--122", month = feb, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411286.1411301", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:38:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Datatype-generic programming is defining functions that depend on the structure, or 'shape', of datatypes. It has been around for more than 10 years, and a lot of progress has been made, in particular in the lazy functional programming language Haskell. There are more than 10 proposals for generic programming libraries or language extensions for Haskell. To compare and characterise the many generic programming libraries in a typed functional language, we introduce a set of criteria and develop a generic programming benchmark: a set of characteristic examples testing various facets of datatype-generic programming. We have implemented the benchmark for nine existing Haskell generic programming libraries and present the evaluation of the libraries. The comparison is useful for reaching a common standard for generic programming, but also for a programmer who has to choose a particular approach for datatype-generic programming.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "datatype-generic programming; libraries comparison", } @Article{Allwood:2009:CCL, author = "Tristan O. R. Allwood and Susan Eisenbach", title = "{CLASE}: cursor library for a structured editor", journal = j-SIGPLAN, volume = "44", number = "2", pages = "123--124", month = feb, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411286.1411302", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:38:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The zipper is a well known design pattern for providing a cursor-like interface to a data structure. However, the classic treatise by Huet (1) only scratches the surface of some of the potential applications of the zipper. In this work we have taken inspiration from Huet, and built a library suitable as an underpinning for a structured editor for programming languages. We consider a zipper structure that is suitable for traversing heterogeneous data types, encoding routes to other places in the tree (for bookmark or quick-jump functionality), expressing lexically bound information using contexts, and traversals for rendering a program indicating where the cursor is currently focused in the whole.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "cursor; traversal; zipper", } @Article{Coutts:2009:HBI, author = "Duncan Coutts and Isaac Potoczny-Jones and Don Stewart", title = "{Haskell}: batteries included", journal = j-SIGPLAN, volume = "44", number = "2", pages = "125--126", month = feb, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1411286.1411303", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:38:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The quality of a programming language itself is only one component in the ability of application writers to get the job done. Programming languages can succeed or fail based on the breadth and quality of their library collection. Over the last few years, the Haskell community has risen to the task of building the library infrastructure necessary for Haskell to succeed as a programming language suitable for writing real-world applications.\par This on-going work, the Cabal and Hackage effort, is built on the open source model of distributed development, and have resulted in a flowering of development in the language with more code produced and reused now than at any point in the community's history. It is easier to obtain and use Haskell code, in a wider range of environments, than ever before.\par This demonstration describes the infrastructure and process of Haskell development inside the Cabal/Hackage framework, including the build system, library dependency resolution, centralised publication, documentation and distribution, and how the code escapes outward into the wider software community.\par We survey the benefits and trade-offs in a distributed, collaborative development ecosystem and look at a proposed Haskell Platform that envisages a complete Haskell development environment, batteries included.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "distribution; functional programming", } @Article{Gebhart:2009:ETC, author = "Mark Gebhart and Bertrand A. Maher and Katherine E. Coons and Jeff Diamond and Paul Gratz and Mario Marino and Nitya Ranganathan and Behnam Robatmili and Aaron Smith and James Burrill and Stephen W. Keckler and Doug Burger and Kathryn S. McKinley", title = "An evaluation of the {TRIPS} computer system", journal = j-SIGPLAN, volume = "44", number = "3", pages = "1--12", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508284.1508246", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The TRIPS system employs a new instruction set architecture (ISA) called Explicit Data Graph Execution (EDGE) that renegotiates the boundary between hardware and software to expose and exploit concurrency. EDGE ISAs use a block-atomic execution model in which blocks are composed of dataflow instructions. The goal of the TRIPS design is to mine concurrency for high performance while tolerating emerging technology scaling challenges, such as increasing wire delays and power consumption. This paper evaluates how well TRIPS meets this goal through a detailed ISA and performance analysis. We compare performance, using cycles counts, to commercial processors. On SPEC CPU2000, the Intel Core 2 outperforms compiled TRIPS code in most cases, although TRIPS matches a Pentium 4. On simple benchmarks, compiled TRIPS code outperforms the Core 2 by 10\% and hand-optimized TRIPS code outperforms it by factor of 3. Compared to conventional ISAs, the block-atomic model provides a larger instruction window, increases concurrency at a cost of more instructions executed, and replaces register and memory accesses with more efficient direct instruction-to-instruction communication. Our analysis suggests ISA, microarchitecture, and compiler enhancements for addressing weaknesses in TRIPS and indicates that EDGE architectures have the potential to exploit greater concurrency in future technologies.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "trips", } @Article{Pistol:2009:AIN, author = "Constantin Pistol and Wutichai Chongchitmate and Christopher Dwyer and Alvin R. Lebeck", title = "Architectural implications of nanoscale integrated sensing and computing", journal = j-SIGPLAN, volume = "44", number = "3", pages = "13--24", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508244.1508247", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper explores the architectural implications of integrating computation and molecular probes to form nanoscale sensor processors (nSP). We show how nSPs may enable new computing domains and automate tasks that currently require expert scientific training and costly equipment. This new application domain severely constrains nSP size, which significantly impacts the architectural design space. In this context, we explore nSP architectures and present an nSP design that includes a simple accumulator-based ISA, sensors, limited memory and communication transceivers. To reduce the application memory footprint, we introduce the concept of instruction-fused sensing. We use simulation and analytical models to evaluate nSP designs executing a representative set of target applications. Furthermore, we propose a candidate nSP technology based on optical Resonance Energy Transfer (RET) logic that enables the small size required by the application domain; our smallest design is about the size of the largest known virus. We also show laboratory results that demonstrate initial steps towards a prototype.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "biological computing; instruction fused computing; nanocomputing; new computing domain", } @Article{Park:2009:CEA, author = "Soyeon Park and Shan Lu and Yuanyuan Zhou", title = "{CTrigger}: exposing atomicity violation bugs from their hiding places", journal = j-SIGPLAN, volume = "44", number = "3", pages = "25--36", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508244.1508249", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Multicore hardware is making concurrent programs pervasive. Unfortunately, concurrent programs are prone to bugs. Among different types of concurrency bugs, atomicity violation bugs are common and important. Existing techniques to detect atomicity violation bugs suffer from one limitation: requiring bugs to manifest during monitored runs, which is an open problem in concurrent program testing.\par This paper makes two contributions. First, it studies the interleaving characteristics of the common practice in concurrent program testing (i.e., running a program over and over) to understand why atomicity violation bugs are hard to expose. Second, it proposes CTrigger to effectively and efficiently expose atomicity violation bugs in large programs. CTrigger focuses on a special type of interleavings (i.e., unserializable interleavings) that are inherently correlated to atomicity violation bugs, and uses trace analysis to systematically identify (likely) feasible unserializable interleavings with low occurrence-probability. CTrigger then uses minimum execution perturbation to exercise low-probability interleavings and expose difficult-to-catch atomicity violation.\par We evaluate CTrigger with real-world atomicity violation bugs from four sever/desktop applications (Apache, MySQL, Mozilla, and PBZIP2) and three SPLASH2 applications on 8-core machines. CTrigger efficiently exposes the tested bugs within 1--235 seconds, two to four orders of magnitude faster than stress testing. Without CTrigger, some of these bugs do not manifest even after 7 full days of stress testing. In addition, without deterministic replay support, once a bug is exposed, CTrigger can help programmers reliably reproduce it for diagnosis. Our tested bugs are reproduced by CTrigger mostly within 5 seconds, 300 to over 60000 times faster than stress testing.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency bug; software testing", } @Article{Sidiroglou:2009:AAS, author = "Stelios Sidiroglou and Oren Laadan and Carlos Perez and Nicolas Viennot and Jason Nieh and Angelos D. Keromytis", title = "{ASSURE}: automatic software self-healing using rescue points", journal = j-SIGPLAN, volume = "44", number = "3", pages = "37--48", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508284.1508250", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Software failures in server applications are a significant problem for preserving system availability. We present ASSURE, a system that introduces rescue points that recover software from unknown faults while maintaining both system integrity and availability, by mimicking system behavior under known error conditions. Rescue points are locations in existing application code for handling a given set of programmer-anticipated failures, which are automatically repurposed and tested for safely enabling fault recovery from a larger class of (unanticipated) faults. When a fault occurs at an arbitrary location in the program, ASSURE restores execution to an appropriate rescue point and induces the program to recover execution by virtualizing the program's existing error-handling facilities. Rescue points are identified using fuzzing, implemented using a fast coordinated checkpoint-restart mechanism that handles multi-process and multi-threaded applications, and, after testing, are injected into production code using binary patching. We have implemented an ASSURE Linux prototype that operates without application source code and without base operating system kernel changes. Our experimental results on a set of real-world server applications and bugs show that ASSURE enabled recovery for all of the bugs tested with fast recovery times, has modest performance overhead, and provides automatic self-healing orders of magnitude faster than current human-driven patch deployment methods.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "binary patching; checkpoint restart; error recovery; reliable software; software self-healing", } @Article{Lenharth:2009:RDO, author = "Andrew Lenharth and Vikram S. Adve and Samuel T. King", title = "Recovery domains: an organizing principle for recoverable operating systems", journal = j-SIGPLAN, volume = "44", number = "3", pages = "49--60", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508284.1508251", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We describe a strategy for enabling existing commodity operating systems to recover from unexpected run-time errors in nearly any part of the kernel, including core kernel components. Our approach is dynamic and request-oriented; it isolates the effects of a fault to the requests that caused the fault rather than to static kernel components. This approach is based on a notion of 'recovery domains,' an organizing principle to enable rollback of state affected by a request in a multithreaded system with minimal impact on other requests or threads. We have applied this approach on v2.4.22 and v2.6.27 of the Linux kernel and it required 132 lines of changed or new code: the other changes are all performed by a simple instrumentation pass of a compiler. Our experiments show that the approach is able to recover from otherwise fatal faults with minimal collateral impact during a recovery event.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "akeso; automatic fault recovery; recovery domains", } @Article{Dimitrov:2009:ABB, author = "Martin Dimitrov and Huiyang Zhou", title = "Anomaly-based bug prediction, isolation, and validation: an automated approach for software debugging", journal = j-SIGPLAN, volume = "44", number = "3", pages = "61--72", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508244.1508252", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Software defects, commonly known as bugs, present a serious challenge for system reliability and dependability. Once a program failure is observed, the debugging activities to locate the defects are typically nontrivial and time consuming. In this paper, we propose a novel automated approach to pin-point the root-causes of software failures.\par Our proposed approach consists of three steps. The first step is bug prediction, which leverages the existing work on anomaly-based bug detection as exceptional behavior during program execution has been shown to frequently point to the root cause of a software failure. The second step is bug isolation, which eliminates false-positive bug predictions by checking whether the dynamic forward slices of bug predictions lead to the observed program failure. The last step is bug validation, in which the isolated anomalies are validated by dynamically nullifying their effects and observing if the program still fails. The whole bug prediction, isolation and validation process is fully automated and can be implemented with efficient architectural support. Our experiments with 6 programs and 7 bugs, including a real bug in the gcc 2.95.2 compiler, show that our approach is highly effective at isolating only the relevant anomalies. Compared to state-of-art debugging techniques, our proposed approach pinpoints the defect locations more accurately and presents the user with a much smaller code set to analyze.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "architectural support; automated debugging", } @Article{Montesinos:2009:CSH, author = "Pablo Montesinos and Matthew Hicks and Samuel T. King and Josep Torrellas", title = "{Capo}: a software-hardware interface for practical deterministic multiprocessor replay", journal = j-SIGPLAN, volume = "44", number = "3", pages = "73--84", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508244.1508254", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "While deterministic replay of parallel programs is a powerful technique, current proposals have shortcomings. Specifically, software-based replay systems have high overheads on multiprocessors, while hardware-based proposals focus only on basic hardware-level mechanisms, ignoring the overall replay system. To be practical, hardware-based replay systems need to support an environment with multiple parallel jobs running concurrently -- some being recorded, others being replayed and even others running without recording or replay. Moreover, they need to manage limited-size log buffers.\par This paper addresses these shortcomings by introducing, for the first time, a set of abstractions and a software-hardware interface for practical hardware-assisted replay of multiprocessor systems. The approach, called {\em Capo}, introduces the novel abstraction of the {\em Replay Sphere\/} to separate the responsibilities of the hardware and software components of the replay system. In this paper, we also design and build {\em CapoOne}, a prototype of a deterministic multiprocessor replay system that implements Capo using Linux and simulated DeLorean hardware. Our evaluation of 4-processor executions shows that {\em CapoOne\/} largely records with the efficiency of hardware-based schemes and the flexibility of software-based schemes.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "Capo; CapoOne; deterministic replay; replay sphere", } @Article{Devietti:2009:DDS, author = "Joseph Devietti and Brandon Lucia and Luis Ceze and Mark Oskin", title = "{DMP}: deterministic shared memory multiprocessing", journal = j-SIGPLAN, volume = "44", number = "3", pages = "85--96", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508244.1508255", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Current shared memory multicore and multiprocessor systems are nondeterministic. Each time these systems execute a multithreaded application, even if supplied with the same input, they can produce a different output. This frustrates debugging and limits the ability to properly test multithreaded code, becoming a major stumbling block to the much-needed widespread adoption of parallel programming.\par In this paper we make the case for fully deterministic shared memory multiprocessing (DMP). The behavior of an arbitrary multithreaded program on a DMP system is only a function of its inputs. The core idea is to make inter-thread communication fully deterministic. Previous approaches to coping with nondeterminism in multithreaded programs have focused on replay, a technique useful only for debugging. In contrast, while DMP systems are directly useful for debugging by offering repeatability by default, we argue that parallel programs should execute deterministically in the field as well. This has the potential to make testing more assuring and increase the reliability of deployed multithreaded software. We propose a range of approaches to enforcing determinism and discuss their implementation trade-offs. We show that determinism can be provided with little performance cost using our architecture proposals on future hardware, and that software-only approaches can be utilized on existing systems.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "debugging; determinism; multicores; parallel programming", } @Article{Olszewski:2009:KED, author = "Marek Olszewski and Jason Ansel and Saman Amarasinghe", title = "{Kendo}: efficient deterministic multithreading in software", journal = j-SIGPLAN, volume = "44", number = "3", pages = "97--108", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508244.1508256", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Although chip-multiprocessors have become the industry standard, developing parallel applications that target them remains a daunting task. Non-determinism, inherent in threaded applications, causes significant challenges for parallel programmers by hindering their ability to create parallel applications with repeatable results. As a consequence, parallel applications are significantly harder to debug, test, and maintain than sequential programs.\par This paper introduces Kendo: a new software-only system that provides deterministic multithreading of parallel applications. Kendo enforces a deterministic interleaving of lock acquisitions and specially declared non-protected reads through a novel dynamically load-balanced deterministic scheduling algorithm. The algorithm tracks the progress of each thread using performance counters to construct a deterministic logical time that is used to compute an interleaving of shared data accesses that is both deterministic and provides good load balancing. Kendo can run on today's commodity hardware while incurring only a modest performance cost. Experimental results on the SPLASH-2 applications yield a geometric mean overhead of only 16\% when running on 4 processors. This low overhead makes it possible to benefit from Kendo even after an application is deployed. Programmers can start using Kendo today to program parallel applications that are easier to develop, debug, and test.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "debugging; determinism; deterministic multithreading; multicore; parallel programming", } @Article{Tiwari:2009:CIF, author = "Mohit Tiwari and Hassan M. G. Wassel and Bita Mazloom and Shashidhar Mysore and Frederic T. Chong and Timothy Sherwood", title = "Complete information flow tracking from the gates up", journal = j-SIGPLAN, volume = "44", number = "3", pages = "109--120", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508284.1508258", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "For many mission-critical tasks, tight guarantees on the flow of information are desirable, for example, when handling important cryptographic keys or sensitive financial data. We present a novel architecture capable of tracking all information flow within the machine, including all explicit data transfers and all implicit flows (those subtly devious flows caused by not performing conditional operations). While the problem is impossible to solve in the general case, we have created a machine that avoids the general-purpose programmability that leads to this impossibility result, yet is still programmable enough to handle a variety of critical operations such as public-key encryption and authentication. Through the application of our novel gate-level information flow tracking method, we show how all flows of information can be precisely tracked. From this foundation, we then describe how a class of architectures can be constructed, from the gates up, to completely capture all information flows and we measure the impact of doing so on the hardware implementation, the ISA, and the programmer.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "gate level; information flow tracking; provably sound", } @Article{Tam:2009:RAL, author = "David K. Tam and Reza Azimi and Livio B. Soares and Michael Stumm", title = "{RapidMRC}: approximating {L2} miss rate curves on commodity systems for online optimizations", journal = j-SIGPLAN, volume = "44", number = "3", pages = "121--132", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508244.1508259", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Miss rate curves (MRCs) are useful in a number of contexts. In our research, online L2 cache MRCs enable us to dynamically identify optimal cache sizes when cache-partitioning a shared-cache multicore processor. Obtaining L2 MRCs has generally been assumed to be expensive when done in software and consequently, their usage for online optimizations has been limited. To address these problems and opportunities, we have developed a low-overhead software technique to obtain L2 MRCs online on current processors, exploiting features available in their performance monitoring units so that no changes to the application source code or binaries are required. Our technique, called RapidMRC, requires a single probing period of roughly 221 million processor cycles (147 ms), and subsequently 124 million cycles (83 ms) to process the data. We demonstrate its accuracy by comparing the obtained MRCs to the actual L2 MRCs of 30 applications taken from SPECcpu2006, SPECcpu2000, and SPECjbb2000. We show that RapidMRC can be applied to sizing cache partitions, helping to achieve performance improvements of up to 27\%.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "cache management; cache partitioning; chip multiprocessor; dynamic optimization; hardware performance counters; miss rate curve; multicore processor; online optimization; performance monitoring unit; shared cache; shared cache management", } @Article{Eyerman:2009:PTC, author = "Stijn Eyerman and Lieven Eeckhout", title = "Per-thread cycle accounting in {SMT} processors", journal = j-SIGPLAN, volume = "44", number = "3", pages = "133--144", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508284.1508260", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper proposes a cycle accounting architecture for Simultaneous Multithreading (SMT) processors that estimates the execution times for each of the threads had they been executed alone, while they are running simultaneously on the SMT processor. This is done by accounting each cycle to either a base, miss event or waiting cycle component during multi-threaded execution. Single-threaded alone execution time is then estimated as the sum of the base and miss event components; the waiting cycle component represents the lost cycle count due to SMT execution. The cycle accounting architecture incurs reasonable hardware cost (around 1KB of storage) and estimates single-threaded performance with average prediction errors around 7.2\% for two-program workloads and 11.7\% for four-program workloads.\par The cycle accounting architecture has several important applications to system software and its interaction with SMT hardware. For one, the estimated single-thread alone execution time provides an accurate picture to system software of the actually consumed processor cycles per thread. The alone execution time instead of the total execution time (timeslice) may make system software scheduling policies more effective. Second, a new class of thread-progress aware SMT fetch policies based on per-thread progress indicators enable system software level priorities to be enforced at the hardware level.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "cycle accounting; simultaneous multithreading (SMT); thread-progress aware fetch policy", } @Article{Hofmann:2009:MBM, author = "Owen S. Hofmann and Christopher J. Rossbach and Emmett Witchel", title = "Maximum benefit from a minimal {HTM}", journal = j-SIGPLAN, volume = "44", number = "3", pages = "145--156", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508244.1508262", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A minimal, bounded hardware transactional memory implementation significantly improves synchronization performance when used in an operating system kernel. We add HTM to Linux 2.4, a kernel with a simple, coarse-grained synchronization structure. The transactional Linux 2.4 kernel can improve performance of user programs by as much as 40\% over the non-transactional 2.4 kernel. It closes 68\% of the performance gap with the Linux 2.6 kernel, which has had significant engineering effort applied to improve scalability.\par We then extend our minimal HTM to a fast, unbounded transactional memory with a novel technique for coordinating hardware transactions and software synchronization. Overflowed transactions run in software, with only a minimal coupling between hardware and software systems. There is no performance penalty for overflow rates of less than 1\%. In one instance, at 16 processors and an overflow rate of 4\%, performance degrades from an ideal 4.3x to 3.6x.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "hardware transactional memory", } @Article{Dice:2009:EEC, author = "Dave Dice and Yossi Lev and Mark Moir and Daniel Nussbaum", title = "Early experience with a commercial hardware transactional memory implementation", journal = j-SIGPLAN, volume = "44", number = "3", pages = "157--168", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508284.1508263", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We report on our experience with the hardware transactional memory (HTM) feature of two pre-production revisions of a new commercial multicore processor. Our experience includes a number of promising results using HTM to improve performance in a variety of contexts, and also identifies some ways in which the feature could be improved to make it even better. We give detailed accounts of our experiences, sharing techniques we used to achieve the results we have, as well as describing challenges we faced in doing so.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "hardware; synchronization; transactional memory", } @Article{Wells:2009:MMM, author = "Philip M. Wells and Koushik Chakraborty and Gurindar S. Sohi", title = "Mixed-mode multicore reliability", journal = j-SIGPLAN, volume = "44", number = "3", pages = "169--180", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508244.1508265", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Future processors are expected to observe increasing rates of hardware faults. Using Dual-Modular Redundancy (DMR), two cores of a multicore can be loosely coupled to redundantly execute a single software thread, providing very high coverage from many difference sources of faults. This reliability, however, comes at a high price in terms of per-thread IPC and overall system throughput.\par We make the observation that a user may want to run both applications requiring high reliability, such as financial software, and more fault tolerant applications requiring high performance, such as media or web software, on the same machine at the same time. Yet a traditional DMR system must fully operate in redundant mode whenever any application requires high reliability.\par This paper proposes a Mixed-Mode Multicore (MMM), which enables most applications, including the system software, to run with high reliability in DMR mode, while applications that need high performance can avoid the penalty of DMR. Though conceptually simple, two key challenges arise: 1) care must be taken to protect reliable applications from any faults occurring to applications running in high performance mode, and 2) the desire to execute additional independent software threads for a performance application complicates the scheduling of computation to cores. After solving these issues, an MMM is shown to improve overall system performance, compared to a traditional DMR system, by approximately 2X when one reliable and one performance application are concurrently executing.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dual-modular redundancy; multicore", } @Article{Rajamani:2009:IDE, author = "Sriram Rajamani and G. Ramalingam and Venkatesh Prasad Ranganath and Kapil Vaswani", title = "{ISOLATOR}: dynamically ensuring isolation in concurrent programs", journal = j-SIGPLAN, volume = "44", number = "3", pages = "181--192", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508284.1508266", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In this paper, we focus on concurrent programs that use locks to achieve isolation of data accessed by critical sections of code. We present ISOLATOR, an algorithm that guarantees isolation for well-behaved threads of a program that obey a locking discipline even in the presence of ill-behaved threads that disobey the locking discipline. ISOLATOR uses code instrumentation, data replication, and virtual memory protection to detect isolation violations and delays ill-behaved threads to ensure isolation. Our instrumentation scheme requires access only to the code of well-behaved threads. We have evaluated ISOLATOR on several benchmark programs and found that ISOLATOR can ensure isolation with reasonable runtime overheads. In addition, we present three general desiderata --- safety, isolation, and permissiveness --- for any scheme that attempts to ensure isolation, and formally prove that ISOLATOR satisfies all of these desiderata.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency; isolation; memory protection", } @Article{Tucek:2009:EOV, author = "Joseph Tucek and Weiwei Xiong and Yuanyuan Zhou", title = "Efficient online validation with delta execution", journal = j-SIGPLAN, volume = "44", number = "3", pages = "193--204", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508284.1508267", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Software systems are constantly changing. Patches to fix bugs and patches to add features are all too common. Every change risks breaking a previously working system. Hence administrators loathe change, and are willing to delay even critical security patches until after fully validating their correctness. Compared to off-line validation, on-line validation has clear advantages since it tests against real life workloads. Yet unfortunately it imposes restrictive overheads as it requires running the old and new versions side-by-side. Moreover, due to spurious differences (e.g. event timing, random number generation, and thread interleavings), it is difficult to compare the two for validation.\par To allow more effective on-line patch validation, we propose a new mechanism, called delta execution, that is based on the observation that most patches are small. Delta execution merges the two side-by-side executions for most of the time and splits only when necessary, such as when they access different data or execute different code. This allows us to perform on-line validation not only with lower overhead but also with greatly reduced spurious differences, allowing us to effectively validate changes.\par We first validate the feasibility of our idea by studying the characteristics of 240 patches from 4 server programs; our examination shows that 77\% of the changes should not be expected to cause large changes and are thereby feasible for Delta execution. We then implemented Delta execution using dynamic instrumentation. Using real world patches from 7 server applications and 3 other programs, we compared our implementation of Delta execution against a traditional side-by-side on-line validation. Delta execution outperformed traditional validation by up to 128\%; further, for 3 of the changes, spurious differences caused the traditional validation to fail completely while Delta execution succeeded. This demonstrates that Delta execution can allow administrators to use on-line validation to confidently ensure the correctness of the changes they apply.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "delta execution; patch validation; testing", } @Article{Meisner:2009:PES, author = "David Meisner and Brian T. Gold and Thomas F. Wenisch", title = "{PowerNap}: eliminating server idle power", journal = j-SIGPLAN, volume = "44", number = "3", pages = "205--216", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508284.1508269", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Data center power consumption is growing to unprecedented levels: the EPA estimates U.S. data centers will consume 100 billion kilowatt hours annually by 2011. Much of this energy is wasted in idle systems: in typical deployments, server utilization is below 30\%, but idle servers still consume 60\% of their peak power draw. Typical idle periods though frequent--last seconds or less, confounding simple energy-conservation approaches.\par In this paper, we propose PowerNap, an energy-conservation approach where the entire system transitions rapidly between a high-performance active state and a near-zero-power idle state in response to instantaneous load. Rather than requiring fine-grained power-performance states and complex load-proportional operation from each system component, PowerNap instead calls for minimizing idle power and transition time, which are simpler optimization goals. Based on the PowerNap concept, we develop requirements and outline mechanisms to eliminate idle power waste in enterprise blade servers. Because PowerNap operates in low-efficiency regions of current blade center power supplies, we introduce the Redundant Array for Inexpensive Load Sharing (RAILS), a power provisioning approach that provides high conversion efficiency across the entire range of PowerNap's power demands. Using utilization traces collected from enterprise-scale commercial deployments, we demonstrate that, together, PowerNap and RAILS reduce average server power consumption by 74\%.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "power management; servers", } @Article{Caulfield:2009:GUF, author = "Adrian M. Caulfield and Laura M. Grupp and Steven Swanson", title = "{Gordon}: using flash memory to build fast, power-efficient clusters for data-intensive applications", journal = j-SIGPLAN, volume = "44", number = "3", pages = "217--228", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508284.1508270", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "As our society becomes more information-driven, we have begun to amass data at an astounding and accelerating rate. At the same time, power concerns have made it difficult to bring the necessary processing power to bear on querying, processing, and understanding this data. We describe Gordon, a system architecture for data-centric applications that combines low-power processors, flash memory, and data-centric programming systems to improve performance for data-centric applications while reducing power consumption. The paper presents an exhaustive analysis of the design space of Gordon systems, focusing on the trade-offs between power, energy, and performance that Gordon must make. It analyzes the impact of flash-storage and the Gordon architecture on the performance and power efficiency of data-centric applications. It also describes a novel flash translation layer tailored to data intensive workloads and large flash storage arrays. Our data show that, using technologies available in the near future, Gordon systems can out-perform disk-based clusters by 1.5\times and deliver up to 2.5\times more performance per Watt.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "cluster architecture; data centric; flash memory; solid-state storage", } @Article{Gupta:2009:DFT, author = "Aayush Gupta and Youngjae Kim and Bhuvan Urgaonkar", title = "{DFTL}: a flash translation layer employing demand-based selective caching of page-level address mappings", journal = j-SIGPLAN, volume = "44", number = "3", pages = "229--240", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508244.1508271", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Recent technological advances in the development of flash-memory based devices have consolidated their leadership position as the preferred storage media in the embedded systems market and opened new vistas for deployment in enterprise-scale storage systems. Unlike hard disks, flash devices are free from any mechanical moving parts, have no seek or rotational delays and consume lower power. However, the internal idiosyncrasies of flash technology make its performance highly dependent on workload characteristics. The poor performance of random writes has been a cause of major concern, which needs to be addressed to better utilize the potential of flash in enterprise-scale environments. We examine one of the important causes of this poor performance: the design of the Flash Translation Layer (FTL), which performs the virtual-to-physical address translations and hides the erase-before-write characteristics of flash. We propose a complete paradigm shift in the design of the core FTL engine from the existing techniques with our Demand-based Flash Translation Layer (DFTL), which selectively caches page-level address mappings. We develop a flash simulation framework called FlashSim. Our experimental evaluation with realistic enterprise-scale workloads endorses the utility of DFTL in enterprise-scale storage systems by demonstrating: (i) improved performance, (ii) reduced garbage collection overhead and (iii) better overload behavior compared to state-of-the-art FTL schemes. For example, a predominantly random-write dominant I/O trace from an OLTP application running at a large financial institution shows a 78\% improvement in average response time (due to a 3-fold reduction in operations of the garbage collector), compared to a state-of-the-art FTL scheme. Even for the well-known read-dominant TPC-H benchmark, for which DFTL introduces additional overheads, we improve system response time by 56\%.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "flash management; flash translation layer; storage system", } @Article{Aleen:2009:CAS, author = "Farhana Aleen and Nathan Clark", title = "Commutativity analysis for software parallelization: letting program transformations see the big picture", journal = j-SIGPLAN, volume = "44", number = "3", pages = "241--252", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508284.1508273", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Extracting performance from many-core architectures requires software engineers to create multi-threaded applications, which significantly complicates the already daunting task of software development. One solution to this problem is automatic compile-time parallelization, which can ease the burden on software developers in many situations. Clearly, automatic parallelization in its present form is not suitable for many application domains and new compiler analyses are needed address its shortcomings.\par In this paper, we present one such analysis: a new approach for detecting commutative functions. Commutative functions are sections of code that can be executed in any order without affecting the outcome of the application, e.g., inserting elements into a set. Previous research on this topic had one significant limitation, in that the results of a commutative functions must produce identical memory layouts. This prevented previous techniques from detecting functions like malloc, which may return different pointers depending on the order in which it is called, but these differing results do not affect the overall output of the application. Our new commutativity analysis correctly identify these situations to better facilitate automatic parallelization. We demonstrate that this analysis can automatically extract significant amounts of parallelism from many applications, and where it is ineffective it can provide software developers a useful list of functions that may be commutative provided semantic program changes that are not automatable.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "automatic software parallelization; commutative functions; random interpretation", } @Article{Suleman:2009:ACS, author = "M. Aater Suleman and Onur Mutlu and Moinuddin K. Qureshi and Yale N. Patt", title = "Accelerating critical section execution with asymmetric multi-core architectures", journal = j-SIGPLAN, volume = "44", number = "3", pages = "253--264", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508244.1508274", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "To improve the performance of a single application on Chip Multiprocessors (CMPs), the application must be split into threads which execute concurrently on multiple cores. In multi-threaded applications, critical sections are used to ensure that only one thread accesses shared data at any given time. Critical sections can serialize the execution of threads, which significantly reduces performance and scalability.\par This paper proposes Accelerated Critical Sections (ACS), a technique that leverages the high-performance core(s) of an Asymmetric Chip Multiprocessor (ACMP) to accelerate the execution of critical sections. In ACS, selected critical sections are executed by a high-performance core, which can execute the critical section faster than the other, smaller cores. As a result, ACS reduces serialization: it lowers the likelihood of threads waiting for a critical section to finish. Our evaluation on a set of 12 critical-section-intensive workloads shows that ACS reduces the average execution time by 34\% compared to an equal-area 32T-core symmetric CMP and by 23\% compared to an equal-area ACMP. Moreover, for 7 out of the 12 workloads, ACS improves scalability by increasing the number of threads at which performance saturates.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "cmp; critical sections; heterogeneous cores; locks; multi-core; parallel programming", } @Article{Mytkowicz:2009:PWD, author = "Todd Mytkowicz and Amer Diwan and Matthias Hauswirth and Peter F. Sweeney", title = "Producing wrong data without doing anything obviously wrong!", journal = j-SIGPLAN, volume = "44", number = "3", pages = "265--276", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508284.1508275", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper presents a surprising result: changing a seemingly innocuous aspect of an experimental setup can cause a systems researcher to draw wrong conclusions from an experiment. What appears to be an innocuous aspect in the experimental setup may in fact introduce a significant bias in an evaluation. This phenomenon is called measurement bias in the natural and social sciences.\par Our results demonstrate that measurement bias is significant and commonplace in computer system evaluation. By significant we mean that measurement bias can lead to a performance analysis that either over-states an effect or even yields an incorrect conclusion. By commonplace we mean that measurement bias occurs in all architectures that we tried (Pentium 4, Core 2, and m5 O3CPU), both compilers that we tried (gcc and Intel's C compiler), and most of the SPEC CPU2006 C programs. Thus, we cannot ignore measurement bias. Nevertheless, in a literature survey of 133 recent papers from ASPLOS, PACT, PLDI, and CGO, we determined that none of the papers with experimental results adequately consider measurement bias.\par Inspired by similar problems and their solutions in other sciences, we describe and demonstrate two methods, one for detecting (causal analysis) and one for avoiding (setup randomization) measurement bias.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bias; measurement; performance", } @Article{Bond:2009:LP, author = "Michael D. Bond and Kathryn S. McKinley", title = "Leak pruning", journal = j-SIGPLAN, volume = "44", number = "3", pages = "277--288", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508244.1508277", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Managed languages improve programmer productivity with type safety and garbage collection, which eliminate memory errors such as dangling pointers, double frees, and buffer overflows. However, because garbage collection uses reachability to over-approximate live objects, programs may still leak memory if programmers forget to eliminate the last reference to an object that will not be used again. Leaks slow programs by increasing collector workload and frequency. Growing leaks eventually crash programs.\par This paper introduces leak pruning, which keeps programs running by predicting and reclaiming leaked objects at run time. It predicts dead objects and reclaims them based on observing data structure usage patterns. Leak pruning preserves semantics because it waits for heap exhaustion before reclaiming objects and poisons references to objects it reclaims. If the program later tries to access a poisoned reference, the virtual machine (VM) throws an error. We show leak pruning has low overhead in a Java VM and evaluate it on 10 leaking programs. Leak pruning does not help two programs, executes five substantial programs 1.6-81X longer, and executes three programs, including a leak in Eclipse, for at least 24 hours. In the worst case, leak pruning defers fatal errors. In the best case, it keeps leaky programs running with preserved semantics and consistent throughput.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "garbage collection; leak tolerance; managed languages; memory leaks", } @Article{Wegiel:2009:DPC, author = "Michal Wegiel and Chandra Krintz", title = "Dynamic prediction of collection yield for managed runtimes", journal = j-SIGPLAN, volume = "44", number = "3", pages = "289--300", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508244.1508278", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The growth in complexity of modern systems makes it increasingly difficult to extract high-performance. The software stacks for such systems typically consist of multiple layers and include managed runtime environments (MREs). In this paper, we investigate techniques to improve cooperation between these layers and the hardware to increase the efficacy of automatic memory management in MREs.\par General-purpose MREs commonly implement parallel and/or concurrent garbage collection and employ compaction to eliminate heap fragmentation. Moreover, most systems trigger collection based on the amount of heap a program uses. Our analysis shows that in many cases this strategy leads to ineffective collections that are unable to reclaim sufficient space to justify the incurred cost. To avoid such collections, we exploit the observation that dead objects tend to cluster together and form large, never-referenced, regions in the address space that correlate well with virtual pages that have not recently been referenced by the application. We leverage this correlation to design a new, simple and light-weight, yield predictor that estimates the amount of reclaimable space in the heap using hardware page reference bits. Our predictor allows MREs to avoid low-yield collections and thereby improve resource management.\par We integrate this predictor into three state-of-the-art parallel compactors, implemented in the HotSpot JVM, that represent distinct canonical heap layouts. Our empirical evaluation, based on standard Java benchmarks and open-source applications, indicates that inexpensive and accurate yield prediction can improve performance significantly.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "clustering; concurrent; garbage collection; operating system; parallel; reference bits; yield prediction", } @Article{Menon:2009:TSA, author = "Aravind Menon and Simon Schubert and Willy Zwaenepoel", title = "{TwinDrivers}: semi-automatic derivation of fast and safe hypervisor network drivers from guest {OS} drivers", journal = j-SIGPLAN, volume = "44", number = "3", pages = "301--312", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508244.1508279", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In a virtualized environment, device drivers are often run inside a virtual machine (VM) rather than in the hypervisor, for reasons of safety and reduction in software engineering effort. Unfortunately, this approach results in poor performance for I/O-intensive devices such as network cards. The alternative approach of running device drivers directly in the hypervisor yields better performance, but results in the loss of safety guarantees for the hypervisor and incurs additional software engineering costs.\par In this paper we present TwinDrivers, a framework which allows us to semi-automatically create safe and efficient hypervisor drivers from guest OS drivers. The hypervisor driver runs directly in the hypervisor, but its data resides completely in the driver VM address space. A Software Virtual Memory mechanism allows the driver to access its VM data efficiently from the hypervisor running in any guest context, and also protects the hypervisor from invalid memory accesses from the driver. An upcall mechanism allows the hypervisor to largely reuse the driver support infrastructure present in the VM. The TwinDriver system thus combines most of the performance benefits of hypervisor-based driver approaches with the safety and software engineering benefits of VM-based driver approaches.\par Using the TwinDrivers hypervisor driver, we are able to improve the guest domain networking throughput in Xen by a factor of 2.4 for transmit workloads, and 2.1 for receive workloads, both in CPU-scaled units, and achieve close to 64-67 of native Linux throughput.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "virtualization", } @Article{Burcea:2009:PBV, author = "Ioana Burcea and Andreas Moshovos", title = "{Phantom-BTB}: a virtualized branch target buffer design", journal = j-SIGPLAN, volume = "44", number = "3", pages = "313--324", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508244.1508281", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Modern processors use branch target buffers (BTBs) to predict the target address of branches such that they can fetch ahead in the instruction stream increasing concurrency and performance. Ideally, BTBs would be sufficiently large to capture the entire working set of the application and sufficiently small for fast access and practical on-chip dedicated storage. Depending on the application, these requirements are at odds.\par This work introduces a BTB design that accommodates large instruction footprints without dedicating expensive onchip resources. In the proposed Phantom-BTB (PBTB) design, a conventional BTB is augmented with a virtual table that collects branch target information as the application runs. The virtual table does not have fixed dedicated storage. Instead, it is transparently allocated, on demand, in the on-chip caches, at cache line granularity. The entries in the virtual table are proactively prefetched and installed in the dedicated conventional BTB, thus, increasing its perceived capacity. Experimental results with commercial workloads under full-system simulation demonstrate that PBTB improves IPC performance over a 1K-entry BTB by 6.9\% on average and up to 12.7\%, with a storage overhead of only 8\%. Overall, the virtualized design performs within 1\% of a conventional 4K-entry, single-cycle access BTB, while the dedicated storage is 3.6 times smaller.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "branch target buffer; predictor metadata prefetching; predictor virtualization", } @Article{Ramani:2009:SSF, author = "Karthik Ramani and Christiaan P. Gribble and Al Davis", title = "{StreamRay}: a stream filtering architecture for coherent ray tracing", journal = j-SIGPLAN, volume = "44", number = "3", pages = "325--336", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508244.1508282", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The wide availability of commodity graphics processors has made real-time graphics an intrinsic component of the human/computer interface. These graphics cores accelerate the z-buffer algorithm and provide a highly interactive experience at a relatively low cost. However, many applications in entertainment, science, and industry require high quality lighting effects such as accurate shadows, reflection, and refraction. These effects can be difficult to achieve with z-buffer algorithms but are straightforward to implement using ray tracing. Although ray tracing is computationally more complex, the algorithm exhibits excellent scaling and parallelism properties. Nevertheless, ray tracing memory access patterns are difficult to predict and the parallelism speedup promise is therefore hard to achieve.\par This paper highlights a novel approach to ray tracing based on stream filtering and presents StreamRay, a multicore wide SIMD microarchitecture that delivers interactive frame rates of 15-32 frames/second for scenes of high geometric complexity and exhibits high utilization for SIMD widths ranging from eight to 16 elements. StreamRay consists of two main components: the ray engine, which is responsible for stream assembly and employs address generation units that generate addresses to form large SIMD vectors, and the filter engine, which implements the ray tracing operations with programmable accelerators. Results demonstrate that separating address and data processing reduces data movement and resource contention. Performance improves by 56\% while simultaneously providing 11.63\% power savings per accelerator core compared to a design which does not use separate resources for address and data computations.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "graphics processors; interactive rendering; ray tracing; wide SIMD architectures", } @Article{Cameron:2009:ASS, author = "Robert D. Cameron and Dan Lin", title = "Architectural support for {SWAR} text processing with parallel bit streams: the inductive doubling principle", journal = j-SIGPLAN, volume = "44", number = "3", pages = "337--348", month = mar, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1508244.1508283", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:39:26 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Parallel bit stream algorithms exploit the SWAR (SIMD within a register) capabilities of commodity processors in high-performance text processing applications such as UTF-8 to UTF-16 transcoding, XML parsing, string search and regular expression matching. Direct architectural support for these algorithms in future SWAR instruction sets could further increase performance as well as simplifying the programming task. A set of simple SWAR instruction set extensions are proposed for this purpose based on the principle of systematic support for inductive doubling as an algorithmic technique. These extensions are shown to significantly reduce instruction count in core parallel bit stream algorithms, often providing a 3X or better improvement. The extensions are also shown to be useful for SWAR programming in other application areas, including providing a systematic treatment for horizontal operations. An implementation model for these extensions involves relatively simple circuitry added to the operand fetch components in a pipelined processor.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "inductive doubling; parallel bit streams; SWAR", } @Article{Blelloch:2009:PT, author = "Guy E. Blelloch", title = "Parallel thinking", journal = j-SIGPLAN, volume = "44", number = "4", pages = "1--2", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1504176.1504177", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Assuming that the multicore revolution plays out the way the microprocessor industry expects, it seems that within a decade most programming will involve parallelism at some level. One needs to ask how this affects the way we teach computer science, or even how we have people think about computation. With regards to teaching there seem to be three basic choices: (1) we only train a small number of experts in parallel computation who develop a collection of libraries, and everyone else just uses them; (2) we leave our core curriculum pretty much as is, but add some advanced courses on parallelism or perhaps tack on a few lectures at the end of existing courses; or (3) we start teaching parallelism from the start and embed it throughout the curriculum with the idea of getting students to think about parallelism as the most natural form of computation and sequential computation as a special case.\par This talk will examine some of the implications of the third option. It will argue that thinking about parallelism, when treated in an appropriate way, might be as easy or easier that thinking sequentially. A key prerequisite, however, is to identify what the core ideas in parallelism are and how they might be layered and integrated with existing concepts. Another more difficult issue is how to cleanly integrate these ideas among courses. After all much of the success of sequential computation follows from the concept of a random access machine and its ability to serve as a simple, albeit imperfect, interface between programming languages, algorithm analysis, and hardware design. The talk will go through an initial list of some core ideas in parallelism, and an approach to integrating these ideas between parallel algorithms, programming languages, and, to some extent, hardware. This requires, however, moving away from the concept of a machine model as a interface for thinking about computation.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "algorithms; education; parallelism", } @Article{Kulkarni:2009:HMP, author = "Milind Kulkarni and Martin Burtscher and Rajeshkar Inkulu and Keshav Pingali and Calin Cas{\c{c}}aval", title = "How much parallelism is there in irregular applications?", journal = j-SIGPLAN, volume = "44", number = "4", pages = "3--14", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594835.1504181", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Irregular programs are programs organized around pointer-based data structures such as trees and graphs. Recent investigations by the Galois project have shown that many irregular programs have a generalized form of data-parallelism called {\em amorphous data-parallelism}. However, in many programs, amorphous data-parallelism cannot be uncovered using static techniques, and its exploitation requires runtime strategies such as optimistic parallel execution. This raises a natural question: how much amorphous data-parallelism actually exists in irregular programs?\par In this paper, we describe the design and implementation of a tool called ParaMeter that produces {\em parallelism profiles\/} for irregular programs. Parallelism profiles are an abstract measure of the amount of amorphous data-parallelism at different points in the execution of an algorithm, independent of implementation-dependent details such as the number of cores, cache sizes, load-balancing, etc. ParaMeter can also generate constrained parallelism profiles for a fixed number of cores. We show parallelism profiles for seven irregular applications, and explain how these profiles provide insight into the behavior of these applications.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "optimistic parallelism; parallelism profiles; profiling", } @Article{Kang:2009:ETM, author = "Seunghwa Kang and David A. Bader", title = "An efficient transactional memory algorithm for computing minimum spanning forest of sparse graphs", journal = j-SIGPLAN, volume = "44", number = "4", pages = "15--24", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594835.1504182", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Due to power wall, memory wall, and ILP wall, we are facing the end of ever increasing single-threaded performance. For this reason, multicore and manycore processors are arising as a new paradigm to pursue. However, to fully exploit all the cores in a chip, parallel programming is often required, and the complexity of parallel programming raises a significant concern. Data synchronization is a major source of this programming complexity, and Transactional Memory is proposed to reduce the difficulty caused by data synchronization requirements, while providing high scalability and low performance overhead.\par The previous literature on Transactional Memory mostly focuses on architectural designs. Its impact on algorithms and applications has not yet been studied thoroughly. In this paper, we investigate Transactional Memory from the algorithm designer's perspective. This paper presents an algorithmic model to assist in the design of efficient Transactional Memory algorithms and a novel Transactional Memory algorithm for computing a minimum spanning forest of sparse graphs. We emphasize multiple Transactional Memory related design issues in presenting our algorithm. We also provide experimental results on an existing software Transactional Memory system. Our algorithm demonstrates excellent scalability in the experiments, but at the same time, the experimental results reveal the clear limitation of software Transactional Memory due to its high performance overhead. Based on our experience, we highlight the necessity of efficient hardware support for Transactional Memory to realize the potential of the technology.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "minimum spanning forest; minimum spanning tree; transactional memory", } @Article{Zyulkyarov:2009:AQU, author = "Ferad Zyulkyarov and Vladimir Gajinov and Osman S. Unsal and Adri{\'a}n Cristal and Eduard Ayguad{\'e} and Tim Harris and Mateo Valero", title = "Atomic quake: using transactional memory in an interactive multiplayer game server", journal = j-SIGPLAN, volume = "44", number = "4", pages = "25--34", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594835.1504183", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Transactional Memory (TM) is being studied widely as a new technique for synchronizing concurrent accesses to shared memory data structures for use in multi-core systems. Much of the initial work on TM has been evaluated using microbenchmarks and application kernels; it is not clear whether conclusions drawn from these workloads will apply to larger systems. In this work we make the first attempt to develop a large, complex, application that uses TM for all of its synchronization. We describe how we have taken an existing parallel implementation of the Quake game server and restructured it to use transactions. In doing so we have encountered examples where transactions simplify the structure of the program. We have also encountered cases where using transactions occludes the structure of the existing code. Compared with existing TM benchmarks, our workload exhibits non-block-structured transactions within which there are I/O operations and system call invocations. There are long and short running transactions (200-1.3M cycles) with small and large read and write sets (a few bytes to 1.5MB). There are nested transactions reaching up to 9 levels at runtime. There are examples where error handling and recovery occurs inside transactions. There are also examples where data changes between being accessed transactionally and accessed non-transactionally. However, we did not see examples where the kind of access to one piece of data depended on the value of another.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "benchmark; quake; transactional memory; workload", } @Article{Yau:2009:AAM, author = "Siu Yau and Vijay Karamcheti and Denis Zorin and Kostadin Damevski and Steven G. Parker", title = "Application-aware management of parallel simulation collections", journal = j-SIGPLAN, volume = "44", number = "4", pages = "35--44", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594835.1504184", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper presents a system deployed on parallel clusters to manage a collection of parallel simulations that make up a computational study. It explores how such a system can extend traditional parallel job scheduling and resource allocation techniques to incorporate knowledge specific to the study.\par Using a UINTAH-based helium gas simulation code (ARCHES) and the SimX system for multi-experiment computational studies, this paper demonstrates that, by using application-specific knowledge in resource allocation and scheduling decisions, one can reduce the run time of a computational study from over 20 hours to under 4.5 hours on a 32-processor cluster, and from almost 11 hours to just over 3.5 hours on a 64-processor cluster.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "high-throughput computing; parallel system", } @Article{Michael:2009:IWS, author = "Maged M. Michael and Martin T. Vechev and Vijay A. Saraswat", title = "Idempotent work stealing", journal = j-SIGPLAN, volume = "44", number = "4", pages = "45--54", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1504176.1504186", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Load balancing is a technique which allows efficient parallelization of irregular workloads, and a key component of many applications and parallelizing runtimes. Work-stealing is a popular technique for implementing load balancing, where each parallel thread maintains its own work set of items and occasionally steals items from the sets of other threads.\par The conventional semantics of work stealing guarantee that each inserted task is eventually extracted exactly once. However, correctness of a wide class of applications allows for relaxed semantics, because either: i) the application already explicitly checks that no work is repeated or ii) the application can tolerate repeated work.\par In this paper, we introduce {\em idempotent work stealing}, and present several new algorithms that exploit the relaxed semantics to deliver better performance. The semantics of the new algorithms guarantee that each inserted task is eventually extracted {\em at least\/} once-instead of {\em exactly\/} once.\par On mainstream processors, algorithms for conventional work stealing require special atomic instructions or store-load memory ordering fence instructions in the owner's critical path operations. In general, these instructions are substantially slower than regular memory access instructions. By exploiting the relaxed semantics, our algorithms avoid these instructions in the owner's operations.\par We evaluated our algorithms using common graph problems and micro-benchmarks and compared them to well-known conventional work stealing algorithms, the THE Cilk and Chase-Lev algorithms. We found that our best algorithm (with LIFO extraction) outperforms existing algorithms in nearly all cases, and often by significant margins.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "atomic; memory barrier; memory fence; work stealing", } @Article{Hiraishi:2009:BBL, author = "Tasuku Hiraishi and Masahiro Yasugi and Seiji Umatani and Taiichi Yuasa", title = "Backtracking-based load balancing", journal = j-SIGPLAN, volume = "44", number = "4", pages = "55--64", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594835.1504187", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "High-productivity languages for parallel computing become more important as parallel environments including multicores become more common. Cilk is such a language. It provides good load balancing for many applications including irregular ones; that is, it keeps all workers busy by creating plenty of 'logical' threads and adopting the oldest-first work stealing strategy. This paper proposes a 'logical thread'-free framework called {\em Tascell}, which achieves a higher performance and supports a wider range of parallel environments including clusters without loss of productivity. A Tascell worker spawns a 'real' task only when requested by another idle worker. The worker performs the spawning by temporarily 'backtracking' and restoring its oldest task-spawnable state. Our approach eliminates the cost of spawning/managing logical threads. It also promotes the reuse of workspaces and improves the locality of reference since it does not need to prepare a workspace for each concurrently runnable logical thread. Furthermore, Tascell enables elegant and highly-efficient backtrack search algorithms with delayed workspace copying. For instance, our 16-queens problem solver is 1.86 times faster than Cilk on a system with two dual-core processors. Our approach also enables a single program to run in both shared and distributed memory environments with reasonable efficiency and scalability.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "backtrack search; backtracking; load balancing; parallel computing", } @Article{Li:2009:ESM, author = "Tong Li and Dan Baumberger and Scott Hahn", title = "Efficient and scalable multiprocessor fair scheduling using distributed weighted round-robin", journal = j-SIGPLAN, volume = "44", number = "4", pages = "65--74", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594835.1504188", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Fairness is an essential requirement of any operating system scheduler. Unfortunately, existing fair scheduling algorithms are either inaccurate or inefficient and non-scalable for multiprocessors. This problem is becoming increasingly severe as the hardware industry continues to produce larger scale multi-core processors. This paper presents {\em Distributed Weighted Round-Robin\/} (DWRR), a new scheduling algorithm that solves this problem. With distributed thread queues and small additional overhead to the underlying scheduler, DWRR achieves high efficiency and scalability. Besides conventional priorities, DWRR enables users to specify weights to threads and achieve accurate proportional CPU sharing with constant error bounds. DWRR operates in concert with existing scheduler policies targeting other system attributes, such as latency and throughput. As a result, it provides a practical solution for various production OSes. To demonstrate the versatility of DWRR,we have implemented it in Linux kernels 2.6.22.15 and 2.6.24, which represent two vastly different scheduler designs. Our evaluation shows that DWRR achieves accurate proportional fairness and high performance for a diverse set of workloads.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "distributed weighted round-robin; fair scheduling; lag; multiprocessor", } @Article{Wang:2009:MPM, author = "Zheng Wang and Michael F. P. O'Boyle", title = "Mapping parallelism to multi-cores: a machine learning based approach", journal = j-SIGPLAN, volume = "44", number = "4", pages = "75--84", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1504176.1504189", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The efficient mapping of program parallelism to multi-core processors is highly dependent on the underlying architecture. This paper proposes a portable and automatic compiler-based approach to mapping such parallelism using machine learning. It develops two predictors: a data sensitive and a data insensitive predictor to select the best mapping for parallel programs. They predict the number of threads and the scheduling policy for any given program using a model learnt off-line. By using low-cost profiling runs, they predict the mapping for a new unseen program across multiple input data sets. We evaluate our approach by selecting parallelism mapping configurations for OpenMP programs on two representative but different multi-core platforms (the Intel Xeon and the Cell processors). Performance of our technique is stable across programs and architectures. On average, it delivers above 96\% performance of the maximum available on both platforms. It achieve, on average, a 37\% (up to 17.5 {\em times\/}) performance improvement over the OpenMP runtime default scheme on the Cell platform. Compared to two recent prediction models, our predictors achieve better performance with a significant lower profiling cost.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "artificial neural networks; compiler optimization; machine learning; performance modeling; support vector machine", } @Article{Allen:2009:SSD, author = "Matthew D. Allen and Srinath Sridharan and Gurindar S. Sohi", title = "Serialization sets: a dynamic dependence-based parallel execution model", journal = j-SIGPLAN, volume = "44", number = "4", pages = "85--96", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1504176.1504190", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper proposes a new parallel execution model where programmers augment a sequential program with pieces of code called {\em serializers\/} that dynamically map computational operations into {\em serialization sets\/} of dependent operations. A runtime system executes operations in the same serialization set in program order, and may concurrently execute operations in different sets. Because serialization sets establish a logical ordering on all operations, the resulting parallel execution is predictable and deterministic.\par We describe the API and design of Prometheus, a C++ library that implements the serialization set abstraction through compile-time template instantiation and a runtime support library. We evaluate a set of parallel programs running on the x86\_64 and SPARC-V9 instruction sets and study their performance on multicore, symmetric multiprocessor, and ccNUMA parallel machines. By contrast with conventional parallel execution models, we find that Prometheus programs are significantly easier to write, test, and debug, and their parallel execution achieves comparable performance.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "parallel computing; runtime system; serialization sets; serializer", } @Article{Hill:2009:OBS, author = "Mark D. Hill", title = "Opportunities beyond single-core microprocessors", journal = j-SIGPLAN, volume = "44", number = "4", pages = "97--97", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1504176.1504192", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Designers of future hardware and software face many challenges. Performance scaling of sequential cores is not what it once was. The best architectures for many cores, or equivalents, are not clear. Software, especially on clients, does not make abundant parallelism clear. Computer use and disposal is not so green. Smarter phones must not burn your pocket. Transistors and wires are getting less reliable. CMOS may run out of steam for technical or economic reasons. And the list goes on.\par But in challenges, optimists find opportunities. This panel will be about opportunities. I have invited experts with experience in academia, industry, and government to discuss the great possibilities ahead. I have asked them to identify two or three topics, where, at most, one is part of their current work. Then we will have a discussion.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Patt:2009:MCD, author = "Yale N. Patt", title = "Multi-core demands multi-interfaces", journal = j-SIGPLAN, volume = "44", number = "4", pages = "99--100", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1504176.1504178", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The challenge for the microarchitect has always been (with very few notable domain-specific exceptions) how to translate the continually increasing processing power provided by Moore's Law into increased performance, or more recently into similar performance at lower cost in energy. The mechanisms in the past (almost entirely) kept the interface intact and used the increase in transistor count to improve the performance of the microarchitecture of the uniprocessor. When that became too hard, we went to larger and larger on-chip caches. Both are consistent with the notion that 'abstractions are good.' At some point, we got overwhelmed with too many transistors; predictably, multi-core was born. As the transistor count continues to skyrocket, we are faced with two questions: what should be on the chip, and how should the software interface to it. If we expect to continue to take advantage of what process technology is providing, I think we need to do several things, starting with rethinking the notion of abstraction and providing multiple interfaces for the programmer.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "design; multicore; performance; software interface", } @Article{Lee:2009:OGC, author = "Seyong Lee and Seung-Jai Min and Rudolf Eigenmann", title = "{OpenMP} to {GPGPU}: a compiler framework for automatic translation and optimization", journal = j-SIGPLAN, volume = "44", number = "4", pages = "101--110", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1504176.1504194", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "GPGPUs have recently emerged as powerful vehicles for general-purpose high-performance computing. Although a new Compute Unified Device Architecture (CUDA) programming model from NVIDIA offers improved programmability for general computing, programming GPGPUs is still complex and error-prone. This paper presents a compiler framework for automatic source-to-source translation of standard OpenMP applications into CUDA-based GPGPU applications. The goal of this translation is to further improve programmability and make existing OpenMP applications amenable to execution on GPGPUs. In this paper, we have identified several key transformation techniques, which enable efficient GPU global memory access, to achieve high performance. Experimental results from two important kernels (JACOBI and SPMUL) and two NAS OpenMP Parallel Benchmarks (EP and CG) show that the described translator and compile-time optimizations work well on both regular and irregular applications, leading to performance improvements of up to 50X over the unoptimized translation (up to 328X over serial).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "automatic translation; compiler optimization; CUDA; GPU; OpenMP", } @Article{Yang:2009:CGC, author = "Xuejun Yang and Li Wang and Jingling Xue and Yu Deng and Ying Zhang", title = "Comparability graph coloring for optimizing utilization of stream register files in stream processors", journal = j-SIGPLAN, volume = "44", number = "4", pages = "111--120", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1504176.1504195", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "A stream processor executes an application that has been decomposed into a sequence of kernels that operate on streams of data elements. During the execution of a kernel, all streams accessed must be communicated through the SRF (Stream Register File), a non-bypassing software-managed on-chip memory. Therefore, optimizing utilization of the SRF is crucial for good performance. The key insight is that the interference graphs formed by the streams in stream applications tend to be comparability graphs or decomposable into a set of multiple comparability graphs. We present a compiler algorithm that can find optimal or near-optimal colorings in stream IGs, thereby improving SRF utilization than the First-Fit\par bin-packing algorithm, the best in the literature.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "comparability graph coloring; software-managed cache; stream processor; stream programming", } @Article{Quintana-Orti:2009:SDL, author = "Gregorio Quintana-Ort{\'\i} and Francisco D. Igual and Enrique S. Quintana-Ort{\'\i} and Robert A. van de Geijn", title = "Solving dense linear systems on platforms with multiple hardware accelerators", journal = j-SIGPLAN, volume = "44", number = "4", pages = "121--130", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1504176.1504196", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In a previous PPoPP paper we showed how the FLAME methodology, combined with the SuperMatrix runtime system, yields a simple yet powerful solution for programming dense linear algebra operations on multicore platforms. In this paper we provide further evidence that this approach solves the programmability problem for this domain by targeting a more complex architecture, composed of a multicore processor and multiple hardware accelerators (GPUs, Cell B.E., etc.), each with its own local memory, resulting in a platform more reminiscent of a heterogeneous distributed-memory system. In particular, we show that the FLAME programming model accommodates this new situation effortlessly so that no significant change needs to be made to the codebase. All complexity is hidden inside the SuperMatrix runtime scheduling mechanism, which incorporates software implementations of standard cache/memory coherence techniques in computer architecture to improve the performance. Our experimental evaluation on a Intel Xeon 8-core host linked to an NVIDIA Tesla S870 platform with four GPUs delivers peak performances around 550 and 450 (single-precision) GFLOPS for the matrix-matrix product and the Cholesky factorization, respectively, which we believe to be the best performance numbers posted on this new architecture for such operations.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "algorithms-by-blocks; dependency analysis; dynamic scheduling; GPUs; out-of-order execution", } @Article{Schneider:2009:CPM, author = "Scott Schneider and Jae-Seung Yeom and Benjamin Rose and John C. Linford and Adrian Sandu and Dimitrios S. Nikolopoulos", title = "A comparison of programming models for multiprocessors with explicitly managed memory hierarchies", journal = j-SIGPLAN, volume = "44", number = "4", pages = "131--140", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594835.1504197", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "On multiprocessors with explicitly managed memory hierarchies (EMM), software has the responsibility of moving data in and out of fast local memories. This task can be complex and error-prone even for expert programmers. Before we can allow compilers to handle this complexity for us, we must identify the abstractions that are general enough to allow us to write applications with reasonable effort, yet specific enough to exploit the vast on-chip memory bandwidth of EMM multi-processors. To this end, we compare two programming models against hand-tuned codes on the STI Cell, paying attention to programmability and performance. The first programming model, Sequoia, abstracts the memory hierarchy as private address spaces, each corresponding to a parallel task. The second, Cellgen, is a new framework which provides OpenMP-like semantics and the abstraction of a shared address space divided into private and shared data. We compare three applications programmed using these models against their hand-optimized counterparts in terms of abstractions, programming complexity, and performance.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "cell be; explicitly managed memory hierarchies; programming models", } @Article{Spear:2009:CSC, author = "Michael F. Spear and Luke Dalessandro and Virendra J. Marathe and Michael L. Scott", title = "A comprehensive strategy for contention management in software transactional memory", journal = j-SIGPLAN, volume = "44", number = "4", pages = "141--150", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594835.1504199", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In Software Transactional Memory (STM), {\em contention management\/} refers to the mechanisms used to ensure forward progress--to avoid livelock and starvation, and to promote throughput and fairness. Unfortunately, most past approaches to contention management were designed for obstruction-free STM frameworks, and impose significant constant-time overheads. Priority-based approaches in particular typically require that reads be visible to all transactions, an expensive property that is not easy to support in most STM systems.\par In this paper we present a comprehensive strategy for contention management via fair resolution of conflicts in an STM with invisible reads. Our strategy depends on (1) lazy acquisition of ownership, (2) extendible timestamps, and (3) an efficient way to capture both priority and conflicts. We introduce two mechanisms--one using Bloom filters, the other using {\em visible read bits\/} --that implement point \1. These mechanisms unify the notions of conflict resolution, {\em inevitability}, and {\em transaction retry}. They are orthogonal to the rest of the contention management strategy, and could be used in a wide variety of hardware and software TM systems. Experimental evaluation demonstrates that the overhead of the mechanisms is low, particularly when conflicts are rare, and that our strategy as a whole provides good throughput and fairness, including livelock and starvation freedom, even for challenging workloads.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "condition synchronization; contention management; inevitability; priority; software transactional memory", } @Article{Agrawal:2009:SON, author = "Kunal Agrawal and I-Ting Angelina Lee and Jim Sukha", title = "Safe open-nested transactions through ownership", journal = j-SIGPLAN, volume = "44", number = "4", pages = "151--162", month = apr, year = "2009", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ramadan:2009:CCT, author = "Hany E. Ramadan and Indrajit Roy and Maurice Herlihy and Emmett Witchel", title = "Committing conflicting transactions in an {STM}", journal = j-SIGPLAN, volume = "44", number = "4", pages = "163--172", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594835.1504201", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Dependence-aware transactional memory (DATM) is a recently proposed model for increasing concurrency of memory transactions without complicating their interface. DATM manages dependences between conflicting, uncommitted transactions so that they commit safely.\par The contributions of this paper are twofold. First, we provide a safety proof for the dependence-aware model. This proof also shows that the DATM model accepts all concurrent interleavings that are conflict-serializable.\par Second, we describe the first application of dependence tracking to software transactional memory (STM) design and implementation. We compare our implementation with a state of the art STM, TL2 [4]. We use benchmarks from the STAMP [21] suite, quantifying how dependence tracking converts certain types of transactional conflicts into successful commits. On high contention workloads, DATM is able to take advantage of dependences to speed up execution by up to 4.8x.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency control; dependence-aware; serializability; transactional memory", } @Article{Ratanaworabhan:2009:DTA, author = "Paruj Ratanaworabhan and Martin Burtscher and Darko Kirovski and Benjamin Zorn and Rahul Nagpal and Karthik Pattabiraman", title = "Detecting and tolerating asymmetric races", journal = j-SIGPLAN, volume = "44", number = "4", pages = "173--184", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1504176.1504202", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper introduces ToleRace, a runtime system that allows programs to detect and even tolerate asymmetric data races. Asymmetric races are race conditions where one thread correctly acquires and releases a lock for a shared variable while another thread improperly accesses the same variable. ToleRace provides approximate isolation in the critical sections of lock-based parallel programs by creating a local copy of each shared variable when entering a critical section, operating on the local copies, and propagating the appropriate copies upon leaving the critical section. We start by characterizing all possible interleavings that can cause races and precisely describe the effect of ToleRace in each case. Then, we study the theoretical aspects of an oracle that knows exactly what type of interleaving has occurred. Finally, we present two software implementations of ToleRace and evaluate them on multithreaded applications from the SPLASH2 and PARSEC suites. Our implementation on top of a dynamic instrumentation tool, which works directly on executables and requires no source code modifications, incurs an overhead of a factor of two on average. Manually adding ToleRace to the source code of these applications results in an average overhead of 6.4 percent.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dynamic instrumentation; race detection and toleration; runtime support", } @Article{Abadi:2009:TMS, author = "Mart{\'\i}n Abadi and Tim Harris and Mojtaba Mehrara", title = "Transactional memory with strong atomicity using off-the-shelf memory protection hardware", journal = j-SIGPLAN, volume = "44", number = "4", pages = "185--196", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1504176.1504203", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper introduces a new way to provide strong atomicity in an implementation of transactional memory. Strong atomicity lets us offer clear semantics to programs, even if they access the same locations inside and outside transactions. It also avoids differences between hardware-implemented transactions and software-implemented ones. Our approach is to use off-the-shelf page-level memory protection hardware to detect conflicts between normal memory accesses and transactional ones. This page-level mechanism ensures correctness but gives poor performance because of the costs of manipulating memory protection settings and receiving notifications of access violations. However, in practice, we show how a combination of careful object placement and dynamic code update allows us to eliminate almost all of the protection changes. Existing implementations of strong atomicity in software rely on detecting conflicts by conservatively treating some non-transactional accesses as short transactions. In contrast, our page-level mechanism lets us be less conservative about how non-transactional accesses are treated; we avoid changes to non-transactional code until a possible conflict is detected dynamically, and we can respond to phase changes where a given instruction sometimes generates conflicts and sometimes does not. We evaluate our implementation with C\# versions of many of the STAMP benchmarks, and show how it performs within 25\% of an implementation with weak atomicity on all the benchmarks we have studied. It avoids pathological cases in which other implementations of strong atomicity perform poorly.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "memory protection; STM; strong atomicity; transactional memory", } @Article{Ranganathan:2009:IPP, author = "Parthasarathy Ranganathan", title = "Industrial perspectives panel", journal = j-SIGPLAN, volume = "44", number = "4", pages = "197--197", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1504176.1504205", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This year, we have a different format for HPCA's industrial session. We will have an 'industrial perspectives panel' with practitioners from industry presenting their perspectives on interesting future technical challenges and opportunities for research. We have panelists from IBM, Microsoft, NVIDIA, and Sun exploring a spectrum of interesting areas from consumer to enterprise markets including 'hot' topics around multicores, graphics accelerators, and solid-state memory.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Nicolau:2009:TEP, author = "Alexandru Nicolau and Guangqiang Li and Arun Kejariwal", title = "Techniques for efficient placement of synchronization primitives", journal = j-SIGPLAN, volume = "44", number = "4", pages = "199--208", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1504176.1504207", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Harnessing the hardware parallelism of the emerging multi-cores systems necessitates concurrent software. Unfortunately, most of the existing mainstream software is sequential in nature. Although one could auto-parallelize a given program, the efficacy of this is largely limited to floating-point codes. One of the ways to alleviate the above limitation is to parallelize programs, which cannot be auto-parallelized, via explicit synchronization. In this regard, efficient placement of the synchronization primitives --- say, post, wait --- plays a key role in achieving high degree of thread-level parallelism ({\em TLP\/}). In this paper, we propose novel compiler techniques for the above. Specifically, given a control flow graph ({\em CFG\/}), the proposed techniques place a post as early as possible and place a wait as late as possible in the CFG, subject to dependences. We demonstrate the efficacy of our techniques, on a real machine, using real codes, specifically, from the industry-standard SPEC CPU benchmarks, the Linux kernel and other widely used open source codes. Our results show that the proposed techniques yield significantly higher levels of TLP than the state-of-the-art.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compilers; multithreading; parallelization; performance", } @Article{Son:2009:CDD, author = "Seung Woo Son and Mahmut Kandemir and Mustafa Karakoy and Dhruva Chakrabarti", title = "A compiler-directed data prefetching scheme for chip multiprocessors", journal = j-SIGPLAN, volume = "44", number = "4", pages = "209--218", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1504176.1504208", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Data prefetching has been widely used in the past as a technique for hiding memory access latencies. However, data prefetching in multi-threaded applications running on chip multiprocessors (CMPs) can be problematic when multiple cores compete for a shared on-chip cache (L2 or L3). In this paper, we (i) quantify the impact of conventional data prefetching on shared caches in CMPs. The experimental data collected using multi-threaded applications indicates that, while data prefetching improves performance in small number of cores, its benefits reduce significantly as the number of cores is increased, that is, it is not scalable; (ii) identify harmful prefetches as one of the main contributors for degraded performance with a large number of cores; and (iii) propose and evaluate a compiler-directed data prefetching scheme for shared on-chip cache based CMPs. The proposed scheme first identifies program phases using static compiler analysis, and then divides the threads into groups within each phase and assigns a customized prefetcher thread (helper thread) to each group of threads. This helps to reduce the total number of prefetches issued, prefetch overheads, and negative interactions on the shared cache space due to data prefetches, and more importantly, makes compiler-directed prefetching a scalable optimization for CMPs. Our experiments with the applications from the SPEC OMP benchmark suite indicate that the proposed scheme improves overall parallel execution latency by 18.3\% over the no-prefetch case and 6.4\% over the conventional data prefetching scheme (where each core prefetches its data independently), on average, when 12 cores are used. The corresponding average performance improvements with 24 cores are 16.4\% (over the no-prefetch case) and 11.7\% (over the conventional prefetching case). We also demonstrate that the proposed scheme is robust under a wide range of values of our major simulation parameters, and the improvements it achieves come very close to those that can be achieved using an optimal scheme.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "chip multiprocessors; compiler; helper thread; prefetching", } @Article{Baskaran:2009:CAD, author = "Muthu Manikandan Baskaran and Nagavijayalakshmi Vydyanathan and Uday Kumar Reddy Bondhugula and J. Ramanujam and Atanas Rountev and P. Sadayappan", title = "Compiler-assisted dynamic scheduling for effective parallelization of loop nests on multicore processors", journal = j-SIGPLAN, volume = "44", number = "4", pages = "219--228", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1504176.1504209", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Recent advances in polyhedral compilation technology have made it feasible to automatically transform affine sequential loop nests for tiled parallel execution on multi-core processors. However, for multi-statement input programs with statements of different dimensionalities, such as Cholesky or LU decomposition, the parallel tiled code generated by existing automatic parallelization approaches may suffer from significant load imbalance, resulting in poor scalability on multi-core systems. In this paper, we develop a completely automatic parallelization approach for transforming input affine sequential codes into efficient parallel codes that can be executed on a multi-core system in a load-balanced manner. In our approach, we employ a compile-time technique that enables dynamic extraction of inter-tile dependences at run-time, and dynamic scheduling of the parallel tiles on the processor cores for improved scalable execution. Our approach obviates the need for programmer intervention and re-writing of existing algorithms for efficient parallel execution on multi-cores. We demonstrate the usefulness of our approach through comparisons using linear algebra computations: LU and Cholesky decomposition.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compile-time optimization; dynamic scheduling; run-time optimization", } @Article{Tallent:2009:EPM, author = "Nathan R. Tallent and John M. Mellor-Crummey", title = "Effective performance measurement and analysis of multithreaded applications", journal = j-SIGPLAN, volume = "44", number = "4", pages = "229--240", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1504176.1504210", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Understanding why the performance of a multithreaded program does not improve linearly with the number of cores in a shared-memory node populated with one or more multicore processors is a problem of growing practical importance. This paper makes three contributions to performance analysis of multithreaded programs. First, we describe how to measure and attribute {\em parallel idleness}, namely, where threads are stalled and unable to work. This technique applies broadly to programming models ranging from explicit threading ({\em e.g.}, Pthreads) to higher-level models such as Cilk and OpenMP. Second, we describe how to measure and attribute {\em parallel overhead\/} -- when a thread is performing miscellaneous work other than executing the user's computation. By employing a combination of compiler support and post-mortem analysis, we incur no measurement cost beyond normal profiling to glean this information. Using {\em idleness\/} and {\em overhead\/} metrics enables one to pinpoint areas of an application where concurrency should be increased (to reduce idleness), decreased (to reduce overhead), or where the present parallelization is hopeless (where idleness and overhead are both high). Third, we describe how to measure and attribute arbitrary performance metrics for high-level multithreaded programming models, such as Cilk. This requires bridging the gap between the expression of logical concurrency in programs and its realization at run-time as it is adaptively partitioned and scheduled onto a pool of threads. We have prototyped these ideas in the context of Rice University's HPCToolkit performance tools. We describe our approach, implementation, and experiences applying this approach to measure and attribute work, idleness, and overhead in executions of Cilk programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "call path profiling; hpctoolkit; multithreaded programming models; performance analysis", } @Article{Kistler:2009:PCA, author = "Michael Kistler and John Gunnels and Daniel Brokenshire and Brad Benton", title = "Petascale computing with accelerators", journal = j-SIGPLAN, volume = "44", number = "4", pages = "241--250", month = apr, year = "2009", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Xue:2009:MSR, author = "Ruini Xue and Xuezheng Liu and Ming Wu and Zhenyu Guo and Wenguang Chen and Weimin Zheng and Zheng Zhang and Geoffrey Voelker", title = "{MPIWiz}: subgroup reproducible replay of {MPI} applications", journal = j-SIGPLAN, volume = "44", number = "4", pages = "251--260", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1504176.1504213", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Message Passing Interface (MPI) is a widely used standard for managing coarse-grained concurrency on distributed computers. Debugging parallel MPI applications, however, has always been a particularly challenging task due to their high degree of concurrent execution and non-deterministic behavior. Deterministic replay is a potentially powerful technique for addressing these challenges, with existing MPI replay tools adopting either data-replay or order-replay approaches. Unfortunately, each approach has its tradeoffs. Data-replay generates substantial log sizes by recording every communication message. Order-replay generates small logs, but requires all processes to be replayed together. We believe that these drawbacks are the primary reasons that inhibit the wide adoption of deterministic replay as the critical enabler of cyclic debugging of MPI applications.\par This paper describes {\em subgroup reproducible replay\/} (SRR), a hybrid deterministic replay method that provides the benefits of both data-replay and order-replay while balancing their trade-offs. SRR divides all processes into disjoint groups. It records the contents of messages crossing group boundaries as in data-replay, but records just message orderings for communication within a group as in order-replay. In this way, SRR can exploit the communication locality of traffic patterns in MPI applications. During replay, developers can then replay each group individually. SRR reduces recording overhead by not recording intra-group communication, and reduces replay overhead by limiting the size of each replay group. Exposing these tradeoffs gives the user the necessary control for making deterministic replay practical for MPI applications.\par We have implemented a prototype, MPIWiz, to demonstrate and evaluate SRR. MPIWiz employs a replay framework that allows transparent binary instrumentation of both library and system calls. As a result, MPIWiz replays MPI applications with no source code modification and relinking, and handles non-determinism in both MPI and OS system calls. Our preliminary results show that MPIWiz can reduce recording overhead by over a factor of four relative to data-replay, yet without requiring the entire application to be replayed as in order-replay. Recording increases execution time by 27\% while the application can be replayed in just 53\% of its base execution time.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "distributed debugging; message passing interface; non-determinism; record and replay", } @Article{Vo:2009:FVP, author = "Anh Vo and Sarvani Vakkalanka and Michael DeLisi and Ganesh Gopalakrishnan and Robert M. Kirby and Rajeev Thakur", title = "Formal verification of practical {MPI} programs", journal = j-SIGPLAN, volume = "44", number = "4", pages = "261--270", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594835.1504214", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper considers the problem of formal verification of MPI programs operating under a fixed test harness for safety properties without building verification models. In our approach, we directly model-check the MPI/C source code, executing its interleavings with the help of a verification scheduler. Unfortunately, the total feasible number of interleavings is exponential, and impractical to examine even for our modest goals. Our earlier publications formalized and implemented a partial order reduction approach that avoided exploring equivalent interleavings, and presented a verification tool called ISP. This paper presents algorithmic and engineering innovations to ISP, including the use of OpenMP parallelization, that now enables it to handle practical MPI programs, including:(i)~ParMETIS --- a widely used hypergraph partitioner, and (ii)~MADRE --- a Memory Aware Data Re-distribution Engine, both developed outside our group. Over these benchmarks, ISP has automatically verified up to 14K lines of MPI/C code, producing error traces of deadlocks and assertion violations within seconds.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "distributed programming; dynamic partial order reduction; message passing interface; model checking; MPI", } @Article{Bikshandi:2009:EPI, author = "Ganesh Bikshandi and Jose G. Castanos and Sreedhar B. Kodali and V. Krishna Nandivada and Igor Peshansky and Vijay A. Saraswat and Sayantan Sur and Pradeep Varma and Tong Wen", title = "Efficient, portable implementation of asynchronous multi-place programs", journal = j-SIGPLAN, volume = "44", number = "4", pages = "271--282", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594835.1504215", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The X10 programming language is organized around the notion of places (an encapsulation of data and activities operating on the data), partitioned global address space (PGAS), and asynchronous computation and communication.\par This paper introduces an expressive subset of X10, Flat X10, designed to permit efficient execution across multiple single-threaded places with a simple runtime and without compromising on the productivity of X10. We present the design, implementation and evaluation of a compiler and runtime system for Flat X10. The Flat X10 compiler translates programs into C++ SPMD programs communicating using an active messaging infrastructure. It uses novel techniques to transform explicitly parallel programs into SPMD programs. The runtime system is based on IBM's LAPI (Low-level API) and is easily portable to other libraries such as GASNet and ARMCI.\par Our implementation realizes performance comparable to hand-written MPI programs for well-known HPC benchmarks such as Random Access, Stream, and FFT, on a Federation-based cluster of Power5 SMPs (with hundreds of processors) and the Blue Gene (with thousands of processors). Submissions based on the work presented in this paper were co-winners of the 2007 and 2008 HPC Challenge Type II Awards.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "APGAS; asynchrony; compiler; FFT; HPC; HPC challenge; PGAS; random access; runtime; SPMD; stream; X10", } @Article{Dennis:2009:HBP, author = "Jack B. Dennis", title = "How to build programmable multi-core chips", journal = j-SIGPLAN, volume = "44", number = "4", pages = "283--284", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594835.1504179", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The arrival of multi-core chips has heightened interest in the discipline of parallel programming, a topic that has received much attention for many years. Computer architects have much to learn from sound principles for structuring software and expressing parallel computation. This talk will cover principles for the design of computer systems to support composable parallel software --- the idea that any parallel program is usable, without change, as a component of larger parallel programs. By following these principles, a revolution in the ease of building robust and high-performance parallel software can be achieved. The principles suggest interesting directions for computer architecture; the tools to experiment with new architecture concepts are ready and waiting for the savvy and ambitious researcher", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "design; parallel algorithms; performance", } @Article{Long:2009:ASC, author = "Guoping Long and Dongrui Fan and Junchao Zhang", title = "Architectural support for {Cilk} computations on many-core architectures", journal = j-SIGPLAN, volume = "44", number = "4", pages = "285--286", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594835.1504217", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "Cilk; many-core; memory consistency; parallel programming", } @Article{Ma:2009:CRS, author = "Wenjing Ma and Gagan Agrawal", title = "A compiler and runtime system for enabling data mining applications on {GPUs}", journal = j-SIGPLAN, volume = "44", number = "4", pages = "287--288", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594835.1504218", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "With increasing need for accelerating data mining and scientific data analysis on large data sets, and less chance to improve processor performance by simply increasing clock frequencies, multi-core architectures and accelerators like FPGAs and GPUs have become popular. A recent development in using GPU for general computing has been the release of CUDA (Compute Unified Device Architecture) by NVIDIA. CUDA allows GPU programming with C-language-like features, thus easing the development of non-graphics applications on a GPU. However, several challenges still remain in programming the GPUs with CUDA, because CUDA involves explicit parallel programming and management of its complex memory hierarchy, as well as allocating device memory, moving data between CPU and device memory, and specification of thread grid configurations.\par In this paper, we offer a solution for the programmers to generate CUDA code by specifying the sequential reduction loop(s) with some information about the parameters. With program analysis and code generation, the applications are mapped to a GPU. Several additional optimizations are also performed by the middleware.\par We have evaluated our system using three popular data mining applications, k-means clustering, EM clustering, and Principal Component Analysis (PCA). The speedup that each of these applications achieve over a sequential CPU version ranges between 20 and 50.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "CUDA; data mining; GPGPU", } @Article{Huang:2009:EGO, author = "Lei Huang and Deepak Eachempati and Marcus W. Hervey and Barbara Chapman", title = "Exploiting global optimizations for {OpenMP} programs in the {OpenUH} compiler", journal = j-SIGPLAN, volume = "44", number = "4", pages = "289--290", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1504176.1504219", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The advent of new parallel architectures has increased the need for parallel optimizing compilers to assist developers in creating efficient code. OpenUH is a state-of-the-art optimizing compiler, but it only performs a limited set of optimizations for OpenMP programs due to its conservative assumptions of shared memory programming. These limitations may prevent some OpenMP applications from being fully optimized to the extent of its sequential counterpart. This paper describes our design and implementation of a parallel data flow framework, consisting of a Parallel Control Flow Graph (PCFG) and a Parallel SSA (PSSA) representation in OpenUH, to model data flow for OpenMP programs. This framework enables the OpenUH compiler to perform all classical scalar optimizations for OpenMP programs, in addition to conducting OpenMP specific optimizations.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compiler analysis; OpenMP; Parallel SSA", } @Article{Volos:2009:NDI, author = "Haris Volos and Adam Welc and Ali-Reza Adl-Tabatabai and Tatiana Shpeisman and Xinmin Tian and Ravi Narayanaswamy", title = "{NePalTM}: design and implementation of nested parallelism for transactional memory systems", journal = j-SIGPLAN, volume = "44", number = "4", pages = "291--292", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594835.1504220", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present the programming model, design and implementation of NePalTM; a transactional memory system where atomic blocks can be used for concurrency control at an arbitrary level of nested parallelism.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency; nested-parallelism; transactional memory", } @Article{Kejariwal:2009:PSA, author = "Arun Kejariwal and Calin Cas{\c{c}}aval", title = "Parallelization spectroscopy: analysis of thread-level parallelism in {HPC} programs", journal = j-SIGPLAN, volume = "44", number = "4", pages = "293--294", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594835.1504221", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In this paper, we present a method --- parallelization spectroscopy --- for analyzing the thread-level parallelism available in production High Performance Computing (HPC) codes. We survey a number of techniques that are commonly used for parallelization and classify all the loops in the case study presented using a sensitivity metric: how likely is a particular technique is successful in parallelizing the loop.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "loop transformations; multithreading; parallelism", } @Article{Ha:2009:PRN, author = "Phuong Hoai Ha and Philippas Tsigas and Otto J. Anshus", title = "Preliminary results on {NB-FEB}, a synchronization primitive for parallel programming", journal = j-SIGPLAN, volume = "44", number = "4", pages = "295--296", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1504176.1504222", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We introduce a {\em non-blocking\/} full/empty bit primitive, or NB-FEB for short, as a promising synchronization primitive for parallel programming on may-core architectures. We show that the NB-FEB primitive is {\em universal, scalable\/} and {\em feasible}. NB-FEB, together with registers, can solve the consensus problem for an arbitrary number of processes ({\em universality\/}). NB-FEB is {\em combinable}, namely its memory requests to the same memory location can be combined into only one memory request, which consequently mitigates performance degradation due to synchronization 'hot spots' ({\em scalability\/}). Since NB-FEB is a variant of the original full/empty bit that always returns a value instead of waiting for a conditional flag, it is as feasible as the original full/empty bit, which has been implemented in many computer systems ({\em feasibility\/}).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "combinability; full/empty bit; many-core architectures; non-blocking synchronization; universal primitives", } @Article{Dash:2009:STD, author = "Alokika Dash and Brian Demsky", title = "Software transactional distributed shared memory", journal = j-SIGPLAN, volume = "44", number = "4", pages = "297--298", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594835.1504223", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We have developed a transaction-based approach to distributed shared memory(DSM) that supports object caching and generates path expression prefetches. A path expression specifies a path through the heap that traverses the objects to be prefetched. To our knowledge, this is the first prefetching approach that can prefetch objects whose addresses have not been computed or predicted. Our DSM uses both prefetching and caching of remote objects to hide network latency while relying on the two-phase transaction commit mechanism to preserve the simple transactional consistency model that we present to the developer. We have evaluated this approach on a matrix multiply benchmark. We have found that our approach enables to effectively utilize multiple machines in a cluster and also benefit from prefetching and caching of objects.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "distributed shared memory; path-expression prefetch; prefetching objects; transactional memory", } @Article{Yang:2009:SBP, author = "Ke Yang and Bingsheng He and Qiong Luo and Pedro V. Sander and Jiaoying Shi", title = "Stack-based parallel recursion on graphics processors", journal = j-SIGPLAN, volume = "44", number = "4", pages = "299--300", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594835.1504224", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Recent research has shown promising results on using graphics processing units (GPUs) to accelerate general-purpose computation. However, today's GPUs do not support recursive functions. As a result, for inherently recursive algorithms such as tree traversal, GPU programmers need to explicitly use stacks to emulate the recursion. Parallelizing such stack-based implementation on the GPU increases the programming difficulty; moreover, it is unclear how to improve the efficiency of such parallel implementations. As a first step to address both ease of programming and efficiency issues, we propose three parallel stack implementation alternatives that differ in the granularity of stack sharing. Taking tree traversals as an example, we study the performance tradeoffs between these alternatives and analyze their behaviors in various situations. Our results could be useful to both GPU programmers and GPU compiler writers.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "graphics processors; parallel; recursion; stack", } @Article{Bhatele:2009:TAT, author = "Abhinav Bhatel{\'e} and Eric Bohm and Laxmikant V. Kal{\'e}", title = "Topology aware task mapping techniques: an {API} and case study", journal = j-SIGPLAN, volume = "44", number = "4", pages = "301--302", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1504176.1504225", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Optimal network performance is critical to efficient parallel scaling for communication-bound applications on large machines. With wormhole routing, no-load latencies do not increase significantly with number of hops traveled. Yet, we, and others have recently shown that in presence of contention, message latencies can grow substantially large. Hence task mapping strategies should take the topology of the machine into account on large machines. This poster presents a uniform API which provides topology information on 3D tori like IBM Blue Gene and Cray XT machines. We present techniques to use this API to improve performance. The API can be used by user-level codes to obtain information about allocated partitions at runtime which is essential for mapping.\par We motivate why it is important to consider network topology, using a simple 3D Stencil kernel. We then present mapping strategies for a production code, OpenAtom, running on three-dimensional torus and mesh topologies. OpenAtom presents complex communication scenarios of interaction between multiple groups of objects. Results are presented in the context of 3D Stencil and OpenAtom on up to 16,384 processors of Blue Gene/L, 8,192 processors of Blue Gene/P and 2,048 processors of Cray XT3.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "communication; mapping; performance; topology; torus", } @Article{Markstrum:2009:TCR, author = "Shane A. Markstrum and Robert M. Fuhrer and Todd D. Millstein", title = "Towards concurrency refactoring for {X10}", journal = j-SIGPLAN, volume = "44", number = "4", pages = "303--304", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594835.1504226", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In this poster, we present our vision of refactoring support for languages with a partitioned global address space memory model as embodied in the X10 programming language. We examine a novel refactoring, extract concurrent, that introduces additional concurrency within a loop by arranging for some user-selected code in the loop body to run in parallel with other iterations of the loop. We discuss the mechanisms and challenges for implementing this refactoring and how development of this refactoring provides insight for designing future refactorings.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency; partitioned global address space; refactoring; x10", } @Article{Scott:2009:THR, author = "Stephen L. Scott and Christian Engelmann and Geoffroy R. Vall{\'e}e and Thomas Naughton and Anand Tikotekar and George Ostrouchov and Chokchai Leangsuksun and Nichamon Naksinehaboon and Raja Nassar and Mihaela Paun and Frank Mueller and Chao Wang and Arun B. Nagarajan and Jyothish Varma", title = "A tunable holistic resiliency approach for high-performance computing systems", journal = j-SIGPLAN, volume = "44", number = "4", pages = "305--306", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1504176.1504227", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In order to address anticipated high failure rates, resiliency characteristics have become an urgent priority for next-generation extreme-scale high-performance computing (HPC) systems. This poster describes our past and ongoing efforts in novel fault resilience technologies for HPC. Presented work includes proactive fault resilience techniques, system and application reliability models and analyses, failure prediction, transparent process- and virtual-machine-level migration, and trade-off models for combining preemptive migration with checkpoint/restart. This poster summarizes our work and puts all individual technologies into context with a proposed holistic fault resilience framework.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "checkpoint/restart; fault tolerance; high-performance computing; preemptive migration; resilience", } @Article{Kulkarni:2009:TBT, author = "Chinmay Eishan Kulkarni and Osman Unsal and Adri{\'a}n Cristal and Eduard Ayguad{\'e} and Mateo Valero", title = "Turbocharging boosted transactions or: how {I} learnt to stop worrying and love longer transactions", journal = j-SIGPLAN, volume = "44", number = "4", pages = "307--308", month = apr, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1594835.1504228", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Oct 9 08:40:49 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Boosted transactions offer an attractive method that enables programmers to create larger transactions that scale well and offer deadlock-free guarantees. However, as boosted transactions get larger, they become more susceptible to conflicts and aborts. We describe a linear-time algorithm to detect transactions that cannot make progress, {\em which\/} transactions need to be aborted, and {\em when}. The algorithm guarantees zero false positives with minimal aborts. Our proposals, as implemented in DSTM2, increase the transactional throughput of the system, often by more than 30\%.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency; deadlock-detection; deadlocks; parallel programming; transactional memory", } @Article{Alglave:2009:SPA, author = "Jade Alglave and Anthony Fox and Samin Ishtiaq and Magnus O. Myreen and Susmit Sarkar and Peter Sewell and Francesco Zappa Nardelli", title = "The semantics of power and {ARM} multiprocessor machine code (abstract only)", journal = j-SIGPLAN, volume = "44", number = "5", pages = "8--8", month = may, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1629635.1629638", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:41 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We develop a rigorous semantics for Power and ARM multiprocessor programs, including their relaxed memory model and the behaviour of reasonable fragments of their instruction sets. The semantics is mechanised in the HOL proof assistant. This should provide a good basis for informal reasoning and formal verification of low-level code for these weakly consistent architectures, and, together with our x86 semantics, for the design and compilation of high-level concurrent languages.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ziarek:2009:SWB, author = "Lukasz Ziarek and Suresh Jagannathan and Matthew Fluet and Umut A. Acar", title = "Speculative {$N$}-way barriers (abstract only)", journal = j-SIGPLAN, volume = "44", number = "5", pages = "8--8", month = may, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1629635.1629637", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:41 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Speculative execution is an important technique that has historically been used to extract concurrency from sequential programs. While techniques to support speculation work well when computations perform relatively simple actions (e.g., reads and writes to known locations), understanding speculation for multi-threaded programs in which threads may communicate and synchronize through multiple shared references is significantly more challenging, and is the focus of this paper.\par We use as our reference point a simple higher-order concurrent language extended with an n-way barrier and a fork/join execution model. Our technique permits the expression guarded by the barrier to speculatively proceed before the barrier has been satisfied (i.e., before all threads that synchronize on that barrier have done so) and to have participating threads that would normally block on the barrier to speculatively proceed as well. Our solution formulates safety properties under which speculation is correct in a fork/join model, and per-synchronization basis.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Zain:2009:LPH, author = "Abdallah Deeb I. Al Zain and Kevin Hammond and Jost Berthold and Phil Trinder and Greg Michaelson and Mustafa Aswad", title = "Low-pain, high-gain multicore programming in {Haskell}: coordinating irregular symbolic computations on multicore architectures (abstract only)", journal = j-SIGPLAN, volume = "44", number = "5", pages = "8--9", month = may, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1629635.1629639", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:41 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "With the emergence of commodity multicore architectures, exploiting tightly-coupled parallelism has become increasingly important. Functional programming languages, such as Haskell, are, in principle, well placed to take advantage of this trend, offering the ability to easily identify large amounts of fine-grained parallelism. Unfortunately, obtaining real performance benefits has often proved hard to realise in practice.\par This paper reports on a new approach using middleware that has been constructed using the Eden parallel dialect of Haskell. Our approach is 'low pain' in the sense that the programmer constructs a parallel program by inserting a small number of higher-order algorithmic skeletons at key points in the program. It is 'high gain' in the sense that we are able to get good parallel speedups. Our approach is unusual in that we do not attempt to use shared memory directly, but rather coordinate parallel computations using a message-passing implementation. This approach has a number of advantages. Firstly, coordination, i.e. locking and communication, is both confined to limited shared memory areas, essentially the communication buffers, and is also isolated within well-understood libraries. Secondly, the coarse thread granularity that we obtain reduces coordination overheads, so locks are normally needed only on (relatively large) messages, and not on individual data items, as is often the case for simple shared-memory implementations. Finally, cache coherency requirements are reduced since individual tasks do not share caches, and can garbage collect independently.\par We report results for two representative computational algebra problems. Computational algebra is a challenging application area that has not been widely studied in the general parallelism community. Computational algebra applications have high computational demands, and are, in principle, often suitable for parallel execution, but usually display a high degree of irregularity in terms of both task and data structure. This makes it difficult to construct parallel applications that perform well in practice. Using our system, we are able to obtain both extremely good processor utilisation (97\%) and very good absolute speedups (up to 7.7) on an eight-core machine.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Budimlic:2009:DAM, author = "Zoran Budimlic and Aparna M. Chandramowlishwaran and Kathleen Knobe and Geoff N. Lowney and Vivek Sarkar and Leo Treggiari", title = "Declarative aspects of memory management in the concurrent collections parallel programming model (abstract only)", journal = j-SIGPLAN, volume = "44", number = "5", pages = "9--9", month = may, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1629635.1629641", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:41 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Concurrent Collections (CnC) is a declarative parallel language that allows the application developer to express their parallel application as a collection of high-level computations called steps that communicate via single-assignment data structures called items.\par A CnC program is specified in two levels. At the bottom level, an existing imperative language implements the computations within the individual computation steps. At the top level, CnC describes the relationships (ordering constraints) among the steps. The memory management mechanism of the existing imperative language manages data whose lifetime is within a computation step. A key limitation in the use of CnC for long-running programs is the lack of memory management and garbage collection for data items with lifetimes that are longer than a single computation step. Although the goal here is the same as that of classical garbage collection, the nature of problem and therefore nature of the solution is distinct. The focus of this paper is the memory management problem for these data items in CnC.\par We introduce a new declarative slicing annotation for CnC that can be transformed into a reference counting procedure for memory management. Preliminary experimental results obtained from a Cholesky example show that our memory management approach can result in space reductions for CnC data items of up to 28x relative to the baseline case of standard CnC without memory management.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sulzmann:2009:CPCa, author = "Martin Sulzmann and Edmund S. L. Lam and Simon Marlow", title = "Comparing the performance of concurrent linked-list implementations in {Haskell} (abstract only)", journal = j-SIGPLAN, volume = "44", number = "5", pages = "9--9", month = may, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1629635.1629640", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:41 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Haskell has a rich set of synchronization primitives for implementing shared-state concurrency abstractions, ranging from the very high level (Software Transactional Memory) to the very low level (mutable variables with atomic read-modify-write).\par In this paper we perform a systematic comparison of these different concurrent programming models by using them to implement the same abstraction: a concurrent linked-list. Our results are somewhat surprising: there is a full two orders of magnitude difference in performance between the slowest and the fastest implementation. Our analysis of the performance results gives new insights into the relative performance of the programming models and their implementation.\par Finally, we suggest the addition of a single primitive which in our experiments improves the performance of one of the STM-based implementations by more than a factor of 7.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Herhut:2009:CCS, author = "Stephan Herhut and Sven-Bodo Scholz and Clemens Grelck", title = "Controlling chaos: on safe side-effects in data-parallel operations (abstract only)", journal = j-SIGPLAN, volume = "44", number = "5", pages = "9--10", month = may, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1629635.1629642", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:41 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "With the rising variety of hardware designs for multi-core systems, the effectiveness in exploiting implicit concurrency of programs plays a more vital role for programming such systems than ever before. We believe that a combination of a dataparallel approach with a declarative programming-style is up to that task: Data-parallel approaches are known to enable compilers to make efficient use of multi-processors without requiring low-level program annotations. Combining the dataparallel approach with a declarative programming-style guarantees semantic equivalence between sequential and concurrent executions of data parallel operations. Furthermore, the side-effect free setting and explicit model of dependencies enables compilers to maximise the size of the data-parallel program sections.\par However, the strength of the rigidity of the declarative approach also constitutes its weakness: Being bound to observe all data dependencies categorically rules out the use of side-effecting operations within data-parallel sections. Not only does this limit the size of these regions in certain situations, but it may also hamper an effective workload distribution. Considering side effects such as plotting individual pixels of an image or output for debugging purposes, there are situations where a non-deterministic order of side-effects would not be considered harmful at all.\par We propose a mechanism for enabling such non-determinism on the execution of side-effecting operations within data-parallel sections without sacrificing the side-effect free setting in general. Outside of the data-parallel sections we ensure single threading of side-effecting operations using uniqueness typing. Within data-parallel operations however we allow the side-effecting operations of different threads to occur in any order, as long as effects of different threads are not interleaved. Furthermore, we still model the dependencies arising from the manipulated states within the data parallel sections. This measure preserves the explicitness of all data dependencies and therefore it preserves the transformational potential of any restructuring compiler.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sulzmann:2009:CPCb, author = "Martin Sulzmann and Edmund S. L. Lam and Simon Marlow", title = "Comparing the performance of concurrent linked-list implementations in {Haskell}", journal = j-SIGPLAN, volume = "44", number = "5", pages = "11--20", month = may, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1629635.1629643", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:41 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Haskell has a rich set of synchronization primitives for implementing shared-state concurrency abstractions, ranging from the very high level (Software Transactional Memory) to the very low level (mutable variables with atomic read-modify-write).\par In this paper we perform a systematic comparison of these different concurrent programming models by using them to implement the same abstraction: a concurrent linked-list. Our results are somewhat surprising: there is a full two orders of magnitude difference in performance between the slowest and the fastest implementation. Our analysis of the performance results gives new insights into the relative performance of the programming models and their implementation.\par Finally, we suggest the addition of a single primitive which in our experiments improves the performance of one of the STM-based implementations by more than a factor of 7.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Subramanian:2009:DSU, author = "Suriya Subramanian and Michael Hicks and Kathryn S. McKinley", title = "Dynamic software updates: a {VM}-centric approach", journal = j-SIGPLAN, volume = "44", number = "6", pages = "1--12", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543135.1542478", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Software evolves to fix bugs and add features. Stopping and restarting programs to apply changes is inconvenient and often costly. Dynamic software updating (DSU) addresses this problem by updating programs while they execute, but existing DSU systems for managed languages do not support many updates that occur in practice and are inefficient. This paper presents the design and implementation of Jvolve, a DSU-enhanced Java VM. Updated programs may add, delete, and replace fields and methods anywhere within the class hierarchy. Jvolve implements these updates by adding to and coordinating VM classloading, just-in-time compilation, scheduling, return barriers, on-stack replacement, and garbage collection. Jvolve, is {\em safe\/}: its use of bytecode verification and VM thread synchronization ensures that an update will always produce type-correct executions. Jvolve is {\em flexible\/}: it can support 20 of 22 updates to three open-source programs--Jetty web server, JavaEmailServer, and CrossFTP server--based on actual releases occurring over 1 to 2 years. Jvolve is {\em efficient\/}: performance experiments show that incurs {\em no overhead\/} during steady-state execution. These results demonstrate that this work is a significant step towards practical support for dynamic updates in virtual machines for managed languages.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dynamic software updating; garbage collection; virtual machine technology", } @Article{Neamtiu:2009:STU, author = "Iulian Neamtiu and Michael Hicks", title = "Safe and timely updates to multi-threaded programs", journal = j-SIGPLAN, volume = "44", number = "6", pages = "13--24", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543135.1542479", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Many dynamic updating systems have been developed that enable a program to be patched while it runs, to fix bugs or add new features. This paper explores techniques for supporting dynamic updates to multi-threaded programs, focusing on the problem of applying an update in a timely fashion while still producing correct behavior. Past work has shown that this tension of {\em safety\/} versus timeliness can be balanced for single-threaded programs. For multi-threaded programs, the task is more difficult because myriad thread interactions complicate understanding the possible program states to which a patch could be applied. Our approach allows the programmer to specify a few program points (e.g., one per thread) at which a patch may be applied, which simplifies reasoning about safety. To improve timeliness, a combination of static analysis and run-time support automatically expands these few points to many more that produce behavior equivalent to the originals. Experiments with thirteen realistic updates to three multi-threaded servers show that we can safely perform a dynamic update within milliseconds when more straightforward alternatives would delay some updates indefinitely.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dynamic software updating; multi-threading; update safety; update timeliness", } @Article{Hammer:2009:CCB, author = "Matthew A. Hammer and Umut A. Acar and Yan Chen", title = "{CEAL}: a {C-based} language for self-adjusting computation", journal = j-SIGPLAN, volume = "44", number = "6", pages = "25--37", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543135.1542480", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Self-adjusting computation offers a language-centric approach to writing programs that can automatically respond to modifications to their data (e.g., inputs). Except for several domain-specific implementations, however, all previous implementations of self-adjusting computation assume mostly functional, higher-order languages such as Standard ML. Prior to this work, it was not known if self-adjusting computation can be made to work with low-level, imperative languages such as C without placing undue burden on the programmer.\par We describe the design and implementation of CEAL: a C-based language for self-adjusting computation. The language is fully general and extends C with a small number of primitives to enable writing self-adjusting programs in a style similar to conventional C programs. We present efficient compilation techniques for translating CEAL programs into C that can be compiled with existing C compilers using primitives supplied by a run-time library for self-adjusting computation. We implement the proposed compiler and evaluate its effectiveness. Our experiments show that CEAL is effective in practice: compiled self-adjusting programs respond to small modifications to their data by orders of magnitude faster than recomputing from scratch while slowing down a from-scratch run by a moderate constant factor. Compared to previous work, we measure significant space and time improvements.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compilation; control and data flow; dominators; performance; self-adjusting computation; tail calls; trampolines", } @Article{Ansel:2009:PLC, author = "Jason Ansel and Cy Chan and Yee Lok Wong and Marek Olszewski and Qin Zhao and Alan Edelman and Saman Amarasinghe", title = "{PetaBricks}: a language and compiler for algorithmic choice", journal = j-SIGPLAN, volume = "44", number = "6", pages = "38--49", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543135.1542481", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "It is often impossible to obtain a one-size-fits-all solution for high performance algorithms when considering different choices for data distributions, parallelism, transformations, and blocking. The best solution to these choices is often tightly coupled to different architectures, problem sizes, data, and available system resources. In some cases, completely different algorithms may provide the best performance. Current compiler and programming language techniques are able to change some of these parameters, but today there is no simple way for the programmer to express or the compiler to choose different algorithms to handle different parts of the data. Existing solutions normally can handle only coarse-grained, library level selections or hand coded cutoffs between base cases and recursive cases.\par We present PetaBricks, a new implicitly parallel language and compiler where having multiple implementations of multiple algorithms to solve a problem is the natural way of programming. We make algorithmic choice a first class construct of the language. Choices are provided in a way that also allows our compiler to tune at a finer granularity. The PetaBricks compiler autotunes programs by making both fine-grained as well as algorithmic choices. Choices also include different automatic parallelization techniques, data distributions, algorithmic parameters, transformations, and blocking.\par Additionally, we introduce novel techniques to autotune algorithms for different convergence criteria. When choosing between various direct and iterative methods, the PetaBricks compiler is able to tune a program in such a way that delivers near-optimal efficiency for any desired level of accuracy. The compiler has the flexibility of utilizing different convergence criteria for the various components within a single algorithm, providing the user with accuracy choice alongside algorithmic choice.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "adaptive; algorithmic choice; autotuning; compiler; implicitly parallel; language", } @Article{Chugh:2009:SIF, author = "Ravi Chugh and Jeffrey A. Meister and Ranjit Jhala and Sorin Lerner", title = "Staged information flow for {JavaScript}", journal = j-SIGPLAN, volume = "44", number = "6", pages = "50--62", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543135.1542483", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Modern websites are powered by JavaScript, a flexible dynamic scripting language that executes in client browsers. A common paradigm in such websites is to include third-party JavaScript code in the form of libraries or advertisements. If this code were malicious, it could read sensitive information from the page or write to the location bar, thus redirecting the user to a malicious page, from which the entire machine could be compromised. We present an information-flow based approach for inferring the effects that a piece of JavaScript has on the website in order to ensure that key security properties are not violated. To handle dynamically loaded and generated JavaScript, we propose a framework for staging information flow properties. Our framework propagates information flow through the currently known code in order to compute a minimal set of syntactic residual checks that are performed on the remaining code when it is dynamically loaded. We have implemented a prototype framework for staging information flow. We describe our techniques for handling some difficult features of JavaScript and evaluate our system's performance on a variety of large real-world websites. Our experiments show that static information flow is feasible and efficient for JavaScript, and that our technique allows the enforcement of information-flow policies with almost no run-time overhead.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "confidentiality; flow analysis; integrity; set constraints; web applications", } @Article{Roy:2009:LPF, author = "Indrajit Roy and Donald E. Porter and Michael D. Bond and Kathryn S. McKinley and Emmett Witchel", title = "{Laminar}: practical fine-grained decentralized information flow control", journal = j-SIGPLAN, volume = "44", number = "6", pages = "63--74", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543135.1542484", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Decentralized information flow control (DIFC) is a promising model for writing programs with powerful, end-to-end security guarantees. Current DIFC systems that run on commodity hardware can be broadly categorized into two types: language-level and operating system-level DIFC. Language level solutions provide no guarantees against security violations on system resources, like files and sockets. Operating system solutions can mediate accesses to system resources, but are inefficient at monitoring the flow of information through fine-grained program data structures.\par This paper describes Laminar, the first system to implement decentralized information flow control using a single set of abstractions for OS resources and heap-allocated objects. Programmers express security policies by labeling data with secrecy and integrity labels, and then access the labeled data in lexically scoped security regions. Laminar enforces the security policies specified by the labels at runtime. Laminar is implemented using a modified Java virtual machine and a new Linux security module. This paper shows that security regions ease incremental deployment and limit dynamic security checks, allowing us to retrofit DIFC policies on four application case studies. Replacing the applications' ad-hoc security policies changes less than 10\% of the code, and incurs performance overheads from 1\% to 56\%. Whereas prior DIFC systems only support limited types of multithreaded programs, Laminar supports a more general class of multithreaded DIFC programs that can access heterogeneously labeled data.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "information flow control; java virtual machine; operating systems; security region", } @Article{Livshits:2009:MSI, author = "Benjamin Livshits and Aditya V. Nori and Sriram K. Rajamani and Anindya Banerjee", title = "{Merlin}: specification inference for explicit information flow problems", journal = j-SIGPLAN, volume = "44", number = "6", pages = "75--86", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543135.1542485", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The last several years have seen a proliferation of static and runtime analysis tools for finding security violations that are caused by {\em explicit information flow\/} in programs. Much of this interest has been caused by the increase in the number of vulnerabilities such as cross-site scripting and SQL injection. In fact, these explicit information flow vulnerabilities commonly found in Web applications now outnumber vulnerabilities such as buffer overruns common in type-unsafe languages such as C and C++. Tools checking for these vulnerabilities require a specification to operate. In most cases the task of providing such a specification is delegated to the user. Moreover, the efficacy of these tools is only as good as the specification. Unfortunately, writing a comprehensive specification presents a major challenge: parts of the specification are easy to miss, leading to missed vulnerabilities; similarly, incorrect specifications may lead to false positives.\par This paper proposes Merlin, a new approach for automatically inferring explicit information flow specifications from program code. Such specifications greatly reduce manual labor, and enhance the quality of results, while using tools that check for security violations caused by explicit information flow. Beginning with a data propagation graph, which represents interprocedural flow of information in the program, Merlin aims to automatically infer an information flow specification. Merlin models information flow paths in the propagation graph using probabilistic constraints. A naive modeling requires an exponential number of constraints, one per path in the propagation graph. For scalability, we approximate these path constraints using constraints on chosen triples of nodes, resulting in a cubic number of constraints. We characterize this approximation as a probabilistic abstraction, using the theory of probabilistic refinement developed by McIver and Morgan. We solve the resulting system of probabilistic constraints using factor graphs, which are a well-known structure for performing probabilistic inference.\par We experimentally validate the Merlin approach by applying it to 10 large business-critical Web applications that have been analyzed with CAT.NET, a state-of-the-art static analysis tool for .NET. We find a total of 167 new confirmed specifications, which result in a total of 322 {\em additional\/} vulnerabilities across the 10 benchmarks. More accurate specifications also reduce the false positive rate: in our experiments, Merlin-inferred specifications result in 13 false positives being removed; this constitutes a 15\% reduction in the CAT.NET false positive rate on these 10 programs. The final false positive rate for CAT.NET after applying Merlin in our experiments drops to under 1\%.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "security analysis tools; specification inference", } @Article{Tripp:2009:TET, author = "Omer Tripp and Marco Pistoia and Stephen J. Fink and Manu Sridharan and Omri Weisman", title = "{TAJ}: effective taint analysis of web applications", journal = j-SIGPLAN, volume = "44", number = "6", pages = "87--97", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542476.1542486", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Taint analysis, a form of information-flow analysis, establishes whether values from untrusted methods and parameters may flow into security-sensitive operations. Taint analysis can detect many common vulnerabilities in Web applications, and so has attracted much attention from both the research community and industry. However, most static taint-analysis tools do not address critical requirements for an industrial-strength tool. Specifically, an industrial-strength tool must scale to large industrial Web applications, model essential Web-application code artifacts, and generate consumable reports for a wide range of attack vectors.\par We have designed and implemented a static Taint Analysis for Java (TAJ) that meets the requirements of industry-level applications. TAJ can analyze applications of virtually any size, as it employs a set of techniques designed to produce useful answers given limited time and space. TAJ addresses a wide variety of attack vectors, with techniques to handle reflective calls, flow through containers, nested taint, and issues in generating useful reports. This paper provides a description of the algorithms comprising TAJ, evaluates TAJ against production-level benchmarks, and compares it with alternative solutions.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "java; program analysis; security; slicing; static analysis; taint analysis; web application", } @Article{Anderson:2009:LAC, author = "Zachary R. Anderson and David Gay and Mayur Naik", title = "Lightweight annotations for controlling sharing in concurrent data structures", journal = j-SIGPLAN, volume = "44", number = "6", pages = "98--109", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542476.1542488", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "SharC is a recently developed system for checking data-sharing in multithreaded programs. Programmers specify sharing rules (read-only, protected by a lock, etc.) for individual objects, and the SharC compiler enforces these rules using static and dynamic checks. Violations of these rules indicate unintended data sharing, which is the underlying cause of harmful data-races. Additionally, SharC allows programmers to change the sharing rules for a specific object using a {\em sharing cast}, to capture the fact that sharing rules for an object often change during the object's lifetime. SharC was successfully applied to a number of multi-threaded C programs.\par However, many programs are not readily checkable using SharC because their sharing rules, and changes to sharing rules, effectively apply to whole data structures rather than to individual objects. We have developed a system called {\em Shoal\/} to address this shortcoming. In addition to the sharing rules and sharing cast of SharC, our system includes a new concept that we call {\em groups}. A group is a collection of objects all having the same sharing mode. Each group has a distinguished member called the {\em group leader}. When the sharing mode of the group leader changes by way of a sharing cast, the sharing mode of all members of the group also changes. This operation is made sound by maintaining the invariant that at the point of a sharing cast, the only external pointer into the group is the pointer to the group leader. The addition of groups allows checking safe concurrency at the level of data structures rather than at the level of individual objects.\par We demonstrate the necessity and practicality of groups by applying Shoal to a wide range of concurrent C programs (the largest approaching a million lines of code). In all benchmarks groups entail low annotation burden and no significant additional performance overhead.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrent programming; data races; multithreaded programming", } @Article{Joshi:2009:RDP, author = "Pallavi Joshi and Chang-Seo Park and Koushik Sen and Mayur Naik", title = "A randomized dynamic program analysis technique for detecting real deadlocks", journal = j-SIGPLAN, volume = "44", number = "6", pages = "110--120", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543135.1542489", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present a novel dynamic analysis technique that finds real deadlocks in multi-threaded programs. Our technique runs in two stages. In the first stage, we use an imprecise dynamic analysis technique to find potential deadlocks in a multi-threaded program by observing an execution of the program. In the second stage, we control a random thread scheduler to create the potential deadlocks with high probability. Unlike other dynamic analysis techniques, our approach has the advantage that it does not give any false warnings. We have implemented the technique in a prototype tool for Java, and have experimented on a number of large multi-threaded Java programs. We report a number of previously known and unknown real deadlocks that were found in these benchmarks.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "active testing; concurrency; deadlock detection; dynamic program analysis", } @Article{Flanagan:2009:FEP, author = "Cormac Flanagan and Stephen N. Freund", title = "{FastTrack}: efficient and precise dynamic race detection", journal = j-SIGPLAN, volume = "44", number = "6", pages = "121--133", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542476.1542490", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Multithreaded programs are notoriously prone to race conditions. Prior work on dynamic race detectors includes fast but imprecise race detectors that report false alarms, as well as slow but precise race detectors that never report false alarms. The latter typically use expensive vector clock operations that require time linear in the number of program threads.\par This paper exploits the insight that the full generality of vector clocks is unnecessary in most cases. That is, we can replace heavyweight vector clocks with an adaptive lightweight representation that, for almost all operations of the target program, requires only constant space and supports constant-time operations. This representation change significantly improves time and space performance, with no loss in precision.\par Experimental results on Java benchmarks including the Eclipse development environment show that our FastTrack race detector is an order of magnitude faster than a traditional vector-clock race detector, and roughly twice as fast as the high-performance DJIT+ algorithm. FastTrack is even comparable in speed to Eraser on our Java benchmarks, while never reporting false alarms.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency; dynamic analysis; race conditions", } @Article{Marino:2009:LES, author = "Daniel Marino and Madanlal Musuvathi and Satish Narayanasamy", title = "{LiteRace}: effective sampling for lightweight data-race detection", journal = j-SIGPLAN, volume = "44", number = "6", pages = "134--143", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542476.1542491", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Data races are one of the most common and subtle causes of pernicious concurrency bugs. Static techniques for preventing data races are overly conservative and do not scale well to large programs. Past research has produced several dynamic data race detectors that can be applied to large programs. They are precise in the sense that they only report actual data races. However, dynamic data race detectors incur a high performance overhead, slowing down a program's execution by an order of magnitude.\par In this paper we present LiteRace, a very lightweight data race detector that samples and analyzes only selected portions of a program's execution. We show that it is possible to sample a multithreaded program at a low frequency, and yet, find infrequently occurring data races. We implemented LiteRace using Microsoft's Phoenix compiler. Our experiments with several Microsoft programs, Apache, and Firefox show that LiteRace is able to find more than 70\% of data races by sampling less than 2\% of memory accesses in a given program execution.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency bugs; dynamic data race detection; sampling", } @Article{Petrank:2009:PGP, author = "Erez Petrank and Madanlal Musuvathi and Bjarne Steensgaard", title = "Progress guarantee for parallel programs via bounded lock-freedom", journal = j-SIGPLAN, volume = "44", number = "6", pages = "144--154", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543135.1542493", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Parallel platforms are becoming ubiquitous with modern computing systems. Many parallel applications attempt to avoid locks in order to achieve high responsiveness, aid scalability, and avoid deadlocks and livelocks. However, avoiding the use of system locks does not guarantee that no locks are actually used, because progress inhibitors may occur in subtle ways through various program structures. Notions of progress guarantee such as lock-freedom, wait-freedom, and obstruction-freedom have been proposed in the literature to provide various levels of progress guarantees.\par In this paper we formalize the notions of progress guarantees using linear temporal logic (LTL). We concentrate on lock-freedom and propose a variant of it denoted {\em bounded lock-freedom}, which is more suitable for guaranteeing progress in practical systems. We use this formal definition to build a tool that checks if a concurrent program is bounded lock-free for a given bound. We then study the interaction between programs with progress guarantees and the underlying system (e.g., compilers, runtimes, operating systems, and hardware platforms). We propose a means to argue that an underlying system supports lock-freedom. A composition theorem asserts that bounded lock-free algorithms running on bounded lock-free supporting systems retain bounded lock-freedom for the composed execution.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bounded lock-freedom; lock-freedom; model checking; parallel computation; progress guarantees", } @Article{Dragojevic:2009:STM, author = "Aleksandar Dragojevi{\'c} and Rachid Guerraoui and Michal Kapalka", title = "Stretching transactional memory", journal = j-SIGPLAN, volume = "44", number = "6", pages = "155--165", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542476.1542494", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Transactional memory (TM) is an appealing abstraction for programming multi-core systems. Potential target applications for TM, such as business software and video games, are likely to involve complex data structures and large transactions, requiring specific software solutions (STM). So far, however, STMs have been mainly evaluated and optimized for smaller scale benchmarks.\par We revisit the main STM design choices from the perspective of complex workloads and propose a new STM, which we call SwissTM. In short, SwissTM is lock- and word-based and uses (1) optimistic (commit-time) conflict detection for read/write conflicts and pessimistic (encounter-time) conflict detection for write/write conflicts, as well as (2) a new two-phase contention manager that ensures the progress of long transactions while inducing no overhead on short ones. SwissTM outperforms state-of-the-art STM implementations, namely RSTM, TL2, and TinySTM, in our experiments on STMBench7, STAMP, Lee-TM and red-black tree benchmarks.\par Beyond SwissTM, we present the most complete evaluation to date of the individual impact of various STM design choices on the ability to support the mixed workloads of large applications.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "benchmarks; software transactional memories", } @Article{Mehrara:2009:PSA, author = "Mojtaba Mehrara and Jeff Hao and Po-Chun Hsu and Scott Mahlke", title = "Parallelizing sequential applications on commodity hardware using a low-cost software transactional memory", journal = j-SIGPLAN, volume = "44", number = "6", pages = "166--176", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542476.1542495", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Multicore designs have emerged as the mainstream design paradigm for the microprocessor industry. Unfortunately, providing multiple cores does not directly translate into performance for most applications. The industry has already fallen short of the decades-old performance trend of doubling performance every 18 months. An attractive approach for exploiting multiple cores is to rely on tools, both compilers and runtime optimizers, to automatically extract threads from sequential applications. However, despite decades of research on automatic parallelization, most techniques are only effective in the scientific and data parallel domains where array dominated codes can be precisely analyzed by the compiler. Thread-level speculation offers the opportunity to expand parallelization to general-purpose programs, but at the cost of expensive hardware support. In this paper, we focus on providing low-overhead software support for exploiting speculative parallelism. We propose STMlite, a light-weight software transactional memory model that is customized to facilitate profile-guided automatic loop parallelization. STMlite eliminates a considerable amount of checking and locking overhead in conventional software transactional memory models by decoupling the commit phase from main transaction execution. Further, strong atomicity requirements for generic transactional memories are unnecessary within a stylized automatic parallelization framework. STMlite enables sequential applications to extract meaningful performance gains on commodity multicore hardware.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "automatic parallelization; loop level parallelism; profile-guided optimization; software transactional memory; thread-level speculation", } @Article{Tournavitis:2009:THA, author = "Georgios Tournavitis and Zheng Wang and Bj{\"o}rn Franke and Michael F. P. O'Boyle", title = "Towards a holistic approach to auto-parallelization: integrating profile-driven parallelism detection and machine-learning based mapping", journal = j-SIGPLAN, volume = "44", number = "6", pages = "177--187", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542476.1542496", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Compiler-based auto-parallelization is a much studied area, yet has still not found wide-spread application. This is largely due to the poor exploitation of application parallelism, subsequently resulting in performance levels far below those which a skilled expert programmer could achieve. We have identified two weaknesses in traditional parallelizing compilers and propose a novel, integrated approach, resulting in significant performance improvements of the generated parallel code. Using profile-driven parallelism detection we overcome the limitations of static analysis, enabling us to identify more application parallelism and only rely on the user for final approval. In addition, we replace the traditional target-specific and inflexible mapping heuristics with a machine-learning based prediction mechanism, resulting in better mapping decisions while providing more scope for adaptation to different target architectures. We have evaluated our parallelization strategy against the NAS and SPEC OMP benchmarks and two different multi-core platforms (dual quad-core Intel Xeon SMP and dual-socket QS20 Cell blade). We demonstrate that our approach not only yields significant improvements when compared with state-of-the-art parallelizing compilers, but comes close to and sometimes exceeds the performance of manually parallelized codes. On average, our methodology achieves 96\% of the performance of the hand-tuned OpenMP NAS and SPEC parallel benchmarks on the Intel Xeon platform and gains a significant speedup for the IBM Cell platform, demonstrating the potential of profile-guided and machine-learning based parallelization for complex multi-core platforms.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "auto-parallelization; machine-learning based parallelism mapping; OpenMP; profile-driven parallelism detection", } @Article{Hooimeijer:2009:DPS, author = "Pieter Hooimeijer and Westley Weimer", title = "A decision procedure for subset constraints over regular languages", journal = j-SIGPLAN, volume = "44", number = "6", pages = "188--198", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543135.1542498", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Reasoning about string variables, in particular program inputs, is an important aspect of many program analyses and testing frameworks. Program inputs invariably arrive as strings, and are often manipulated using high-level string operations such as equality checks, regular expression matching, and string concatenation. It is difficult to reason about these operations because they are not well-integrated into current constraint solvers.\par We present a decision procedure that solves systems of equations over regular language variables. Given such a system of constraints, our algorithm finds satisfying assignments for the variables in the system. We define this problem formally and render a mechanized correctness proof of the core of the algorithm. We evaluate its scalability and practical utility by applying it to the problem of automatically finding inputs that cause SQL injection vulnerabilities.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "decision procedure; regular language", } @Article{Schwerdfeger:2009:VCD, author = "August C. Schwerdfeger and Eric R. {Van Wyk}", title = "Verifiable composition of deterministic grammars", journal = j-SIGPLAN, volume = "44", number = "6", pages = "199--210", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542476.1542499", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "There is an increasing interest in extensible languages, (domain-specific) language extensions, and mechanisms for their specification and implementation. One challenge is to develop tools that allow non-expert programmers to add an eclectic set of language extensions to a host language. We describe mechanisms for composing and analyzing concrete syntax specifications of a host language and extensions to it. These specifications consist of context-free grammars with each terminal symbol mapped to a regular expression, from which a slightly-modified LR parser and context-aware scanner are generated. Traditionally, conflicts are detected when a parser is generated from the composed grammar, but this comes too late since it is the non-expert programmer directing the composition of independently developed extensions with the host language.\par The primary contribution of this paper is a modular analysis that is performed independently by each extension designer on her extension (composed alone with the host language). If each extension passes this modular analysis, then the language composed later by the programmer will compile with no conflicts or lexical ambiguities. Thus, extension writers can verify that their extension will safely compose with others and, if not, fix the specification so that it will. This is possible due to the context-aware scanner's lexical disambiguation and a set of reasonable restrictions limiting the constructs that can be introduced by an extension. The restrictions ensure that the parse table states can be partitioned so that each state can be attributed to the host language or a single extension.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "context-aware scanning; extensible languages; grammar composition; language composition; lr parsing", } @Article{Torre:2009:ARP, author = "Salvatore La Torre and Madhusudan Parthasarathy and Gennaro Parlato", title = "Analyzing recursive programs using a fixed-point calculus", journal = j-SIGPLAN, volume = "44", number = "6", pages = "211--222", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543135.1542500", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We show that recursive programs where variables range over finite domains can be effectively and efficiently analyzed by describing the analysis algorithm using a formula in a fixed-point calculus. In contrast with programming in traditional languages, a fixed-point calculus serves as a high-level programming language to easily, correctly, and succinctly describe model-checking algorithms While there have been declarative high-level formalisms that have been proposed earlier for analysis problems (e.g., Datalog the fixed-point calculus we propose has the salient feature that it also allows {\em algorithmic\/} aspects to be specified.\par We exhibit two classes of algorithms of symbolic (BDD-based) algorithms written using this framework-- one for checking for errors in sequential recursive Boolean programs, and the other to check for errors reachable within a bounded number of context-switches in a concurrent recursive Boolean program. Our formalization of these otherwise complex algorithms is extremely simple, and spans just a page of fixed-point formulae. Moreover, we implement these algorithms in a tool called Getafix which expresses algorithms as fixed-point formulae and evaluates them efficiently using a symbolic fixed-point solver called Mucke. The resulting model-checking tools are surprisingly efficient and are competitive in performance with mature existing tools that have been fine-tuned for these problems.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstraction; logic; model-checking; mu-calculus; recursive systems; software verification", } @Article{Srivastava:2009:PVU, author = "Saurabh Srivastava and Sumit Gulwani", title = "Program verification using templates over predicate abstraction", journal = j-SIGPLAN, volume = "44", number = "6", pages = "223--234", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543135.1542501", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We address the problem of automatically generating invariants with quantified and boolean structure for proving the validity of given assertions or generating pre-conditions under which the assertions are valid. We present three novel algorithms, having different strengths, that combine template and predicate abstraction based formalisms to discover required sophisticated program invariants using SMT solvers.\par Two of these algorithms use an iterative approach to compute fixed-points (one computes a least fixed-point and the other computes a greatest fixed-point), while the third algorithm uses a constraint based approach to encode the fixed-point. The key idea in all these algorithms is to reduce the problem of invariant discovery to that of finding {\em optimal\/} solutions for unknowns (over conjunctions of some predicates from a given set) in a template formula such that the formula is valid.\par Preliminary experiments using our implementation of these algorithms show encouraging results over a benchmark of small but complicated programs. Our algorithms can verify program properties that, to our knowledge, have not been automatically verified before. In particular, our algorithms can generate full correctness proofs for sorting algorithms (which requires nested universally-existentially quantified invariants) and can also generate preconditions required to establish worst-case upper bounds of sorting algorithms. Furthermore, for the case of previously considered properties, in particular sortedness in sorting algorithms, our algorithms take less time than reported by previous techniques.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "constraint-based fixed-point; iterative fixed-point; predicate abstraction; quantified invariants; SMT solvers; template invariants; weakest preconditions", } @Article{Aftandilian:2009:GAU, author = "Edward E. Aftandilian and Samuel Z. Guyer", title = "{GC} assertions: using the garbage collector to check heap properties", journal = j-SIGPLAN, volume = "44", number = "6", pages = "235--244", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543135.1542503", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper introduces {\em GC assertions}, a system interface that programmers can use to check for errors, such as data structure invariant violations, and to diagnose performance problems, such as memory leaks. GC assertions are checked by the garbage collector, which is in a unique position to gather information and answer questions about the lifetime and connectivity of objects in the heap. By piggybacking on existing garbage collector computations, our system is able to check heap properties with very low overhead -- around 3\% of total execution time -- low enough for use in a deployed setting.\par We introduce several kinds of GC assertions and describe how they are implemented in the collector. We also describe our reporting mechanism, which provides a complete path through the heap to the offending objects. We report results on both the performance of our system and the experience of using our assertions to find and repair errors in real-world programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dynamic analysis; garbage collection; heap properties", } @Article{Nagarakatte:2009:SHC, author = "Santosh Nagarakatte and Jianzhou Zhao and Milo M. K. Martin and Steve Zdancewic", title = "{SoftBound}: highly compatible and complete spatial memory safety for {C}", journal = j-SIGPLAN, volume = "44", number = "6", pages = "245--258", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542476.1542504", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Mar 11 18:10:42 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The serious bugs and security vulnerabilities facilitated by C/C++'s lack of bounds checking are well known, yet C and C++ remain in widespread use. Unfortunately, C's arbitrary pointer arithmetic, conflation of pointers and arrays, and programmer-visible memory layout make retrofitting C/C++ with spatial safety guarantees extremely challenging. Existing approaches suffer from incompleteness, have high runtime overhead, or require non-trivial changes to the C source code. Thus far, these deficiencies have prevented widespread adoption of such techniques.\par This paper proposes SoftBound, a compile-time transformation for enforcing spatial safety of C. Inspired by HardBound, a previously proposed hardware-assisted approach, SoftBound similarly records base and bound information for every pointer as disjoint metadata. This decoupling enables SoftBound to provide spatial safety without requiring changes to C source code. Unlike HardBound, SoftBound is a software-only approach and performs metadata manipulation only when loading or storing pointer values. A formal proof shows that this is sufficient to provide spatial safety even in the presence of arbitrary casts. SoftBound's full checking mode provides complete spatial violation detection with 67\% runtime overhead on average. To further reduce overheads, SoftBound has a store-only checking mode that successfully detects all the security vulnerabilities in a test suite at the cost of only 22\% runtime overhead on average.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "buffer overflows; c; spatial memory safety", } @Article{Oiwa:2009:IMS, author = "Yutaka Oiwa", title = "Implementation of the memory-safe full {ANSI-C} compiler", journal = j-SIGPLAN, volume = "44", number = "6", pages = "259--269", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542476.1542505", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper describes a completely memory-safe compiler for C language programs that is fully compatible with the ANSI C specification.\par Programs written in C often suffer from nasty errors due to dangling pointers and buffer overflow. Such errors in Internet server programs are often exploited by malicious attackers to crack an entire system. The origin of these errors is usually corruption of in-memory data structures caused by out-of-bound array accesses. Usual C compilers do not provide any protection against such out-of-bound access, although many other languages such as Java and ML do provide such protection. There have been several proposals for preventing such memory corruption from various aspects: runtime buffer overrun detectors, designs for new C-like languages, and compilers for (subsets of) the C language. However, as far as we know, none of them have achieved full memory protection and full compatibility with the C language specification at the same time.\par We propose the most powerful solution to this problem ever presented. We have developed {\em Fail-Safe C}, a memory-safe implementation of the full ANSI C language. It detects and disallows all unsafe operations, yet conforms to the full ANSI C standard (including casts and unions). This paper introduces several techniques--both compile-time and runtime--to reduce the overhead of runtime checks, while still maintaining 100\% memory safety. This compiler lets programmers easily make their programs safe without heavy rewriting or porting of their code. It also supports many of the 'dirty tricks' commonly used in many existing C programs, which do not strictly conform to the standard specification. In this paper, we demonstrate several real-world server programs that can be processed by our compiler and present technical details and benchmark results for it.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "C language; memory safety", } @Article{Rubio-Gonzalez:2009:EPA, author = "Cindy Rubio-Gonz{\'a}lez and Haryadi S. Gunawi and Ben Liblit and Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau", title = "Error propagation analysis for file systems", journal = j-SIGPLAN, volume = "44", number = "6", pages = "270--280", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542476.1542506", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Unchecked errors are especially pernicious in operating system file management code. Transient or permanent hardware failures are inevitable, and error-management bugs at the file system layer can cause silent, unrecoverable data corruption. We propose an interprocedural static analysis that tracks errors as they propagate through file system code. Our implementation detects overwritten, out-of-scope, and unsaved unchecked errors. Analysis of four widely-used Linux file system implementations (CIFS, ext3, IBM JFS and ReiserFS), a relatively new file system implementation (ext4), and shared virtual file system (VFS) code uncovers 312 error propagation bugs. Our flow- and context-sensitive approach produces more precise results than related techniques while providing better diagnostic information, including possible execution paths that demonstrate each bug found.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "binary decision diagrams; copy constant propagation; interprocedural dataflow analysis; static program analysis; weighted pushdown systems", } @Article{Qi:2009:SCB, author = "Xin Qi and Andrew C. Myers", title = "Sharing classes between families", journal = j-SIGPLAN, volume = "44", number = "6", pages = "281--292", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542476.1542508", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Class sharing is a new language mechanism for building extensible software systems. Recent work has separately explored two different kinds of extensibility: first, family inheritance, in which an entire family of related classes can be inherited, and second, adaptation, in which existing objects are extended in place with new behavior and state. Class sharing integrates these two kinds of extensibility mechanisms. With little programmer effort, objects of one family can be used as members of another, while preserving relationships among objects. Therefore, a family of classes can be adapted in place with new functionality spanning multiple classes. Object graphs can evolve from one family to another, adding or removing functionality even at run time.\par Several new mechanisms support this flexibility while ensuring type safety. Class sharing has been implemented as an extension to Java, and its utility for evolving and extending software is demonstrated with realistic systems.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "family inheritance; masked types; views", } @Article{Rendel:2009:TSR, author = "Tillman Rendel and Klaus Ostermann and Christian Hofer", title = "Typed self-representation", journal = j-SIGPLAN, volume = "44", number = "6", pages = "293--303", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542476.1542509", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Self-representation -- the ability to represent programs in their own language -- has important applications in reflective languages and many other domains of programming language design. Although approaches to designing typed program representations for sublanguages of some base language have become quite popular recently, the question whether a fully metacircular typed self-representation is possible is still open. This paper makes a big step towards this aim by defining the F$_{$\omega$}$ * calculus, an extension of the higher-order polymorphic lambda calculus F$_{$\omega$}$ that allows typed self-representations. While the usability of these representations for metaprogramming is still limited, we believe that our approach makes a significant step towards a new generation of reflective languages that are both safe and efficient.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "lambda calculus; language design; reflection; self interpretation; types", } @Article{Kawaguchi:2009:TBD, author = "Ming Kawaguchi and Patrick Rondon and Ranjit Jhala", title = "Type-based data structure verification", journal = j-SIGPLAN, volume = "44", number = "6", pages = "304--315", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542476.1542510", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present a refinement type-based approach for the static verification of complex data structure invariants. Our approach is based on the observation that complex data structures are typically fashioned from two elements: recursion (e.g., lists and trees), and maps (e.g., arrays and hash tables). We introduce two novel type-based mechanisms targeted towards these elements: recursive refinements and polymorphic refinements. These mechanisms automate the challenging work of generalizing and instantiating rich universal invariants by piggybacking simple refinement predicates on top of types, and carefully dividing the labor of analysis between the type system and an SMT solver. Further, the mechanisms permit the use of the abstract interpretation framework of liquid type inference to automatically synthesize complex invariants from simple logical qualifiers, thereby almost completely automating the verification. We have implemented our approach in dsolve, which uses liquid types to verify ocaml programs. We present experiments that show that our type-based approach reduces the manual annotation required to verify complex properties like sortedness, balancedness, binary-search-ordering, and acyclicity by more than an order of magnitude.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dependent types; Hindley--Milner; predicate abstraction; type inference", } @Article{Tristan:2009:VVL, author = "Jean-Baptiste Tristan and Xavier Leroy", title = "Verified validation of lazy code motion", journal = j-SIGPLAN, volume = "44", number = "6", pages = "316--326", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542476.1542512", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Translation validation establishes {\em a posteriori\/} the correctness of a run of a compilation pass or other program transformation. In this paper, we develop an efficient translation validation algorithm for the Lazy Code Motion (LCM) optimization. LCM is an interesting challenge for validation because it is a global optimization that moves code across loops. Consequently, care must be taken not to move computations that may fail before loops that may not terminate. Our validator includes a specific check for anticipability to rule out such incorrect moves. We present a mechanically-checked proof of correctness of the validation algorithm, using the Coq proof assistant. Combining our validator with an unverified implementation of LCM, we obtain a LCM pass that is provably semantics-preserving and was integrated in the CompCert formally verified compiler.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "lazy code motion; redundancy elimination; the coq proof assistant; translation validation; verified compilers", } @Article{Kundu:2009:POC, author = "Sudipta Kundu and Zachary Tatlock and Sorin Lerner", title = "Proving optimizations correct using parameterized program equivalence", journal = j-SIGPLAN, volume = "44", number = "6", pages = "327--337", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542476.1542513", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Translation validation is a technique for checking that, after an optimization has run, the input and output of the optimization are equivalent. Traditionally, translation validation has been used to prove concrete, fully specified programs equivalent. In this paper we present Parameterized Equivalence Checking (PEC), a generalization of translation validation that can prove the equivalence of parameterized programs. A parameterized program is a partially specified program that can represent multiple concrete programs. For example, a parameterized program may contain a section of code whose only known property is that it does not modify certain variables. By proving parameterized programs equivalent, PEC can prove the correctness of transformation rules that represent complex optimizations once and for all, before they are ever run. We implemented our PEC technique in a tool that can establish the equivalence of two parameterized programs. To highlight the power of PEC, we designed a language for implementing complex optimizations using many-to-many rewrite rules, and used this language to implement a variety of optimizations including software pipelining, loop unrolling, loop unswitching, loop interchange, and loop fusion. Finally, to demonstrate the effectiveness of PEC, we used our PEC implementation to verify that all the optimizations we implemented in our language preserve program behavior.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compiler optimization; correctness; translation validation", } @Article{Zee:2009:IPL, author = "Karen Zee and Viktor Kuncak and Martin C. Rinard", title = "An integrated proof language for imperative programs", journal = j-SIGPLAN, volume = "44", number = "6", pages = "338--351", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542476.1542514", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present an integrated proof language for guiding the actions of multiple reasoning systems as they work together to prove complex correctness properties of imperative programs. The language operates in the context of a program verification system that uses multiple reasoning systems to discharge generated proof obligations. It is designed to 1) enable developers to resolve key choice points in complex program correctness proofs, thereby enabling automated reasoning systems to successfully prove the desired correctness properties; 2) allow developers to identify key lemmas for the reasoning systems to prove, thereby guiding the reasoning systems to find an effective proof decomposition; 3) enable multiple reasoning systems to work together productively to prove a single correctness property by providing a mechanism that developers can use to divide the property into lemmas, each of which is suitable for a different reasoning system; and 4) enable developers to identify specific lemmas that the reasoning systems should use when attempting to prove other lemmas or correctness properties, thereby appropriately confining the search space so that the reasoning systems can find a proof in an acceptable amount of time.\par The language includes a rich set of declarative proof constructs that enables developers to direct the reasoning systems as little or as much as they desire. Because the declarative proof statements are embedded into the program as specialized comments, they also serve as verified documentation and are a natural extension of the assertion mechanism found in most program verification systems.\par We have implemented our integrated proof language in the context of a program verification system for Java and used the resulting system to verify a collection of linked data structure implementations. Our experience indicates that our proof language makes it possible to successfully prove complex program correctness properties that are otherwise beyond the reach of automated reasoning systems.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "proof system; theorem prover; verification", } @Article{Ravitch:2009:AGL, author = "Tristan Ravitch and Steve Jackson and Eric Aderhold and Ben Liblit", title = "Automatic generation of library bindings using static analysis", journal = j-SIGPLAN, volume = "44", number = "6", pages = "352--362", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543135.1542516", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "High-level languages are growing in popularity. However, decades of C software development have produced large libraries of fast, time-tested, meritorious code that are impractical to recreate from scratch. Cross-language bindings can expose low-level C code to high-level languages. Unfortunately, writing bindings by hand is tedious and error-prone, while mainstream binding generators require extensive manual annotation or fail to offer the language features that users of modern languages have come to expect.\par We present an improved binding-generation strategy based on static analysis of unannotated library source code. We characterize three high-level idioms that are not uniquely expressible in C's low-level type system: array parameters, resource managers, and multiple return values. We describe a suite of interprocedural analyses that recover this high-level information, and we show how the results can be used in a binding generator for the Python programming language. In experiments with four large C libraries, we find that our approach avoids the mistakes characteristic of hand-written bindings while offering a level of Python integration unmatched by prior automated approaches. Among the thousands of functions in the public interfaces of these libraries, roughly 40\% exhibit the behaviors detected by our static analyses.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bindings; dataflow analysis; FFI; foreign function interfaces; multi-language code reuse; static library analysis", } @Article{Chandra:2009:SPA, author = "Satish Chandra and Stephen J. Fink and Manu Sridharan", title = "{Snugglebug}: a powerful approach to weakest preconditions", journal = j-SIGPLAN, volume = "44", number = "6", pages = "363--374", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543135.1542517", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Symbolic analysis shows promise as a foundation for bug-finding, specification inference, verification, and test generation. This paper addresses demand-driven symbolic analysis for object-oriented programs and frameworks. Many such codes comprise large, partial programs with highly dynamic behaviors--polymorphism, reflection, and so on--posing significant scalability challenges for any static analysis.\par We present an approach based on interprocedural backwards propagation of weakest preconditions. We present several novel techniques to improve the efficiency of such analysis. First, we present {\em directed call graph construction}, where call graph construction and symbolic analysis are interleaved. With this technique, call graph construction is guided by constraints discovered during symbolic analysis, obviating the need for exhaustively exploring a large, conservative call graph. Second, we describe {\em generalization}, a technique that greatly increases the reusability of procedure summaries computed during interprocedural analysis. Instead of tabulating how a procedure transforms a symbolic state in its entirety, our technique tabulates how the procedure transforms only the pertinent portion of the symbolic state. Additionally, we show how integrating an inexpensive, custom logic simplifier with weakest precondition computation dramatically improves performance.\par We have implemented the analysis in a tool called Snugglebug and evaluated it as a bug-report feasibility checker. Our results show that the algorithmic techniques were critical for successfully analyzing large Java applications.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "interprocedural analysis; symbolic analysis; weakest preconditions", } @Article{Gulwani:2009:CFR, author = "Sumit Gulwani and Sagar Jain and Eric Koskinen", title = "Control-flow refinement and progress invariants for bound analysis", journal = j-SIGPLAN, volume = "44", number = "6", pages = "375--385", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543135.1542518", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Symbolic complexity bounds help programmers understand the performance characteristics of their implementations. Existing work provides techniques for statically determining bounds of procedures with simple control-flow. However, procedures with nested loops or multiple paths through a single loop are challenging.\par In this paper we describe two techniques, {\em control-flow refinement\/} and {\em progress invariants}, that together enable estimation of precise bounds for procedures with nested and multi-path loops. Control-flow refinement transforms a multi-path loop into a semantically equivalent code fragment with simpler loops by making the structure of path interleaving explicit. We show that this enables non-disjunctive invariant generation tools to find a bound on many procedures for which previous techniques were unable to prove termination. Progress invariants characterize relationships between consecutive states that can arise at a program location. We further present an algorithm that uses progress invariants to compute precise bounds for nested loops. The utility of these two techniques goes beyond our application to symbolic bound analysis. In particular, we discuss applications of control-flow refinement to proving safety properties that otherwise require disjunctive invariants.\par We have applied our methodology to over 670,000 lines of code of a significant Microsoft product and were able to find symbolic bounds for 90\% of the loops. We are not aware of any other published results that report experiences running a bound analysis on a real code-base.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bound analysis; control-flow refinement; formal verification; program verification; progress invariants; termination", } @Article{Inoue:2009:SMM, author = "Hiroshi Inoue and Hideaki Komatsu and Toshio Nakatani", title = "A study of memory management for {Web}-based applications on multicore processors", journal = j-SIGPLAN, volume = "44", number = "6", pages = "386--396", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542476.1542520", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "More and more server workloads are becoming Web-based. In these Web-based workloads, most of the memory objects are used only during one transaction. We study the effect of the memory management approaches on the performance of such Web-based applications on two modern multicore processors. In particular, using six PHP applications, we compare a general-purpose allocator (the default allocator of the PHP runtime) and a region-based allocator, which can reduce the cost of memory management by not supporting per-object free. The region-based allocator achieves better performance for all workloads on one processor core due to its smaller memory management cost. However, when using eight cores, the region-based allocator suffers from hidden costs of increased bus traffics and the performance is reduced for many workloads by as much as 27.2\% compared to the default allocator. This is because the memory bandwidth tends to become a bottleneck in systems with multicore processors.\par We propose a new memory management approach, {\em defrag-dodging}, to maximize the performance of the Web-based workloads on multicore processors. In our approach, we reduce the memory management cost by avoiding defragmentation overhead in the malloc and free functions during a transaction. We found that the transactions in Web-based applications are short enough to ignore heap fragmentation, and hence the costs of the defragmentation activities in existing general-purpose allocators outweigh their benefits. By comparing our approach against the region-based approach, we show that a per-object free capability can reduce bus traffic and achieve higher performance on multicore processors. We demonstrate that our defrag-dodging approach improves the performance of all the evaluated applications on both processors by up to 11.4\% and 51.5\% over the default allocator and the region-based allocator, respectively.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dynamic memory management; region-based memory management; scripting language; web-based applications", } @Article{Novark:2009:EPL, author = "Gene Novark and Emery D. Berger and Benjamin G. Zorn", title = "Efficiently and precisely locating memory leaks and bloat", journal = j-SIGPLAN, volume = "44", number = "6", pages = "397--407", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543135.1542521", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Inefficient use of memory, including leaks and bloat, remain a significant challenge for C and C++ developers. Applications with these problems become slower over time as their working set grows and can become unresponsive. At the same time, memory leaks and bloat remain notoriously difficult to debug, and comprise a large number of reported bugs in mature applications. Previous tools for diagnosing memory inefficiencies-based on garbage collection, binary rewriting, or code sampling-impose high overheads (up to 100X) or generate many false alarms.\par This paper presents Hound, a runtime system that helps track down the sources of memory leaks and bloat in C and C++ applications. Hound employs {\em data sampling}, a staleness-tracking approach based on a novel heap organization, to make it both precise and efficient. Hound has no false positives, and its runtime and space overhead are low enough that it can be used in deployed applications. We demonstrate Hound's efficacy across a suite of synthetic benchmarks and real applications.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dynamic memory allocation; heap profiling; hound; memory leak detection; virtual compaction", } @Article{Shacham:2009:CAS, author = "Ohad Shacham and Martin Vechev and Eran Yahav", title = "{Chameleon}: adaptive selection of collections", journal = j-SIGPLAN, volume = "44", number = "6", pages = "408--418", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542476.1542522", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Languages such as Java and C\#, as well as scripting languages like Python, and Ruby, make extensive use of Collection classes. A collection implementation represents a fixed choice in the dimensions of operation time, space utilization, and synchronization. Using the collection in a manner not consistent with this fixed choice can cause significant performance degradation. In this paper, we present CHAMELEON, a low-overhead automatic tool that assists the programmer in choosing the appropriate collection implementation for her application. During program execution, CHAMELEON computes elaborate trace and heap-based metrics on collection behavior. These metrics are consumed on-the-fly by a rules engine which outputs a list of suggested collection adaptation strategies. The tool can apply these corrective strategies automatically or present them to the programmer. We have implemented CHAMELEON on top of a IBM's J9 production JVM, and evaluated it over a small set of benchmarks. We show that for some applications, using CHAMELEON leads to a significant improvement of the memory footprint of the application.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bloat; collections; Java; semantic profiler", } @Article{Xu:2009:GFP, author = "Guoqing Xu and Matthew Arnold and Nick Mitchell and Atanas Rountev and Gary Sevitsky", title = "Go with the flow: profiling copies to find runtime bloat", journal = j-SIGPLAN, volume = "44", number = "6", pages = "419--430", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542476.1542523", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Many large-scale Java applications suffer from runtime bloat. They execute large volumes of methods, and create many temporary objects, all to execute relatively simple operations. There are large opportunities for performance optimizations in these applications, but most are being missed by existing optimization and tooling technology. While JIT optimizations struggle for a few percent, performance experts analyze deployed applications and regularly find gains of 2x or more.\par Finding such big gains is difficult, for both humans and compilers, because of the diffuse nature of runtime bloat. Time is spread thinly across calling contexts, making it difficult to judge how to improve performance. Bloat results from a pile-up of seemingly harmless decisions. Each adds temporary objects and method calls, and often copies values between those temporary objects. While data copies are not the entirety of bloat, we have observed that they are excellent indicators of regions of excessive activity. By optimizing copies, one is likely to remove the objects that carry copied values, and the method calls that allocate and populate them.\par We introduce {\em copy profiling}, a technique that summarizes runtime activity in terms of chains of data copies. A flat copy profile counts copies by method. We show how flat profiles alone can be helpful. In many cases, diagnosing a problem requires data flow context. Tracking and making sense of raw copy chains does not scale, so we introduce a summarizing abstraction called the {\em copy graph}. We implement three clients analyses that, using the copy graph, expose common patterns of bloat, such as finding hot copy chains and discovering temporary data structures. We demonstrate, with examples from a large-scale commercial application and several benchmarks, that copy profiling can be used by a programmer to quickly find opportunities for large performance gains.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "copy graph; heap analysis; memory bloat; profiling", } @Article{Saha:2009:PMH, author = "Bratin Saha and Xiaocheng Zhou and Hu Chen and Ying Gao and Shoumeng Yan and Mohan Rajagopalan and Jesse Fang and Peinan Zhang and Ronny Ronen and Avi Mendelson", title = "Programming model for a heterogeneous x86 platform", journal = j-SIGPLAN, volume = "44", number = "6", pages = "431--440", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543135.1542525", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The client computing platform is moving towards a heterogeneous architecture consisting of a combination of cores focused on scalar performance, and a set of throughput-oriented cores. The throughput oriented cores (e.g. a GPU) may be connected over both coherent and non-coherent interconnects, and have different ISAs. This paper describes a programming model for such heterogeneous platforms. We discuss the language constructs, runtime implementation, and the memory model for such a programming environment. We implemented this programming environment in a x86 heterogeneous platform simulator. We ported a number of workloads to our programming environment, and present the performance of our programming environment on these workloads.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "heterogeneous platforms; programming model", } @Article{Tallent:2009:BAM, author = "Nathan R. Tallent and John M. Mellor-Crummey and Michael W. Fagan", title = "Binary analysis for measurement and attribution of program performance", journal = j-SIGPLAN, volume = "44", number = "6", pages = "441--452", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542476.1542526", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Modern programs frequently employ sophisticated modular designs. As a result, performance problems cannot be identified from costs attributed to routines in isolation; understanding code performance requires information about a routine's calling context. Existing performance tools fall short in this respect. Prior strategies for attributing context-sensitive performance at the source level either compromise measurement accuracy, remain too close to the binary, or require custom compilers. To understand the performance of fully optimized modular code, we developed two novel binary analysis techniques: 1) {\em on-the-fly\/} analysis of optimized machine code to enable minimally intrusive and accurate attribution of costs to dynamic calling contexts; and 2) post-mortem analysis of optimized machine code and its debugging sections to recover its program structure and reconstruct a mapping back to its source code. By combining the recovered static program structure with dynamic calling context information, we can accurately attribute performance metrics to calling contexts, procedures, loops, and inlined instances of procedures. We demonstrate that the fusion of this information provides unique insight into the performance of complex modular codes. This work is implemented in the HPCToolkit performance tools (http://hpctoolkit.org).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "binary analysis; call path profiling; HPCToolkit; performance tools; static analysis", } @Article{Hoffman:2009:SAT, author = "Kevin J. Hoffman and Patrick Eugster and Suresh Jagannathan", title = "Semantics-aware trace analysis", journal = j-SIGPLAN, volume = "44", number = "6", pages = "453--464", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542476.1542527", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "As computer systems continue to become more powerful and complex, so do programs. High-level abstractions introduced to deal with complexity in large programs, while simplifying human reasoning, can often obfuscate salient program properties gleaned from automated source-level analysis through subtle (often non-local) interactions. Consequently, understanding the effects of program changes and whether these changes violate intended protocols become difficult to infer. Refactorings, and feature additions, modifications, or removals can introduce hard-to-catch bugs that often go undetected until many revisions later.\par To address these issues, this paper presents a novel dynamic program analysis that builds a {\em semantic view\/} of program executions. These views reflect program abstractions and aspects; however, views are not simply projections of execution traces, but are linked to each other to capture semantic interactions among abstractions at different levels of granularity in a scalable manner.\par We describe our approach in the context of Java and demonstrate its utility to improve {\em regression analysis}. We first formalize a subset of Java and a grammar for traces generated at program execution. We then introduce several types of views used to analyze regression bugs along with a novel, scalable technique for semantic differencing of traces from different versions of the same program. Benchmark results on large open-source Java programs demonstrate that semantic-aware trace differencing can identify precise and useful details about the underlying cause for a regression, even in programs that use reflection, multithreading, or dynamic code generation, features that typically confound other analysis techniques.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "automated debugging; debugging aids; semantic tracing; testing tools; trace views; tracing", } @Article{Gal:2009:TBJ, author = "Andreas Gal and Brendan Eich and Mike Shaver and David Anderson and David Mandelin and Mohammad R. Haghighat and Blake Kaplan and Graydon Hoare and Boris Zbarsky and Jason Orendorff and Jesse Ruderman and Edwin W. Smith and Rick Reitmaier and Michael Bebenita and Mason Chang and Michael Franz", title = "Trace-based just-in-time type specialization for dynamic languages", journal = j-SIGPLAN, volume = "44", number = "6", pages = "465--478", month = jun, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542476.1542528", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Jun 16 14:41:16 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Dynamic languages such as JavaScript are more difficult to compile than statically typed ones. Since no concrete type information is available, traditional compilers need to emit generic code that can handle all possible type combinations at runtime. We present an alternative compilation technique for dynamically-typed languages that identifies frequently executed loop traces at run-time and then generates machine code on the fly that is specialized for the actual dynamic types occurring on each path through the loop. Our method provides cheap inter-procedural type specialization, and an elegant and efficient way of incrementally compiling lazily discovered alternative paths through nested loops. We have implemented a dynamic compiler for JavaScript based on our technique and we have measured speedups of 10x and more for certain benchmark programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dynamically typed languages; trace-based compilation", } @Article{Stotzer:2009:MSO, author = "Eric J. Stotzer and Ernst L. Leiss", title = "Modulo scheduling without overlapped lifetimes", journal = j-SIGPLAN, volume = "44", number = "7", pages = "1--10", month = jul, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542452.1542454", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Jun 26 12:07:39 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper describes complementary software- and hardware-based approaches for handling overlapping register lifetimes that occur in modulo scheduled loops. Modulo scheduling takes the N-instructions in a loop body and constructs an M-stage software pipeline. The length of each stage in the software pipeline is the Initiation Interval (II), which is the rate at which new loop iterations are started. An overlapped lifetime has a live range longer than the II, and as a consequence, the current iteration writes a new value to a register before a previous loop iteration has finished using the old value. Hardware and software solutions for dealing with overlapped lifetimes have been proposed by re-searchers and also implemented in commercial products. These solutions include rotating register files, register queues, modulo variable expansion, and post-scheduling live range splitting. Each of these approaches has drawbacks for embedded systems such as an increase in silicon area, power consumption, and code size.\par Our approach, which is an improvement to the current solutions, prevents overlapped lifetimes through a combination of hardware and software techniques. The hardware element of our approach implements a register assignment latency that allows multiple in-flight writes to be pending to the same register. The software element of our approach uses dependence analysis and a constrained modulo scheduling algorithm to prevent overlapped lifetimes. We describe how to use these hardware and software techniques during modulo scheduling. Finally, we present the results of using our approach to compile embedded application code and present results in terms of modulo schedule quality and application performance.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "instruction level parallelism; modulo scheduling; register allocation; software pipelining", } @Article{Caspi:2009:SOS, author = "Paul Caspi and Jean-Louis Cola{\c{c}}o and L{\'e}onard G{\'e}rard and Marc Pouzet and Pascal Raymond", title = "Synchronous objects with scheduling policies: introducing safe shared memory in {Lustre}", journal = j-SIGPLAN, volume = "44", number = "7", pages = "11--20", month = jul, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543136.1542455", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Jun 26 12:07:39 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper addresses the problem of designing and implementing complex control systems for real-time embedded software. Typical applications involve different control laws corresponding to different phases or {\em modes}, e.g., take-off, full flight and landing in a fly-by-wire control system. On one hand, existing methods such as the combination of Simulink/Stateflow provide powerful but unsafe mechanisms by means of imperative updates of shared variables. On the other hand, synchronous languages and tools such as Esterel or SCADE/Lustre are too restrictive and forbid to fully separate the specification of modes from their actual instantiation with a particular control automaton.\par In this paper, we introduce a conservative extension of a synchronous data-flow language close to Lustre, in order to be able to define systems with modes in a more modular way, while insuring the absence of data-races. We show that such a system can be viewed as an {\em object\/} where modes are {\em methods\/} acting on a shared memory. The object is associated to a {\em scheduling policy\/} which specifies the ways methods can be called to build a valid synchronous reaction. We show that the verification of the proper use of an object reduces to a type inference problem using {\em row types\/} introduced by Wand, R{\'e}my and Vouillon. We define the semantics of the extended synchronous language and the type system. The proposed extension has been implemented and we illustrate its use through several examples.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "block-diagrams; compilation; real-time systems; semantics; synchronous languages; type systems", } @Article{Oh:2009:RCA, author = "Taewook Oh and Bernhard Egger and Hyunchul Park and Scott Mahlke", title = "Recurrence cycle aware modulo scheduling for coarse-grained reconfigurable architectures", journal = j-SIGPLAN, volume = "44", number = "7", pages = "21--30", month = jul, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543136.1542456", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Jun 26 12:07:39 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In high-end embedded systems, coarse-grained reconfigurable architectures (CGRA) continue to replace traditional ASIC designs. CGRAs offer high performance at a low power consumption, yet provide flexibility through programmability. In this paper we introduce a recurrence cycle-aware scheduling technique for CGRAs. Our modulo scheduler groups operations belonging to a recurrence cycle into a clustered node and then computes a scheduling order for those clustered nodes. Deadlocks that arise when two or more recurrence cycles depend on each other are resolved by using heuristics that favor recurrence cycles with long recurrence delays. While with previous work one had to sacrifice either a fast compilation speed in order to get good quality results, or vice versa, this is not necessary anymore with the proposed recurrence cycle-aware scheduling technique. We have implemented the proposed method into our in-house CGRA chip and compiler solution and show that the technique achieves better quality schedules than schedulers based on simulated annealing at a 170-fold speed increase.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "coarse-grained reconfigurable architectures; placement and routing; software pipelining", } @Article{Zou:2009:PFT, author = "Jia Zou and Joshua Auerbach and David F. Bacon and Edward A. Lee", title = "{PTIDES} on flexible task graph: real-time embedded system building from theory to practice", journal = j-SIGPLAN, volume = "44", number = "7", pages = "31--40", month = jul, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543136.1542457", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Jun 26 12:07:39 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The Flexotask system claims to enable implementation of both real-time applications and real-time schedulers in a Java Virtual Machine using an actors-like model. The PTIDES model is an actors-like model that claims to deliver precise control over end-to-end latencies in a complex real-time system. The present work jointly investigates both claims by (1) implementing several PTIDES-based schedulers as Flexotask scheduler plugins, and (2) using the resulting system to implement a new reactive control program for a simulation of the JAviator. We present results from the realistic JAviator control application and also from synthetic benchmarks designed to shed light on the differences between the several PTIDES schedulers we implemented.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "flexible task graphs; jitter elimination; PTIDES; real-time scheduling; real-time systems", } @Article{Lee:2009:COR, author = "Jongeun Lee and Aviral Shrivastava", title = "A compiler optimization to reduce soft errors in register files", journal = j-SIGPLAN, volume = "44", number = "7", pages = "41--49", month = jul, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543136.1542459", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Jun 26 12:07:39 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Register file (RF) is extremely vulnerable to soft errors, and traditional redundancy based schemes to protect the RF are prohibitive not only because RF is often in the timing critical path of the processor, but also since it is one of the hottest blocks on the chip, and therefore adding any extra circuitry to it is not desirable. Pure software approaches would be ideal in this case, but previous approaches that are based on program duplication have very significant runtime overheads, and others based on instruction scheduling are only moderately effective due to local scope. We show that the problem of protecting registers inherently requires inter-procedural analysis, and intra-procedural optimization are ineffective. This paper presents a pure compiler approach, based on inter-procedural code analysis to reduce the vulnerability of registers by temporarily writing live variables to protected memory. We formulate the problem as an integer linear programming problem and also present a very efficient heuristic algorithm. Our experiments demonstrate that our proposed technique can reduce the vulnerability of the RF by 33 ~ 37\% on average and up to 66\%, with a small 2\% increase in runtime. In addition, our overhead reduction optimizations can effectively reduce the code size overhead, by more than 40\% on average, to a mere 5 ~ 6\%, as compared to highly optimized binaries.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "architectural vulnerability factor; compilation; embedded system; link-time optimization; register file; soft error; static analysis", } @Article{Leather:2009:RPE, author = "Hugh Leather and Michael O'Boyle and Bruce Worton", title = "Raced profiles: efficient selection of competing compiler optimizations", journal = j-SIGPLAN, volume = "44", number = "7", pages = "50--59", month = jul, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542452.1542460", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Jun 26 12:07:39 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Many problems in embedded compilation require one set of optimizations to be selected over another based on run time performance. Self-tuned libraries, iterative compilation and machine learning techniques all compare multiple compiled program versions. In each, program versions are timed to determine which has the best performance.\par The program needs to be run multiple times for each version because there is noise inherent in most performance measurements. The number of runs must be enough to compare different versions, despite the noise, but executing more than this will waste time and energy. The compiler writer must either risk taking too few runs, potentially getting incorrect results, or taking too many runs increasing the time for their experiments or reducing the number of program versions evaluated. Prior works choose constant size sampling plans where each compiled version is executed a fixed number of times without regard to the level of noise.\par In this paper we develop a sequential sampling plan which can automatically adapt to the experiment so that the compiler writer can have both confidence in the results and also be sure that no more runs were taken than were needed. We show that our system is able to correctly determine the best optimization settings with between 76\% and 87\% fewer runs than needed by a brute force, constant sampling size approach. We also compare our approach to JavaSTATS(10); we needed 77\% to 89\% fewer runs than it needed.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "iterative compilation; statistics", } @Article{Yang:2009:ECS, author = "Xuejun Yang and Nathan Cooprider and John Regehr", title = "Eliminating the call stack to save {RAM}", journal = j-SIGPLAN, volume = "44", number = "7", pages = "60--69", month = jul, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543136.1542461", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Jun 26 12:07:39 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Most programming languages support a call stack in the programming model and also in the runtime system. We show that for applications targeting low-power embedded microcontrollers (MCUs), RAM usage can be significantly decreased by partially or completely eliminating the runtime callstack. We present flattening, a transformation that absorbs a function into its caller, replacing function invocations and returns with jumps. Unlike inlining, flattening does not duplicate the bodies of functions that have multiple callsites. Applied aggressively, flattening results in {\em stack elimination}. Flattening is most useful in conjunction with a {\em lifting\/} transformation that moves global variables into a local scope.\par Flattening and lifting can save RAM. However, even more benefit can be obtained by adapting the compiler to cope with properties of flattened code. First, we show that flattening adds false paths that confuse a standard live variables analysis. The resulting problems can be mitigated by breaking spurious live-range conflicts between variables using information from the unflattened callgraph. Second, we show that the impact of high register pressure due to flattened and lifted code, and consequent spills out of the register allocator, can be mitigated by improving a compiler's stack layout optimizations. We have implemented both of these improvements in GCC, and have implemented flattening and lifting as source-to-source transformations. On a collection of applications for the AVR family of 8-bit MCUs, we show that total RAM usage can be reduced by 20\% by compiling flattened and lifted programs with our improved GCC.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compiler optimization; embedded software; memory allocation; memory optimizations; sensor networks; stack liveness", } @Article{Blazy:2009:LRU, author = "Sandrine Blazy and Benoit Robillard", title = "Live-range unsplitting for faster optimal coalescing", journal = j-SIGPLAN, volume = "44", number = "7", pages = "70--79", month = jul, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542452.1542462", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Jun 26 12:07:39 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Register allocation is often a two-phase approach: spilling of registers to memory, followed by coalescing of registers. Extreme live-range splitting (i.e. live-range splitting after each statement) enables optimal solutions based on ILP, for both spilling and coalescing. However, while the solutions are easily found for spilling, for coalescing they are more elusive. This difficulty stems from the huge size of interference graphs resulting from live-range splitting.\par This paper focuses on coalescing in the context of extreme live-range splitting. It presents some theoretical properties that give rise to an algorithm for reducing interference graphs. This reduction consists mainly in finding and removing useless splitting points. It is followed by a graph decomposition based on clique separators. The reduction and decomposition are general enough, so that any coalescing algorithm can be applied afterwards.\par Our strategy for reducing and decomposing interference graphs preserves the optimality of coalescing. When used together with an optimal coalescing algorithm (e.g. ILP), optimal solutions are much more easily found. The strategy has been tested on a standard benchmark, the optimal coalescing challenge. For this benchmark, the cutting-plane algorithm for optimal coalescing (the only optimal algorithm for coalescing) runs 300 times faster when combined with our strategy. Moreover, we provide all the optimal solutions of the optimal coalescing challenge, including the three instances that were previously unsolved.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "coalescing; graph reduction; register allocation", } @Article{Sarkar:2009:PAM, author = "Abhik Sarkar and Frank Mueller and Harini Ramaprasad and Sibin Mohan", title = "Push-assisted migration of real-time tasks in multi-core processors", journal = j-SIGPLAN, volume = "44", number = "7", pages = "80--89", month = jul, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542452.1542464", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Jun 26 12:07:39 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Multicores are becoming ubiquitous, not only in general-purpose but also embedded computing. This trend is a reflexion of contemporary embedded applications posing steadily increasing demands in processing power. On such platforms, prediction of timing behavior to ensure that deadlines of real-time tasks can be met is becoming increasingly difficult. While real-time multicore scheduling approaches help to assure deadlines based on firm theoretical properties, their reliance on task migration poses a significant challenge to timing predictability in practice. Task migration actually (a) reduces timing predictability for contemporary multicores due to cache warm-up overheads while (b) increasing traffic on the network-on-chip (NoC) interconnect.\par This paper puts forth a fundamentally new approach to increase the timing predictability of multicore architectures aimed at task migration in embedded environments. A task migration between two cores imposes cache warm-up overheads on the migration target, which can lead to missed deadlines for tight real-time schedules. We propose novel micro-architectural support to migrate cache lines. Our scheme shows dramatically increased predictability in the presence of cross-core migration.\par Experimental results for schedules demonstrate that our scheme enables real-time tasks to meet their deadlines in the presence of task migration. Our results illustrate that increases in execution time due to migration is reduced by our scheme to levels that may prevent deadline misses of real-time tasks that would otherwise occur. Our mechanism imposes an overhead at a fraction of the task's execution time, yet this overhead can be steered to fill idle slots in the schedule, {\em i.e.}, it does not contribute to the execution time of the migrated task. Overall, our novel migration scheme provides a unique mechanism capable of significantly increasing timing predictability in the wake of task migration.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "multi-core architectures; real-time systems; task migration; timing analysis", } @Article{Mankin:2009:STM, author = "Jennifer Mankin and David Kaeli and John Ardini", title = "Software transactional memory for multicore embedded systems", journal = j-SIGPLAN, volume = "44", number = "7", pages = "90--98", month = jul, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543136.1542465", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Jun 26 12:07:39 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Embedded systems, like general-purpose systems, can benefit from parallel execution on a symmetric multicore platform. Unfortunately, concurrency issues present in general-purpose programming also apply to embedded systems, protection from which is currently only offered with performance-limiting coarse-grained locking or error-prone and difficult-to-implement {\em fine-grained locking}. Transactional memory offers relief from these mechanisms, but has primarily been investigated on general-purpose systems. In this paper, we present {\em Embedded Software Transactional Memory\/} (ESTM) as a novel solution to the concurrency problem in parallel embedded applications. We investigate common software transactional memory design decisions and discuss the best decisions for an embedded platform. We offer a full implementation of an embedded STM and test it against both coarse-grained and fine-grained locking mechanisms. We find that we can meet or beat the performance of fine-grained locking over a range of application characteristics, including size of shared data, time spent in the critical section, and contention between threads. Our ESTM implementation benefits from the effective use of L1 memory, a feature which is built into our STM model but which cannot be directly utilized by traditional locking mechanisms.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "embedded systems; locking; multicore; software transactional memory (STM); synchronization; transactions", } @Article{Udupa:2009:SES, author = "Abhishek Udupa and R. Govindarajan and Matthew J. Thazhuthaveetil", title = "Synergistic execution of stream programs on multicores with accelerators", journal = j-SIGPLAN, volume = "44", number = "7", pages = "99--108", month = jul, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542452.1542466", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Jun 26 12:07:39 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The StreamIt programming model has been proposed to exploit parallelism in streaming applications on general purpose multicore architectures. The StreamIt graphs describe task, data and pipeline parallelism which can be exploited on accelerators such as Graphics Processing Units (GPUs) or CellBE which support abundant parallelism in hardware.\par In this paper, we describe a novel method to orchestrate the execution of a StreamIt program on a multicore platform equipped with an accelerator. The proposed approach identifies, using profiling, the relative benefits of executing a task on the superscalar CPU cores and the accelerator. We formulate the problem of partitioning the work between the CPU cores and the GPU, taking into account the latencies for data transfers and the required buffer layout transformations associated with the partitioning, as an integrated Integer Linear Program (ILP) which can then be solved by an ILP solver. We also propose an efficient heuristic algorithm for the work partitioning between the CPU and the GPU, which provides solutions which are within 9.05\% of the optimal solution on an average across the benchmark suite. The partitioned tasks are then software pipelined to execute on the multiple CPU cores and the Streaming Multiprocessors (SMs) of the GPU. The software pipelining algorithm orchestrates the execution between CPU cores and the GPU by emitting the code for the CPU and the GPU, and the code for the required data transfers. Our experiments on a platform with 8 CPU cores and a GeForce 8800 GTS 512 GPU show a geometric mean speedup of 6.84X with a maximum of 51.96X over a single threaded CPU execution across the StreamIt benchmarks. This is a 18.9\% improvement over a partitioning strategy that maps only the filters that cannot be executed on the GPU -- the filters with state that is persistent across firings -- onto the CPU.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "CUDA; GPU programming; partitioning; software pipelining; stream programming", } @Article{Heinz:2009:TDE, author = "Thomas Heinz and Reinhard Wilhelm", title = "Towards device emulation code generation", journal = j-SIGPLAN, volume = "44", number = "7", pages = "109--118", month = jul, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542452.1542467", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Jun 26 12:07:39 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "For non-embedded software, binary translation has shown to be a successful method for retargeting legacy software onto new platforms. To apply binary translation to embedded software, two issues must be considered. First of all, embedded software often involves real-time constraints that must still be met after translation. Secondly, embedded software contains a significant amount of code dedicated to peripheral device communication which necessitates device emulation. This paper focuses on the last aspect.\par Usually, device emulation code is handcrafted which is tedious and error-prone. This paper presents a method to automatically generate device emulation code from a formal specification of source and target device operations. At the heart of the device operation semantics lie quantifier-free formulae in the theory of fixed width bit vector arithmetic which is a decidable fragment of first-order logic. To the best of our knowledge, this is the first attempt to generate device emulation code from a formal specification.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "binary translation; bit vector arithmetic; code generation; device emulation; satisfiability modulo theories", } @Article{Hines:2009:GIF, author = "Stephen Roderick Hines and Yuval Peress and Peter Gavin and David Whalley and Gary Tyson", title = "Guaranteeing instruction fetch behavior with a {Lookahead Instruction Fetch Engine (LIFE)}", journal = j-SIGPLAN, volume = "44", number = "7", pages = "119--128", month = jul, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543136.1542469", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Jun 26 12:07:39 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Instruction fetch behavior has been shown to be very regular and predictable, even for diverse application areas. In this work, we propose the Lookahead Instruction Fetch Engine (LIFE), which is designed to exploit the regularity present in instruction fetch. The nucleus of LIFE is the Tagless Hit Instruction Cache (TH-IC), a small cache that assists the instruction fetch pipeline stage as it efficiently captures information about both sequential and non-sequential transitions between instructions. TH-IC provides a considerable savings in fetch energy without incurring the performance penalty normally associated with small filter instruction caches. LIFE extends TH-IC by making use of advanced control flow metadata to further improve utilization of fetch-associated structures such as the branch predictor, branch target buffer, and return address stack. These structures are selectively disabled by LIFE when it can be determined that they are unnecessary for the following instruction to be fetched. Our results show that LIFE enables further reductions in total processor energy consumption with no impact on application execution times even for the most aggressive power-saving configuration. We also explore the use of LIFE metadata on guiding decisions further down the pipeline. Next sequential line prefetch for the data cache can be enhanced by only prefetching when the triggering instruction has been previously accessed in the TH-IC. This strategy reduces the number of useless prefetches and thus contributes to improving overall processor efficiency. LIFE enables designers to boost instruction fetch efficiency by reducing energy cost without negatively affecting performance.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "l0/filter cache; lookahead instruction fetch engine (life); tagless hit instruction cache (TH-IC)", } @Article{McKechnie:2009:DFB, author = "Paul E. McKechnie and Michaela Blott and Wim A. Vanderbauwhede", title = "Debugging {FPGA}-based packet processing systems through transaction-level communication-centric monitoring", journal = j-SIGPLAN, volume = "44", number = "7", pages = "129--136", month = jul, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542452.1542470", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Jun 26 12:07:39 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The fine-grained parallelism inherent in FPGAs has encouraged their use in packet processing systems. Debugging and performance evaluation of such complex designs can be significantly improved through debug information that provides a system-level perspective and hides the complexity of signal-level debugging. In this paper we present a debugging system that permits transaction-based communication-centric monitoring of packet processing systems. We demonstrate, using two different examples, how this system can improve the debugging information and abstract lower level detail. Furthermore, we demonstrate that transaction monitoring systems require fewer resources than conventional RTL debugging systems and can provide a system-level perspective not permitted by traditional tools.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "debug; FPGA; instrumentation; monitoring; transaction", } @Article{Gracioli:2009:TIE, author = "Giovani Gracioli and Sebastian Fischmeister", title = "Tracing interrupts in embedded software", journal = j-SIGPLAN, volume = "44", number = "7", pages = "137--146", month = jul, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542452.1542471", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Jun 26 12:07:39 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "During the system development, developers often must correct wrong behavior in the software---an activity colloquially called program debugging. Debugging is a complex activity, especially in real-time embedded systems because such systems interact with the physical world and make heavy use of interrupts for timing and driving I/O devices.\par Debugging interrupts is difficult, because they cause non-linear control flow in programs which is hard to reproduce in software. Record/replay mechanisms have proven their use to debugging embedded systems, because they provide means to recreate control flows offline where they can be debugged.\par In this work, we present the data tracing part of the record/replay mechanism that is specifically targeted to record interrupt behavior. To tune our tracing mechanism, we use the observed principle of return address clustering and a formal model for quantitative reasoning about the tracing mechanism. The presented heuristic and mechanisms show surprisingly good results---up to an 800 percent speedup on the selector function and a 300 percent reduction on duplicates for non-optimal selector functions---considering the leanness of the approach.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "debugging; embedded software; real-time systems; tracing", } @Article{Moore:2009:ACD, author = "Ryan W. Moore and Jos{\'e} A. Baiocchi and Bruce R. Childers and Jack W. Davidson and Jason D. Hiser", title = "Addressing the challenges of {DBT} for the {ARM} architecture", journal = j-SIGPLAN, volume = "44", number = "7", pages = "147--156", month = jul, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542452.1542472", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Jun 26 12:07:39 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Dynamic binary translation (DBT) can provide security, virtualization, resource management and other desirable services to embedded systems. Although DBT has many benefits, its run-time performance overhead can be relatively high. The run-time overhead is important in embedded systems due to their slow processor clock speeds, simple microarchitectures, and small caches. This paper addresses how to implement efficient DBT for ARM-based embedded systems, taking into account instruction set and cache/TLB nuances. We develop several techniques that reduce DBT overhead for the ARM. Our techniques focus on cache and TLB behavior. We tested the techniques on an ARM-based embedded device and found that DBT overhead was reduced by 54\% in comparison to a general-purpose DBT configuration that is known to perform well, thus further enabling DBT for a wide range of purposes.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "arm; dynamic binary translation; virtualization", } @Article{Fidge:2009:IHS, author = "Colin J. Fidge and Diane Corney", title = "Integrating hardware and software information flow analyses", journal = j-SIGPLAN, volume = "44", number = "7", pages = "157--166", month = jul, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1542452.1542474", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Jun 26 12:07:39 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Security-critical communications devices must be evaluated to the highest possible standards before they can be deployed. This process includes tracing potential information flow through the device's electronic circuitry, for each of the device's operating modes. Increasingly, however, security functionality is being entrusted to embedded software running on microprocessors within such devices, so new strategies are needed for integrating information flow analyses of embedded program code with hardware analyses. Here we show how standard compiler principles can augment high-integrity security evaluations to allow seamless tracing of information flow through both the hardware and software of embedded systems. This is done by unifying input/output statements in embedded program execution paths with the hardware pins they access, and by associating significant software states with corresponding operating modes of the surrounding electronic circuitry.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "communications devices; embedded software; information security evaluation", } @Article{Andre:2009:SVT, author = "Charles Andr{\'e} and Fr{\'e}d{\'e}ric Mallet", title = "Specification and verification of time requirements with {CCSL} and {Esterel}", journal = j-SIGPLAN, volume = "44", number = "7", pages = "167--176", month = jul, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1543136.1542475", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Fri Jun 26 12:07:39 MDT 2009", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The UML Profile for Modeling and Analysis of Real-Time and Embedded (MARTE) systems has recently been adopted by the OMG. Its Time Model extends the informal and simplistic Simple Time package proposed by UML2 and offers a broad range of capabilities required to model real-time systems including discrete/dense and chronometric/logical time. MARTE OMG specification introduces a Time Structure inspired by Time models of the concurrency theory and proposes a new clock constraint specification language (CCSL) to specify, within the context of UML, logical and chronometric time constraints.\par This paper introduces the formal semantics of a fundamental subset of CCSL clock constraints and proposes a process to use CCSL both as a high-level specification language for UML models and as a golden model to verify the conformance of implementations with the specification.\par A digital filtering video application is used as a running example to support the discussion. The application is first formally specified with CCSL and the specification is refined based on feedback from our CCSL-dedicated simulator. In a second phase, an Esterel program of the application is considered. This program is instrumented with observers derived from the CCSL specification. Esterel Studio formal verification facilities are then used to check the conformity of the Esterel implementation with the CCSL specification. A specific library of Esterel observers has been built for this purpose.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "MARTE; synchronous languages; time model; UML", } @Article{Chaudhuri:2009:LBS, author = "Avik Chaudhuri", title = "Language-based security on {Android} (abstract only)", journal = j-SIGPLAN, volume = "44", number = "8", pages = "4--4", month = aug, year = "2009", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Mar 15 19:12:38 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{DeVries:2009:ABV, author = "Brian W. DeVries and Gopal Gupta and Kevin W. Hamlen and Scott Moore and Meera Sridhar", title = "{ActionScript} bytecode verification with co-logic programming (abstract only)", journal = j-SIGPLAN, volume = "44", number = "8", pages = "4--4", month = aug, year = "2009", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Mar 15 19:12:38 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Jia:2009:EIFa, author = "Limin Jia and Steve Zdancewic", title = "Encoding information flow in {AURA} (abstract only)", journal = j-SIGPLAN, volume = "44", number = "8", pages = "4--4", month = aug, year = "2009", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Mar 15 19:12:38 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Wasserrab:2009:PBN, author = "Daniel Wasserrab and Denis Lohner and Gregor Snelting", title = "On {PDG}-based noninterference and its modular proof (abstract only)", journal = j-SIGPLAN, volume = "44", number = "8", pages = "4--5", month = aug, year = "2009", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Mar 15 19:12:38 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Askarov:2009:CMI, author = "Aslan Askarov and Andrei Sabelfeld", title = "Catch me if you can: permissive yet secure error handling (abstract only)", journal = j-SIGPLAN, volume = "44", number = "8", pages = "5--5", month = aug, year = "2009", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Mar 15 19:12:38 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Balliu:2009:WPA, author = "Musard Balliu and Isabella Mastroeni", title = "A weakest precondition approach to active attacks analysis (abstract only)", journal = j-SIGPLAN, volume = "44", number = "8", pages = "5--5", month = aug, year = "2009", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Mar 15 19:12:38 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Newsome:2009:MCC, author = "James Newsome and Stephen McCamant and Dawn Song", title = "Measuring channel capacity to distinguish undue influence (abstract only)", journal = j-SIGPLAN, volume = "44", number = "8", pages = "5--5", month = aug, year = "2009", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Mar 15 19:12:38 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Austin:2009:EPDa, author = "Thomas H. Austin and Cormac Flanagan", title = "Efficient purely-dynamic information flow analysis (abstract only)", journal = j-SIGPLAN, volume = "44", number = "8", pages = "6--6", month = aug, year = "2009", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Mar 15 19:12:38 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Birgisson:2009:IST, author = "Arnar Birgisson and {\'U}lfar Erlingsson", title = "An implementation and semantics for transactional memory introspection in {Haskell} (abstract only)", journal = j-SIGPLAN, volume = "44", number = "8", pages = "6--6", month = aug, year = "2009", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Mar 15 19:12:38 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Broberg:2009:FSS, author = "Niklas Broberg and David Sands", title = "Flow-sensitive semantics for dynamic information flow policies (abstract only)", journal = j-SIGPLAN, volume = "44", number = "8", pages = "6--6", month = aug, year = "2009", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Mar 15 19:12:38 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Shinnar:2009:LIF, author = "Avraham Shinnar and Marco Pistoia and Anindya Banerjee", title = "A language for information flow: dynamic tracking in multiple interdependent dimensions (abstract only)", journal = j-SIGPLAN, volume = "44", number = "8", pages = "6--6", month = aug, year = "2009", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Mar 15 19:12:38 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Jia:2009:EIFb, author = "Limin Jia and Steve Zdancewic", title = "Encoding information flow in {AURA}", journal = j-SIGPLAN, volume = "44", number = "8", pages = "7--19", month = aug, year = "2009", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Mar 15 19:12:38 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Austin:2009:EPDb, author = "Thomas H. Austin and Cormac Flanagan", title = "Efficient purely-dynamic information flow analysis", journal = j-SIGPLAN, volume = "44", number = "8", pages = "20--31", month = aug, year = "2009", CODEN = "SINODQ", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Mar 15 19:12:38 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Steele:2009:OFC, author = "Guy L. {Steele, Jr.}", title = "Organizing functional code for parallel execution or, foldl and foldr considered slightly harmful", journal = j-SIGPLAN, volume = "44", number = "9", pages = "1--2", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596551", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596551", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Hinze:2009:FPT, author = "Ralf Hinze", title = "Functional pearl: la tour d'{Hano{\"\i}}", journal = j-SIGPLAN, volume = "44", number = "9", pages = "3--10", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596555", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596555", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Fischer:2009:PFL, author = "Sebastian Fischer and Oleg Kiselyov and Chung-chieh Shan", title = "Purely functional lazy non-deterministic programming", journal = j-SIGPLAN, volume = "44", number = "9", pages = "11--22", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596556", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596556", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sculthorpe:2009:SFR, author = "Neil Sculthorpe and Henrik Nilsson", title = "Safe functional reactive programming through dependent types", journal = j-SIGPLAN, volume = "44", number = "9", pages = "23--34", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596558", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596558", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Liu:2009:CCA, author = "Hai Liu and Eric Cheng and Paul Hudak", title = "Causal commutative arrows and their optimization", journal = j-SIGPLAN, volume = "44", number = "9", pages = "35--46", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596559", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596559", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Felleisen:2009:FSF, author = "Matthias Felleisen and Robert Bruce Findler and Matthew Flatt and Shriram Krishnamurthi", title = "A functional {I/O} system or, fun for freshman kids", journal = j-SIGPLAN, volume = "44", number = "9", pages = "47--58", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596561", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596561", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Newton:2009:ERE, author = "Ryan R. Newton and Teresa Ko", title = "Experience report: embedded, parallel computer-vision with a functional {DSL}", journal = j-SIGPLAN, volume = "44", number = "9", pages = "59--64", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596562", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596562", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Marlow:2009:RSM, author = "Simon Marlow and Simon Peyton Jones and Satnam Singh", title = "Runtime support for multicore {Haskell}", journal = j-SIGPLAN, volume = "44", number = "9", pages = "65--78", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596563", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596563", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chlipala:2009:EIP, author = "Adam Chlipala and Gregory Malecha and Greg Morrisett and Avraham Shinnar and Ryan Wisnesky", title = "Effective interactive proofs for higher-order imperative programs", journal = j-SIGPLAN, volume = "44", number = "9", pages = "79--90", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596565", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596565", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Klein:2009:ERS, author = "Gerwin Klein and Philip Derrin and Kevin Elphinstone", title = "Experience report: {seL4}: formally verifying a high-performance microkernel", journal = j-SIGPLAN, volume = "44", number = "9", pages = "91--96", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596566", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596566", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Benton:2009:BSI, author = "Nick Benton and Chung-Kil Hur", title = "Biorthogonality, step-indexing and compiler correctness", journal = j-SIGPLAN, volume = "44", number = "9", pages = "97--108", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596567", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596567", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Flatt:2009:SCB, author = "Matthew Flatt and Eli Barzilay and Robert Bruce Findler", title = "{Scribble}: closing the book on ad hoc documentation tools", journal = j-SIGPLAN, volume = "44", number = "9", pages = "109--120", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596569", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596569", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Pierce:2009:LUU, author = "Benjamin C. Pierce", title = "{Lambda}, the ultimate {TA}: using a proof assistant to teach programming language foundations", journal = j-SIGPLAN, volume = "44", number = "9", pages = "121--122", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596552", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596552", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Licata:2009:UBC, author = "Daniel R. Licata and Robert Harper", title = "A universe of binding and computation", journal = j-SIGPLAN, volume = "44", number = "9", pages = "123--134", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596571", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596571", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Neis:2009:NPP, author = "Georg Neis and Derek Dreyer and Andreas Rossberg", title = "Non-parametric parametricity", journal = j-SIGPLAN, volume = "44", number = "9", pages = "135--148", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596572", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596572", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Claessen:2009:FRC, author = "Koen Claessen and Michal Palka and Nicholas Smallbone and John Hughes and Hans Svensson and Thomas Arts and Ulf Wiger", title = "Finding race conditions in {Erlang} with {QuickCheck} and {PULSE}", journal = j-SIGPLAN, volume = "44", number = "9", pages = "149--160", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596574", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596574", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Ziarek:2009:PMC, author = "Lukasz Ziarek and KC Sivaramakrishnan and Suresh Jagannathan", title = "Partial memoization of concurrency and communication", journal = j-SIGPLAN, volume = "44", number = "9", pages = "161--172", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596575", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596575", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{VoigtlAnder:2009:FTI, author = "Janis Voigtl{\"a}nder", title = "Free theorems involving type constructor classes: functional pearl", journal = j-SIGPLAN, volume = "44", number = "9", pages = "173--184", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596577", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596577", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Sampson:2009:ERH, author = "Curt J. Sampson", title = "Experience report: {Haskell} in the `real world': writing a commercial application in a lazy functional language", journal = j-SIGPLAN, volume = "44", number = "9", pages = "185--190", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596578", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596578", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Elliott:2009:BD, author = "Conal M. Elliott", title = "Beautiful differentiation", journal = j-SIGPLAN, volume = "44", number = "9", pages = "191--202", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596579", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596579", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Gazagnaire:2009:OEH, author = "Thomas Gazagnaire and Vincent Hanquez", title = "{OXenstored}: an efficient hierarchical and transactional database using functional programming with reference cell comparisons", journal = j-SIGPLAN, volume = "44", number = "9", pages = "203--214", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596581", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596581", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Pagano:2009:ERU, author = "Bruno Pagano and Olivier Andrieu and Thomas Moniot and Benjamin Canou and Emmanuel Chailloux and Philippe Wang and Pascal Manoury and Jean-Louis Cola{\c{c}}o", title = "Experience report: using objective caml to develop safety-critical embedded tools in a certification framework", journal = j-SIGPLAN, volume = "44", number = "9", pages = "215--220", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596582", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596582", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{GenevAs:2009:IQI, author = "Pierre Genev{\`e}s and Nabil Laya{\"\i}da and Vincent Quint", title = "Identifying query incompatibilities with evolving {XML} schemas", journal = j-SIGPLAN, volume = "44", number = "9", pages = "221--230", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596583", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596583", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Piponi:2009:CMD, author = "Dan P. Piponi", title = "Commutative monads, diagrams and knots", journal = j-SIGPLAN, volume = "44", number = "9", pages = "231--232", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596553", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596553", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Yakushev:2009:GPF, author = "Alexey Rodriguez Yakushev and Stefan Holdermans and Andres L{\"o}h and Johan Jeuring", title = "Generic programming with fixed points for mutually recursive datatypes", journal = j-SIGPLAN, volume = "44", number = "9", pages = "233--244", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596585", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596585", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Viera:2009:AGF, author = "Marcos Viera and S. Doaitse Swierstra and Wouter Swierstra", title = "Attribute grammars fly first-class: how to do aspect oriented programming in {Haskell}", journal = j-SIGPLAN, volume = "44", number = "9", pages = "245--256", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596586", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596586", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Reppy:2009:PCM, author = "John Reppy and Claudio V. Russo and Yingqi Xiao", title = "Parallel concurrent {ML}", journal = j-SIGPLAN, volume = "44", number = "9", pages = "257--268", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596588", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596588", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Chaudhuri:2009:CML, author = "Avik Chaudhuri", title = "A concurrent {ML} library in concurrent {Haskell}", journal = j-SIGPLAN, volume = "44", number = "9", pages = "269--280", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596589", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596589", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Cuoq:2009:ERO, author = "Pascal Cuoq and Julien Signoles and Patrick Baudin and Richard Bonichon and G{\'e}raud Canet and Lo{\"\i}c Correnson and Benjamin Monate and Virgile Prevosto and Armand Puccetti", title = "Experience report: {OCaml} for an industrial-strength static analysis framework", journal = j-SIGPLAN, volume = "44", number = "9", pages = "281--286", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596591", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596591", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Midtgaard:2009:CFA, author = "Jan Midtgaard and Thomas P. Jensen", title = "Control-flow analysis of function calls and returns by abstract interpretation", journal = j-SIGPLAN, volume = "44", number = "9", pages = "287--298", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596592", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596592", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{McCarthy:2009:ARW, author = "Jay A. McCarthy", title = "Automatically {RESTful} web applications: marking modular serializable continuations", journal = j-SIGPLAN, volume = "44", number = "9", pages = "299--310", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596594", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596594", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Balat:2009:ERO, author = "Vincent Balat and J{\'e}r{\^o}me Vouillon and Boris Yakobowski", title = "Experience report: {\tt ocsigen}, a web programming framework", journal = j-SIGPLAN, volume = "44", number = "9", pages = "311--316", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596595", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596595", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Rompf:2009:IFC, author = "Tiark Rompf and Ingo Maier and Martin Odersky", title = "Implementing first-class polymorphic delimited continuations by a type-directed selective {CPS}-transform", journal = j-SIGPLAN, volume = "44", number = "9", pages = "317--328", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596596", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596596", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Swamy:2009:TTC, author = "Nikhil Swamy and Michael Hicks and Gavin M. Bierman", title = "A theory of typed coercions and its applications", journal = j-SIGPLAN, volume = "44", number = "9", pages = "329--340", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596598", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596598", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Schrijvers:2009:CDT, author = "Tom Schrijvers and Simon Peyton Jones and Martin Sulzmann and Dimitrios Vytiniotis", title = "Complete and decidable type inference for {GADTs}", journal = j-SIGPLAN, volume = "44", number = "9", pages = "341--352", month = sep, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1631687.1596599", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Sat Dec 2 07:40:09 MST 2017", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "https://dl.acm.org/citation.cfm?id=1596599", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Meyerovich:2009:FPL, author = "Leo A. Meyerovich and Arjun Guha and Jacob Baskin and Gregory H. Cooper and Michael Greenberg and Aleks Bromfield and Shriram Krishnamurthi", title = "{Flapjax}: a programming language for {Ajax} applications", journal = j-SIGPLAN, volume = "44", number = "10", pages = "1--20", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1639949.1640091", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper presents Flapjax, a language designed for contemporary Web applications. These applications communicate with servers and have rich, interactive interfaces. Flapjax provides two key features that simplify writing these applications. First, it provides {\em event streams}, a uniform abstraction for communication within a program as well as with external Web services. Second, the language itself is reactive: it automatically tracks data dependencies and propagates updates along those dataflows. This allows developers to write reactive interfaces in a declarative and compositional style.\par Flapjax is built on top of JavaScript. It runs on unmodified browsers and readily interoperates with existing JavaScript code. It is usable as either a programming language (that is compiled to JavaScript) or as a JavaScript library, and is designed for both uses. This paper presents the language, its design decisions, and illustrative examples drawn from several working Flapjax applications.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "functional reactive programming; JavaScript; web programming", } @Article{Malayeri:2009:CMI, author = "Donna Malayeri and Jonathan Aldrich", title = "{CZ}: multiple inheritance without diamonds", journal = j-SIGPLAN, volume = "44", number = "10", pages = "21--40", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1639949.1640092", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Multiple inheritance has long been plagued with the 'diamond' inheritance problem, leading to solutions that restrict expressiveness, such as mixins and traits. Instead, we address the diamond problem directly, considering two difficulties it causes: ensuring a correct semantics for object initializers, and typechecking multiple dispatch in a modular fashion-the latter problem arising even with multiple interface inheritance. We show that previous solutions to these problems are either unsatisfactory or cumbersome, and suggest a novel approach: supporting multiple inheritance but forbidding diamond inheritance. Expressiveness is retained through two features: a 'requires' construct that provides a form of subtyping without inheritance (inspired by Scala), and a dynamically-dispatched 'super' call similar to that found in traits. Through examples, we illustrate that inheritance diamonds can be eliminated via a combination of 'requires' and ordinary inheritance. We provide a sound formal model for our language and demonstrate its modularity and expressiveness.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "diamond problem; modularity; multimethods; multiple inheritance", } @Article{Ducournau:2009:EAO, author = "Roland Ducournau and Flor{\'e}al Morandat and Jean Privat", title = "Empirical assessment of object-oriented implementations with multiple inheritance and static typing", journal = j-SIGPLAN, volume = "44", number = "10", pages = "41--60", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1639949.1640093", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Object-oriented languages involve a threefold tradeoff between runtime efficiency, expressiveness (multiple inheritance), and modularity, i.e. open-world assumption (OWA). Runtime efficiency is conditioned by both the {\em implementation technique\/} and {\em compilation scheme}. The former specifies the data structures that support method invocation, attribute access and subtype testing. The latter consists of the production line of an executable from the source code. Many implementation techniques have been proposed and several compilation schemes can be considered from fully global compilation under the closed-world assumption (CWA) to separate compilation with dynamic loading under the OWA, with midway solutions. This article reviews a significant subset of possible combinations and presents a systematic, empirical comparison of their respective efficiencies with {\em all other things being equal}. The testbed consists of the Prm compiler that has been designed for this purpose. The considered techniques include C++ subobjects, coloring, perfect hashing, binary tree dispatch and caching. A variety of processors were considered. Qualitatively, these first results confirm the intuitive or theoretical abstract assessments of the tested approaches. As expected, efficiency increases as CWA strengthens. From a quantitative standpoint, the results are the first to precisely compare the efficiency of techniques that are closely associated with specific languages like C++ and Eiffel. They also confirm that perfect hashing should be considered for implementing Java and .Net interfaces.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "binary tree dispatch; closed-world assumption; coloring; downcast; dynamic loading; interfaces; late binding; method tables; multiple inheritance; multiple subtyping; open-world assumption; perfect hashing; single inheritance; subtype test; type analysis; virtual function table", } @Article{Lublinerman:2009:PPO, author = "Roberto Lublinerman and Swarat Chaudhuri and Pavol Cerny", title = "Parallel programming with object assemblies", journal = j-SIGPLAN, volume = "44", number = "10", pages = "61--80", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1640089.1640095", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present {\em Chorus}, a high-level parallel programming model suitable for irregular, heap-manipulating applications like mesh refinement and epidemic simulations, and {\em JChorus}, an implementation of the model on top of Java. One goal of Chorus is to express the {\em dynamic\/} and instance-dependent patterns of memory access that are common in typical irregular applications. Its other focus is {\em locality of effects\/}: the property that in many of the same applications, typical imperative commands only affect small, local regions in the shared heap.\par Chorus addresses dynamism and locality through the unifying abstraction of an {\em object assembly\/}: a local region in a shared data structure equipped with a short-lived, speculative thread of control. The thread of control in an assembly can only access objects within the assembly. While objects can migrate from assembly to assembly, such migration is {\em local\/} --i.e., objects only move from one assembly to a neighboring one--and does not lead to aliasing. Programming primitives include a {\em merge\/} operation, by which an assembly merges with an adjacent assembly, and a {\em split\/} operation, which splits an assembly into smaller ones. Our abstractions are race and deadlock-free, and inherently data-centric.\par We demonstrate that Chorus and JChorus allow natural programming of several important applications exhibiting irregular data-parallelism. We also present an implementation of JChorus based on a many-to-one mapping of assemblies to lower-level threads, and report on preliminary performance numbers.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "data parallelism; irregular parallelism; ownership; parallel programming; programming abstractions", } @Article{Berger:2009:GSM, author = "Emery D. Berger and Ting Yang and Tongping Liu and Gene Novark", title = "{Grace}: safe multithreaded programming for {C\slash C++}", journal = j-SIGPLAN, volume = "44", number = "10", pages = "81--96", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1640089.1640096", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The shift from single to multiple core architectures means that programmers must write concurrent, multithreaded programs in order to increase application performance. Unfortunately, multithreaded applications are susceptible to numerous errors, including deadlocks, race conditions, atomicity violations, and order violations. These errors are notoriously difficult for programmers to debug.\par This paper presents Grace, a software-only runtime system that eliminates concurrency errors for a class of multithreaded programs: those based on fork-join parallelism. By turning threads into processes, leveraging virtual memory protection, and imposing a sequential commit protocol, Grace provides programmers with the appearance of deterministic, sequential execution, while taking advantage of available processing cores to run code concurrently and efficiently. Experimental results demonstrate Grace's effectiveness: with modest code changes across a suite of computationally-intensive benchmarks (1-16 lines), Grace can achieve high scalability and performance while preventing concurrency errors.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "concurrency; determinism; deterministic concurrency; fork-join; sequential semantics", } @Article{Bocchino:2009:TES, author = "Robert L. {Bocchino, Jr.} and Vikram S. Adve and Danny Dig and Sarita V. Adve and Stephen Heumann and Rakesh Komuravelli and Jeffrey Overbey and Patrick Simmons and Hyojin Sung and Mohsen Vakilian", title = "A type and effect system for deterministic parallel {Java}", journal = j-SIGPLAN, volume = "44", number = "10", pages = "97--116", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1639949.1640097", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Today's shared-memory parallel programming models are complex and error-prone. While many parallel programs are intended to be deterministic, unanticipated thread interleavings can lead to subtle bugs and nondeterministic semantics. In this paper, we demonstrate that a practical {\em type and effect system\/} can simplify parallel programming by {\em guaranteeing deterministic semantics\/} with modular, compile-time type checking even in a rich, concurrent object-oriented language such as Java. We describe an object-oriented type and effect system that provides several new capabilities over previous systems for expressing deterministic parallel algorithms. We also describe a language called Deterministic Parallel Java (DPJ) that incorporates the new type system features, and we show that a core subset of DPJ is sound. We describe an experimental validation showing that DPJ can express a wide range of realistic parallel programs; that the new type system features are useful for such programs; and that the parallel programs exhibit good performance gains (coming close to or beating equivalent, nondeterministic multithreaded programs where those are available).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "commutativity; determinism; deterministic parallelism; effect systems; effects", } @Article{Bloom:2009:TRC, author = "Bard Bloom and John Field and Nathaniel Nystrom and Johan {\"O}stlund and Gregor Richards and Rok Strni{\v{s}}a and Jan Vitek and Tobias Wrigstad", title = "Thorn: robust, concurrent, extensible scripting on the {JVM}", journal = j-SIGPLAN, volume = "44", number = "10", pages = "117--136", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1640089.1640098", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Scripting languages enjoy great popularity due to their support for rapid and exploratory development. They typically have lightweight syntax, weak data privacy, dynamic typing, powerful aggregate data types, and allow execution of the completed parts of incomplete programs. The price of these features comes later in the software life cycle. Scripts are hard to evolve and compose, and often slow. An additional weakness of most scripting languages is lack of support for concurrency --- though concurrency is required for scalability and interacting with remote services. This paper reports on the design and implementation of Thorn, a novel programming language targeting the JVM. Our principal contributions are a careful selection of features that support the evolution of scripts into industrial grade programs --- {\em e.g.}, an expressive module system, an optional type annotation facility for declarations, and support for concurrency based on message passing between lightweight, isolated processes. On the implementation side, Thorn has been designed to accommodate the evolution of the language itself through a compiler plugin mechanism and target the Java virtual machine.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "actors; pattern matching; scripting", } @Article{Inoue:2009:HJV, author = "Hiroshi Inoue and Toshio Nakatani", title = "How a {Java VM} can get more from a hardware performance monitor", journal = j-SIGPLAN, volume = "44", number = "10", pages = "137--154", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1639949.1640100", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper describes our sampling-based profiler that exploits a processor's HPM (Hardware Performance Monitor) to collect information on running Java applications for use by the Java VM. Our profiler provides two novel features: Java-level event profiling and lightweight context-sensitive event profiling. For Java events, we propose new techniques to leverage the sampling facility of the HPM to generate object creation profiles and lock activity profiles. The HPM sampling is the key to achieve a smaller overhead compared to profilers that do not rely on hardware helps. To sample the object creations with the HPM, which can only sample hardware events such as executed instructions or cache misses, we correlate the object creations with the store instructions for Java object headers. For the lock activity profile, we introduce an instrumentation-based technique, called ProbeNOP, which uses a special NOP instruction whose executions are counted by the HPM. For the context-sensitive event profiling, we propose a new technique called {\em CallerChaining}, which detects the calling context of HPM events based on the call stack depth (the value of the stack frame pointer). We show that it can detect the calling contexts in many programs including a large commercial application. Our proposed techniques enable both programmers and runtime systems to get more valuable information from the HPM to understand and optimize the programs without adding significant runtime overhead.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "calling context; hardware performance monitor; profiling", } @Article{Ha:2009:CDA, author = "Jungwoo Ha and Matthew Arnold and Stephen M. Blackburn and Kathryn S. McKinley", title = "A concurrent dynamic analysis framework for multicore hardware", journal = j-SIGPLAN, volume = "44", number = "10", pages = "155--174", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1640089.1640101", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Software has spent the bounty of Moore's law by solving harder problems and exploiting abstractions, such as high-level languages, virtual machine technology, binary rewriting, and dynamic analysis. Abstractions make programmers more productive and programs more portable, but usually slow them down. Since Moore's law is now delivering multiple cores instead of faster processors, future systems must either bear a relatively higher cost for abstractions or use some cores to help tolerate abstraction costs.\par This paper presents the design, implementation, and evaluation of a novel concurrent, configurable dynamic analysis framework that efficiently utilizes multicore cache architectures. It introduces Cache-friendly Asymmetric Buffering (CAB), a lock-free ring-buffer that implements efficient communication between application and analysis threads. We guide the design and implementation of our framework with a model of dynamic analysis overheads. The framework implements exhaustive and sampling event processing and is analysis-neutral. We evaluate the framework with five popular and diverse analyses, and show performance improvements even for lightweight, low-overhead analyses.\par Efficient inter-core communication is central to high performance parallel systems and we believe the CAB design gives insight into the subtleties and difficulties of attaining it for dynamic analysis and other parallel software.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dynamic analysis; instrumentation; multicore; profiling", } @Article{Mytkowicz:2009:ICP, author = "Todd Mytkowicz and Devin Coughlin and Amer Diwan", title = "Inferred call path profiling", journal = j-SIGPLAN, volume = "44", number = "10", pages = "175--190", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1639949.1640102", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Prior work has found call path profiles to be useful for optimizers and programmer-productivity tools. Unfortunately, previous approaches for collecting path profiles are expensive: they need to either execute additional instructions (to track calls and returns) or they need to walk the stack. The state-of-the-art techniques for call path profiling slow down the program by 7\% (for C programs) and 20\% (for Java programs). This paper describes an innovative technique that collects minimal information from the running program and later (offline) infers the full call paths from this information.\par The key insight behind our approach is that readily available information during program execution --- the height of the call stack and the identity of the current executing function --- are good indicators of calling context. We call this pair a {\em context identifier}. Because more than one call path may have the same context identifier, we show how to disambiguate context identifiers by changing the sizes of function activation records. This disambiguation has no overhead in terms of executed instructions.\par We evaluate our approach on the SPEC CPU 2006 C++ and C benchmarks. We show that collecting context identifiers slows down programs by 0.17\% (geometric mean). We can map these context identifiers to the correct unique call path 80\% of the time for C++ programs and 95\% of the time for C programs.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "call path; calling context; calling context tree; profiling; stack", } @Article{Charles:2009:ACC, author = "Philippe Charles and Robert M. Fuhrer and Stanley M. {Sutton, Jr.} and Evelyn Duesterwald and Jurgen Vinju", title = "Accelerating the creation of customized, language-Specific {IDEs} in {Eclipse}", journal = j-SIGPLAN, volume = "44", number = "10", pages = "191--206", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1639949.1640104", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Full-featured integrated development environments have become critical to the adoption of new programming languages. Key to the success of these IDEs is the provision of services tailored to the languages. However, modern IDEs are large and complex, and the cost of constructing one from scratch can be prohibitive. Generators that work from language specifications reduce costs but produce environments that do not fully reflect distinctive language characteristics.\par We believe that there is a practical middle ground between these extremes that can be effectively addressed by an open, semi-automated strategy to IDE development. This strategy is to reduce the burden of IDE development as much as possible, especially for internal IDE details, while opening opportunities for significant customizations to IDE services. To reduce the effort needed for customization we provide a combination of frameworks, templates, and generators. We demonstrate an extensible IDE architecture that embodies this strategy, and we show that this architecture can be used to produce customized IDEs, with a moderate amount of effort, for a variety of interesting languages.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "eclipse; generation; IDE; meta-tooling", } @Article{Lee:2009:DAY, author = "Byeongcheol Lee and Martin Hirzel and Robert Grimm and Kathryn S. McKinley", title = "Debug all your code: portable mixed-environment debugging", journal = j-SIGPLAN, volume = "44", number = "10", pages = "207--226", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1639949.1640105", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Programmers build large-scale systems with multiple languages to reuse legacy code and leverage languages best suited to their problems. For instance, the same program may use Java for ease-of-programming and C to interface with the operating system. These programs pose significant debugging challenges, because programmers need to understand and control code across languages, which may execute in different environments. Unfortunately, traditional multilingual debuggers require a {\em single\/} execution environment.\par This paper presents a novel {\em composition\/} approach to building portable mixed-environment debuggers, in which an intermediate agent interposes on language transitions, controlling and reusing single-environment debuggers. We implement debugger composition in {\em Blink}, a debugger for Java, C, and the Jeannie programming language. We show that Blink is (1) relatively simple: it requires modest amounts of new code; (2) portable: it supports multiple Java Virtual Machines, C compilers, operating systems, and component debuggers; and (3) powerful: composition eases debugging, while supporting new mixed-language expression evaluation and Java Native Interface (JNI) bug diagnostics. In real-world case studies, we show that language-interface errors require single-environment debuggers to restart execution multiple times, whereas Blink directly diagnoses them with one execution. We also describe extensions for other mixed-environments to show debugger composition will generalize.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "composition; foreign function interface; JNI", } @Article{Leijen:2009:DTP, author = "Daan Leijen and Wolfram Schulte and Sebastian Burckhardt", title = "The design of a task parallel library", journal = j-SIGPLAN, volume = "44", number = "10", pages = "227--242", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1639949.1640106", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The Task Parallel Library (TPL) is a library for .NET that makes it easy to take advantage of potential parallelism in a program. The library relies heavily on generics and delegate expressions to provide custom control structures expressing structured parallelism such as map-reduce in user programs. The library implementation is built around the notion of a task as a finite CPU-bound computation. To capture the ubiquitous apply-to-all pattern the library also introduces the novel concept of a replicable task. Tasks and replicable tasks are assigned to threads using work stealing techniques, but unlike traditional implementations based on the THE protocol, the library uses a novel data structure called a 'duplicating queue'. A surprising feature of duplicating queues is that they have sequentially inconsistent behavior on architectures with weak memory models, but capture this non-determinism in a benign way by sometimes duplicating elements. TPL ships as part of the Microsoft Parallel Extensions for the .NET framework 4.0, and forms the foundation of Parallel LINQ queries (however, note that the productized TPL library may differ in significant ways from the basic design described in this article).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "domain specific languages; duplicating queue; parallelism; work stealing", } @Article{Bravenboer:2009:SDS, author = "Martin Bravenboer and Yannis Smaragdakis", title = "Strictly declarative specification of sophisticated points-to analyses", journal = j-SIGPLAN, volume = "44", number = "10", pages = "243--262", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1639949.1640108", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We present the DOOP framework for points-to analysis of Java programs. DOOP builds on the idea of specifying pointer analysis algorithms declaratively, using Datalog: a logic-based language for defining (recursive) relations. We carry the declarative approach further than past work by describing the full end-to-end analysis in Datalog and optimizing aggressively using a novel technique specifically targeting highly recursive Datalog programs.\par As a result, DOOP achieves several benefits, including full order-of-magnitude improvements in runtime. We compare DOOP with Lhotak and Hendren's PADDLE, which defines the state of the art for context-sensitive analyses. For the exact same logical points-to definitions (and, consequently, identical precision) DOOP is more than 15x faster than PADDLE for a 1-call-site sensitive analysis of the DaCapo benchmarks, with lower but still substantial speedups for other important analyses. Additionally, DOOP scales to very precise analyses that are impossible with PADDLE and Whaley et al.'s bddbddb, directly addressing open problems in past literature. Finally, our implementation is modular and can be easily configured to analyses with a wide range of characteristics, largely due to its declarativeness.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bdds; datalog; declarative; DOOP; points-to analysis", } @Article{Saito:2009:STC, author = "Chieri Saito and Atsushi Igarashi", title = "Self type constructors", journal = j-SIGPLAN, volume = "44", number = "10", pages = "263--282", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1639949.1640109", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Bruce and Foster proposed the language LOOJ, an extension of Java with the notion of {\em MyType}, which represents the type of a self reference and changes its meaning along with inheritance. {\em MyType\/} is useful to write extensible yet type-safe classes for objects with recursive interfaces, that is, ones with methods that take or return objects of the same type as the receiver.\par Although LOOJ has also generics, {\em MyType\/} has been introduced as a feature rather orthogonal to generics. As a result, LOOJ cannot express an interface that refers to the same generic class recursively but with different type arguments. This is a significant limitation because such an interface naturally arises in practice, for example, in a generic collection class with method map(), which converts a collection to the same kind of collection of a different element type. Altherr and Cremet and Moors, Piessens, and Odersky gave solutions to this problem but they used a highly sophisticated combination of advanced mechanisms such as abstract type members, higher-order type constructors, and F-bounded polymorphism.\par In this paper, we give another solution by introducing {\em self type constructors}, which integrate {\em MyType\/} and generics so that {\em MyType\/} can take type arguments in a generic class. Self type constructors are tailored to writing recursive interfaces more concisely than previous solutions. We demonstrate the expressive power of self type constructors by means of examples, formalize a core language with self type constructors, and prove its type safety.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "binary methods; generics; MyType; type constructor polymorphism", } @Article{Furr:2009:PGS, author = "Michael Furr and Jong-hoon (David) An and Jeffrey S. Foster", title = "Profile-guided static typing for dynamic scripting languages", journal = j-SIGPLAN, volume = "44", number = "10", pages = "283--300", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1640089.1640110", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Many popular scripting languages such as Ruby, Python, and Perl include highly dynamic language constructs, such as an eval method that evaluates a string as program text. While these constructs allow terse and expressive code, they have traditionally obstructed static analysis. In this paper we present PRuby, an extension to Diamondback Ruby (DRuby), a static type inference system for Ruby. PRuby augments DRuby with a novel dynamic analysis and transformation that allows us to precisely type uses of highly dynamic constructs. PRuby's analysis proceeds in three steps. First, we use run-time instrumentation to gather per-application profiles of dynamic feature usage. Next, we replace dynamic features with statically analyzable alternatives based on the profile. We also add instrumentation to safely handle cases when subsequent runs do not match the profile. Finally, we run DRuby's static type inference on the transformed code to enforce type safety.\par We used PRuby to gather profiles for a benchmark suite of sample Ruby programs. We found that dynamic features are pervasive throughout the benchmarks and the libraries they include, but that most uses of these features are highly constrained and hence can be effectively profiled. Using the profiles to guide type inference, we found that DRuby can generally statically type our benchmarks modulo some refactoring, and we discovered several previously unknown type errors. These results suggest that profiling and transformation is a lightweight but highly effective approach to bring static typing to highly dynamic languages.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "profile guided analysis; RIL; ruby; scripting languages", } @Article{Song:2009:ESL, author = "Myoungkyu Song and Eli Tilevich", title = "Enhancing source-level programming tools with an awareness of transparent program transformations", journal = j-SIGPLAN, volume = "44", number = "10", pages = "301--320", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1640089.1640112", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Programs written in managed languages are compiled to a platform-independent intermediate representation, such as Java bytecode. The relative high level of Java bytecode has engendered a widespread practice of changing the bytecode directly, without modifying the maintained version of the source code. This practice, called {\em bytecode engineering\/} or {\em enhancement}, has become indispensable in introducing various concerns, including persistence, distribution, and security, transparently. For example, transparent persistence architectures help avoid the entanglement of business and persistence logic in the source code by changing the bytecode directly to synchronize objects with stable storage. With functionality added directly at the bytecode level, the source code reflects only partial semantics of the program. Specifically, the programmer can neither ascertain the program's runtime behavior by browsing its source code, nor map the runtime behavior back to the original source code.\par This paper presents an approach that improves the utility of source-level programming tools by providing enhancement specifications written in a domain-specific language. By interpreting the specifications, a source-level programming tool can gain an awareness of the bytecode enhancements and improve its precision and usability. We demonstrate the applicability of our approach by making a source code editor and a symbolic debugger enhancements-aware.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "bytecode engineering; debugging; domain-specific languages; enhancement; program transformation", } @Article{Abi-Antoun:2009:SEC, author = "Marwan Abi-Antoun and Jonathan Aldrich", title = "Static extraction and conformance analysis of hierarchical runtime architectural structure using annotations", journal = j-SIGPLAN, volume = "44", number = "10", pages = "321--340", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1639949.1640113", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "An object diagram makes explicit the object structures that are only implicit in a class diagram. An object diagram may be missing and must extracted from the code. Alternatively, an existing diagram may be inconsistent with the code, and must be analyzed for conformance with the implementation. One can generalize the {\em global\/} object diagram of a system into a runtime architecture which abstracts objects into components, represents how those components interact, and can decompose a component into a nested sub-architecture.\par A static object diagram represents all objects and inter-object relations possibly created, and is recovered by static analysis of a program. Existing analyses extract static object diagrams that are non-hierarchical, do not scale, and do not provide meaningful architectural abstraction. Indeed, architectural hierarchy is not readily observable in arbitrary code. Previous approaches used breaking language extensions to specify hierarchy and instances in code, or used dynamic analyses to extract dynamic object diagrams that show objects and relations for a few program runs.\par Typecheckable ownership domain annotations use existing language support for annotations and specify in code object encapsulation, logical containment and architectural tiers. These annotations enable a points-to static analysis to extract a sound global object graph that provides architectural abstraction by ownership hierarchy and by types, where architecturally significant objects appear near the top of the hierarchy and data structures are further down.\par Another analysis can abstract an object graph into a built runtime architecture. Then, a third analysis can compare the built architecture to a target, analyze and measure their structural conformance, establish traceability between the two and identify interesting differences.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "architectural extraction; component-and-connector view; conformance analysis; object diagram; object graphs; points-to analysis; runtime architecture", } @Article{Nanda:2009:DMT, author = "Mangala Gowri Nanda and Senthil Mani and Vibha Singhal Sinha and Saurabh Sinha", title = "Demystifying model transformations: an approach based on automated rule inference", journal = j-SIGPLAN, volume = "44", number = "10", pages = "341--360", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1640089.1640114", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Model-driven development (MDD) is widely used to develop modern business applications. MDD involves creating models at different levels of abstractions. Starting with models of domain concepts, these abstractions are successively refined, using transforms, to design-level models and, eventually, code-level artifacts. Although many tools exist that support transform creation and verification, tools that help users in understanding and using transforms are rare. In this paper, we present an approach for assisting users in understanding model transformations and debugging their input models. We use automated program-analysis techniques to analyze the transform code and compute constraints under which a transformation may fail or be incomplete. These code-level constraints are mapped to the input model elements to generate model-level rules. The rules can be used to validate whether an input model violates transform constraints, and to support general user queries about a transformation. We have implemented the analysis in a tool called XYLEM. We present empirical results, which indicate that (1) our approach can be effective in inferring useful rules, and (2) the rules let users efficiently diagnose a failing transformation without examining the transform source code.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "model validation; model-driven development; model-to-model transform; precondition analysis; transformation comprehension", } @Article{Zhao:2009:AWL, author = "Yi Zhao and Jin Shi and Kai Zheng and Haichuan Wang and Haibo Lin and Ling Shao", title = "Allocation wall: a limiting factor of {Java} applications on emerging multi-core platforms", journal = j-SIGPLAN, volume = "44", number = "10", pages = "361--376", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1640089.1640116", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Multi-core processors are widely used in computer systems. As the performance of microprocessors greatly exceeds that of memory, the memory wall becomes a limiting factor. It is important to understand how the large disparity of speed between processor and memory influences the performance and scalability of Java applications on emerging multi-core platforms.\par In this paper, we studied two popular Java benchmarks, SPECjbb2005 and SPECjvm2008, on multi-core platforms including Intel Clovertown and AMD Phenom. We focus on the 'partially scalable' benchmark programs. With smaller number of CPU cores these programs scale perfectly, but when more cores and software threads are used, the slope of the scalability curve degrades dramatically.\par We identified a strong correlation between scalability, object allocation rate and memory bus write traffic in our experiments with our partially scalable programs. We find that these applications allocate large amounts of memory and consume almost all the memory write bandwidth in our hardware platforms. Because the write bandwidth is so limited, we propose the following hypothesis: the scalability and performance is limited by the object allocation on emerging multi-core platforms for those objects-allocation intensive Java applications, as if these applications are running into an 'allocation wall'.\par In order to verify this hypothesis, several experiments are performed, including measuring key architecture level metrics, composing a micro-benchmark program, and studying the effect of modifying some of the 'partially scalable' programs. All the experiments strongly suggest the existence of the allocation wall.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "allocation; java; scalability", } @Article{Ogasawara:2009:NAM, author = "Takeshi Ogasawara", title = "{NUMA}-aware memory manager with dominant-thread-based copying {GC}", journal = j-SIGPLAN, volume = "44", number = "10", pages = "377--390", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1640089.1640117", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We propose a novel online method of identifying the preferred NUMA nodes for objects with negligible overhead during the garbage collection time as well as object allocation time. Since the number of CPUs (or NUMA nodes) is increasing recently, it is critical for the memory manager of the runtime environment of an object-oriented language to exploit the low latency of local memory for high performance. To locate the CPU of a thread that frequently accesses an object, prior research uses the runtime information about memory accesses as sampled by the hardware. However, the overhead of this approach is high for a garbage collector.\par Our approach uses the information about which thread can exclusively access an object, or the {\em Dominant Thread\/} (DoT). The dominant thread of an object is the thread that often most accesses an object so that we do not require memory access samples. Our NUMA-aware GC performs DoT based object copying, which copies each live object to the CPU where the dominant thread was last dispatched before GC. The dominant thread information is known from the thread stack and from objects that are locked or reserved by threads and is propagated in the object reference graph.\par We demonstrate that our approach can improve the performance of benchmark programs such as SPECpower ssj2008, SPECjbb2005, and SPECjvm2008. We prototyped a NUMA-aware memory manager on a modified version of IBM Java VM and tested it on a cc-NUMA POWER6 machine with eight NUMA nodes. Our NUMA-aware GC achieved performance improvements up to 14.3\% and 2.0\% on average over a JVM that only used the NUMA-aware allocator. The total improvement using both the NUMA-aware allocator and GC is up to 53.1\% and 10.8\% on average.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "cc-NUMA; java", } @Article{Pluquet:2009:ECP, author = "Fr{\'e}d{\'e}ric Pluquet and Stefan Langerman and Roel Wuyts", title = "Executing code in the past: efficient in-memory object graph versioning", journal = j-SIGPLAN, volume = "44", number = "10", pages = "391--408", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1639949.1640118", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Object versioning refers to how an application can have access to previous states of its objects. Implementing this mechanism is hard because it needs to be efficient in space and time, and well integrated with the programming language. This paper presents HistOOry, an object versioning system that uses an efficient data structure to store and retrieve past states. It needs only three primitives, and existing code does not need to be modified to be versioned. It provides fine-grained control over what parts of objects are versioned and when. It stores all states, past and present, in memory. Code can be executed in the past of the system and will see the complete system at that point in time. We have implemented our model in Smalltalk and used it for three applications that need versioning: checked postconditions, stateful execution tracing and a planar point location implementation. Benchmarks are provided to asses the practical complexity of our implementation.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "language design; object versioning; object-oriented programming", } @Article{vonDincklage:2009:OPI, author = "Daniel von Dincklage and Amer Diwan", title = "Optimizing programs with intended semantics", journal = j-SIGPLAN, volume = "44", number = "10", pages = "409--424", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1640089.1640120", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Modern object-oriented languages have complex features that cause programmers to overspecify their programs. This overspecification hinders automatic optimizers, since they must preserve the overspecified semantics. If an optimizer knew which semantics the programmer intended, it could do a better job.\par Making a programmer clarify his intentions by placing assumptions into the program is rarely practical. This is because the programmer does not know which parts of the programs' overspecified semantics hinder the optimizer. Therefore, the programmer has to guess which assumption to add. Since the programmer can add many different assumptions to a large program, he will need to place many such assumptions before he guesses right and helps the optimizer.\par We present IOpt, a practical optimizer that uses a specification of the programmers' intended semantics to enable additional optimizations. That way, our optimizer can significantly improve the performance of a program. We present case studies in which we use IOpt to speed up two programs by a factor of 2.\par To make specifying the intended semantics practical, IOpt communicates with the programmer. IOpt identifies which assumptions the programmer {\em should\/} place, and where he should place them. IOpt ranks each assumption by (i) the likelihood that the assumption conforms to the programmers' intended semantics and (ii) how much the assumption will help IOpt improve the programs' performance. IOpt proposes ranked assumptions to the programmer, who just picks those that conform to his intended semantics. With this approach, IOpt keeps the programmers' specification burden low. In our case studies, programmers had to add just a few assumptions to realize significant performance speedups.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "intended semantics; optimization", } @Article{Tsafrir:2009:MDW, author = "Dan Tsafrir and Robert W. Wisniewski and David F. Bacon and Bjarne Stroustrup", title = "Minimizing dependencies within generic classes for faster and smaller programs", journal = j-SIGPLAN, volume = "44", number = "10", pages = "425--444", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1640089.1640121", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Generic classes can be used to improve performance by allowing compile-time polymorphism. But the applicability of compile-time polymorphism is narrower than that of runtime polymorphism, and it might bloat the object code. We advocate a programming principle whereby a generic class should be implemented in a way that minimizes the dependencies between its members (nested types, methods) and its generic type parameters. Conforming to this principle (1) reduces the bloat and (2) gives rise to a previously unconceived manner of using the language that expands the applicability of compile-time polymorphism to a wider range of problems. Our contribution is thus a programming technique that generates faster and smaller programs. We apply our ideas to GCC's STL containers and iterators, and we demonstrate notable speedups and reduction in object code size (real application runs 1.2x to 2.1x faster and STL code is 1x to 25x smaller). We conclude that standard generic APIs (like STL) should be amended to reflect the proposed principle in the interest of efficiency and compactness. Such modifications will not break old code, simply increase flexibility. Our findings apply to languages like C++, C\#, and D, which realize generic programming through multiple instantiations.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "generalized hoisting; generics; scary assignments and initializations; templates", } @Article{Kats:2009:PRF, author = "Lennart C. L. Kats and Maartje de Jonge and Emma Nilsson-Nyman and Eelco Visser", title = "Providing rapid feedback in generated modular language environments: adding error recovery to scannerless generalized-{LR} parsing", journal = j-SIGPLAN, volume = "44", number = "10", pages = "445--464", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1640089.1640122", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Integrated development environments (IDEs) increase programmer productivity, providing rapid, interactive feedback based on the syntax and semantics of a language. A heavy burden lies on developers of new languages to provide adequate IDE support. Code generation techniques provide a viable, efficient approach to semi-automatically produce IDE plugins. Key components for the realization of plugins are the language's grammar and parser. For embedded languages and language extensions, constituent IDE plugin modules and their grammars can be combined. Unlike conventional parsing algorithms, scannerless generalized-LR parsing supports the full set of context-free grammars, which is closed under composition, and hence can parse language embeddings and extensions composed from separate grammar modules. To apply this algorithm in an interactive environment, this paper introduces a novel error recovery mechanism, which allows it to be used with files with syntax errors -- common in interactive editing. Error recovery is vital for providing rapid feedback in case of syntax errors, as most IDE services depend on the parser from syntax highlighting to semantic analysis and cross-referencing. We base our approach on the principles of island grammars, and derive permissive grammars with error recovery productions from normal SDF grammars. To cope with the added complexity of these grammars, we adapt the parser to support backtracking. We evaluate the recovery quality and performance of our approach using a set of composed languages, based on Java and Stratego.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "composable languages; embedded languages; error recovery; language extensions; permissive grammars; SDF; SGLR", } @Article{Riehle:2009:DPD, author = "Dirk Riehle", title = "Design pattern density defined", journal = j-SIGPLAN, volume = "44", number = "10", pages = "469--480", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1640089.1640125", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "{\em Design pattern density\/} is a metric that measures how much of an object-oriented design can be understood and represented as instances of design patterns. Expert developers have long believed that a high design pattern density implies a high maturity of the design under inspection. This paper presents a quantifiable and observable definition of this metric. The metric is illustrated and qualitatively validated using four real-world case studies. We present several hypotheses of the metric's meaning and their implications, including the one about design maturity. We propose that the design pattern density of a maturing framework has a fixed point and we show that if software design patterns make learning frameworks easier, a framework's design pattern density is a measure of how much easier it will become.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "collaboration-based design; design pattern density; design patterns; framework maturity; inheritance interface; JHot-Draw; JUnit; object-oriented case study; object-oriented design; object-oriented framework; role modeling", } @Article{Mullen:2009:WCO, author = "Thomas Mullen", title = "Writing code for other people: cognitive psychology and the fundamentals of good software design principles", journal = j-SIGPLAN, volume = "44", number = "10", pages = "481--492", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1640089.1640126", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper demonstrates how the cognitive model of the mind can explain the core fundamentals behind widely accepted design principles. The conclusion is that software design is largely a task of chunking analogies and presents a theory that is detailed enough to be accessible to even the most inexperienced programmer. The corollary of which is a pedagogical approach to understanding design principles rather than the necessity of years of software development experience.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "4 minus analogies; chunking analogies", } @Article{Overbey:2009:RLR, author = "Jeffrey L. Overbey and Ralph E. Johnson", title = "Regrowing a language: refactoring tools allow programming languages to evolve", journal = j-SIGPLAN, volume = "44", number = "10", pages = "493--502", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1639949.1640127", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Successful programming languages change as they age. They tend to become more complex, and eventually some features become outdated or are rarely used. Programming tools for these languages become more complex as well, since they have to support archaic features. Old programs are hard to maintain, since these archaic features are unfamiliar to modern programmers. These problems can be solved by refactoring tools that can transform programs to use the modern form. We show that refactoring tools can ease the cost of program evolution by examining the evolution of two languages, Fortran and Java, and showing that each change corresponds to an automatable refactoring.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "Fortran; Java; language design; language evolution; refactoring; restructuring", } @Article{Knoll:2009:PL, author = "Roman Kn{\"o}ll and Mira Mezini", title = "$\pi$: a pattern language", journal = j-SIGPLAN, volume = "44", number = "10", pages = "503--522", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1640089.1640128", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Current programming languages and techniques realize many features which allow their users to extend these languages on a semantic basis: classes, functions, interfaces, aspects and other entities can be defined. However, there is a lack of modern programming languages which are both semantically and syntactically extensible from within the language itself, i.e., with no additional tool or meta-language. In this paper we present $\pi$ as an approach that aims to overcome this lack. $\pi$ provides an abstraction mechanism based on parameterized symbols which is capable of semantically and syntactically unifying programming concepts like variables, control-structures, procedures and functions into one concept: the pattern. We have evaluated the abstraction potential and the syntactic extensibility of $\pi$ by successfully creating patterns for the aforementioned programming concepts. $\pi$ could serve as a tool for designing new experimental languages and might generally influence the view we have on current programming concepts.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "domain specific languages; extensibility; language design; language extension; macros; pattern language; patterns; semiotics", } @Article{Mahoney:2009:SEM, author = "Mark Mahoney", title = "Software evolution and the moving picture metaphor", journal = j-SIGPLAN, volume = "44", number = "10", pages = "525--528", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1640089.1640130", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Software systems evolve over time. Currently we do not do a good job of documenting this evolution. This essay discusses the need to better document software evolution and introduces the {\em Moving Picture Metaphor}. Source Control Management systems are more like collections of still photographs than moving pictures. Still photography is not ideal when trying to capture evolutional changes. Moving pictures do a much better job. A storyteller can use moving pictures to tell compelling stories that are easier to digest than traditional documentation. We can learn a great deal from watching stories that document a system's evolution.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "software evolution; source control management", } @Article{Quillien:2009:AAA, author = "Jenny Quillien and Pam Rostal and Dave West", title = "Agile anthropology and {Alexander}'s architecture: an essay in three voices", journal = j-SIGPLAN, volume = "44", number = "10", pages = "529--546", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1639949.1640131", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "During its formative decades the software community looked twice to the theories of Christopher Alexander for inspiration, both times failing to completely master the architect's most useful insights. Now a third opportunity presents itself with Alexander's recent publication, {\em The Nature of Order}. Serious apprenticeship, however, imposes a prerequisite of sober self-reflection and evaluation. What, really, is the nature of the developer's tasks? Under what philosophical umbrella has the software community matured until now? Do other philosophical traditions offer alternative and perhaps more pertinent epistemologies? What voices, besides Alexander's, might contribute to the community's evolution? We address these questions along with theory building, ethnography, weak links, design heuristics, agility, and complex systems, all of which combine with Alexander's new theories to suggest different ways of doing what we do, better.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "agile; Alexander; complexity; ethnography; patterns; theory-building; unfolding", } @Article{Baniassad:2009:EPL, author = "Elisa Baniassad and Clayton Myers", title = "An exploration of program as language", journal = j-SIGPLAN, volume = "44", number = "10", pages = "547--556", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1640089.1640132", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In this paper we explore the idea that the code that constitutes a program actually forms a higher-level, program specific language. The symbols of the language are the abstractions of the program, and the grammar of the language is the set of (generally unwritten) rules about the allowable combinations of those abstractions. As such, a program is both a language definition, and the only use of that language. This specificity means that reading a never-before encountered program involves learning a new natural language, and that porting code from one program to another requires translation from one natural language into another. We suggest that the complexity and depth of the program language is affected by the gap between the program semantics (what the program is meant to do) and the code semantics (the way in which the machine runs). We believe that in seeing that programs are languages, we gain new insight into our own experience as programmers, and are able to gain new perspective on the intense complexity of code and its creation.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "program language", } @Article{Cook:2009:UDA, author = "William R. Cook", title = "On understanding data abstraction, revisited", journal = j-SIGPLAN, volume = "44", number = "10", pages = "557--572", month = oct, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1639949.1640133", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:01:56 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In 1985 Luca Cardelli and Peter Wegner, my advisor, published an ACM Computing Surveys paper called 'On understanding types, data abstraction, and polymorphism'. Their work kicked off a flood of research on semantics and type theory for object-oriented programming, which continues to this day. Despite 25 years of research, there is still widespread confusion about the two forms of data abstraction, {\em abstract data types\/} and {\em objects}. This essay attempts to explain the differences and also why the differences matter.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "abstract data type; ADT; class; object", } @Article{Allen:2009:OOP, author = "Jim Allen and Zena Ariola and Pierre-Louis Curien and Matthew Fluet and Jeff Foster and Dan Grossman and Robert Harper and Hugo Herbelin and Yannis Smaragdakis and David Walker and Steve Zdancewic", title = "An overview of the {Oregon} programming languages summer school", journal = j-SIGPLAN, volume = "44", number = "11", pages = "1--3", month = nov, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1816027.1816029", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:03:29 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "The Oregon Programming Languages Summer School (OPLSS) has been held at the University of Oregon each summer since 2002. We believe it has been an unqualified success in providing students and instructors a unique opportunity to study relevant background and cutting-edge results in the field of programming languages research. As the current steering committee and organizers for OPLSS, we appreciate the opportunity to provide an overview of the summer school. This short article describes the format, history, goals, and support for the OPLSS.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Danish:2009:OSD, author = "Matthew Danish and Hongwei Xi", title = "Operating system development with {ATS}: work in progress: (abstract only)", journal = j-SIGPLAN, volume = "44", number = "11", pages = "6--6", month = nov, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1816027.1816032", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:03:29 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Typical operating system design is marked by trade-offs between speed and reliability, features and security. Most systems are written in a low-level untyped programming language to achieve optimal hardware usage and for other practical reasons. But, this often results in CPU, memory, and I/O protection flaws due to mistakes in unverified code. On the other hand, fully verified systems are exceedingly hard to construct on any industrial scale. A high-level programming language, with an expressive type system suitable for systems programming, can help alleviate many of these problems without requiring the enormous effort of full verification.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Monnier:2009:STH, author = "Stefan Monnier and David Haguenauer", title = "Singleton types here, singleton types there, singleton types everywhere: (abstract only)", journal = j-SIGPLAN, volume = "44", number = "11", pages = "6--6", month = nov, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1816027.1816031", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:03:29 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Singleton types are often considered a poor man's substitute for dependent types. But their generalization in the form of GADTs has found quite a following. The main advantage of singleton types and GADTs is to preserve the so-called phase distinction, which seems to be so important to make use of the usual compilation techniques. Of course, they considerably restrict the programmers, which often leads them to duplicate code at both the term and type levels, so as to reflect at the type level what happens at the term level, in order to be able to reason about it.\par In this article, we show how to automate such a duplication while eliminating the problematic dependencies. More specifically, we show how to compile the Calculus of Constructions into ?H, a non-dependently-typed language, while still preserving all the typing information. Since ?H has been shown to be amenable to type preserving CPS and closure conversion, it shows a way to preserve types when doing code extraction and more generally when using all the common compiler techniques.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Balzer:2009:MRA, author = "Stephanie Balzer and Thomas R. Gross", title = "Modular reasoning about invariants over shared state with interposed data members: (abstract only)", journal = j-SIGPLAN, volume = "44", number = "11", pages = "6--7", month = nov, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1816027.1816033", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:03:29 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Reasoning about object-oriented programs is difficult since such programs usually involve aliasing, and it is not easy to identify the ways objects can relate to each other and thus to confine a program's heap. In this paper, we address this problem in the context of a relationship-based programming language. In relationship-based programming languages, relationships are first-class citizens and allow a precise description of inter-object relationships. Relationships enforce a modularization discipline that is closer to the natural modularity inherent to many problem domains and that yields, as a result, program heaps that are DAGs. We further describe a mechanism, member interposition, that leverages the new modularization discipline and supports encapsulation of fields of shared objects. We have implemented the described modularization discipline and the mechanism of member interposition in the context of Rumer, a relationship-based programming language with support for contract specifications. We discuss the implications of member interposition for the modular verification of object invariants with an example. Relationships and interposed members provide an alternative to ownership type systems.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Christiansen:2009:FTF, author = "Jan Christiansen and Daniel Seidel and Janis Voigtl{\"a}nder", title = "Free theorems for functional logic programs: (abstract only)", journal = j-SIGPLAN, volume = "44", number = "11", pages = "7--7", month = nov, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1816027.1816035", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:03:29 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Type-based reasoning is popular in functional programming. In particular, parametric polymorphism constrains functions in such a way that statements about their behavior can be derived without consulting function definitions. Is the same possible in a strongly, and polymorphically, typed functional logic language? This is the question we study in this paper. Logical features like nondeterminism and free variables cause interesting effects, which we examine based on examples and address by identifying appropriate conditions that guarantee standard free theorems or inequational versions thereof to hold. We see this case study as a stepping stone for a general theory, not provided here, involving the definition of a logical relation and other machinery required for parametricity arguments appropriate to functional logic languages.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Stump:2009:RTG, author = "Aaron Stump and Evan Austin", title = "Resource typing in {Guru}: (abstract only)", journal = j-SIGPLAN, volume = "44", number = "11", pages = "7--7", month = nov, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1816027.1816034", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:03:29 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "This paper presents a resource typing framework for the Guru verified-programming language, in which abstractions for various kinds of program resources can be defined. Implemented examples include reference-counted data, mutable arrays, and heap-allocated mutable aliased data. The approach enables efficient, type-safe programming with mutable and aliased data structures, with explicit deallocation (not garbage collection). We evaluate performance of the approach with two verified benchmarks, one involving mutable arrays, and another involving FIFO queues.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Weirich:2009:AGD, author = "Stephanie Weirich and Chris Casinghino", title = "Arity-generic datatype-generic programming: (abstract only)", journal = j-SIGPLAN, volume = "44", number = "11", pages = "7--7", month = nov, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1816027.1816036", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:03:29 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Some programs are doubly-generic. For example, map is datatype-generic in that many different data structures support a mapping operation. A generic programming language like Generic Haskell can use a single definition to generate map for each type. However, map is also arity-generic because it belongs to a family of related operations that differ in the number of arguments. For lists, this family includes repeat, map, zipWith, zipWith3, zipWith4, etc. With dependent types or clever programming, one can unify all of these functions together in a single definition.\par However, no one has explored the combination of these two forms of genericity. These two axes are not orthogonal because the idea of arity appears in Generic Haskell: datatype-generic versions of repeat, map and zipWith have different arities of kind-indexed types. In this paper, we define arity-generic datatype-generic programs by building a framework for Generic Haskell-style generic programming in the dependently-typed programming language Agda 2.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Kalibera:2009:CBV, author = "Tomas Kalibera and Pavel Parizek and Ghaith Haddad and Gary T. Leavens and Jan Vitek", title = "Challenge benchmarks for verification of real-time programs: (abstract only)", journal = j-SIGPLAN, volume = "44", number = "11", pages = "7--8", month = nov, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1816027.1816037", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Mon Jun 21 18:03:29 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Real-time systems, and in particular safety-critical systems, are a rich source of challenges for the program verification community as software errors can have catastrophic consequences. Unfortunately, it is nearly impossible to find representative safety-critical programs in the public domain. This has been significant impediment to research in the field, as it is very difficult to validate new ideas or techniques experimentally. This paper presents open challenges for verification of real-time systems in the context of the Real-time Specification for Java. But, our main contribution is a family of programs, called CDx, which we present as an open source benchmark for the verification community.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", } @Article{Vitek:2009:SPT, author = "Jan Vitek", title = "Of scripts and programs: tall tales, urban legends, and future prospects", journal = j-SIGPLAN, volume = "44", number = "12", pages = "1--2", month = dec, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1640134.1640136", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Aug 31 22:04:07 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Scripting languages are playing an increasing role in today's software landscape due to their support for rapid and exploratory development. They typically have lightweight syntax, weak data privacy, dynamic typing, powerful aggregate data types, and allow execution of the completed parts of incomplete programs. While many of their uses are web-centric, scripting languages also show up in non-traditional domains such as space exploration and administration of the pension benefits entire countries. Considering their importance to the practice of computing, it is surprising to see that, in academic circles, scripting is still often viewed as an undisciplined and unprincipled attempt at programming. In this talk, I will summarize work carried in collaboration with IBM Research on bridging the divide between scripting and programming. I will motivate our investigations with some success stories of scripting languages used in unusual places. Then I will dispel some misconceptions about the nature of scripts with preliminary results from a large corpus analysis of programs written in a popular scripting language. Finally, I will talk about the design of a new language, called Thorn, that aims to ease the journey from scripts to programs (and back).", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "scripting", } @Article{Tanter:2009:BSD, author = "{\'E}ric Tanter", title = "Beyond static and dynamic scope", journal = j-SIGPLAN, volume = "44", number = "12", pages = "3--14", month = dec, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1837513.1640137", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Aug 31 22:04:07 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Traditional treatment of scoping in programming languages considers two opposite semantics: static scoping, where the scope of a binding is a block of program text, and dynamic scoping, where a binding is in effect during the whole reduction of an expression to a value. Static scoping and dynamic scoping are however but two points in the design space of scoping mechanisms. As a result, most proposed language mechanisms that rely on some notion of scoping, such as variable bindings of course, but also more exotic ones like aspects and mixin layers, adopt either one or the other semantics. As it turns out, these two semantics are sometimes too extreme, and a mixture of both is needed. To achieve this, language designers and/or programmers have to resort to ad hoc solutions. We present a general scoping model that simply expresses static and dynamic scoping, and that goes further by allowing fine-grained exploration of the design space of scoping. The model, called {\em scoping strategies}, gives precise control over propagation and activation of language mechanisms. While we have already studied it for aspects, we hereby show that the model is not restricted to aspects, by treating in depth its application to the most standard kind of adaptation: variable bindings. We also briefly discuss its application to mixin layers, and program monitoring. We believe that research in programming language constructs can benefit from a more flexible notion of scoping that goes beyond the static/dynamic dichotomy.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "adaptation; dynamic scope; lexical scope; scope; variable bindings", } @Article{Axelsen:2009:GPT, author = "Eyvind W. Axelsen and Stein Krogdahl", title = "{Groovy} package templates: supporting reuse and runtime adaption of class hierarchies", journal = j-SIGPLAN, volume = "44", number = "12", pages = "15--26", month = dec, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1640134.1640139", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Aug 31 22:04:07 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "We show how package templates, a modularization mechanism originally developed for statically typed languages like Java and C\#, can be applied to and implemented in a dynamic language like Groovy, by using the language's capabilities for meta-programming. We then consider a set of examples and discuss dynamic PT from the viewpoints of code modularization and reuse, and dynamic adaption of classes at runtime.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "dynamic languages; modularization; OOP; templates", } @Article{Strickland:2009:CFC, author = "T. Stephen Strickland and Matthias Felleisen", title = "Contracts for first-class modules", journal = j-SIGPLAN, volume = "44", number = "12", pages = "27--38", month = dec, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1640134.1640140", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Aug 31 22:04:07 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Behavioral software contracts express properties concerning the flow of values across component (modules, classes, etc) interfaces. These properties are often beyond the reach of theorem provers and are therefore monitored at run-time. When the monitor discovers a contract violation, it raises an exception that simultaneously pinpoints the contract violator and explains the nature of the violation.\par Currently contract monitoring assumes static module interfaces. Specifically, the contract compiler partitions a contract into disjoint obligations for the static modules that communicate to an interface. At run-time, the information is used for catching and explaining contract violations. While static modules suffice for many situations, first-class modules --- such as the units provided by PLT Scheme --- support the dynamic and multiple linking that is often required in open software systems. The problem is, of course, that in such a world, it becomes impossible to tell from the source program alone which components have agreed to which contracts.\par In this paper, we develop the semantic framework of monitoring contracts for dynamic modules. We establish the internal consistency of the semantics, and we sketch an implementation based on our experience of equipping PLT Scheme with such contracts.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "contracts; first-class module systems", } @Article{Riehl:2009:LEO, author = "Jonathan Riehl", title = "Language embedding and optimization in {Mython}", journal = j-SIGPLAN, volume = "44", number = "12", pages = "39--48", month = dec, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1640134.1640141", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Aug 31 22:04:07 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Mython is an extensible variant of the Python programming language. Mython achieves extensibility by adding a quotation mechanism that accepts an additional parameter as well as the code being quoted. The additional quotation parameter takes the form of a Mython expression. Unlike other user code, Mython evaluates the quotation parameter at compile-time. The result of the compile-time expression is a function that is used to both parse the quoted code, and extend the compile-time environment. By explicitly passing the compilation environment to compile-time quotation functions, Mython's parameterized quotation allows users to inject code into the language compiler. Injected code can extend the language by modifying the compilation phases, which are visible to the compilation environment. The Mython language is realized by the MyFront compiler, a tool for translating Mython into Python byte-code modules. This paper introduces the Mython language, describes the implementation and usage of the MyFront tool, and shows how MyFront can be used to implement domain-specific optimizations using a little rewrite language.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "compile-time metaprogramming; extensible languages; open compilers", } @Article{Khoo:2009:DJA, author = "Yit Phang Khoo and Michael Hicks and Jeffrey S. Foster and Vibha Sazawal", title = "Directing {JavaScript} with arrows", journal = j-SIGPLAN, volume = "44", number = "12", pages = "49--58", month = dec, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1837513.1640143", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Aug 31 22:04:07 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "JavaScript programmers make extensive use of event-driven programming to help build responsive web applications. However, standard approaches to sequencing events are messy, and often lead to code that is difficult to understand and maintain. We have found that {\em arrows}, a generalization of {\em monads}, are an elegant solution to this problem. Arrows allow us to easily write asynchronous programs in small, modular units of code, and flexibly compose them in many different ways, while nicely abstracting the details of asynchronous program composition. In this paper, we present Arrowlets, a new JavaScript library that offers arrows to the everyday JavaScript programmer. We show how to use Arrowlets to construct a variety of state machines, including state machines that branch and loop. We also demonstrate how Arrowlets separate computation from composition with examples such as a drag-and-drop handler and a bubblesort animation.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "arrowlets; arrows; events; JavaScript; Web programming", } @Article{Costanza:2009:COS, author = "Pascal Costanza and Charlotte Herzeel and Theo D'Hondt", title = "Context-oriented software transactional memory in {Common Lisp}", journal = j-SIGPLAN, volume = "44", number = "12", pages = "59--68", month = dec, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1837513.1640144", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Aug 31 22:04:07 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Software transactional memory (STM) is a promising approach for coordinating concurrent threads, for which many implementation strategies are currently being researched. Although some first steps exist to ease experimenting with different strategies, this still remains a relatively complex and cumbersome task. The reason is that software transactions require STM-specific {\em dynamic crosscutting adaptations}, but this is not accounted for in current STM implementations. This paper presents CSTM, an STM framework based on {\em Context-oriented Programming}, in which transactions are modelled as dynamically scoped layer activations. It enables expressing transactional variable accesses as user-defined crosscutting concerns, without requiring invasive changes in the rest of a program. This paper presents a proof-of-concept implementation based on ContextL for Common Lisp, along with example STM strategies and preliminary benchmarks, and introduces some of ContextL's unique features for context-dependent variable accesses.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "context-oriented programming; framework design; software transactional memory", } @Article{Pluquet:2009:FTR, author = "Fr{\'e}d{\'e}ric Pluquet and Antoine Marot and Roel Wuyts", title = "Fast type reconstruction for dynamically typed programming languages", journal = j-SIGPLAN, volume = "44", number = "12", pages = "69--78", month = dec, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1837513.1640145", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Aug 31 22:04:07 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Type inference and type reconstruction derive static types for program elements that have no static type associated with them. They have a wide range of usage, such as helping to eliminate the burden of manually specifying types, verifying whether a program is type-safe, helping to produce more optimized code or helping to understand programs. While type inference and type reconstruction is an active field of research, most existing techniques are interested foremost in the precision of their approaches, at the expense of execution speed. As a result, existing approaches are not suited to give direct feedback in development environments, where interactivity dictates very fast approaches. This paper presents a type reconstruction algorithm for variables that is extremely fast (in the order of milliseconds) and reasonably precise (75 percent). The system is implemented as a byte-code evaluator in several Smalltalk environments, and its execution speed and precision are validated on a number of concrete case studies.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "development environments; dynamic programming languages; type inference; type reconstruction", } @Article{Yermolovich:2009:ODL, author = "Alexander Yermolovich and Christian Wimmer and Michael Franz", title = "Optimization of dynamic languages using hierarchical layering of virtual machines", journal = j-SIGPLAN, volume = "44", number = "12", pages = "79--88", month = dec, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1640134.1640147", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Aug 31 22:04:07 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Creating an interpreter is a simple and fast way to implement a dynamic programming language. With this ease also come major drawbacks. Interpreters are significantly slower than compiled machine code because they have a high dispatch overhead and cannot perform optimizations. To overcome these limitations, interpreters are commonly combined with just-in-time compilers to improve the overall performance. However, this means that a just-in-time compiler has to be implemented for each language.\par We explore the approach of taking an interpreter of a dynamic language and running it on top of an optimizing trace-based virtual machine, i.e., we run a {\em guest VM\/} on top of a {\em host VM}. The host VM uses trace recording to observe the guest VM executing the application program. Each recorded trace represents a sequence of guest VM bytecodes corresponding to a given execution path through the application program. The host VM optimizes and compiles these traces to machine code, thus eliminating the need for a custom just-in-time compiler for the guest VM. The guest VM only needs to provide basic information about its interpreter loop to the host VM.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "actionscript; dynamic languages; hierarchical virtual machines; Lua; trace compilation", } @Article{Furr:2009:RIL, author = "Michael Furr and Jong-hoon (David) An and Jeffrey S. Foster and Michael Hicks", title = "The {Ruby} intermediate language", journal = j-SIGPLAN, volume = "44", number = "12", pages = "89--98", month = dec, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1640134.1640148", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Aug 31 22:04:07 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "Ruby is a popular, dynamic scripting language that aims to 'feel natural to programmers' and give users the 'freedom to choose' among many different ways of doing the same thing. While this arguably makes programming in Ruby easier, it makes it hard to build analysis and transformation tools that operate on Ruby source code. In this paper, we present the Ruby Intermediate Language (RIL), a Ruby front-end and intermediate representation that addresses these. RIL includes an extensible GLR parser for Ruby, and an automatic translation into an easy-to-analyze intermediate form. This translation eliminates redundant language constructs, unravels the often subtle ordering among side effecting operations, and makes implicit interpreter operations explicit. We also describe several additional useful features of RIL, such as a dynamic instrumentation library for profiling source code and a dataflow analysis engine. We demonstrate the usefulness of RIL by presenting a static and dynamic analysis to eliminate null pointer errors in Ruby programs. We hope that RIL's features will enable others to more easily build analysis tools for Ruby, and that our design will inspire the of similar frameworks for other dynamic languages.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "intermediate language; profile guided analysis; RIL; Ruby", } @Article{Ungar:2009:HOH, author = "David Ungar and Sam S. Adams", title = "Hosting an object heap on manycore hardware: an exploration", journal = j-SIGPLAN, volume = "44", number = "12", pages = "99--110", month = dec, year = "2009", CODEN = "SINODQ", DOI = "https://doi.org/10.1145/1640134.1640149", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", bibdate = "Tue Aug 31 22:04:07 MDT 2010", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", abstract = "In order to construct a test-bed for investigating new programming paradigms for future 'manycore' systems (i.e. those with at least a thousand cores), we are building a Smalltalk virtual machine that attempts to efficiently use a collection of 56-on-chip caches of 64KB each to host a multi-megabyte object heap. In addition to the cost of inter-core communication, two hardware characteristics influenced our design: the absence of hardware-provided cache-coherence, and the inability to move a single object from one core's cache to another's without changing its address. Our design relies on an object table, and the exploitation of a user-managed caching regime for read-mostly objects. At almost every stage of our process, we obtained measurements in order to guide the evolution of our system.\par The architecture and performance characteristics of a manycore platform confound old intuitions by deviating from both traditional multicore systems and from distributed systems. The implementor confronts a wide variety of design choices, such as when to share address space, when to share memory as opposed to sending a message, and how to eke out the most performance from a memory system that is far more tightly integrated than a distributed system yet far less centralized than in a several-core system. Our system is far from complete, let alone optimal, but our experiences have helped us develop new intuitions needed to rise to the manycore software challenge.", acknowledgement = ack-nhfb, fjournal = "ACM SIGPLAN Notices", journal-URL = "https://dl.acm.org/loi/sigplan", keywords = "cache performance; manycore; object heap; object table; Smalltalk; Squeak; virtual machine", } %%% ==================================================================== %%% Unknown volumes @InProceedings{Griswold:2001:MSP, author = "William G. Griswold", title = "Making slicing practical: the final mile", crossref = "ACM:2001:ASS", pages = "1--1", year = "2001", bibdate = "Thu Aug 30 08:01:24 MDT 2001", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/paste/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Invited talk.", URL = "http://www.acm.org/pubs/articles/proceedings/soft/379605/p1-griswold/p1-griswold.pdf; http://www.acm.org/pubs/citations/proceedings/soft/379605/p1-griswold/", acknowledgement = ack-nhfb, } @InProceedings{Reiss:2001:OB, author = "Steven P. Reiss", title = "An overview of {BLOOM}", crossref = "ACM:2001:ASS", pages = "2--5", year = "2001", bibdate = "Thu Aug 30 08:01:24 MDT 2001", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/paste/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/soft/379605/p2-reiss/p2-reiss.pdf; http://www.acm.org/pubs/citations/proceedings/soft/379605/p2-reiss/", acknowledgement = ack-nhfb, } @InProceedings{Agrawal:2001:EEC, author = "Gagan Agrawal and Liang Guo", title = "Evaluating explicitly context-sensitive program slicing", crossref = "ACM:2001:ASS", pages = "6--12", year = "2001", bibdate = "Thu Aug 30 08:01:24 MDT 2001", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/paste/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/soft/379605/p6-agrawal/p6-agrawal.pdf; http://www.acm.org/pubs/citations/proceedings/soft/379605/p6-agrawal/", acknowledgement = ack-nhfb, } @InProceedings{Souter:2001:CDU, author = "Amie L. Souter and Lori L. Pollock", title = "Contextual def-use associations for object aggregation", crossref = "ACM:2001:ASS", pages = "13--19", year = "2001", bibdate = "Thu Aug 30 08:01:24 MDT 2001", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/paste/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/soft/379605/p13-souter/p13-souter.pdf; http://www.acm.org/pubs/citations/proceedings/soft/379605/p13-souter/", acknowledgement = ack-nhfb, } @InProceedings{Palsberg:2001:TBA, author = "Jens Palsberg", title = "Type-based analysis and applications", crossref = "ACM:2001:ASS", pages = "20--27", year = "2001", bibdate = "Thu Aug 30 08:01:24 MDT 2001", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/paste/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Invited talk.", URL = "http://www.acm.org/pubs/articles/proceedings/soft/379605/p20-palsberg/p20-palsberg.pdf; http://www.acm.org/pubs/citations/proceedings/soft/379605/p20-palsberg/", acknowledgement = ack-nhfb, } @InProceedings{Kadayif:2001:VVE, author = "I. Kadayif and T. Chinoda and M. Kandemir and N. Vijaykirsnan and M. J. Irwin and A. Sivasubramaniam", title = "{vEC}: virtual energy counters", crossref = "ACM:2001:ASS", pages = "28--31", year = "2001", bibdate = "Thu Aug 30 08:01:24 MDT 2001", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/paste/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/soft/379605/p28-kadayif/p28-kadayif.pdf; http://www.acm.org/pubs/citations/proceedings/soft/379605/p28-kadayif/", acknowledgement = ack-nhfb, } @InProceedings{Ancourt:2001:ARS, author = "Corinne Ancourt and Thi Viet Nga Nguyen", title = "Array resizing for scientific code debugging, maintenance and reuse", crossref = "ACM:2001:ASS", pages = "32--37", year = "2001", bibdate = "Thu Aug 30 08:01:24 MDT 2001", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/paste/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/soft/379605/p32-ancourt/p32-ancourt.pdf; http://www.acm.org/pubs/citations/proceedings/soft/379605/p32-ancourt/", acknowledgement = ack-nhfb, } @InProceedings{Braband:2001:SVD, author = "Claus Braband and Anders M{\o}ller and Michael Schwartzbach", title = "Static validation of dynamically generated {HTML}", crossref = "ACM:2001:ASS", pages = "38--45", year = "2001", bibdate = "Thu Aug 30 08:01:24 MDT 2001", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/paste/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/citations/proceedings/soft/379605/p38-braband/", acknowledgement = ack-nhfb, } @InProceedings{Ryder:2001:CIA, author = "Barbara G. Ryder and Frank Tip", title = "Change impact analysis for object-oriented programs", crossref = "ACM:2001:ASS", pages = "46--53", year = "2001", bibdate = "Thu Aug 30 08:01:24 MDT 2001", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/paste/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/soft/379605/p46-ryder/p46-ryder.pdf; http://www.acm.org/pubs/citations/proceedings/soft/379605/p46-ryder/", acknowledgement = ack-nhfb, } @InProceedings{Hind:2001:PAH, author = "Michael Hind", title = "Pointer analysis: haven't we solved this problem yet?", crossref = "ACM:2001:ASS", pages = "54--61", year = "2001", bibdate = "Thu Aug 30 08:01:24 MDT 2001", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/paste/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Invited talk.", URL = "http://www.acm.org/pubs/articles/proceedings/soft/379605/p54-hind/p54-hind.pdf; http://www.acm.org/pubs/citations/proceedings/soft/379605/p54-hind/", acknowledgement = ack-nhfb, } @InProceedings{Maessen:2001:PAS, author = "Jan-Willem Maessen and Vivek Sarkar and David Grove", title = "Program analysis for safety guarantees in a {Java} virtual machine written in {Java}", crossref = "ACM:2001:ASS", pages = "62--65", year = "2001", bibdate = "Thu Aug 30 08:01:24 MDT 2001", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/paste/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/soft/379605/p62-maessen/p62-maessen.pdf; http://www.acm.org/pubs/citations/proceedings/soft/379605/p62-maessen/", acknowledgement = ack-nhfb, } @InProceedings{Mock:2001:DPS, author = "Markus Mock and Manuvir Das and Craig Chambers and Susan J. Eggers", title = "Dynamic points-to sets: a comparison with static analyses and potential applications in program understanding and optimization", crossref = "ACM:2001:ASS", pages = "66--72", year = "2001", bibdate = "Thu Aug 30 08:01:24 MDT 2001", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/paste/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/soft/379605/p66-mock/p66-mock.pdf; http://www.acm.org/pubs/citations/proceedings/soft/379605/p66-mock/", acknowledgement = ack-nhfb, } @InProceedings{Liang:2001:EEF, author = "Donglin Liang and Maikel Pennings and Mary Jean Harrold", title = "Extending and evaluating flow-insensitive and context-insensitive points-to analyses for {Java}", crossref = "ACM:2001:ASS", pages = "73--79", year = "2001", bibdate = "Thu Aug 30 08:01:24 MDT 2001", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/paste/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/soft/379605/p73-liang/p73-liang.pdf; http://www.acm.org/pubs/citations/proceedings/soft/379605/p73-liang/", acknowledgement = ack-nhfb, } @InProceedings{Holzmann:2001:ESV, author = "Gerard J. Holzmann", title = "Economics of software verification", crossref = "ACM:2001:ASS", pages = "80--89", year = "2001", bibdate = "Thu Aug 30 08:01:24 MDT 2001", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/paste/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Invited talk.", URL = "http://www.acm.org/pubs/articles/proceedings/soft/379605/p80-holzmann/p80-holzmann.pdf; http://www.acm.org/pubs/citations/proceedings/soft/379605/p80-holzmann/", acknowledgement = ack-nhfb, } @InProceedings{Webber:2001:WCI, author = "Adam Brooks Webber", title = "What is a class invariant?", crossref = "ACM:2001:ASS", pages = "86--89", year = "2001", bibdate = "Thu Aug 30 08:01:24 MDT 2001", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/paste/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/soft/379605/p86-webber/p86-webber.pdf; http://www.acm.org/pubs/citations/proceedings/soft/379605/p86-webber/", acknowledgement = ack-nhfb, } @InProceedings{Flanagan:2001:DRC, author = "Cormac Flanagan and Stephen N. Freund", title = "Detecting race conditions in large programs", crossref = "ACM:2001:ASS", pages = "90--96", year = "2001", bibdate = "Thu Aug 30 08:01:24 MDT 2001", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/paste/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/soft/379605/p90-flanagan/p90-flanagan.pdf; http://www.acm.org/pubs/citations/proceedings/soft/379605/p90-flanagan/", acknowledgement = ack-nhfb, } @InProceedings{Ball:2001:BPS, author = "Thomas Ball and Sriram K. Rajamani", title = "{Bebop}: a path-sensitive interprocedural dataflow engine", crossref = "ACM:2001:ASS", pages = "97--103", year = "2001", bibdate = "Thu Aug 30 08:01:24 MDT 2001", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/paste/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", URL = "http://www.acm.org/pubs/articles/proceedings/soft/379605/p97-ball/p97-ball.pdf; http://www.acm.org/pubs/citations/proceedings/soft/379605/p97-ball/", acknowledgement = ack-nhfb, } @InProceedings{Anonymous:2001:AIb, author = "Anonymous", title = "Author Index", crossref = "ACM:2001:ASS", pages = "104--104", year = "2001", bibdate = "Sat Nov 24 08:13:55 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", acknowledgement = ack-nhfb, } %%% ==================================================================== %%% Cross-referenced entries must come last: @Proceedings{ACM:2000:AIP, editor = "{ACM}", booktitle = "ASPLOS-IX Proceedings: The Ninth International Conference on Architectural Support for Programming Languages and Operating Systems, Cambridge, MA, November 12--15, 2000", title = "{ASPLOS}-{IX} Proceedings: The Ninth International Conference on Architectural Support for Programming Languages and Operating Systems, Cambridge, {MA}, November 12--15, 2000", volume = "35(11)", publisher = pub-ACM, address = pub-ACM:adr, pages = "ix + 271", month = nov, year = "2000", ISBN = "1-58113-317-0", ISBN-13 = "978-1-58113-317-2", LCCN = "", bibdate = "Tue Jan 09 12:39:11 2001", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", series = j-SIGPLAN, acknowledgement = ack-nhfb, } @Proceedings{ACM:2000:COO, editor = "{ACM}", booktitle = "Conference on Object-oriented programming, systems, languages, and applications: October 15--19, 2000, Minneapolis, MN, USA", title = "Conference on Object-oriented programming, systems, languages, and applications: October 15--19, 2000, Minneapolis, {MN}, {USA}", volume = "35(10)", publisher = pub-AW, address = pub-AW:adr, pages = "x + 402", year = "2000", CODEN = "SINODQ", ISBN = "0-201-48565-6", ISBN-13 = "978-0-201-48565-3", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", LCCN = "????", bibdate = "Tue Nov 7 16:57:37 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/oops/353171/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", series = ser-SIGPLAN, acknowledgement = ack-nhfb, } @Proceedings{ACM:2000:PAS, editor = "{ACM}", booktitle = "Proceedings of the ACM SIGPLAN '00 conference on Programming language design and implementation: June 18--21, 2000, Vancouver, BC, Canada", title = "Proceedings of the {ACM} {SIGPLAN} '00 conference on Programming language design and implementation: June 18--21, 2000, Vancouver, {BC}, Canada", publisher = pub-ACM, address = pub-ACM:adr, pages = "??--??", year = "2000", CODEN = "SINODQ", ISBN = "1-58113-199-2", ISBN-13 = "978-1-58113-199-4", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", LCCN = "????", bibdate = "Tue Nov 7 17:22:50 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pldi/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "ACM order number 548000.", acknowledgement = ack-nhfb, } @Proceedings{ACM:2000:PFA, editor = "{ACM}", booktitle = "Proceedings of the fifth ACM SIGPLAN international conference on Functional programming: September 18--21, 2000, Montr{\'e}al, Canada", title = "Proceedings of the fifth {ACM} {SIGPLAN} international conference on Functional programming: September 18--21, 2000, Montr{\'e}al, Canada", volume = "35(9)", publisher = pub-ACM, address = pub-ACM:adr, pages = "ix + 292", year = "2000", CODEN = "SINODQ", ISBN = "1-58113-202-6", ISBN-13 = "978-1-58113-202-1", ISSN = "0362-1340 (print), 1523-2867 (print), 1558-1160 (electronic)", ISSN-L = "0362-1340", LCCN = "????", bibdate = "Tue Nov 7 16:57:22 MST 2000", bibsource = "http://www.acm.org/pubs/contents/proceedings/fp/351240/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "ACM order number 565000.", series = ser-SIGPLAN, acknowledgement = ack-nhfb, } @Proceedings{Sreedhar:2000:PAS, editor = "Vugranam C. Sreedhar and Jong-Deok Choi", booktitle = "Proceedings of the {ACM SIGPLAN Workshop on {\em Dyn\/}amic and {\em A\/}daptive Co{\em m\/}pilation and {\em O\/}ptimization (Dynamo '00). January 18, 2000, Boston, Massachusetts}", title = "Proceedings of the {ACM SIGPLAN Workshop on {\em Dyn\/}amic and {\em A\/}daptive Co{\em m\/}pilation and {\em O\/}ptimization (Dynamo '00). January 18, 2000, Boston, Massachusetts}", volume = "35(7)", publisher = pub-ACM, address = pub-ACM:adr, pages = "81", year = "2000", ISBN = "1-58113-241-7", ISBN-13 = "978-1-58113-241-0", LCCN = "", bibdate = "Tue Nov 07 18:22:56 2000", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "ACM order number 549000.", series = ser-SIGPLAN, acknowledgement = ack-nhfb, } @Proceedings{ACM:2001:ASS, editor = "{ACM}", booktitle = "ACM SIGPLAN--SIGSOFT workshop on Program analysis for software tools and engineering: June 18--19, 2001, Snowbird, Utah, USA: PASTE'01", title = "{ACM} {SIGPLAN}--{SIGSOFT} workshop on Program analysis for software tools and engineering: June 18--19, 2001, Snowbird, Utah, {USA}: {PASTE}'01", publisher = pub-ACM, address = pub-ACM:adr, pages = "viii + 104", year = "2001", ISBN = "1-58113-413-4", ISBN-13 = "978-1-58113-413-1", LCCN = "????", bibdate = "Thu Aug 30 08:01:24 MDT 2001", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/paste/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "Supplement to ACM SIGPLAN Notices.", acknowledgement = ack-nhfb, } @Proceedings{ACM:2001:PAS, editor = "{ACM}", booktitle = "POPL 2001: The 28th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages: January 17--19, 2001, The Royal Society, London, United Kingdom", title = "{POPL} 2001: The 28th {ACM} {SIGPLAN}-{SIGACT} Symposium on Principles of Programming Languages: January 17--19, 2001, The Royal Society, London, United Kingdom", publisher = pub-ACM, address = pub-ACM:adr, pages = "viii + 304", year = "2001", ISBN = "1-58113-336-7", ISBN-13 = "978-1-58113-336-3", LCCN = "????", bibdate = "Tue Apr 17 18:26:27 MDT 2001", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/popl/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "ACM order number 549011.", acknowledgement = ack-nhfb, } @Proceedings{ACM:2001:PEA, editor = "{ACM}", booktitle = "Proceedings of the Eighth ACM SIGPLAN Symposium on Principles and Practices of Parallel Programming: June 18--20, 2001, Snowbird, Utah, USA (PPoPP'01)", title = "Proceedings of the Eighth {ACM} {SIGPLAN} Symposium on Principles and Practices of Parallel Programming: June 18--20, 2001, Snowbird, Utah, {USA} ({PP}o{PP}'01)", volume = "36(7)", publisher = pub-ACM, address = pub-ACM:adr, pages = "vii + 144", month = jul, year = "2001", ISBN = "1-58113-346-4", ISBN-13 = "978-1-58113-346-2", LCCN = "????", bibdate = "Thu Aug 30 08:07:37 MDT 2001", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/ppopp/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", series = j-SIGPLAN, acknowledgement = ack-nhfb, } @Proceedings{ACM:2002:PAS, editor = "{ACM}", booktitle = "Proceedings of the 2002 ACM SIGPLAN Workshop Partial Evaluation and Semantics-Based Program Manipulation (PEPM'02)", title = "Proceedings of the 2002 {ACM} {SIGPLAN} Workshop Partial Evaluation and Semantics-Based Program Manipulation ({PEPM}'02)", volume = "37(3)", publisher = pub-ACM, address = pub-ACM:adr, pages = "iv + 143", month = mar, year = "2002", ISBN = "1-58113-455-X", ISBN-13 = "978-1-58113-455-1", LCCN = "????", bibdate = "Tue Apr 09 14:42:08 2002", bibsource = "http://www.acm.org/pubs/contents/proceedings/series/pepm/; https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", note = "ACM order number 551021.", series = j-SIGPLAN, acknowledgement = ack-nhfb, } @Proceedings{McKinley:2003:YAS, editor = "Kathryn S. McKinley", booktitle = "20 Years of the {ACM\slash SIGPLAN Conference on Programming Language Design and Implementation} (1979--1999): {A} Selection", title = "20 Years of the {ACM\slash SIGPLAN Conference on Programming Language Design and Implementation} (1979--1999): {A} Selection", volume = "39(4)", publisher = pub-ACM, address = pub-ACM:adr, year = "2003", ISBN = "1-58113-623-4", ISBN-13 = "978-1-58113-623-4", LCCN = "????", bibdate = "Sat Nov 29 11:38:05 2003", bibsource = "https://www.math.utah.edu/pub/tex/bib/sigplan2000.bib", series = j-SIGPLAN, acknowledgement = ack-nhfb, }