Changes in / [57aa6f5:8a63547]


Ignore:
Files:
10 deleted
5 edited

Legend:

Unmodified
Added
Removed
  • .gitignore

    r57aa6f5 r8a63547  
    2828# generated by bison and lex from cfa.yy and lex.ll, respectively
    2929src/Parser/parser.output
     30
     31# generated by latex
     32*.aux
     33*.bbl
     34*.blg
     35*.brf
     36*.dvi
     37*.idx
     38*.ilg
     39*.ind
     40*.log
     41*.out
     42*.pdf
     43*.ps
     44*.toc
  • doc/LaTeXmacros/common.tex

    r57aa6f5 r8a63547  
    1111%% Created On       : Sat Apr  9 10:06:17 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Fri Jun  3 09:32:19 2016
    14 %% Update Count     : 62
     13%% Last Modified On : Wed May  4 08:01:10 2016
     14%% Update Count     : 54
    1515%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1616
    1717%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    18 
    19 \setlength{\textheight}{9in}
    20 %\oddsidemargin 0.0in
    21 \renewcommand{\topfraction}{0.8}        % float must be greater than X of the page before it is forced onto its own page
    22 \renewcommand{\bottomfraction}{0.8}     % float must be greater than X of the page before it is forced onto its own page
    23 \renewcommand{\floatpagefraction}{0.8}  % float must be greater than X of the page before it is forced onto its own page
    24 \renewcommand{\textfraction}{0.0}       % the entire page maybe devoted to floats with no text on the page at all
    25 \usepackage{pslatex}                            % reduce size of san serif font
    2618
    2719% Names used in the document.
     
    3527
    3628\makeatletter
    37 % parindent is relative, i.e., toggled on/off in environments like itemize,
    38 % so store the value for use rather than use \parident directly.
    39 \newlength{\parindentlength}
    40 \setlength{\parindentlength}{\parindent}
    41 
    4229% allow escape sequence in lstinline
    4330%\usepackage{etoolbox}
     
    4532
    4633% make fontsize "small" slightly larger, specifically for san serif (helvetica) in program code
    47 %\renewcommand\small{%
    48 %   \@setfontsize\small{8.5}{11}%
    49 %   \abovedisplayskip 8.5pt \@plus 3pt \@minus 4pt
    50 %   \abovedisplayshortskip \z@ \@plus 2pt
    51 %   \belowdisplayshortskip 4pt \@plus 2pt \@minus 2pt
    52 %   \def\@listi{\leftmargin\leftmargini
    53 %               \topsep 4pt \@plus 2pt \@minus 2pt
    54 %               \parsep 2pt \@pluspt \@minuspt
    55 %               \itemsep \parsep}%
    56 %   \belowdisplayskip \abovedisplayskip
    57 %}
     34\renewcommand\small{%
     35   \@setfontsize\small{8.5}{11}%
     36   \abovedisplayskip 8.5pt \@plus 3pt \@minus 4pt
     37   \abovedisplayshortskip \z@ \@plus 2pt
     38   \belowdisplayshortskip 4pt \@plus 2pt \@minus 2pt
     39   \def\@listi{\leftmargin\leftmargini
     40               \topsep 4pt \@plus 2pt \@minus 2pt
     41               \parsep 2pt \@pluspt \@minuspt
     42               \itemsep \parsep}%
     43   \belowdisplayskip \abovedisplayskip
     44}
    5845\usepackage{relsize}                                    % must be after change to small or selects old size
    5946
     
    199186language=CFA,
    200187columns=flexible,
    201 basicstyle=\sf,
     188basicstyle=\sf\relsize{-1},
    202189stringstyle=\tt,
    203190tabsize=4,
    204 xleftmargin=\parindentlength,
     191xleftmargin=\parindent,
    205192extendedchars=true,
    206193escapechar=§,
  • doc/bibliography/cfa.bib

    • Property mode changed from 100644 to 120000
    r57aa6f5 r8a63547  
    1 % Conventions: uncross-referenced entries appear first, then
    2 %    cross-referenced entries.  In both groups, entries are sorted by their
    3 %    title field.  Lines like "% A" exist to speed searches.  The main
    4 %    paper on a language uses the language name as the citation key.  Other
    5 %    papers use ``<language name>:'' as a prefix.  Please consider leaving
    6 %    keyword lists and an abstract or comment for future generations, and
    7 %    put some identification in a contributer field.
    8 
    9 %    Predefined journal names:
    10 %  acmcs: Computing Surveys             acta: Acta Infomatica
    11 %  cacm: Communications of the ACM
    12 %  ibmjrd: IBM J. Research & Development ibmsj: IBM Systems Journal
    13 %  ieeese: IEEE Trans. on Soft. Eng.    ieeetc: IEEE Trans. on Computers
    14 %  ieeetcad: IEEE Trans. on Computer-Aided Design of Integrated Circuits
    15 %  ipl: Information Processing Letters  jacm: Journal of the ACM
    16 %  jcss: J. Computer & System Sciences  scp: Science of Comp. Programming
    17 %  sicomp: SIAM J. on Computing         tocs: ACM Trans. on Comp. Systems
    18 %  tods: ACM Trans. on Database Sys.    tog: ACM Trans. on Graphics
    19 %  toms: ACM Trans. on Math. Software   toois: ACM Trans. on Office Info. Sys.
    20 %  toplas: ACM Trans. on Prog. Lang. & Sys.
    21 %  tcs: Theoretical Computer Science
    22 @string{ieeepds="IEEE Transactions on Parallel and Distributed Systems"}
    23 @string{ieeese="IEEE Transactions on Software Engineering"}
    24 @string{spe="Software---\-Practice and Experience"}
    25 @string{sigplan="SIGPLAN Notices"}
    26 @string{joop="Journal of Object-Oriented Programming"}
    27 @string{popl="Conference Record of the ACM Symposium on Principles of Programming Languages"}
    28 @string{osr="Operating Systems Review"}
    29 @string{pldi="Programming Language Design and Implementation"}
    30 
    31 % A
    32 
    33 @incollection{ABC++,
    34     keywords    = {concurrency, parallel, distributed, C++},
    35     contributer = {pabuhr@plg},
    36     author      = {William G. O'Farrell and Frank Ch. Eigler and S. David Pullara and Gregory V. Wilson },
    37     title       = {{ABC}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    38     editor      = {Gregory V. Wilson and Paul Lu},
    39     booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    40     publisher   = {MIT Press},
    41     series      = {Scientific and Engineering Computation Series},
    42     year        = 1996,
    43     pages       = {1-42},
    44 }
    45 
    46 @techreport{CL90abstract,
    47     keywords    = {},
    48     contributer = {gjditchfield@plg},
    49     author      = {Luca Cardelli and Xavier Leroy},
    50     title       = {Abstract Types and the Dot Notation},
    51     institution = {Systems Research Center},
    52     year        = 1990,
    53     address     = {130 Lytton Avenue, Palo Alto, CA  94301},
    54     number      = 56,
    55     summary     = {
    56         The existential types of Mitchell and Plotkin \cite{atet} model
    57         abstract types, but their ``open'' notation is unlike the usual dot
    58         notation used in programming languages.  This paper gives
    59         translations between the ``open'' and ``dot'' forms, and suggests
    60         extensions for nested and for parameterized abstractions.
    61     }
    62 }
    63 
    64 @article{atet,
    65     keywords    = {lambda calculus, polymorphism},
    66     contributer = {gjditchfield@plg},
    67     author      = {John C. Mitchell and Gordon D. Plotkin},
    68     title       = {Abstract Types have Existential Type},
    69     journal     = toplas,
    70     year        = 1988,
    71     month       = jul, volume = 10, number = 3, pages = {470-502},
    72     abstract    = {
    73         Abstract data type declarations appear in typed programming
    74         languages like Ada, Alphard, CLU and ML.  This form of declaration
    75         binds a list of identifiers to a type with associated operations, a
    76         composite ``value'' we call a {\em data algebra}.  We use a
    77         second-order typed lambda calculus SOL to show how data algebras
    78         may be given types, passed as parameters, and returned as results of
    79         function calls.  In the process, we discuss the semantics of
    80         abstract data type declarations and review a connection between
    81         typed programming languages and constructive logic.
    82     }
    83 }
    84 
    85 @article{alphard:intro,
    86     keywords    = {encapsulation, data abstraction},
    87     contributer = {gjditchfield@plg},
    88     author      = {Wm. A. Wulf and Ralph L. London and Mary Shaw},
    89     title       = {Abstraction and Verification in Alphard: Introduction to Language and Methodology},
    90     journal     = ieeese,
    91     year        = 1976,
    92     month       = dec, volume = {SE-2}, number = 4, pages = {253-265},
    93     note        = {Reprinted in \cite{alphard}.},
    94     abstract    = {
    95         Alphard is a programming language whose goals include supporting
    96         both the development of well-structured programs and the formal
    97         verification of these programs.  This paper attempts to capture the
    98         symbiotic influence of these two goals on the design of the
    99         language.  To that end the language description is interleaved with
    100         the presentation of a proof technique and discudssion of
    101         programming methodology.  Examples to illustrate both the language
    102         and the verification technique are included.
    103     }
    104 }
    105 
    106 @book{Hilfinger83,
    107     keywords    = {ada},
    108     author      = {Paul N. Hilfinger},
    109     title       = {Abstraction Mechanisms and Language Design},
    110     publisher   = {MIT Press},
    111     series      = {ACM Distinguished Dissertations},
    112     year        = 1983,
    113 }
    114 
    115 @incollection{Lavender96,
    116     author      = {R. Greg Lavender and Douglas C. Schmidt},
    117     chapter     = {Active Object: An Object Behavioral Pattern for Concurrent Programming},
    118     title       = {Pattern Languages of Program Design 2},
    119     editor      = {John M. Vlissides and James O. Coplien and Norman L. Kerth},
    120     year        = 1996,
    121     pages       = {483-499},
    122     publisher   = {Addison-Wesley Longman Publishing Co., Inc.},
    123     address     = {Boston, MA, USA},
    124 }
    125 
    126 @article{Nierstrasz87,
    127     keywords    = {Hybrid, active objects, object-oriented languages,
    128                   object-based languages, delegation, concurrency},
    129     contributer = {pabuhr@plg},
    130     author      = {O. M. Nierstrasz},
    131     title       = {Active Objects in {Hybrid}},
    132     journal     = sigplan,
    133     volume      = 22,
    134     number      = 12,
    135     month       = dec,
    136     year        = 1987,
    137     pages       = {243-253},
    138     note        = {Proceedings of the OOPSLA'87 Conference, Oct. 4--8, 1987, Orlando, Florida},
    139     abstract    = {
    140         Most object-oriented languages are strong on reusability or on
    141         strong-typing, but weak on concurrency.  In response to this gap,
    142         we are developing {\it Hybrid}, an object-oriented language in which
    143         objects are the active entities.  Objects in Hybrid are organized
    144         into {\it domains}, and concurrent executions into {\it activities}.
    145         All object communications are based on remote procedure calls.
    146         Unstructured {\it sends\/} and {\it accepts\/} are forbidden.  To
    147         this the mechanisms of {\it delegation\/} and {\it delay queues\/}
    148         are added to enable switching and triggering of activities.
    149         Concurrent subactivities and atomic actions are provided for
    150         compactness and simplicity.  We show how solutions to many important
    151         concurrent problems [sic], such as pipelining, constraint management
    152         and ``administration'' can be compactly expressed using these
    153         mechanisms.
    154    },
    155    comment      = {Mentions Thoth in reference to delegation}
    156 }
    157 
    158 @book{Actors,
    159     keywords    = {actors, concurrency},
    160     contributer = {pabuhr@plg},
    161     author      = {Gul A. Agha},
    162     title       = {Actors: A Model of Concurrent Computation in Distributed Systems},
    163     publisher   = {MIT Press, Cambridge, Mass.},
    164     year        = 1986
    165 }
    166 
    167 @article{polymorphImpl,
    168     keywords    = {Napier88},
    169     contributer = {gjditchfield@plg},
    170     author      = {R. Morrison and A. Dearle and R. C. H. Connor and A. L. Brown},
    171     title       = {An Ad Hoc Approach to the Implementation of Polymorphism},
    172     journal     = toplas,
    173     year        = 1991,
    174     month       = jul,
    175     volume      = 13,
    176     number      = 3,
    177     pages       = {342-371},
    178     abstract    = {
    179         Polymorphic abstraction provides the ability to write programs that
    180         are independent of the form of the data over which they operate.
    181         There are a number of different categories of polymorphic
    182         expression---ad hoc and universal, which includes parametric and
    183         inclusion---all of which have many advantages in terms of code
    184         reuse and software economics.  It has proved difficult to provide
    185         efficient implementations of polymorphism.  Here, we address this
    186         problem and describe a new technique that can implement all forms
    187         of polymorphism, use a conventional machine architecture, and
    188         support nonuniform data representations.  Furthermore, the method
    189         ensures that any extra cost of implementation applies to
    190         polymorphic forms only, and allows such polymorphic forms to
    191         persist over program invocations.
    192     },
    193     summary     = {
    194         They give three ways to implement polymorphism: {\em textual
    195         polymorphism}, which seems to be template instantiation, {\em
    196         uniform polymorphism}, which they explain badly, and {\em tagged
    197         polymorphism}, where object code performs type tests.
    198 
    199         They use first-class procedures to implement polymorphism: routines
    200         with type parameters are implemented as curried routines that
    201         return a nested routine that refers to the type parameter.
    202     }
    203 }
    204 
    205 @article{dim:ada,
    206     keywords    = {Dimensional Analysis, Ada},
    207     contributer = {gjditchfield@plg},
    208     author      = {Paul N. Hilfinger},
    209     title       = {An {Ada} Package for Dimensional Analysis},
    210     journal     = toplas,
    211     month       = apr,
    212     year        = 1988,
    213     volume      = 10,
    214     number      = 2,
    215     pages       = {189-203},
    216 }
    217 
    218 @mastersthesis{Younger91,
    219     keywords    = {concurrency, C++, postponing requests},
    220     contributer = {pabuhr@plg},
    221     author      = {Brian M. Younger},
    222     title       = {Adding Concurrency to {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    223     school      = {University of Waterloo},
    224     year        = 1991,
    225     address     = {Waterloo, Ontario, Canada, N2L 3G1},
    226 }
    227 
    228 @inproceedings{Buhr92c,
    229     keywords    = {concurrency},
    230     contributer = {pabuhr@plg},
    231     author      = {Peter A. Buhr and Glen Ditchfield},
    232     title       = {Adding Concurrency to a Programming Language},
    233     booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Technical Conference Proceedings},
    234     organization= {USENIX Association},
    235     address     = {Portland, Oregon, U.S.A.},
    236     month       = aug,
    237     year        = 1992,
    238     pages       = {207-224},
    239 }
    240 
    241 @article{Buhr89b,
    242     keywords    = {concurrency, C++},
    243     contributer = {pabuhr@plg},
    244     author      = {P. A. Buhr and Glen Ditchfield and C. R. Zarnke},
    245     title       = {Adding Concurrency to a Statically Type-Safe Object-Oriented Programming Language},
    246     journal     = sigplan,
    247     volume      = 24,
    248     number      = 4,
    249     month       = apr,
    250     year        = 1989,
    251     pages       = {18-21},
    252     note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming, Sept. 26--27, 1988, San Diego, California, U.S.A.},
    253 }
    254 
    255 @article{Knuth66,
    256     keywords    = {N-thread software-solution mutual exclusion},
    257     contributer = {pabuhr@plg},
    258     author      = {Donald E. Knuth},
    259     title       = {Additional Comments on a Problem in Concurrent Programming Control},
    260     journal     = cacm,
    261     month       = may,
    262     year        = 1966,
    263     volume      = 9,
    264     number      = 5,
    265     pages       = {321-322},
    266     note        = {Letter to the Editor}
    267 }
    268 
    269 @article{DeBruijn67,
    270     keywords    = {N-thread software-solution mutual exclusion},
    271     contributer = {pabuhr@plg},
    272     author      = {Nicolaas Govert de Bruijn},
    273     title       = {Additional Comments on a Problem in Concurrent Programming Control},
    274     journal     = cacm,
    275     month       = mar,
    276     year        = 1967,
    277     volume      = 10,
    278     number      = 3,
    279     pages       = {137-138},
    280     note        = {letter to the Editor}
    281 }
    282 
    283 @phdthesis{Krischer10,
    284     author      = {Roy Krischer},
    285     title       = {Advanced Concepts in Asynchronous Exception Handling},
    286     school      = {University of Waterloo},
    287     year        = 2010,
    288     month       = dec,
    289     address     = {Waterloo, Ontario, Canada, N2L 3G1},
    290     optnote     = {\textsf{http://uwspace.uwaterloo.ca/\-bitstream/10012/\-5751\-/1/Krischer\_Roy.pdf}},
    291     note        = {\href{http://uwspace.uwaterloo.ca/bitstream/10012/5751/1/Krischer_Roy.pdf}{http://uwspace.uwaterloo.ca/\-bitstream/10012/\-5751\-/1/Krischer\_Roy.pdf}},
    292 }
    293 
    294 @article{Buhr00a,
    295     keywords    = {exception handling},
    296     contributer = {pabuhr@plg},
    297     author      = {Peter A. Buhr and W. Y. Russell Mok},
    298     title       = {Advanced Exception Handling Mechanisms},
    299     journal     = ieeese,
    300     volume      = 26,
    301     number      = 9,
    302     month       = sep,
    303     year        = 2000,
    304     pages       = {820-836},
    305 }
    306 
    307 @book{Richter97,
    308     keywords    = {Win32, threads},
    309     author      = {Jeffrey M. Richter},
    310     title       = {Advanced Windows},
    311     publisher   = {Microsoft Press},
    312     year        = 1997,
    313     edition     = {third},
    314 }
    315 
    316 @article{Francez77,
    317     keywords    = {parameter passing, named/positional arguments},
    318     contributer = {pabuhr@plg},
    319     author      = {Nissim Francez},
    320     title       = {Another Advantage of Key word Notation for Parameter Communication with Subprograms},
    321     journal     = cacm,
    322     volume      = 20,
    323     number      = 8,
    324     month       = aug,
    325     year        = 1977,
    326     pages       = {604-605},
    327 }
    328 
    329 @article{Algol60,
    330     keywords    = {Algol60},
    331     contributer = {pabuhr@plg},
    332     author      = {J. W. Backus and F. L. Bauer and J. Green and C. Katz and
    333                    J. McCarthy and P. Naur and A. J. Perlis and H. Rutishauser and K. Samuelson
    334                    and B. Vauquois and J.H. Wegstein and A. van Wijngaarden and M. Woodger},
    335     title       = {Revised Report on the Algorithmic Language Algol 60},
    336     editor      = {Peter Nauer},
    337     journal     = cacm,
    338     volume      = 6,
    339     number      = 1,
    340     month       = jan,
    341     year        = 1963,
    342     pages       = {1-17},
    343 }
    344 
    345 @article{Mellor-Crummey91,
    346     keywords    = {spin locks, compare-and-swap, barriers},
    347     contributer = {pabuhr@plg},
    348     author      = {John M. Mellor-Crummey and Michael L. Scott},
    349     title       = {Algorithm for Scalable Synchronization on Shared-Memory Multiprocessors},
    350     journal     = tocs,
    351     volume      = 9,
    352     number      = 1,
    353     month       = feb,
    354     year        = 1991,
    355     pages       = {21-65},
    356 }
    357 
    358 @article{Cor:overload,
    359     keywords    = {},
    360     contributer = {gjditchfield@plg},
    361     author      = {Gordon V. Cormack},
    362     title       = {An Algorithm for the Selection of Overloaded Functions in {Ada}},
    363     journal     = sigplan,
    364     year        = 1981,
    365     month       = feb, volume = 16, number = 2, pages = {48-52},
    366     comment     = {
    367         A one-pass, top-down algorithm for overload resolution.  Input is a
    368         parse tree and the desired result type, and output is the number of
    369         solutions.  For each overloading of the root identifier with a
    370         matching parameter list, recursively solve for each parameter for
    371         the corresponding argument type---there should be one solution.
    372     }
    373 }
    374 
    375 @book{Raynal86,
    376     keywords    = {mutual exclusion, locks},
    377     contributer = {pabuhr@plg},
    378     author      = {M. Raynal},
    379     title       = {Algorithms for Mutual Exclusion},
    380     publisher   = {The MIT Press},
    381     address     = {Cambridge, Massachusetts},
    382     series      = {Scientific Computation Series},
    383     year        = 1986,
    384     note        = {Translated by D. Beeson},
    385 }
    386 
    387 @incollection{Gidenstam05,
    388     keywords    = {lock free, dynamic memory allocation},
    389     contributer = {pabuhr@plg},
    390     author      = {Anders Gidenstam and Marina Papatriantafilou and Philippas Tsigas},
    391     title       = {Allocating Memory in a Lock-free Manner},
    392     editor      = {Gerth St{\o}lting Brodal and Stefano Leonardi},
    393     booktitle   = {Algorithms -- ESA 2005},
    394     pages       = {329-342},
    395     publisher   = {Springer},
    396     year        = 2005,
    397     volume      = 3669,
    398     series      = {Lecture Notes in Computer Science},
    399 }
    400 
    401 @book{Sites92,
    402     keywords    = {computers, Alpha},
    403     contributer = {pabuhr@plg},
    404     editor      = {Richard L. Sites},
    405     title       = {Alpha Architecture Reference Manual},
    406     publisher   = {Digital Press, One Burlington Woods Drive, Burlington, MA, U. S. A., 01803},
    407     year        = 1992,
    408 }
    409 
    410 @book{alphard,
    411     keywords    = {Parametric polymorphism, alphard, iterators, nested types},
    412     contributer = {gjditchfield@plg},
    413     editor      = {Mary Shaw},
    414     title       = {{ALPHARD}: Form and Content},
    415     publisher   = {Springer-Verlag},
    416     year        = 1981,
    417     comment     = {Collection of papers about Alphard.}
    418 }
    419 
    420 @article{Kessels77,
    421     keywords    = {monitors},
    422     contributer = {pabuhr@plg},
    423     author      = {Joep L. W. Kessels},
    424     title       = {An Alternative to Event Queues for Synchronization in Monitors},
    425     journal     = cacm,
    426     volume      = 20,
    427     number      = 7,
    428     month       = jul,
    429     year        = 1977,
    430     pages       = {500-503},
    431     annote      = {
    432     }
    433 }
    434 
    435 @article{descr,
    436     keywords    = {X2, subclasses, inheritance, parameterized classes},
    437     contributer = {gjditchfield@plg},
    438     author      = {David Sandberg},
    439     title       = {An Alternative to Subclassing},
    440     journal     = sigplan,
    441     volume      = {21},    number = {11},
    442     pages       = {424-428},
    443     month       = nov, year = 1986,
    444     comment     = {
    445         The Smalltalk class hierarchy has three uses: factoring out code;
    446         ``Abstraction superclasses'' such as Collection; rapid construction
    447         of new classes by incremental change.
    448 
    449         ``A descriptive class specifies a partial behavior by specifying a
    450         set of procedure headings that describe what can be done with
    451         instances of classes that belong to the descriptive class.''  An
    452         ``instance'' statement declares a class to be an instance of a
    453         descriptive class and defines the correspondence between
    454         operations.  Procedures with descriptive class parameters take any
    455         instance as arguments.  Descriptive classes can describe relations
    456         like ``c is a collection with element type e'', but how such things
    457         are used isn't explained.
    458        
    459         For each descriptive class used in a parameter list, an implicit
    460         parameter is created that is passed a vector of procedures.
    461     }
    462 }
    463 
    464 @incollection{Matsuoka93,
    465     keywords    = {inheritance anomaly},
    466     contributer = {pabuhr@plg},
    467     author      = {Satoshi Matsuoka and Akinori Yonezawa},
    468     title       = {Analysis of Inheritance Anomaly in Object-Oriented Concurrent Programming Languages},
    469     booktitle   = {Research Directions in Concurrent Object-Oriented Programming},
    470     editor      = {Gul Agha and Peter Wegner and Akinori Yonezawa},
    471     publisher   = {MIT Press},
    472     year        = 1993,
    473     pages       = {107-150},
    474 }
    475 
    476 @article{Sinha00,
    477     author      = {Saurabh Sinha and Mary Jean Harrold},
    478     title       = {Analysis and Testing of Programs with Exception-Handling Constructs},
    479     journal     = ieeese,
    480     year        = 2000,
    481     month       = sep,
    482     volume      = 26,
    483     number      = 9,
    484     pages       = {849--871},
    485 }
    486 
    487 @inproceedings{Robillard99,
    488     author      = {Martin P. Robillard and Gail C. Murphy},
    489     title       = {Analyzing Exception Flow in {J}ava Programs},
    490     booktitle   = {ESEC/FSE-7: Proceedings of the 7th European Software Engineering Conference held jointly
    491                    with the 7th ACM SIGSOFT International Symposium on Foundations of Software Engineering},
    492     year        = 1999,
    493     pages       = {322--337},
    494     isbn        = {3-540-66538-2},
    495     location    = {Toulouse, France},
    496     doi         = {http://doi.acm.org/10.1145/318773.319251},
    497     publisher   = {Springer-Verlag},
    498     address     = {London, UK},
    499 }
    500 
    501 @book{C++,
    502     keywords    = {C++, ANSI},
    503     author      = {Margaret A. Ellis and Bjarne Stroustrup},
    504     title       = {The Annotated {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Reference Manual},
    505     publisher   = {Addison-Wesley},
    506     year        = 1990,
    507     edition     = {first},
    508 }
    509 
    510 @book{APL,
    511     keywords    = {APL},
    512     contributer = {pabuhr@plg},
    513     author      = {K. E. Iverson},
    514     title       = {A Programming Language},
    515     publisher   = {Wiley, New York},
    516     year        = 1962
    517 }
    518 
    519 @article{PS-Algol:old,
    520     author      = {M. Atkinson and P. Bailey and K. Chisholm and P. Cockshott and R. Morrison},
    521     title       = {An Approach to Persistent Programming},
    522     journal     = {The Computer Journal},
    523     year        = 1983,
    524     volume      = 26,
    525     number      = 4,
    526     pages       = {360-365},
    527 }
    528 
    529 @article{Kessels82,
    530     keywords    = {concurrency, critical section},
    531     contributer = {pabuhr@plg},
    532     author      = {Joep L. W. Kessels},
    533     title       = {Arbitration Without Common Modifiable Variables},
    534     journal     = acta,
    535     volume      = 17,
    536     number      = 2,
    537     month       = jun,
    538     year        = 1982,
    539     pages       = {135-141},
    540 }
    541 
    542 @article{Buhr95a,
    543     keywords    = {concurrency, library approach},
    544     contributer = {pabuhr@plg},
    545     author      = {Peter A. Buhr},
    546     title       = {Are Safe Concurrency Libraries Possible?},
    547     journal     = cacm,
    548     month       = feb,
    549     year        = 1995,
    550     volume      = 38,
    551     number      = 2,
    552     pages       = {117-120},
    553 }
    554 
    555 @book{ARMv7,
    556     key         = {ARM processor},
    557     title       = {ARM Architecture Reference Manual},
    558     publisher   = {ARM},
    559     volume      = {ARM DDI 0406C.b (ID072512)},
    560     year        = 2012,
    561 }
    562 
    563 @book{Herlihy08,
    564     contributer = {pabuhr@plg},
    565     author      = {Herlihy, Maurice and Shavit, Nir},
    566     title       = {The Art of Multiprocessor Programming},
    567     year        = 2008,
    568     isbn        = {0123705916, 9780123705914},
    569     publisher   = {Morgan Kaufmann Publishers Inc.},
    570     address     = {San Francisco, CA, USA},
    571 }
    572 
    573 @inproceedings{Chung10,
    574     keywords    = {transactional memory, lock-free programming, x86 architecture},
    575     contributer = {pabuhr@plg},
    576     author      = {Jaewoong Chung and Luke Yen and Stephan Diestelhorst and Martin Pohlack and Michael Hohmuth and David Christie and Dan Grossman},
    577     title       = {ASF: AMD64 Extension for Lock-Free Data Structures and Transactional Memory},
    578     booktitle   = {Proceedings of the 2010 43rd Annual IEEE/ACM International Symposium on Microarchitecture},
    579     series      = {MICRO '43},
    580     year        = 2010,
    581     pages       = {39--50},
    582     numpages    = {12},
    583     publisher   = {IEEE Computer Society},
    584     address     = {Washington, DC, USA},
    585 }
    586 
    587 @article{Buhr94a,
    588     keywords    = {assignment, parameter passing, multiple assignment},
    589     contributer = {pabuhr@plg},
    590     author      = {P. A. Buhr and David Till and C. R. Zarnke},
    591     title       = {Assignment as the Sole Means of Updating Objects},
    592     journal     = spe,
    593     month       = sep,
    594     year        = 1994,
    595     volume      = 24,
    596     number      = 9,
    597     pages       = {835-870},
    598 }
    599 
    600 @inproceedings{Krischer08,
    601     keywords    = {exception handling, asynchronous, blocked tasks},
    602     contributer = {pabuhr@plg},
    603     author      = {Roy Krischer and Peter A. Buhr},
    604     title       = {Asynchronous Exception Propagation in Blocked Tasks},
    605     booktitle   = {4th International Workshop on Exception Handling (WEH.08)},
    606     organization= {16th International Symposium on the Foundations of Software Engineering (FSE 16)},
    607     address     = {Atlanta, U.S.A},
    608     month       = nov,
    609     year        = 2008,
    610     pages       = {8-15},
    611 }
    612 
    613 @article{oop:modpascal,
    614     keywords    = {ModPascal},
    615     contributer = {gjditchfield@plg},
    616     author      = {Walter G. Olthoff},
    617     title       = {Augmentation of Object-Oriented Programming by Concepts of Abstract Data Type Theory: The ModPascal Experience},
    618     journal     = sigplan,
    619     volume      = 21,
    620     number      = 11,
    621     pages       = {429-443},
    622     month       = nov,
    623     year        = 1986
    624 }
    625 
    626 @inproceedings{Shen91,
    627     keywords    = {Ada, polymorphism},
    628     contributer = {pabuhr@plg},
    629     author      = {Jun Shen and Gordon V. Cormack},
    630     title       = {Automatic instantiation in Ada},
    631     booktitle   = {Proceedings of the ACM Tri-Ada Conference},
    632     organization= {ACM},
    633     address     = {San Jose, California, U.S.A},
    634     month       = oct,
    635     year        = 1991,
    636     pages       = {338-346},
    637 }
    638 
    639 @article{Havender68,
    640     keywords    = {deadlock},
    641     contributer = {pabuhr@plg},
    642     author      = {J. W. Havender},
    643     title       = {Avoiding Deadlock in Multitasking Systems},
    644     journal     = ibmsj,
    645     volume      = 7,
    646     number      = 2,
    647     year        = 1968,
    648     pages       = {74-84},
    649 }
    650 
    651 % B
    652 
    653 @incollection{beta:old,
    654     keywords    = {beta, patterns, virtual types},
    655     contributer = {gjditchfield@plg},
    656     author      = {Bent Bruun Kristensen and Ole Lehrmann Madsen and Birger M{\o}ller-Pedersen and Kristen Nygaard},
    657     title       = {The BETA Programming Language},
    658     booktitle   = {Research Directions in Object-Oriented Programming},
    659     publisher   = {MIT Press},
    660     series      = {Computer Systems Series},
    661     year        = 1987,
    662     pages       = {7-48},
    663     editor      = {Bruce Shriver and Peter Wegner}
    664 }
    665 
    666 @article{Knudsen87,
    667     keyword     = {static exception handling mechanism, BETA, sequel},
    668     contributor = {wyrmok@plg},
    669     author      = {J{\o}rgen Lindskov Knudsen},
    670     title       = {Better Exception Handling in Block Structured Systems},
    671     journal     = {IEEE Software},
    672     year        = 1987,
    673     month       = may,
    674     volume      = 4,
    675     number      = 3,
    676     pages       = {40-49},
    677     comments    = {
    678         Going up the call hierarchy to look for a handler does not fit an
    679         otherwise statically scoped language. Also, not knowing which handler
    680         to be used when raising an abnormal event is seen as a weakness of the
    681         (dynamic) exception handling mechanism. Knudsen believed that raising
    682         an exception should specify the handler for the exception -- the
    683         handler is chosen when the exception is raised.  However, I don't think
    684         his scheme can solve the problem, especially with all the callback
    685         routines commonly found in OO programming.
    686 
    687         BETA exception handling mechanism uses his work as a foundation.
    688         However, I don't see any benefits BETA has over other language that is
    689         a direct consequence of Knudsen's work. On the other hand, my knowledge
    690         on BETA is very limited.
    691         }
    692 }
    693 
    694 @book{BCPL,
    695     keywords    = {BCPL},
    696     contributer = {pabuhr@plg},
    697     author      = {M. Richards and C. Whitby-Strevens},
    698     title       = {{BCPL} -- The Language and Its Compiler},
    699     publisher   = {Cambridge University Press, Cambridge},
    700     year        = 1979,
    701 }
    702 
    703 @incollection{Madsen87,
    704     keywords    = {nested classes},
    705     contributer = {pabuhr@watmsg},
    706     author      = {Ole Lehrmann Madsen},
    707     title       = {Block Structure and Object Oriented Languages},
    708     booktitle   = {Research Directions in Object-Oriented Programming},
    709     editor      = {Bruce Shriver and Peter Wegner},
    710     publisher   = {MIT Press},
    711     series      = {Computer Systems Series},
    712     year        = 1987,
    713     pages       = {113-128}
    714 }
    715 
    716 @inproceedings{booleanClasses,
    717     keywords    = {specifications},
    718     contributer = {gjditchfield@plg},
    719     author      = {David McAllester and Ramin Zabih},
    720     title       = {Boolean Classes},
    721     crossref    = "OOPSLA86",
    722     pages       = {417-423},
    723     abstract    = {
    724         We extend the notion of class so that any Boolean combination of
    725         classes is also a class.  Boolean classes allow greater precision
    726         and conciseness in naming the class of objects governed a
    727         particular method [sic].  A class can be viewed as a predicate
    728         which is either true or false of any given object.  Unlike
    729         predicates however classes have an inheritance hierarchy which is
    730         known at compile time.  Boolean classes extend the notion of class,
    731         making classes more like predicates, while preserving the compile
    732         time computable inheritance hierarchy.
    733     },
    734     comment = {
    735         Classes are predicates; if object {\tt o} is in class {\tt C}, then
    736         {\tt C} is true of {\tt o}.  Classes are combined with {\tt :AND},
    737         {\tt :OR}, and {\tt :NOT}.  Inheritance is treated as implication:
    738         {\tt (:implies C E)} means that if class {\tt C} is true of {\tt
    739         o}, class expression {\tt E} is true of {\tt o}, so if {\tt E} is a
    740         class, it is a superclass of {\tt C}.  Some class expressions, i.e.
    741         {\tt (:OR c1 c2)}, can't be instantiated.  Others, i.e. {\tt (:NOT
    742         c)}, can't be given methods or members because almost all classes
    743         would inherit them, violating modularity.  The rules for spotting
    744         these problems are complex.  Determining if one class inherits from
    745         another needs an exponential algorithm.
    746     }
    747 }
    748 
    749 @mastersthesis{Krischer02,
    750     author      = {Roy Krischer },
    751     title       = {Bound Exceptions in Object-Oriented Programming Languages},
    752     school      = {Universit\"at Mannheim},
    753     address     = {Mannheim, Deutschland},
    754     year        = 2002,
    755     month       = oct,
    756     type        = {Diplomarbeit},
    757     note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-theses/\-KrischerThesis.ps.gz}}},
    758 }
    759 
    760 @inproceedings{Buhr03,
    761     keywords    = {exception handling, bound handler},
    762     contributer = {pabuhr@plg},
    763     author      = {Peter A. Buhr and Roy Krischer},
    764     title       = {Bound Exceptions in Object Programming},
    765     booktitle   = {Proceedings of the ECOOP 2003 Workshop on Exception Handling in Object Oriented Systems:
    766                   Towards Emerging Application Areas and New Programming Paradigms},
    767     organization= {ECOOP},
    768     address     = {Darmstadt, Germany},
    769     month       = jul,
    770     year        = 2003,
    771     pages       = {20-26},
    772 }
    773 %    note       = {http://www.cs.umn.edu/research/technical_reports.php/listing/technical_reports.php?page=report&report_id=03-028}
    774 
    775 @inproceedings{Buhr06b,
    776     keywords    = {exception handling, bound exceptions},
    777     author      = {Peter A. Buhr and Roy Krischer},
    778     title       = {Bound Exceptions in Object-Oriented Programming},
    779     editor      = {C. Dony and J. L. Knudsen and A. Romanovsky and A. Tripathi},
    780     booktitle   = {Advanced Topics in Exception Handling Techniques},
    781     publisher   = {Springer-Verlag},
    782     series      = {Lecture Notes in Computer Science},
    783     volume      = 4119,
    784     year        = 2006,
    785     pages       = {1-21}
    786 }
    787 
    788 % C
    789 
    790 @book{C,
    791     keywords    = {C},
    792     contributer = {pabuhr@plg},
    793     author      = {Brian W. Kernighan and Dennis M. Ritchie},
    794     title       = {The {C} Programming Language},
    795     publisher   = {Prentice Hall},
    796     year        = 1988,
    797     edition     = {second},
    798     series      = {Prentice Hall Software Series},
    799     comment     = {
    800          based on draft-proposed ANSI C
    801     }
    802 }
    803 
    804 @book{C:old,
    805     keywords    = {C},
    806     contributer = {pabuhr@plg},
    807     author      = {Brian W. Kernighan and Dennis M. Ritchie},
    808     title       = {The {C} Programming Language},
    809     publisher   = {Prentice Hall},
    810     year        = 1978,
    811     edition     = {first},
    812 }
    813 
    814 @manual{ANSI89:C,
    815     keywords    = {ANSI C 89},
    816     contributer = {gjditchfield@plg},
    817     title       = {American National Standard for Information Systems -- Programming Language -- {C}},
    818     organization= {American National Standards Institute},
    819     address     = {1430 Broadway, New York, New York  10018},
    820     month       = dec,
    821     year        = 1989,
    822     note        = {X3.159-1989}
    823 }
    824 
    825 @manual{C11,
    826     keywords    = {ISO/IEC C 11},
    827     contributer = {pabuhr@plg},
    828     key         = {C11},
    829     title       = {American National Standard Information technology -- Programming Languages -- {C}},
    830     organization= {International Standard ISO/IEC 9899-2011[2012]},
    831     publisher   = {International Standard Organization},
    832     address     = {http://www.iso.org},
    833     year        = 2012,
    834 }
    835 
    836 @mastersthesis{Esteves04,
    837     keywords    = {Cforall, parametric polymorphism, overloading},
    838     contributer = {pabuhr@plg},
    839     author      = {Rodolfo Gabriel Esteves},
    840     title       = {C$\forall$, a Study in Evolutionary Design in Programming Languages},
    841     school      = {School of Computer Science, University of Waterloo},
    842     year        = 2004,
    843     address     = {Waterloo, Ontario, Canada, N2L 3G1},
    844     note        = {\href{http://plg.uwaterloo.ca/theses/EstevesThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-EstevesThesis.pdf}},
    845 }
    846 
    847 @inproceedings{c++scheme,
    848     keywords    = {},
    849     contributer = {gjditchfield@plg},
    850     author      = {Vincent F. Russo and Simon M. Kaplan},
    851     title       = {A {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Interpreter for {S}cheme},
    852     booktitle   = {Usenix {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
    853     year        = 1988,
    854     pages       = {95-108},
    855     summary     = {
    856         The SIOD interpreter for a Scheme subset, written in C, has a
    857         tagged union representing data objects, and read(), eval(), and
    858         print() functions that are basically large switch statements that
    859         switch based on the tag.  The authors rewrote it to use a class
    860         with virtual read(), eval(), and print() members, without changing
    861         any algorithms.  The result was more modular, more easily
    862         extensible, more reliable, and slightly faster.
    863     },
    864     comment     = {
    865         The evidence given is thin.
    866         }
    867 }
    868 
    869 @article{doskernel,
    870     keywords    = {light weight processes},
    871     contributer = {gjditchfield@plg},
    872     author      = {Tom Green},
    873     title       = {A {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Multitasking Kernel},
    874     journal     = {Dr. Dobb's Journal of Software Tools},
    875     year        = 1989,
    876     month       = feb, volume = 14, number = 2, pages = {45-51},
    877     comment     = {
    878        A light-weight multitasking kernel for MS-DOS.  A task\_control
    879        object holds task objects, which may block themselves on signal
    880        objects.  Task switching is normally preemptive, but tasks can turn
    881        off preemption before calling non-reentrant routines.  Source code
    882        is given.
    883     }
    884 }
    885 
    886 @inproceedings{Doeppner87,
    887     keywords    = {concurrency},
    888     contributer = {pabuhr@plg},
    889     author      = {Thomas W. Doeppner and Alan J. Gebele},
    890     title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} on a Parallel Machine},
    891     booktitle   = {Proceedings and Additional Papers {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Workshop},
    892     organization= {USENIX Association},
    893     address     = {Santa Fe, New Mexico, U.S.A},
    894     month       = nov,
    895     year        = 1987,
    896     pages       = {94-107},
    897 }
    898 
    899 @book{Lippman91,
    900     keywords    = {C++},
    901     contributer = {pabuhr@plg},
    902     author      = {Stanley B. Lippman},
    903     title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Primer},
    904     publisher   = {Addison-Wesley},
    905     year        = 1991,
    906     edition     = {second},
    907     note        = {QA76.73.C15L57},
    908 }
    909 
    910 @book{c++:v1,
    911     keywords    = {C++},
    912     contributer = {gjditchfield@plg},
    913     author      = {Bjarne Stroustrup},
    914     title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
    915     publisher   = {Addison-Wesley},
    916     year        = 1986,
    917     edition     = {first},
    918     series      = {Addison-Wesley Series in Computer Science}
    919 }
    920 
    921 @book{c++:v2,
    922     keywords    = {C++},
    923     contributer = {pabuhr@plg},
    924     author      = {Bjarne Stroustrup},
    925     title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
    926     publisher   = {Addison-Wesley},
    927     year        = 1991,
    928     edition     = {second},
    929 }
    930 
    931 @book{c++:v3,
    932     keywords    = {C++},
    933     contributer = {pabuhr@plg},
    934     author      = {Bjarne Stroustrup},
    935     title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
    936     publisher   = {Addison-Wesley},
    937     year        = 1997,
    938     edition     = {third},
    939 }
    940 
    941 @manual{Csharp,
    942     keywords    = {C#},
    943     contributer = {pabuhr@plg},
    944     title       = {C\# Language Specification, Standard ECMA-334},
    945     organization= {ECMA International Standardizing Information and Communication Systems},
    946     month       = jun,
    947     year        = 2006,
    948     edition     = {4th},
    949 }
    950 
    951 @article{Buhr85,
    952     keywords    = {goto, multi-exit loop},
    953     contributer = {pabuhr@plg},
    954     author      = {P. A. Buhr},
    955     title       = {A Case for Teaching Multi-exit Loops to Beginning Programmers},
    956     journal     = sigplan,
    957     volume      = 20,
    958     number      = 11,
    959     month       = nov,
    960     year        = 1985,
    961     pages       = {14-22}
    962 }
    963 
    964 @techreport{cforall-ug,
    965     keywords    = {cforall, user guide},
    966     contributer = {pabuhr@plg},
    967     author      = {Peter A. Buhr and Glen Ditchfield and David Till and Charles R. Zarnke},
    968     title       = {\mbox{\mdseries\sffamily C{$\mathbf{\forall}$}}\ Users Guide, Version 0.1},
    969     institution = {Department of Computer Science, University of Waterloo},
    970     address     = {Waterloo, Ontario, Canada, N2L 3G1},
    971     month       = oct,
    972     year        = 2001,
    973     note        = {\href{http://plg.uwaterloo.ca/~cforall/cfa.ps}{http://\-plg.uwaterloo.ca/\-\char`\~cforall/\-cfa.ps}},
    974 }
    975 
    976 @manual{cforall,
    977     keywords    = {polymorphism},
    978     contributer = {gjditchfield@plg},
    979     author      = {Glen Ditchfield},
    980     title       = {Cforall Reference Manual and Rationale},
    981     edition     = {Revision 1.82},
    982     month       = jan,
    983     year        = 1998,
    984     note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-Cforall/\-refrat.ps.gz}}},
    985 }
    986 
    987 @book{Yourdon79,
    988     keywords    = {software engineering},
    989     contributer = {pabuhr@plg},
    990     editor      = {Edward Nash Yourdon},
    991     title       = {Classics in Software Engineering},
    992     publisher   = {Yourdon Press},
    993     year        = 1979,
    994 }
    995 
    996 @inproceedings{Crnogorac98,
    997     keywords    = {inheritance anomaly},
    998     contributer = {pabuhr@plg},
    999     author      = {Lobel Crnogorac and Anand S. Rao and Kotagiri Ramamohanarao},
    1000     title       = {Classifying Inheritance Mechanisms in Concurrent Object-Oriented Programming},
    1001     editor      = {Eric Jul},
    1002     booktitle   = {{ECOOP}~'98---Object-Oriented Programming},
    1003     series      = {Lecture Notes in Computer Science},
    1004     publisher   = {Springer},
    1005     volume      = 1445,
    1006     year        = 1998,
    1007     pages       = {571-601},
    1008     ISBN        = {3-540-64737-6},
    1009     ISSN        = {0302-9743},
    1010     abstract    = {
    1011         Inheritance is one of the key concepts in object-oriented rogramming. However, the
    1012         usefulness of inheritance in concurrent object-oriented programming is greatly
    1013         reduced by the problem of inheritance anomaly. Inheritance anomaly is manifested
    1014         by undesirable re-definitions of inherited code. The problem is aggravated by the
    1015         lack of a formal analysis, with a multitude of differing proposals and conflicting
    1016         opinions causing the current state of research, and further directions, to be
    1017         unclear. In this paper we present a formal analysis of inheritance anomaly in
    1018         concurrent object-oriented programming. Starting from a formal definition of the
    1019         problem we develop a taxonomy of the anomaly, and use it to classify the various
    1020         proposals. As a result, the major ideas, trends and limitations of the various
    1021         proposals are clearly exposed. Formal analysis of the anomaly and a thorough
    1022         exposition of its causes and implications are the pre-requisites for a successful
    1023         integration of inheritance and concurrency.
    1024     },
    1025 }
    1026 
    1027 @book{CLU,
    1028     keywords    = {CLU},
    1029     contributer = {gjditchfield@plg},
    1030     author      = {Barbara Liskov and Russell Atkinson and Toby Bloom and Eliot
    1031                 Moss and J. Craig Schaffert and Robert Scheifler and Alan Snyder},
    1032     title       = {CLU Reference Manual},
    1033     publisher   = {Springer-Verlag},
    1034     year        = 1981,
    1035     volume      = 114,
    1036     series      = {Lecture Notes in Computer Science}
    1037 }
    1038 
    1039 @manual{Cobol14,
    1040     keywords    = {ISO/IEC Cobol 14},
    1041     contributer = {pabuhr@plg},
    1042     key         = {Cobol14},
    1043     title       = {Programming Languages -- {Cobol}},
    1044     edition     = {second},
    1045     organization= {International Standard ISO/IEC 1989:2014},
    1046     publisher   = {International Standard Organization},
    1047     address     = {http://www.iso.org},
    1048     year        = 2014,
    1049 }
    1050 
    1051 @article{coagulation,
    1052     keywords    = {register allocation, instruction selection, jello},
    1053     contributer = {gjditchfield@plg},
    1054     author      = {Michael Karr},
    1055     title       = {Code Generation by Coagulation},
    1056     journal     = sigplan,
    1057     year        = 1984,
    1058     month       = jun, volume = 19, number = 6, pages = {1-12},
    1059     note        = {Proceedings of the ACM SIGPLAN '84 Symposium on Compiler Construction},
    1060     abstract    = {
    1061         This paper describes a new approach to code-generation.  The
    1062         central tenet is that there must be a more intimate coupling
    1063         between register allocation and instruction selection than exists
    1064         in present-day technology.  This is achieved by generating code in
    1065         very small regions and gradually coalescing the part of the program
    1066         that is ``compiled''.
    1067     },
    1068     comment     = {
    1069         Imagine the program, including the subroutines, spread out over a
    1070         table, with the compiler dropping Jello on the parts as they are
    1071         compiled.  At first little drops appear in seemingly random places.
    1072         These get bigger and combine with other drops to form growing
    1073         globs.  When two globs meet, ripples will go out through each as
    1074         they adjust to each other's presence, although the parts of the
    1075         globs that formed first are less affected by the ripples.  When
    1076         compilation is complete, there is one congealed mass.
    1077     }
    1078 }
    1079 
    1080 @article{Soloway83,
    1081     keywords    = {goto, structure programming},
    1082     contributer = {pabuhr@plg},
    1083     author      = {E. Soloway and J. Bonar and K. Ehrlich},
    1084     title       = {Cognitive Strategies and Looping Constructs: An Empirical Study},
    1085     journal     = cacm,
    1086     month       = nov,
    1087     year        = 1983,
    1088     volume      = 26,
    1089     number      = 11,
    1090     pages       = {853-860},
    1091 }
    1092 
    1093 @book{sml:commentary,
    1094     author      = {Robin Milner and Mads Tofte},
    1095     title       = {Commentary on Standard {ML}},
    1096     publisher   = {MIT Press},
    1097     address     = {Cambridge, Massachusetts, U.S.A.},
    1098     year        = 1991
    1099 }
    1100 
    1101 @article{Hyman66,
    1102     keywords    = {mutual exclusion, software solution, incorrect},
    1103     contributer = {pabuhr@plg},
    1104     author      = {Harris Hyman},
    1105     title       = {Comments on a Problem in Concurrent Programming Control},
    1106     journal     = cacm,
    1107     month       = jan,
    1108     year        = 1966,
    1109     volume      = 9,
    1110     number      = 1,
    1111     pages       = {45},
    1112     note        = {Letter to the Editor}
    1113 }
    1114 
    1115 @inproceedings{clos,
    1116     keywords    = {},
    1117     contributer = {gjditchfield@plg},
    1118     author      = {Linda G. DeMichiel and Richard P. Gabriel},
    1119     title       = {The Common Lisp Object System: An Overview},
    1120     booktitle   = {ECOOP '87. European Conference on Object-Oriented Programming},
    1121     year        = 1987,
    1122     pages       = {151-170},
    1123     publisher   = {Springer-Verlag}
    1124 }
    1125 
    1126 @book{CommonLisp,
    1127     keywords    = {common lisp},
    1128     contributer = {pabuhr@plg},
    1129     author      = {G. Steele},
    1130     title       = {COMMON LISP: The Language},
    1131     publisher   = {Digital Press},
    1132     year        = 1984
    1133 }
    1134 
    1135 @article{CommonLoops,
    1136     author      = {D. Bobrow and K. Kahn and G. Kiczales and L. Masinter and M. Stefik and F. Zdybel},
    1137     title       = {CommonLoops: Merging Common Lisp and Object-Oriented Programming},
    1138     address     = {Portland, Oregon, U.S.A.},
    1139     journal     = {Proc. ACM Conf. on Object-Oriented Systems, Languages and Applications},
    1140     year        = 1986,
    1141     month       = sep,
    1142     pages       = {17-29},
    1143 }
    1144 
    1145 @article{co-overview,
    1146     keywords    = {CommonObjects, implementation, encapsulation},
    1147     contributer = {gjditchfield@plg},
    1148     author      = {Alan Snyder},
    1149     title       = {CommonObjects: An Overview},
    1150     journal     = sigplan,
    1151     year        = 1986,
    1152     month       = oct, volume = 21, number = 10, pages = {19-28},
    1153     note        = {Object Oriented Programming Workshop}
    1154 }
    1155 
    1156 @article{CSP,
    1157     keywords    = {CSP, concurrency},
    1158     contributer = {pabuhr@plg},
    1159     author      = {C. A. R. Hoare},
    1160     title       = {Communicating Sequential Processes},
    1161     journal     = cacm,
    1162     month       = aug,
    1163     year        = 1978,
    1164     volume      = 21,
    1165     number      = 8,
    1166     pages       = {666-677}
    1167 }
    1168 
    1169 @book{Hoare85,
    1170     author      = {C. A. R. Hoare},
    1171     title       = {Communicating Sequential Processes},
    1172     year        = 1985,
    1173     isbn        = {0-13-153271-5},
    1174     publisher   = {Prentice-Hall, Inc.},
    1175     address     = {Upper Saddle River, NJ, USA},
    1176     note        = {\href{http://www.usingcsp.com/cspbook.pdf}{http://\-www.usingcsp.com/\-cspbook.pdf}},
    1177 }
    1178 
    1179 @article{Hansen72a,
    1180     keywords    = {monitors, automatic signal},
    1181     contributer = {pabuhr@plg},
    1182     author      = {Per {Brinch Hansen}},
    1183     title       = {A Comparison of Two Synchronizing Concepts},
    1184     journal     = acta,
    1185     volume      = 1,
    1186     year        = 1972,
    1187     pages       = {190-199},
    1188 }
    1189 
    1190 @book{Aho06,
    1191     author      = {Alfred V. Aho and Monica S. Lam and Ravi Sethi and Jeffrey D. Ullman},
    1192     title       = {Compilers: Principles, Techniques, and Tools},
    1193     edition     = {second},
    1194     year        = {2006},
    1195     publisher   = {Addison-Wesley Longman Publishing Co., Inc.},
    1196     address     = {Boston, MA, USA},
    1197 }
    1198 
    1199 @article{Bacon94,
    1200     keywords    = {parallelizing compiler},
    1201     contributer = {pabuhr@plg},
    1202     author      = {David F. Bacon and Susan L. Graham and Oliver J. Sharp},
    1203     title       = {Compiler Transformations for High-Performance Computing},
    1204     journal     = acmcs,
    1205     volume      = 26,
    1206     number      = 4,
    1207     month       = dec,
    1208     year        = 1994,
    1209     pages       = {345-420},
    1210 }
    1211 
    1212 @inproceedings{Berger01,
    1213     author      = {Emery D. Berger and Benjamin G. Zorn and Kathryn S. McKinley},
    1214     title       = {Composing High-Performance Memory Allocators},
    1215     booktitle   = {{SIGPLAN} Conference on Programming Language Design and Implementation},
    1216     pages       = {114-124},
    1217     year        = 2001,
    1218     url         = {http://citeseer.ist.psu.edu/berger01composing.html}
    1219 }
    1220 
    1221 @article{Andrews83,
    1222     keywords    = {general concurrency},
    1223     contributer = {pabuhr@plg},
    1224     author      = {Gregory R. Andrews and Fred B. Schneider},
    1225     title       = {Concepts and Notations for Concurrent Programming},
    1226     journal     = acmcs,
    1227     volume      = 15,
    1228     number      = 1,
    1229     month       = mar,
    1230     year        = 1983,
    1231     pages       = {3-43},
    1232 }
    1233 
    1234 @mastersthesis{Mok97,
    1235     author      = {Wing Yeung Russell Mok},
    1236     title       = {Concurrent Abnormal Event Handling Mechanisms},
    1237     school      = {University of Waterloo},
    1238     year        = 1997,
    1239     month       = sep,
    1240     address     = {Waterloo, Ontario, Canada, N2L 3G1},
    1241     note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-theses/\-MokThesis.ps.gz}}},
    1242 }
    1243 
    1244 @article{Gehani86,
    1245     keywords    = {Concurrent programming, C, Distributed systems, rendezvous},
    1246     contributer = {dgharriss@plg},
    1247     author      = {N. H. Gehani and W. D. Roome},
    1248     title       = {{Concurrent C}},
    1249     journal     = spe,
    1250     volume      = 16,
    1251     number      = 9,
    1252     month       = sep,
    1253     year        = 1986,
    1254     pages       = {821-844},
    1255     abstract    = {
    1256         Our objective is to enhance C so that it can be used to write
    1257         concurrent programs that can run efficiently on both single computers
    1258         and multicomputers.  Our concurrent programming extensions to C are
    1259         based on the {\it rendezvous\/} concept.  These extensions include
    1260         mechanisms for the declaration and creation of processes, for process
    1261         synchronization and interaction, for process termination and abortion.
    1262         We give a rationale for our decisions and compare Concurrent C
    1263         extensions with the concurrent programming facilities in Ada.
    1264         Concurrent C has been implemented on the UNIX system running on a
    1265         single processor.  A distributed version of Concurrent C is being
    1266         implemented.
    1267    },
    1268    comment      = {
    1269         Select with guarded and screened accepts.  Typed processes.
    1270         Process-valued expressions and process variables.  Processes have
    1271         execution priority: Create {\em process-type-name}(args) [with
    1272         priority(p)],
    1273         and the priority can be changed on the fly.  Complicated guard/
    1274         screen structure on accept: accept {\em transaction}(param names)
    1275         [suchthat (exp)] [by (exp)] [compoundstatement].  Accepts cannot
    1276         appear in functions!  Can specify timeouts on transaction calls.
    1277         Code examples: buffer process, dining philosophers, lock manager.
    1278         Section on diffs between Concurrent C and Ada.
    1279    }
    1280 }
    1281 
    1282 @article{ConcurrentC++,
    1283     keywords    = {concurrency, C++},
    1284     contributer = {pabuhr@plg},
    1285     author      = {N. H. Gehani and W. D. Roome},
    1286     title       = {Concurrent {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}: Concurrent Programming with Class(es)},
    1287     journal     = spe,
    1288     month       = dec,
    1289     year        = 1988,
    1290     volume      = 18,
    1291     number      = 12,
    1292     pages       = {1157-1177}
    1293 }
    1294 
    1295 @article{Courtois71,
    1296     keywords    = {reader and writer, p and v},
    1297     contributer = {pabuhr@plg},
    1298     author      = {P. J. Courtois and F. Heymans and D. L. Parnas},
    1299     title       = {Concurrent Control with Readers and Writers},
    1300     journal     = cacm,
    1301     volume      = 14,
    1302     number      = 10,
    1303     month       = oct,
    1304     year        = 1971,
    1305     pages       = {667-668},
    1306     annote      = {
    1307                 Many errors in the two solutions.
    1308     }
    1309 }
    1310 
    1311 @incollection{Reppy93,
    1312     keywords    = {ML, concurrency, continuation passing},
    1313     contributer = {pabuhr@plg},
    1314     author      = {John H. Reppy},
    1315     title       = {Concurrent {ML}: Design, Application and Semantics},
    1316     booktitle   = {Functional Programming, Concurrency, Simulation and Automated Reasoning},
    1317     editor      = {P. E. Lauer},
    1318     pages       = {165-198},
    1319     publisher   = {Springer-Verlag},
    1320     address     = {Berlin, DE},
    1321     year        = 1993,
    1322     ISBN        = {3-540-56883-2},
    1323     abstract    = {
    1324         Concurrent ML (CML) is a high-level language for concurrent
    1325         programming. It is an extension of Standard ML (SML) and is implemented
    1326         on top of Standard ML of New Jersey (SML/NJ). CML is a practical
    1327         language and is being used to build real systems. It demonstrates that
    1328         one need not sacrifice high-level notation in order to have good
    1329         performance. CML is also a well-defined language. In the tradition of
    1330         SML, it has a formal semantics and its type-soundness has been
    1331         proven.},
    1332     note        = {
    1333         Proceedings of International Lecture Series 1991-92, McMaster
    1334         UniversityLecture Notes in Computer Science 693.},
    1335 }
    1336 
    1337 @article{BLASE-2,
    1338     keywords    = {concurrency, BLASE-2},
    1339     contributer = {pabuhr@plg},
    1340     author      = {Piyush Mehrotra and John Van Rosendale},
    1341     title       = {Concurrent Object Access in BLASE~2},
    1342     journal     = sigplan,
    1343     volume      = 24,
    1344     number      = 4,
    1345     month       = apr,
    1346     year        = 1989,
    1347     pages       = {40-42},
    1348     note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming,
    1349                    Sept. 26--27, 1988, San Diego, California, U.S.A},
    1350 }
    1351 
    1352 @techreport{Kafura88,
    1353     keywords    = {objects, concurrency},
    1354     contributer = {pabuhr@plg},
    1355     author      = {Dennis Kafura},
    1356     title       = {Concurrent Object-Oriented Real-Time Systems Research},
    1357     institution = {Department of Computer Science, Virginia Polytechnic},
    1358     number      = {TR 88-47},
    1359     year        = 1988
    1360 }
    1361 
    1362 @article{Buhr92a,
    1363     keywords    = {C++, concurrency, light-weight process, shared memory},
    1364     contributer = {pabuhr@plg},
    1365     author      = {P. A. Buhr and Glen Ditchfield and R. A. Stroobosscher and B. M. Younger and C. R. Zarnke},
    1366     title       = {$\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}: Concurrency in the Object-Oriented Language {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    1367     journal     = spe,
    1368     volume      = 22,
    1369     number      = 2,
    1370     month       = feb,
    1371     year        = 1992,
    1372     pages       = {137-172},
    1373 }
    1374 
    1375 @techreport{uC++,
    1376     keywords    = {C++, concurrency, light-weight process, shared memory},
    1377     contributer = {pabuhr@plg},
    1378     author      = {Peter A. Buhr},
    1379     title       = {$\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Annotated Reference Manual, Version 6.1.0},
    1380     institution = {School of Computer Science, University of Waterloo},
    1381     address     = {Waterloo, Ontario, Canada, N2L 3G1},
    1382     month       = jul,
    1383     year        = 2015,
    1384     note        = {\href{http://plg.uwaterloo.ca/~usystem/pub/uSystem/u++-6.1.0.sh}{\textsf{http://plg.uwaterloo.ca/\-$\sim$usystem/\-pub/\-uSystem/\-u++-6.1.0.sh}}},
    1385 }
    1386 
    1387 @book{Burns93,
    1388     keywords    = {concurrency, Pascal},
    1389     contributer = {pabuhr@plg},
    1390     author      = {Alan Burns and Geoff Davies},
    1391     title       = {Concurrent Programming},
    1392     publisher   = {Addison-Wesley},
    1393     year        = 1993,
    1394 }
    1395 
    1396 @article{Hansen73a,
    1397     keywords    = {monitors},
    1398     contributer = {pabuhr@plg},
    1399     author      = {Per {Brinch Hansen}},
    1400     title       = {Concurrent Programming Concepts},
    1401     journal     = spe,
    1402     month       = dec,
    1403     year        = 1973,
    1404     volume      = 5,
    1405     number      = 4,
    1406     pages       = {223-245},
    1407 }
    1408 
    1409 @book{Lea97,
    1410     keywords    = {concurrency, Java},
    1411     contributer = {pabuhr@plg},
    1412     author      = {Doug Lea},
    1413     title       = {Concurrent Programming in {J}ava: Design Principles and Patterns},
    1414     publisher   = {Addison-Wesley},
    1415     year        = 1997,
    1416     edition     = {first},
    1417 }
    1418 
    1419 @book{Hartley98,
    1420     keywords    = {concurrency, Java},
    1421     contributer = {pabuhr@plg},
    1422     author      = {Stephen J. Hartley},
    1423     title       = {Concurrent Programming: The {J}ava Programming Language},
    1424     publisher   = {Oxford University Press},
    1425     year        = 1998,
    1426     edition     = {first},
    1427 }
    1428 
    1429 @book{Lea00,
    1430     keywords    = {concurrency, Java},
    1431     contributer = {pabuhr@plg},
    1432     author      = {Doug Lea},
    1433     title       = {Concurrent Programming in {J}ava: Design Principles and Patterns},
    1434     publisher   = {Addison-Wesley},
    1435     year        = 2000,
    1436     edition     = {second},
    1437 }
    1438 
    1439 @book{ConcurrentC,
    1440     keywords    = {concurrency, C},
    1441     contributer = {pabuhr@plg},
    1442     author      = {N. H. Gehani and W. D. Roome},
    1443     title       = {The {Concurrent C} Programming Language},
    1444     publisher   = {Silicon Press, NJ},
    1445     year        = 1989,
    1446 }
    1447 
    1448 @book{Andrews91:book,
    1449     keywords    = {concurrency},
    1450     contributer = {pabuhr@plg},
    1451     author      = {Gregory R. Andrews},
    1452     title       = {Concurrent Programming: Principles and Practice},
    1453     publisher   = {Benjamin/Cummings Publishing Company, Inc., Redwood City, California},
    1454     year        = 1991,
    1455 }
    1456 
    1457 @article{Buhr05a,
    1458     keywords    = {concurrency, myths},
    1459     contributer = {pabuhr@plg},
    1460     author      = {Peter A. Buhr and Ashif S. Harji},
    1461     title       = {Concurrent Urban Legends},
    1462     journal     = {Concurrency and Computation: Practice and Experience},
    1463     month       = aug,
    1464     year        = 2005,
    1465     volume      = 17,
    1466     number      = 9,
    1467     pages       = {1133-1172},
    1468 }
    1469 
    1470 @techreport{Buhr90,
    1471     keywords    = {objects, concurrency},
    1472     contributer = {gjditchfield@plg},
    1473     author      = {P. A. Buhr and G. J. Ditchfield and B. M. Younger and C. R. Zarnke},
    1474     title       = {Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    1475     institution = {Department of Computer Science, University of Waterloo},
    1476     address     = {Waterloo, Ontario, Canada, N2L 3G1},
    1477     number      = {CS-90-18},
    1478     month       = may,
    1479     year        = 1990
    1480 }
    1481 
    1482 @book{Burns98,
    1483     keywords    = {concurrency, Ada},
    1484     author      = {Alan Burns and Andy Wellings},
    1485     title       = {Concurrency in {Ada}},
    1486     publisher   = {Cambridge University Press},
    1487     year        = 1998,
    1488     edition     = {second},
    1489 }
    1490 
    1491 @book{Bernstein93,
    1492     keywords    = {concurrency},
    1493     author      = {Arthur J. Bernstein and Philip M. Lewis},
    1494     title       = {Concurrency in Programming and Database Systems},
    1495     publisher   = {Jones and Bartlett},
    1496     year        = 1993,
    1497 }
    1498 
    1499 @inproceedings{Pitman01,
    1500     keywords    = {LISP, exception handling},
    1501     contributer = {pabuhr@plg},
    1502     author      = {Kent M. Pitman},
    1503     title       = {Condition Handling in the Lisp Language Family},
    1504     booktitle   = {Exception Handling},
    1505     publisher   = {Springer-Verlag},
    1506     volume      = 2022,
    1507     series      = {LNCS},
    1508     year        = 2001,
    1509     pages       = {39-59}
    1510 }
    1511 
    1512 @inbook{enhancement,
    1513     keywords    = {bounded polymorphism, Comandos},
    1514     contributer = {gjditchfield@plg},
    1515     author      = {Chris Horn},
    1516     title       = {Conformace, Genericity, Inheritance and Enhancement},
    1517     pages       = {223-233},
    1518     publisher   = {Springer-Verlag},
    1519     year        = 1987,
    1520     volume      = 276,
    1521     series      = "Lecture Notes in Computer Science",
    1522     note        = "ECOOP '87 European Conference on Object-Oriented Programming",
    1523     summary     = {
    1524         Considers effect of conformance on Meyer's conclusions in
    1525         \cite{polymorphism}.
    1526 
    1527         Implementing a swap function as a member of a type {\cd Swappable}
    1528         with {\cd in out Top} parameters doesn't work, because conformance
    1529         requires arguments to be of type {\cd Top}.
    1530 
    1531         An enhancive type has a type parameter, bounded by some type, and
    1532         defines members.  Types conforming to the bound can be passed as
    1533         arguments to create types with the extra members.  The signature of
    1534         the enhanced type is based on the signature of the argument, not the
    1535         bound, as if enhancive types were macros.  Hence enhanced types do not
    1536         necessarily conform to each other.  Types conforming to the bound
    1537         conform to enhanced types, which allows new functions to be applied
    1538         to old types.
    1539 
    1540         Enhancive types are not generic types.  If the argument is omitted,
    1541         the bound is used as a default.  Assignment of enhanced types to
    1542         default-enhanced types is allowed (enhanced types conform to the
    1543         default-enhanced type).  This is (probably) statically type-safe,
    1544         because arguments must conform to the bound, and the new members
    1545         only use operations defined for the bound.
    1546 
    1547         With facilities for member renaming and deletion, enhancive types
    1548         provide the equivalent of constrained generic types.
    1549     }
    1550 }
    1551 
    1552 @phdthesis{Ditchfield92,
    1553     keywords    = {C, parametric polymorphism, overloading},
    1554     contributer = {pabuhr@plg},
    1555     author      = {Glen Jeffrey Ditchfield},
    1556     title       = {Contextual Polymorphism},
    1557     school      = {Department of Computer Science, University of Waterloo},
    1558     year        = 1992,
    1559     address     = {Waterloo, Ontario, Canada, N2L 3G1},
    1560     note        = {\href{http://plg.uwaterloo.ca/theses/DitchfieldThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-DitchfieldThesis.pdf}}
    1561 }
    1562 
    1563 @inproceedings{frameworks:HHG90,
    1564     keywords    = {formal},
    1565     contributer = {pabuhr@plg},
    1566     author      = {Richard Helm and Ian M. Holland and Dipayan Gangopadhyay},
    1567     title       = {Contracts: Specifying Behavioural Compositions in Cbject-Oriented Systems},
    1568     booktitle   = {Proceedings of ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications},
    1569     year        = 1990,
    1570     pages       = {169-180},
    1571 }
    1572 
    1573 @article{Wand80,
    1574     keywords    = {concurrency, continuation},
    1575     contributer = {pabuhr@plg},
    1576     author      = {Mitchell Wand},
    1577     title       = {Continuation-Based Multiprocessing},
    1578     publisher   = {The Lisp Conference},
    1579     journal     = {Conference Record of the 1980 Lisp Conference},
    1580     pages       = {19-28},
    1581     year        = 1980,
    1582 }
    1583 
    1584 @article{Hieb90,
    1585     keywords    = {continuations, concurrency},
    1586     contributer = {pabuhr@plg},
    1587     author      = {Robert Hieb and R. Kent Dybvig},
    1588     title       = {Continuations and Concurrency},
    1589     journal     = sigplan,
    1590     volume      = 25,
    1591     number      = 3,
    1592     month       = mar,
    1593     year        = 1990,
    1594     pages       = {128-136},
    1595     note        = {Proceedings of the Second ACM SIGPLAN Symposium on Principles \& Practise of Parallel Programming,
    1596                    March. 14--16, 1990, Seattle, Washington, U.S.A},
    1597 }
    1598 
    1599 @inproceedings{Haynes84,
    1600     keywords    = {continuations, coroutines, Scheme},
    1601     contributer = {pabuhr@plg},
    1602     author      = {Christopher T. Haynes and Daniel P. Friedman and Mitchell Wand},
    1603     title       = {Continuations and Coroutines},
    1604     booktitle   = {Conference Record of the 1984 {ACM} Symposium on Lisp and Functional Programming},
    1605     organization= {Association for Computing Machinery},
    1606     month       = aug,
    1607     year        = 1984,
    1608     pages       = {293-298},
    1609     abstract    = {
    1610         The power of first class continuations is demonstrated by implementing
    1611         a variety of coroutine mechanisms using only continuations and
    1612         functional abstraction. The importance of general abstraction
    1613         mechanisms such as continuations is discussed.},
    1614 }
    1615 
    1616 @inproceedings{Zahn74,
    1617     keywords    = {goto, structured programming},
    1618     contributer = {pabuhr@plg},
    1619     author      = {C. T. Zahn},
    1620     title       = {Control Statement for Natural Top-down Structured Programming},
    1621     booktitle   = {Symposium on Programming Languages},
    1622     address     = {Paris, France},
    1623     year        = 1974,
    1624 }
    1625 
    1626 @techreport{Dijkstra65,
    1627     keywords    = {concurrency, Dekker's algorithm, semaphores},
    1628     contributer = {pabuhr@plg},
    1629     author      = {Edsger W. Dijkstra},
    1630     title       = {Cooperating Sequential Processes},
    1631     institution = {Technological University},
    1632     address     = {Eindhoven, Netherlands},
    1633     year        = 1965,
    1634     note        = {Reprinted in \cite{Genuys68} pp. 43--112.}
    1635 }
    1636 
    1637 @book{Marlin80,
    1638     keywords    = {coroutines},
    1639     contributer = {pabuhr@plg},
    1640     author      = {Christopher D. Marlin},
    1641     title       = {Coroutines: A Programming Methodology, a Language Design and an Implementation},
    1642     publisher   = {Springer-Verlag},
    1643     year        = 1980,
    1644     volume      = 95,
    1645     series      = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis}
    1646 }
    1647  
    1648 @article{Wang71,
    1649     keywords    = {coroutines},
    1650     contributer = {pabuhr@plg},
    1651     author      = {Arne Wang and Ole-Johan Dahl},
    1652     title       = {Coroutine Sequencing in a Block Structured Environment},
    1653     journal     = "BIT",
    1654     volume      = 11,
    1655     month       = nov,
    1656     year        = 1971,
    1657     pages       = {425-449},
    1658 }
    1659  
    1660 @article{Castagna95,
    1661     keywords    = {type-systems, covariance, contravariance},
    1662     contributer = {pabuhr@plg},
    1663     author      = {Giuseppe Castagna},
    1664     title       = {Covariance and Contravariance : Conflict without a Cause},
    1665     journal     = toplas,
    1666     volume      = 17,
    1667     number      = 3,
    1668     month       = may,
    1669     year        = 1995,
    1670     pages       = {341-447},
    1671 }
    1672 
    1673 @book{Fischer88,
    1674     keywords    = {compiler construction},
    1675     author      = {Charles N. Fischer and Richard J. {LeBlanc, Jr.}},
    1676     title       = {Crafting a Compiler},
    1677     publisher   = {Benjamin Cummings},
    1678     year        = 1991,
    1679 }
    1680 
    1681 @inproceedings{Jim02,
    1682     keywords    = {C dialect, parametric polymorphic, safe memory allocation},
    1683     contributer = {pabuhr@plg},
    1684     author      = {Trevor Jim and Greg Morrisett and Dan Grossman and Michael Hicks and James Cheney and and Yanling Wang},
    1685     title       = {{C}yclone: A Safe Dialect of {C}},
    1686     booktitle   = {USENIX Annual Technical Conference},
    1687     organization= {USENIX Association},
    1688     address     = {Monterey, California, U.S.A.},
    1689     month       = jun,
    1690     year        = 2002,
    1691     pages       = {275-288},
    1692 }
    1693 
    1694 % D
    1695 
    1696 @manual{D,
    1697     keywords    = {D programming language},
    1698     contributer = {pabuhr@plg},
    1699     title       = {{D} Programming Language},
    1700     author      = {Walter Bright and Andrei Alexandrescu},
    1701     organization= {Digital Mars},
    1702     year        = 2016,
    1703     note        = {\href{http://dlang.org/spec/spec.html}{http://\-dlang.org/\-spec/\-spec.html}},
    1704 }
    1705 
    1706 @techreport{Cui90,
    1707     keywords    = {exception handling},
    1708     contributer = {pabuhr@plg},
    1709     author      = {Qian Cui},
    1710     title       = {Data-Oriented Exception Handling},
    1711     institution = {Department of Computer Science, University of Maryland},
    1712     address     = {College Park, Maryland, U.S.A., 20742},
    1713     number      = {CS-TR-2384},
    1714     month       = jan,
    1715     year        = 1990,
    1716 }
    1717 
    1718 @article{Cui92,
    1719     contributer = {rkrische@plg},
    1720     author      = {Qian Cui and John Gannon},
    1721     title       = {Data-oriented Exception Handling},
    1722     journal     = {IEEE Transactions on Software Engineering},
    1723     month       = may,
    1724     year        = 1992,
    1725     volume      = 18,
    1726     number      = 5,
    1727     pages       = {393-401},
    1728 }
    1729 
    1730 @manual{SIMULA87,
    1731     keywords    = {Simula standard},
    1732     contributer = {gjditchfield@plg},
    1733     title       = {Databehandling -- Programspr{\aa}k -- {SIMULA}},
    1734     organization= {Standardiseringskommissionen i Sverige},
    1735     note        = {Svensk Standard SS 63 61 14},
    1736     year        = 1987,
    1737     abstract    = {
    1738         Standard for the programming language SIMULA.  Written in English.
    1739     }
    1740 }
    1741 
    1742 @article{Liskov75,
    1743     keywords    = {abstract data types, encapsulation, verification},
    1744     contributer = {gjditchfield@plg},
    1745     author      = {Barbara H. Liskov},
    1746     title       = {Data Types and Program Correctness},
    1747     journal     = sigplan,
    1748     year        = 1975,
    1749     month       = jul,
    1750     volume      = 10,
    1751     number      = 7,
    1752     pages       = {16-17},
    1753     summary     = {
    1754         Type definitions should contain the implementation of the type and
    1755         its operations.  The grouping makes programs simpler and more
    1756         understandable.  Encapsulating the definition aids verification and
    1757         forces a precise specification of the interface.
    1758     }
    1759 }
    1760 
    1761 @article{dtav,
    1762     keywords    = {Russell, types},
    1763     contributer = {gjditchfield@plg},
    1764     author      = {James Donahue and Alan Demers},
    1765     title       = {Data Types are Values},
    1766     journal     = toplas,
    1767     month       = jul,
    1768     year        = 1985,
    1769     volume      = 7,
    1770     number      = 3,
    1771     pages       = {426-445},
    1772     comment     = {
    1773         Data types are sets of operations providing interpretations of
    1774         values from a meaningless, typeless universal value space.  Types
    1775         and operations are also contained in this value space.
    1776 
    1777         Functions returning types replace generic types.
    1778 
    1779         Polymorphic functions have type parameters.  Evaluation is not
    1780         macro expansion:
    1781         \begin{verbatim}
    1782             R == func [n:val integer; T:type[]] val integer
    1783                 {if n > 0 => r[n-1, Array[1,10,T]] # n <= 0 => 17 fi}
    1784         \end{verbatim}
    1785     }
    1786 }
    1787 
    1788 @article{Holt72,
    1789     keywords    = {concurrency, deadlock},
    1790     contributer = {pabuhr@plg},
    1791     author      = {Richard C. Holt},
    1792     title       = {Some Deadlock Properties of Computer Systems},
    1793     journal     = acmcs,
    1794     volume      = 4,
    1795     number      = 3,
    1796     month       = sep,
    1797     year        = 1972,
    1798     pages       = {179-196},
    1799 }
    1800 
    1801 @misc{debug-malloc,
    1802     keywords    = {memory allocation debugger},
    1803     contributer = {gjditchfield@plg},
    1804     author      = {Conor P. Cahill},
    1805     title       = {debug\_malloc},
    1806     howpublished= {comp.sources.unix, volume 22, issue 112},
    1807     abstract    = {
    1808         This package is a collection of routines which are a drop-in
    1809         replacement for the malloc(3), memory(3), string(3), and bstring(3)
    1810         library functions.
    1811     }
    1812 }
    1813 
    1814 @book{sml,
    1815     keywords    = {},
    1816     contributer = {pabuhr@plg},
    1817     author      = {Robin Milner and Mads Tofte and Robert Harper},
    1818     title       = {The Definition of Standard {ML}},
    1819     publisher   = {MIT Press},
    1820     address     = {Cambridge, Massachusetts, U.S.A.},
    1821     year        = 1990
    1822 }
    1823 
    1824 @techreport{sml:old,
    1825     keywords    = {},
    1826     contributer = {gjditchfield@plg},
    1827     author      = {Robert Harper and Robin Milner and Mads Tofte},
    1828     title       = {The Definition of Standard {ML}, Version 2},
    1829     institution = {Department of Computer Science, University of Edinburgh},
    1830     year        = 1988,
    1831     address     = {The King's Buildings, Edinburgh EH9 3JZ},
    1832     type        = {LFCS Report Series}, month = aug, number = {ECS-LFCS-88-62}
    1833 }
    1834 
    1835 @inproceedings{Reynolds72,
    1836     keywords    = {continuation},
    1837     contributer = {pabuhr@plg},
    1838     author      = {John Reynolds},
    1839     title       = {Definitional Interpreters for Higher Order Programming Languages},
    1840     booktitle   = {ACM Conference Proceedings},
    1841     organization= {ACM},
    1842     year        = 1972,
    1843     pages       = {717-740}
    1844 }
    1845 
    1846 @article{Buhr16,
    1847     keywords    = {Dekker's algorithm, software solution, mutual exclusion, performance experiment},
    1848     author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
    1849     title       = {Dekker's Mutual Exclusion Algorithm Made RW-Safe},
    1850     journal     = {Concurrency and Computation: Practice and Experience},
    1851     volume      = 28,
    1852     number      = 1,
    1853     pages       = {144-165},
    1854     month       = jan,
    1855     year        = 2016,
    1856 }
    1857 
    1858 @misc{steelman,
    1859     keywords    = {Ada},
    1860     contributer = {gjditchfied@plg},
    1861     author      = {High Order Language Working Group},
    1862     title       = {Department of Defense Requirements for High Order Computer Programming Languages},
    1863     month       = jun, year = 1978,
    1864     note        = {Reprinted in \cite{pldesign}.}
    1865 }
    1866 
    1867 @incollection{Tsay98,
    1868     keywords    = {local spins, mutual exclusion, read/write atomicity, refinement, scalability},
    1869     author      = {Yih-Kuen Tsay},
    1870     title       = {Deriving a scalable algorithm for mutual exclusion},
    1871     booktitle   = {Distributed Computing},
    1872     editor      = {Shay Kutten},
    1873     volume      = {1499},
    1874     series      = {LNCS},
    1875     publisher   = {Springer},
    1876     address     = {Berlin Heidelberg},
    1877     year        = {1998},
    1878     pages       = {393-407},
    1879 }
    1880 
    1881 @article{Conway63,
    1882     keywords    = {coroutine, original},
    1883     contributer = {pabuhr@plg},
    1884     author      = {Melvin E. Conway},
    1885     title       = {Design of a Separable Transition-Diagram Compiler},
    1886     journal     = cacm,
    1887     month       = jul,
    1888     year        = 1963,
    1889     volume      = 6,
    1890     number      = 7,
    1891     pages       = {396-408},
    1892 }
    1893 
    1894 @book{Stroustrup94,
    1895     keywords    = {C++},
    1896     contributor = {wyrmok@plg},
    1897     author      = {Bjarne Stroustrup},
    1898     title       = {The Design and Evolution of {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    1899     publisher   = {Addison-Wesley},
    1900     year        = 1994
    1901 }
    1902 
    1903 @inproceedings{st:concurrent,
    1904     keywords    = {concurrency, Smalltalk, futures},
    1905     contributer = {gjditchfield@plg},
    1906     author      = {Yasuhiko Yokote and Mario Tokoro},
    1907     title       = {The Design and Implementation of {ConcurrentSmalltalk}},
    1908     crossref    = "OOPSLA86",
    1909     pages       = {331-340},
    1910     comment     = {
    1911         Objects are ordinary Smalltalk objects or ``atomic'' objects, which
    1912         process messages one at a time in FIFO order.  Asynchronous method
    1913         calls are made by appending ``\&'' at the call site.  The sender does
    1914         not wait for a reply.  If the method returns a value, it
    1915         (immediately?) returns a CBox object, which is like a future.  The
    1916         sender can send the ``receive'' message to the CBox, which blocks
    1917         until the CBox contains a value.
    1918 
    1919         A method can execute the ``\verb|^|'' statement to return an object
    1920         and terminate, or it can execute ``\verb|^^|'' to return an object
    1921         and continue execution.  If ``\verb|^^foo|'' is executed after
    1922         ``\verb|^^bar|'', foo is discarded, since bar has already been
    1923         returned.
    1924 
    1925         The article does not say whether asynchronous messages can be sent
    1926         to ordinary objects, or whether ordinary messages can be sent to
    1927         atomic objects.
    1928     }
    1929 }
    1930 
    1931 @inproceedings{Ichbiah83,
    1932     keywords    = {Ada, packages, generics},
    1933     contributer = {gjditchfield@plg},
    1934     author      = {Jean D. Ichbiah},
    1935     title       = {On the Design of {Ada}},
    1936     booktitle   = {Information Processing 83},
    1937     year        = 1983,
    1938     month       = sep, pages = {1-10},
    1939     editor      = {R. E. A. Mason},
    1940     organization= {IFIP},
    1941     publisher = {North-Holland},
    1942     summary = {
    1943         Packages group related declarations or subprograms, and encapsulate
    1944         data types.  Separate interfaces and bodies promotes information
    1945         hiding by removing the need to scan the body, allows the body to be
    1946         confidential, and provides a better specification of the contract
    1947         between client and implementor.  Generics are an efficient way to
    1948         factor out parts of similar definitions.
    1949     }
    1950 }
    1951 
    1952 @book{Motet96,
    1953     keywords    = {Ada, exception handling},
    1954     contributer = {wyrmok@plg},
    1955     author      = {G. Motet and A. Mapinard and J. C. Geoffroy},
    1956     title       = {Design of Dependable {A}da Software},
    1957     publisher   = {Prentice Hall},
    1958     year        = 1996,
    1959 }
    1960  
    1961 @article{Richardson93,
    1962     keywords    = {C++, persistence, database},
    1963     contributer = {pabuhr@plg},
    1964     author      = {Joel E. Richardson and Michael J. Carey and Daniel T. Schuh},
    1965     title       = {The Design of the {E} Programming Language},
    1966     journal     = toplas,
    1967     month       = jul,
    1968     year        = 1993,
    1969     volume      = 15,
    1970     number      = 3,
    1971     pages       = {494-534},
    1972 }
    1973 
    1974 @article{Hansen81b,
    1975     keywords    = {concurrency, monitor, critical region},
    1976     contributer = {pabuhr@plg},
    1977     author      = {Per {Brinch Hansen}},
    1978     title       = {The Design of {E}dison},
    1979     journal     = spe,
    1980     volume      = 11,
    1981     number      = 4,
    1982     month       = apr,
    1983     year        = 1981,
    1984     pages       = {363-396},
    1985 }
    1986 
    1987 @book{Gamma95,
    1988     keywords    = {design patterns},
    1989     author      = {Erich Gamma and Richard Helm and Ralph Johnson and John Vlissides},
    1990     title       = {Design Patterns: Elements of Reusable Object-Oriented Software},
    1991     publisher   = {Addison-Wesley},
    1992     year        = 1995,
    1993     series      = {Professional Computing Series},
    1994 }
    1995 
    1996 @inproceedings{Wirth74,
    1997     keywords    = {},
    1998     contributer = {gjditchfield@plg},
    1999     author      = {Niklaus Wirth},
    2000     title       = {On the Design of Programming Languages},
    2001     booktitle   = {Information Processing 74},
    2002     year        = 1974,
    2003     pages       = {386-393},
    2004     publisher   = {North Holland Publishing Company},
    2005     note        = {Reprinted in \cite{pldesign}.}
    2006 }
    2007 
    2008 @techreport{forceone,
    2009     keywords    = {Parametric polymorphism, ForceOne},
    2010     contributer = {gjditchfield@plg},
    2011     author      = {Andrew K. Wright},
    2012     title       = {Design of the Programming Language {ForceOne}},
    2013     institution = {University of Waterloo},
    2014     month       = feb, year = 1987,
    2015     number      = {CS-87-10}
    2016 }
    2017 
    2018 @techreport{x-2,
    2019     keywords    = {object based},
    2020     contributer = {gjditchfield@plg},
    2021     author      = {David W. Sandberg},
    2022     title       = {The Design of the Programming Language {X-2}},
    2023     institution = {Oregon State University},
    2024     year        = 1985,
    2025     address     = {Department of Computer Science, Corvallis, Oregon, 97331},
    2026     number      = {85-60-1}
    2027 }
    2028 
    2029 @article{design,
    2030     keywords    = {Smalltalk, designing classes},
    2031     contributer = {gjditchfield@plg},
    2032     author      = {Ralph E. Johnson and Brian Foote},
    2033     title       = {Designing Reusable Classes},
    2034     journal     = {Journal of Object-Oriented Programming},
    2035     year        = 1988,
    2036     volume      = 1, number = 2, pages = {22-35},
    2037     comment     = {
    2038         Abstract classes represent standard protocols.  ``It is better to
    2039         inherit from an abstract class than from a concrete class''.
    2040         Frameworks are collections of related abstract classes.  Successful
    2041         abstractions are discovered, not designed.
    2042 
    2043         Protocols: ``If an operation X is implemented by performing a
    2044         similar operation on the components of the receiver, then that
    2045         operation should also be named X''.  Eliminate case analysis by
    2046         creating classes with the same operations.  Create classes to
    2047         represent bundles of parameters.  Shrink methods larger than 30
    2048         lines.
    2049 
    2050         Hierarchies should be deep and narrow.  Subclasses should be
    2051         specializations.
    2052 
    2053         Frameworks: split large classes.  Factor implementation differences
    2054         into subcomponents.  Separate methods that do not share instance
    2055         variables into components that reflect the different views of the
    2056         object.  Send messages to components, not self.  Reduce implicit
    2057         parameter passing through instance variables.
    2058     }
    2059 }
    2060 
    2061 @article{dim:c++,
    2062     keywords    = {Dimensional Analysis, C++},
    2063     contributer = {gjditchfield@plg},
    2064     author      = {Robert F. Cmelic and Narain Gehani},
    2065     title       = {Dimensional Analysis with {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    2066     journal     = {IEEE Software},
    2067     month       = may, year = 1988,
    2068     volume      = 5, number = 3, pages = {21-29}
    2069 }
    2070 
    2071 @article{Wegner87,
    2072     contributer = {pabuhr@plg},
    2073     author      = {Peter Wegner},
    2074     title       = {Dimensions of Object--Based Language Design},
    2075     journal     = sigplan,
    2076     volume      = 22,
    2077     number      = 12,
    2078     month       = dec,
    2079     year        = 1987,
    2080     pages       = {168-182},
    2081     note        = {Proceedings of the OOPSLA'87 Conference, Oct. 4--8, 1987, Orlando, Florida},
    2082 }
    2083 
    2084 @book{Dijkstra76,
    2085     keywords    = {concurrent assignment},
    2086     author      = {E. W. Dijkstra},
    2087     title       = {A Discipline of Programming},
    2088     publisher   = {Prentice-Hall},
    2089     year        = 1976,
    2090 }
    2091 
    2092 @book{Lynch96,
    2093     keywords    = {distributed algorithms},
    2094     author      = {Nancy A. Lynch},
    2095     title       = {Distributed Algorithms},
    2096     publisher   = {Morgan Kaufmann},
    2097     year        = 1996,
    2098 }
    2099 
    2100 @book{Tanenbaum02,
    2101     keywords    = {distributed programming},
    2102     author      = {Andrew S. Tanenbaum and Maarten van Steen},
    2103     title       = {Distributed Systems: Principles and Paradigms},
    2104     publisher   = {Prentice-Hall},
    2105     year        = 2002,
    2106 }
    2107 
    2108 @inproceedings{Cargill90,
    2109     keywords    = {concurrency},
    2110     contributer = {pabuhr@plg},
    2111     author      = {Tom A. Cargill},
    2112     title       = {Does {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Really Need Multiple Inheritance?},
    2113     booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference Proceedings},
    2114     organization= {USENIX Association},
    2115     address     = {San Francisco, California, U.S.A.},
    2116     month       = apr,
    2117     year        = 1990,
    2118     pages       = {315-323}
    2119 }
    2120 
    2121 @unpublished{Duff83,
    2122     keywords    = {C, switch statement, control flow},
    2123     contributer = {pabuhr@plg},
    2124     author      = {Tom Duff},
    2125     title       = {Duff's Device},
    2126     month       = nov,
    2127     year        = 1983,
    2128     note        = {\href{http://www.lysator.liu.se/c/duffs-device.html}{http://\-www.lysator.liu.se/\-c/\-duffs-device.html}}
    2129 }
    2130 
    2131 @manual{dwarf2,
    2132     keywords    = {Debugging DWARF2 specification},
    2133     contributer = {rkrische@plg},
    2134     title       = {DWARF Debugging Information Format},
    2135     organization= {Unix International Programming Languages SIG},
    2136     publisher   = {Unix International},
    2137     address     = {Waterview Corporate Center, 20 Waterview Boulevard, Parsippany, NJ 07054},
    2138     year        = {1993}
    2139 }
    2140 
    2141 @article{classicada,
    2142     keywords    = {Classic Ada},
    2143     contributer = {gjditchfield@plg},
    2144     author      = {Cameron M. Donaldson},
    2145     title       = {Dynamic Binding and Inheritance in an Object-Oriented {Ada} Design},
    2146     journal     = {Journal of Pascal, {Ada} \& Modula-2},
    2147     year        = 1990,
    2148     month       = {jul/aug}, volume = 9, number = 4, pages = {12-19},
    2149     comment     = {
    2150         Classes are like packages: they can contain subprograms, types,
    2151         variables, generic instantiations, and exceptions.  They can also
    2152         contain class methods, instance methods, and instance variables,
    2153         and define creation and initialization subprograms or methods for
    2154         instances.  Single inheritance provides inheritance of
    2155         implementations. Dynamic binding is done with a {\em send}
    2156         statement that invokes a class or instance method.  A preprocessor
    2157         converts Classic Ada to normal Ada.
    2158     }
    2159 }
    2160 
    2161 @article{Costanza03,
    2162     keywords    = {dynamic call},
    2163     contributer = {pabuhr@plg},
    2164     author      = {Pascal Costanza},
    2165     title       = {Dynamic Scoped Functions as the Essence of {AOP}},
    2166     journal     = sigplan,
    2167     volume      = 38,
    2168     number      = 8,
    2169     month       = aug,
    2170     year        = 2003,
    2171     pages       = {29-35},
    2172 }
    2173 
    2174 % E
    2175 
    2176 @inproceedings{Wegbreit71,
    2177     keywords    = {polymorphism},
    2178     contributer = {pabuhr@plg},
    2179     author      = {B. Wegbreit},
    2180     title       = {The ECL Programming System},
    2181     booktitle   = {Proceedings of AFIPS 1971 FJCC},
    2182     publisher   = {AFIPS Press, vol. 39},
    2183     address     = {Montvale, New Jersey, U.S.A},
    2184     year        = 1971,
    2185     pages       = {253-262},
    2186 }
    2187 
    2188 @manual{JavaScript,
    2189     keywords    = {JavaScript},
    2190     contributer = {pabuhr},
    2191     title       = {ECMAScript 2015 Language Specification {JavaScript}},
    2192     organization= {ECAM International},
    2193     address     = {Rue du Rhone 114, CH-1204 Geneva, Switzerland},
    2194     month       = jun,
    2195     year        = 2015,
    2196     note        = {6th Edition}
    2197 }
    2198 
    2199 @inproceedings{Peterson77,
    2200     keywords    = {N-thread software-solution mutual exclusion},
    2201     contributer = {pabuhr@plg},
    2202     author      = {Gary L. Peterson and Michael J. Fischer},
    2203     title       = {Economical Solutions for the Critical Section Problem in a Distributed System (Extended Abstract)},
    2204     booktitle   = {Proceedings of the Ninth Annual ACM Symposium on Theory of Computing},
    2205     series      = {STOC '77},
    2206     year        = 1977,
    2207     location    = {Boulder, Colorado, USA},
    2208     pages       = {91--97},
    2209     numpages    = {7},
    2210     publisher   = {ACM},
    2211     address     = {New York, NY, USA},
    2212 }
    2213 
    2214 @article{Hansen81a,
    2215     keywords    = {concurrency, monitor, critical region},
    2216     contributer = {pabuhr@plg},
    2217     author      = {Per {Brinch Hansen}},
    2218     title       = {{E}dison---a Multiprocessor Language},
    2219     journal     = spe,
    2220     volume      = 11,
    2221     number      = 4,
    2222     month       = apr,
    2223     year        = {1981},
    2224     pages       = {325-361},
    2225 }
    2226 
    2227 @book{Eiffel,
    2228     keywords    = {Eiffel},
    2229     contributer = {pabuhr@plg},
    2230     author      = {Bertrand Meyer},
    2231     title       = {Eiffel: The Language},
    2232     publisher   = {Prentice-Hall},
    2233     year        = 1992,
    2234     series      = {Prentice Hall Object-Oriented Series},
    2235 }
    2236 
    2237 @article{WS:overload,
    2238     keywords    = {compilation},
    2239     contributer = {gjditchfield@plg},
    2240     author      = {Peter J. L. Wallis and Bernhard W. Silverman},
    2241     title       = {Efficient Implementation of the {Ada} Overloading Rules},
    2242     journal     = ipl,
    2243     year        = 1980,
    2244     month       = apr, volume = 10, number = 3, pages = {120-123},
    2245     comment     = {
    2246         The ``two-pass'' algorithm.  An upward pass over a parse tree
    2247         calculates the set of possible result types of operators.  The
    2248         root must have exactly one type, produced in one way.  A
    2249         downward pass selects the version of the operator that produces the
    2250         desired result type, thus setting the result types of subtrees.
    2251         See \cite{D:overload}.
    2252     }
    2253 }
    2254 
    2255 @techreport{Habermann80,
    2256     keywords    = {Ada, threads},
    2257     contributer = {pabuhr@plg},
    2258     author      = {A. N. Habermann and I. R. Nassi},
    2259     title       = {Efficient Implementation of {Ada} Tasks},
    2260     institution = {Carnegie-Mellon University},
    2261     number      = {CMU-CS-80-103},
    2262     year        = 1980
    2263 }
    2264 
    2265 @article{Emerald,
    2266     keywords    = {concurrency, polymorphism},
    2267     contributer = {pabuhr@plg},
    2268     author      = {Rajendra K. Raj and Ewan Tempero and Henry M. Levy and Andrew P. Black and Norman C. Hutchinson and Eric Jul},
    2269     title       = {Emerald: A General-Purpose Programming Language},
    2270     journal     = spe,
    2271     month       = jan,
    2272     year        = 1991,
    2273     volume      = 21,
    2274     number      = 1,
    2275     pages       = {91-118}
    2276 }
    2277 
    2278 @InProceedings{chambers89a,
    2279     keywords    = {maps, delegation},
    2280     author      = "Craig Chambers and David Ungar and Elgin Lee",
    2281     title       = "An Efficient Implementation of {SELF}, a Dynamically-Typed
    2282                  Object-Oriented Language Based on Prototypes",
    2283     crossref    = "OOPSLA89",
    2284     pages       = {49-70}
    2285 }
    2286 
    2287 @article{oop:encapsulation,
    2288     keywords    = {Encapsulation, Inheritance, Subclasses, Multiple Inheritance},
    2289     contributer = {gjditchfield@plg},
    2290     author      = {Alan Snyder},
    2291     title       = {Encapsulation and Inheritance in Object-Oriented Programming
    2292         Languages},
    2293     journal     = sigplan,
    2294     volume      = {21},    number = {11},
    2295     pages       = {38-45},
    2296     month       = nov, year = 1986,
    2297     comment     = {
    2298         Client, child interfaces should be distinct.  Child interface
    2299         shouldn't grant total access to parent.
    2300 
    2301         Rules for redefining parent variable name in a child affect
    2302         re-implementation of the parent.
    2303 
    2304         Inheritance can be a promise to obey the semantics of the parent,
    2305         or code reuse; the two may be contradictory.  Unification
    2306         exposes use of inheritance: a child can not be re-implemented
    2307         without breaking code that assumes that it is a subclass of the
    2308         original parent.  If a class uses the names of its parents'
    2309         ancestors, then inheritance is part of the parent's child
    2310         interface.
    2311 
    2312         Linearizing a multiple inheritance tree means that a class's use of
    2313         calls on super need to be understood before it is used as a parent.
    2314         Merging repeated ancestors exposes inheritance if an ancestor is
    2315         re-implemented.  Forbidding inheritance of distinct methods with
    2316         the same name exposes implementation of ancestors.  Proposed
    2317         solution treats the set of ancestors as a tree.
    2318     }
    2319 }
    2320 
    2321 @article{st:encapsulator,
    2322     keywords    = {encapsulator, Smalltalk, monitor},
    2323     contributer = {gjditchfield@plg},
    2324     author      = {Geoffrey A. Pascoe},
    2325     title       = {Encapsulators: A New Software Paradigm in Smalltalk-80},
    2326     journal     = sigplan,
    2327     volume      = {21},    number       = {11},
    2328     pages       = {341-346},
    2329     month       = nov, year = 1986,
    2330     comment     = {
    2331         Encapsulators are objects that surround other objects.
    2332         Pre- and post-actions are performed when messages are sent to the
    2333         encapsulated object.  They are created here by sending the message
    2334         object: to an encapsulator class.  Examples given are monitors,
    2335         atomic objects, and Model (for model-view-controller interfaces).
    2336 
    2337         Encapsulator classes use a family of selectors that the
    2338         encapsulated object will not respond to.  Messages for the
    2339         encapsulated object are passed on by trapping them with the
    2340         doesNotUnderstand method.  Various fiddles were needed when setting
    2341         up the class and metaclass hierarchies.  A few selectors (==,
    2342         class) always directly invoke primitive methods; they can't be
    2343         used.
    2344 
    2345         Can an encapsulated object be an encapsulator?  Probably, but the
    2346         middle object's selectors are inaccessible.
    2347     }
    2348 }
    2349 
    2350 @manual{EPT,
    2351     keywords    = {concurrency, light-weight threads},
    2352     contributer = {pabuhr@plg},
    2353     key         = {Encore},
    2354     title       = {Encore Parallel Thread Manual, 724-06210},
    2355     organization= {Encore Computer Corporation},
    2356     month       = may,
    2357     year        = 1988,
    2358 }
    2359 
    2360 @manual{Erlang,
    2361     keywords    = {Erlang},
    2362     contributer = {pabuhr},
    2363     title       = {Erlang Reference Manual User's Guide, Vertion 7.0},
    2364     organization= {Erlang/OTP System Documentation},
    2365     address     = {1430 Broadway, New York, New York  10018},
    2366     month       = jun,
    2367     year        = 2015,
    2368     note        = {\href{http://www.erlang.org/doc/pdf/otp-system-documentation.pdf}{\textsf{http://www.erlang.org/\-doc/\-pdf/\-otp-system-documentation.pdf}}},
    2369 }
    2370 
    2371 @inproceedings{MH88,
    2372     keywords    = {modules, general sums, general products},
    2373     contributer = {gjditchfield@plg},
    2374     author      = {John C. Mitchell and Robert Harper},
    2375     title       = {The Essence of {ML}},
    2376     booktitle   = popl,
    2377     year        = 1988,
    2378     pages       = {28-46}
    2379 }
    2380 
    2381 @book{LeVerrand,
    2382     keywords    = {},
    2383     author      = {D. Le Verrand},
    2384     title       = {Evaluating {Ada}},
    2385     publisher   = {North Oxford Academic},
    2386     year        = 1985
    2387 }
    2388 
    2389 @inproceedings{Bloom79,
    2390     keywords    = {concurrency},
    2391     contributer = {pabuhr@plg},
    2392     author      = {Toby Bloom},
    2393     title       = {Evaluating Synchronization Mechanisms},
    2394     booktitle   = {Proceedings of the Seventh Symposium on Operating Systems Principles},
    2395     organization= {ACM SIGOPS},
    2396     address     = {Pacific Grove, California, U.S.A},
    2397     month       = dec,
    2398     year        = 1979,
    2399     pages       = {24-32}
    2400 }
    2401 
    2402 @article{Buhr06a,
    2403     keywords    = {concurrency, C++, uC++},
    2404     contributer = {pabuhr@plg},
    2405     author      = {Peter A. Buhr and Richard C. Bilson},
    2406     title       = {Examining $\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} :
    2407                    High-level Object-Oriented Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    2408     journal     = {Dr. Dobb's Journal : Software Tools for the Professional Programmer},
    2409     month       = feb,
    2410     year        = 2006,
    2411     volume      = 31,
    2412     number      = 2,
    2413     pages       = {36-40},
    2414 }
    2415 
    2416 @article{ExceptionalC,
    2417     keywords    = {exception handling, asynchronous events},
    2418     contributer = {wyrmok@plg},
    2419     author      = {N. H. Gehani},
    2420     title       = {Exceptional {C} or {C} with Exceptions},
    2421     journal     = spe,
    2422     year        = 1992,
    2423     month       = oct,
    2424     volume      = 22,
    2425     number      = 10,
    2426     pages       = {827-848},
    2427     comment     = {
    2428         It is the most extensive exceptional handling mechanism thus
    2429         far. Though it doesn't have Mesa resumption, it has
    2430         asynchronous signal which is more general and abstract than
    2431         the unix signal mechanism.  It has an Eiffel like retry
    2432         mechanism. Consequently, the scope of guarded region is not
    2433         immediately terminated when an exception is raised. In fact,
    2434         an exception handler creates a scope under its guarded
    2435         region.
    2436         }
    2437 }
    2438 
    2439 @incollection{Buhr02,
    2440     keywords    = {exception handling},
    2441     contributer = {pabuhr@plg},
    2442     author      = {Peter A. Buhr and Ashif Harji and W. Y. Russell Mok},
    2443     title       = {Exception Handling},
    2444     editor      = {Marvin V. Zelkowitz},
    2445     booktitle   = {Advances in COMPUTERS},
    2446     publisher   = {Academic Press},
    2447     volume      = 56,
    2448     year        = 2002,
    2449     pages       = {245-303},
    2450 }
    2451 
    2452 @article{Cargill94,
    2453     keywords    = {exception handling},
    2454     contributer = {pabuhr@plg},
    2455     author      = {Tom Cargill},
    2456     title       = {Exception Handling: a False Sense of Security},
    2457     journal     = {{C}{\kern-.2em\hbox{\large\texttt{+\kern-.2em+}}} Report},
    2458     year        = 1994,
    2459     month       = nov,
    2460     volume      = 6,
    2461     number      = 9,
    2462     note        = {http://www.informit.com/\-content/\-images/\-020163371x/\-supplements/\-Exception\_\-Handling\_\-Article.\-html}
    2463 }
    2464 
    2465 @article{Knudsen84,
    2466     keywords    = {static exception handling, BETA, sequel},
    2467     contributer = {wyrmok@plg},
    2468     author      = {J{\o}rgen Lindskov Knudsen},
    2469     title       = {Exception Handling --- A Static Approach},
    2470     journal     = spe,
    2471     year        = 1984,
    2472     month       = may,
    2473     volume      = 14,
    2474     number      = 5,
    2475     pages       = {429-449},
    2476 }
    2477 
    2478 @article{Drew94,
    2479     keywords    = {exceptions, exception handling},
    2480     contributer = {wyrmok@plg},
    2481     author      = {Steven J. Drew and K. John Gough},
    2482     title       = {Exception Handling: Expecting the Unexpected},
    2483     journal     = {Computer Languages},
    2484     year        = 1994,
    2485     month       = may,
    2486     volume      = 20,
    2487     number      = 2,
    2488     comment     = {
    2489         A recent and good survey on various exception handling mechanisms found
    2490         in imperative programming languages. It classifies various mechanism in
    2491         terms of flow control and scopes. Asynchronous exceptions and signals
    2492         are also covered as Exceptional C is in the survey.
    2493         }
    2494 }
    2495 
    2496 @article{Koenig90,
    2497     keywords    = {exception handling},
    2498     contributer = {pabuhr@plg},
    2499     author      = {Andrew Koenig and Bjarne Stroustrup},
    2500     title       = {Exception Handling for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    2501     journal     = joop,
    2502     month       = {July/August},
    2503     year        = 1990,
    2504     volume      = 3,
    2505     number      = 2,
    2506     pages       = {16-33},
    2507 }
    2508 
    2509 @article{Lee83,
    2510     keywords    = {exception handling, C},
    2511     contributer = {pabuhr@plg},
    2512     author      = {P. A. Lee},
    2513     title       = {Exception Handling in {C} Programs},
    2514     journal     = spe,
    2515     volume      = 13,
    2516     number      = 5,
    2517     month       = may,
    2518     year        = 1983,
    2519     pages       = {389-405},
    2520 }
    2521 
    2522 @article{Liskov79,
    2523     keywords    = {exception handling},
    2524     contributer = {pabuhr@plg},
    2525     author      = {Barbara H. Liskov and Alan Snyder},
    2526     title       = {Exception Handling in {CLU}},
    2527     journal     = ieeese,
    2528     month       = nov,
    2529     year        = 1979,
    2530     volume      = {SE-5},
    2531     number      = 6,
    2532     pages       = {546-558},
    2533 }
    2534 
    2535 @article{Szalas85,
    2536     keywords    = {concurrency, C++},
    2537     contributer = {pabuhr@plg},
    2538     author      = {Andrzej Szalas and Danuta Szczepanska},
    2539     title       = {Exception Handling in Parallel Computations},
    2540     journal     = sigplan,
    2541     volume      = 20,
    2542     number      = 10,
    2543     month       = oct,
    2544     year        = 1985,
    2545     issn        = {0362-1340},
    2546     pages       = {95-104},
    2547     url         = {http://doi.acm.org/10.1145/382286.382385},
    2548     doi         = {http://doi.acm.org/10.1145/382286.382385},
    2549     acmid       = {382385},
    2550     publisher   = {ACM},
    2551     address     = {New York, NY, USA},
    2552 }
    2553 
    2554 @article{MacLaren77,
    2555     keywords    = {exception handling, PL/I},
    2556     contributer = {pabuhr@plg},
    2557     author      = {M. Donald MacLaren},
    2558     title       = {Exception Handling in {PL/I}},
    2559     journal     = sigplan,
    2560     volume      = 12,
    2561     number      = 3,
    2562     month       = mar,
    2563     year        = 1977,
    2564     pages       = {101-104},
    2565     note        = {Proceedings of an ACM Conference on Language Design for Reliable Software,
    2566                    March 28--30, 1977, Raleigh, North Carolina, U.S.A.},
    2567 }
    2568 
    2569 @article{Goodenough75,
    2570     keywords    = {exception handling},
    2571     contributer = {pabuhr@plg},
    2572     author      = {J. B. Goodenough},
    2573     title       = {Exception Handling: Issues and a Proposed Notation},
    2574     journal     = cacm,
    2575     month       = dec,
    2576     year        = 1975,
    2577     volume      = 18,
    2578     number      = 12,
    2579     pages       = {683-696},
    2580 }
    2581 
    2582 @article{Lampson80,
    2583     keywords    = {monitors},
    2584     contributer = {pabuhr@plg},
    2585     author      = {B. W. Lampson and D. D. Redell},
    2586     title       = {Experience with Processes and Monitors in Mesa},
    2587     journal     = cacm,
    2588     volume      = 23,
    2589     number      = 2,
    2590     month       = feb,
    2591     year        = 1980,
    2592     pages       = {105-117},
    2593 }
    2594 
    2595 @inproceedings{Shopiro87,
    2596     keywords    = {concurrency},
    2597     contributer = {pabuhr@plg},
    2598     author      = {Jonathan E. Shopiro},
    2599     title       = {Extending the {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Task System for Real-Time Control},
    2600     booktitle   = {Proceedings and Additional Papers {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Workshop},
    2601     organization= {USENIX Association},
    2602     address     = {Santa Fe, New Mexico, U.S.A},
    2603     month       = nov,
    2604     year        = 1987,
    2605     pages       = {77-94}
    2606 }
    2607 
    2608 @article{Modula-2+,
    2609     keywords    = {Modula-2, exceptions, garbage collection, concurrency},
    2610     contributer = {gjditchfield@plg},
    2611     author      = {Paul Rovner},
    2612     title       = {Extending Modula-2 to Build Large, Integrated Systems},
    2613     journal     = {IEEE Software},
    2614     month       = nov, year = 1986,
    2615     volume      = 3, number = 6, pages = {46-57},
    2616     comment     = {
    2617         Exceptions can have a parameter.  Procedures can declare the
    2618         exceptions they can propagate; others are converted to {\tt
    2619         SYSTEM.Fail}.  If they don't, all exceptions propagate.
    2620         Block cleanup statements execute no matter how control leaves the
    2621         block.
    2622 
    2623         {\tt REF t} is a garbage-collected pointer.  A {\tt REFANY} can be
    2624         assigned any {\tt REF t}.  Open array types can be used in
    2625         parameter and {\tt REF} types.  {\tt NEW} creates arrays of fixed,
    2626         dynamically determined size.
    2627 
    2628         The {\tt THREAD} module provides lightweight processes, semaphores,
    2629         and conditions.  A statement {\tt LOCK {\em semaphore} DO
    2630         {\em statements} END} is built in.
    2631 
    2632         {\tt SAFE} modules do run-time checks, and only import {\tt
    2633         SAFE} modules.  One implementation module can implement several
    2634         definition modules.  Opaque type implementations can be
    2635         repeated in modules that import its definition, so implementation
    2636         modules can collaborate.  The linker checks that all
    2637         implementations are the same.
    2638     }
    2639 }
    2640 
    2641 @inproceedings{BNRPascal,
    2642     keywords    = {concurrency, rendezvous},
    2643     contributer = {pabuhr@plg},
    2644     author      = {R. Kamel and N. Gammage},
    2645     title       = {Experience with Rendezvous},
    2646     booktitle   = {Proceedings of the 1988 International Conference on Computer Languages},
    2647     month       = oct,
    2648     year        = 1988,
    2649     pages       = {143-149}
    2650 }
    2651 
    2652 % F
    2653 
    2654 @inproceedings{Knudsen01,
    2655     keywords    = {Beta, exception handling},
    2656     contributer = {pabuhr@plg},
    2657     author      = {J{\o}rgen Lindskov Knudsen},
    2658     title       = {Fault Tolerance and Exception Handling in {BETA}},
    2659     booktitle   = {Exception Handling},
    2660     publisher   = {Springer-Verlag},
    2661     volume      = 2022,
    2662     series      = {Lecture Notes in Computer Science},
    2663     year        = 2001,
    2664     pages       = {1-17}
    2665 }
    2666 
    2667 @article{Lamport87,
    2668     keywords    = {software solutions, mutual exclusion, fast},
    2669     contributer = {pabuhr@plg},
    2670     author      = {Leslie Lamport},
    2671     title       = {A Fast Mutual Exclusion Algorithm},
    2672     journal     = tocs,
    2673     volume      = 5,
    2674     number      = 1,
    2675     month       = jan,
    2676     year        = {1987},
    2677     pages       = {1--11},
    2678     publisher   = {ACM},
    2679     address     = {New York, NY, USA},
    2680 }
    2681 
    2682 @inproceedings{F-bound,
    2683     keywords    = {},
    2684     contributer = {gjditchfield@plg},
    2685     author      = {Peter Canning and William Cook and Walter Hill and Walter Olthoff and John C. Mitchell},
    2686     title       = {F-Bounded Polymorphism for Object-Oriented Programming},
    2687     booktitle   = {Fourth International Conference on Functional Programming Languages and Computer Architecture},
    2688     year        = 1989,
    2689     month       = sep,
    2690     pages       = {273-280}
    2691 }
    2692 
    2693 @mastersthesis{Wasik08,
    2694     author      = {Ayelet Wasik},
    2695     title       = {Features of a Multi-Threaded Memory Allocator},
    2696     school      = {University of Waterloo},
    2697     year        = 2008,
    2698     month       = jan,
    2699     address     = {Waterloo, Ontario, Canada, N2L 3G1},
    2700     note        = {\textsf{http://uwspace.uwaterloo.ca/\-bitstream/\-10012/\-3501/\-1/\-Thesis.pdf}},
    2701 }
    2702 
    2703 @article{Holzmann94,
    2704     keywords    = {semaphore, flags},
    2705     contributer = {pabuhr@plg},
    2706     author      = {Gerard J. Holzmann and Bj\"{o}rn Pehrson},
    2707     title       = {The First Data Networks},
    2708     journal     = {Scientific American},
    2709     month       = jan,
    2710     year        = 1994,
    2711     volume      = 12,
    2712     number      = 1,
    2713     pages       = {124-129},
    2714 }
    2715 
    2716 @article{Bohm66,
    2717     keywords    = {goto, structured programming},
    2718     contributer = {pabuhr@plg},
    2719     author      = {C. B\"{o}hm and G. Jacopini},
    2720     title       = {Flow diagrams, Turing Machines and Languages with only two Formation Rules},
    2721     journal     = cacm,
    2722     month       = may,
    2723     year        = 1966,
    2724     volume      = 9,
    2725     number      = 5,
    2726     pages       = {366-371},
    2727 }
    2728 
    2729 @manual{Fortran95,
    2730     keywords    = {Fortran 95},
    2731     contributer = {pabuhr@plg},
    2732     key         = {Fortran95},
    2733     title       = {Fortran 95 Standard, ISO/IEC 1539},
    2734     organization = {Unicomp, Inc.},
    2735     address     = {7660 E. Broadway, Tucson, Arizona, U.S.A, 85710},
    2736     month       = jan,
    2737     year        = 1997,
    2738 }
    2739 
    2740 @manual{Fortran08,
    2741     keywords    = {ISO/IEC Fortran 08},
    2742     contributer = {pabuhr@plg},
    2743     key         = {Fortran08},
    2744     title       = {Programming Languages -- {Fortran} Part 1},
    2745     organization= {International Standard ISO/IEC 1989:2014},
    2746     publisher   = {International Standard Organization},
    2747     address     = {http://www.iso.org},
    2748     year        = 2010,
    2749 }
    2750 
    2751 @book{Andrews00:book,
    2752     keywords    = {concurrency},
    2753     contributer = {pabuhr@plg},
    2754     author      = {Gregory R. Andrews},
    2755     title       = {Foundations of Multithreaded, Parallel and Distributed Programming},
    2756     publisher   = {Addison--Wesley},
    2757     year        = 2000,
    2758 }
    2759 
    2760 @article{Agha89,
    2761     keywords    = {actors, concurrency},
    2762     contributer = {pabuhr@plg},
    2763     author      = {Gul A. Agha},
    2764     title       = {Foundational Issues in Concurrent Computing},
    2765     journal     = sigplan,
    2766     month       = apr,
    2767     year        = 1989,
    2768     volume      = 24,
    2769     number      = 4,
    2770     pages       = {60-65},
    2771     note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming,
    2772                    Sept. 26--27, 1988, San Diego, California, U.S.A},
    2773 }
    2774 
    2775 @article{ool,
    2776     keywords    = {},
    2777     contributer = {gjditchfield@plg},
    2778     author      = {Douglas T. Ross},
    2779     title       = {Toward Foundations for the Understanding of Type},
    2780     journal     = sigplan,
    2781     year        = 1976,
    2782     volume      = 11, pages = {63-65},
    2783     note        = {Conference on Data: Abstraction, Definition and Structure},
    2784     summary     = {
    2785         Possibly the first use (without definition, alas) of the phrase
    2786         "object oriented language".  Metaphysical to the point of incoherence.
    2787     }
    2788 }
    2789 
    2790 @article{frames,
    2791     keywords    = {frames},
    2792     contributer = {gjditchfield@plg},
    2793     author      = {Paul G. Basset},
    2794     title       = {Frame-Based Software Engineering},
    2795     journal     = {IEEE Software},
    2796     month       = jul, year = 1987,
    2797     volume      = 4, number = 4, pages = {9-16}
    2798 }
    2799 
    2800 @article{Sutter05,
    2801     keywords    = {concurrency, C++},
    2802     contributer = {pabuhr@plg},
    2803     author      = {Herb Sutter},
    2804     title       = {A Fundamental Turn Toward Concurrency in Software},
    2805     journal     = {Dr. Dobb's Journal : Software Tools for the Professional Programmer},
    2806     month       = mar,
    2807     year        = 2005,
    2808     volume      = 30,
    2809     number      = 3,
    2810     pages       = {16-22},
    2811 }
    2812 
    2813 @inproceedings{Dony01,
    2814     keywords    = {Smalltalk, exception handling},
    2815     contributer = {pabuhr@plg},
    2816     author      = {Chistophe Dony},
    2817     title       = {A Fully Object-Oriented Exception Handling System: Rationale and Smalltalk Implementation},
    2818     booktitle   = {Exception Handling},
    2819     publisher   = {Springer-Verlag},
    2820     volume      = 2022,
    2821     series      = {Lecture Notes in Computer Science},
    2822     year        = 2001,
    2823     pages       = {18-38}
    2824 }
    2825 
    2826 @misc{FW,
    2827     key         = {FW},
    2828     contributer = {gjditchfield@plg},
    2829     title       = {Funk \& Wagnalls Standard Desk Dictionary},
    2830     year        = 1980
    2831 }
    2832 
    2833 @book{Knuth73V1,
    2834     contributer = {pabuhr@plg},
    2835     author      = {Donald E. Knuth},
    2836     title       = {Fundamental Algorithms},
    2837     series      = {The Art of Computer Programming},
    2838     publisher   = {Addison-Wesley},
    2839     year        = 1973,
    2840     volume      = 1,
    2841     edition     = {second},
    2842 }
    2843 
    2844 @inproceedings{Strachey,
    2845     keywords    = {polymorphism},
    2846     contributer = {gjditchfield@plg},
    2847     author      = {C. Strachey},
    2848     title       = {Fundamental Concepts in Programming Languages},
    2849     booktitle   = {Lecture Notes for the International Summer School in Computer Programming},
    2850     year        = 1967,
    2851     month       = aug,
    2852     address     = {Copenhagen},
    2853     comment     = {
    2854         Defines ad-hoc and parametric polymorphism.
    2855     }
    2856 }
    2857 
    2858 @article{Eisenberg72,
    2859     keywords    = {concurrency, N-Process solution, O(N)},
    2860     contributer = {pabuhr@plg},
    2861     author      = {Murray A. Eisenberg and Michael R. McGuire},
    2862     title       = {Further Comments on {D}ijkstra's Concurrent Programming Control Problem},
    2863     journal     = cacm,
    2864     month       = nov,
    2865     year        = 1972,
    2866     volume      = 15,
    2867     number      = 11,
    2868     pages       = {999},
    2869 }
    2870 
    2871 % G
    2872 
    2873 @article{Boehm88,
    2874     keywords    = {conservative garbage collection, C},
    2875     contributer = {gjditchfield@plg},
    2876     author      = {Hans-Juergen Boehm and Mark Weiser},
    2877     title       = {Garbage Collection in an Uncooperative Environment},
    2878     journal     = spe,
    2879     month       = sep,
    2880     year        = 1988,
    2881     volume      = 18,
    2882     number      = 9,
    2883     pages       = {807-820}
    2884 }
    2885 
    2886 @manual{gcc,
    2887     keywords    = {},
    2888     contributer = {gjditchfield@plg},
    2889     title       = {GCC},
    2890     author      = {Richard M. Stallman},
    2891     organization= {Free Software Foundation},
    2892     address     = {Cambridge, MA}
    2893 }
    2894 
    2895 @article{doUpon,
    2896     keywords    = {formal verification, axiomatic semantics, control structures},
    2897     contributer = {gjditchfield@plg},
    2898     author      = {Ed Anson},
    2899     title       = {A Generalized Iterative Construct and Its Semantics},
    2900     journal     = toplas,
    2901     volume      = {9},    number = {4},
    2902     pages       = {567-581},
    2903     month       = oct, year = 1987,
    2904     comment     = {
    2905         \begin{verbatim}
    2906             do
    2907                    P1 -> L1
    2908                [] P2 -> L2
    2909             ...
    2910                [] Pm -> Lm
    2911             upon
    2912                    Q1 -> M1
    2913                [] Q2 -> M2
    2914             ...
    2915                [] qn -> mn
    2916             od
    2917         \end{verbatim}
    2918 
    2919         If there is an i such that Qi is true, execute Mi and terminate.
    2920         Otherwise, if there is an i such that Pi is true, execute Li and
    2921         repeat the loop.  Otherwise, fail.
    2922     }
    2923 }
    2924 
    2925 @article{Haskell,
    2926     keywords    = {lazy evaluation, type class},
    2927     contributer = {pabuhr},
    2928     author      = {Paul Hudak and Joseph H. Fasel},
    2929     title       = {A Gentle Introduction to Haskell},
    2930     journal     = sigplan,
    2931     volume      = 27,
    2932     number      = 5,
    2933     month       = may,
    2934     year        = 1992,
    2935     pages       = {T1-53},
    2936 }
    2937 
    2938 @manual{Go,
    2939     keywords    = {Go programming language},
    2940     contributer = {pabuhr@plg},
    2941     title       = {{Go} Programming Language},
    2942     author      = {Robert Griesemer and Rob Pike and Ken Thompson},
    2943     organization= {Google},
    2944     year        = 2009,
    2945     note        = {\href{http://golang.org/ref/spec}{http://golang.org/\-ref/\-spec}},
    2946 }
    2947 
    2948 @article{Dijkstra68a,
    2949     keywords    = {goto},
    2950     contributer = {pabuhr@plg},
    2951     author      = {Edsger W. Dijkstra},
    2952     title       = {Go To Statement Considered Harmful},
    2953     journal     = cacm,
    2954     month       = mar,
    2955     year        = 1968,
    2956     volume      = 11,
    2957     number      = 3,
    2958     pages       = {147-148},
    2959     note        = {Reprinted in \cite{Yourdon79} pp. 29--36.},
    2960 }
    2961 
    2962 @article{Choi91,
    2963     keywords    = {contra-variance, functions},
    2964     contributer = {pabuhr@plg},
    2965     author      = {Injun Choi and Michael V. Mannino},
    2966     title       = {Graph Interpretation of Methods: A Unifying Framework for Polymorphism in Object-Oriented Programming},
    2967     journal     = {OOPS Messenger},
    2968     volume      = 2,
    2969     number      = 1,
    2970     month       = jan,
    2971     year        = 1991,
    2972     pages       = {38-54},
    2973 }
    2974 
    2975 @misc{GNU-C,
    2976     keywords    = {C, ANSI C},
    2977     contributer = {pabuhr@plg},
    2978     author      = {Richard Stallman},
    2979     title       = {The Free Software Foundation's Gnu {C} Compiler},
    2980     howpublished= {Free Software Foundation, 1000 Mass Ave., Cambridge, MA, U.S.A., 02138},
    2981     year        = 1989,
    2982 }
    2983 
    2984 @article{Dijkstra:green,
    2985     keywords    = {ada},
    2986     contributer = {gjditchfield@plg},
    2987     author      = {Edsger W. Dijkstra},
    2988     title       = {On the GREEN Language submitted to the DoD},
    2989     journal     = sigplan,
    2990     year        = 1978,
    2991     month       = oct,
    2992     volume      = 13,
    2993     number      = 10,
    2994     pages       = {16-21}
    2995 }
    2996 
    2997 @inproceedings{Miller02,
    2998     keywords    = {exception handling},
    2999     contributer = {pabuhr@plg},
    3000     author      = {Robert Miller and Anand Tripathi},
    3001     title       = {The Guardian Model for Exception Handling in Distributed Systems},
    3002     booktitle   = {21st Symposium on Reliable Distributed Systems},
    3003     organization= {IEEE},
    3004     address     = {Suita, Japan},
    3005     year        = 2002,
    3006     month       = oct,
    3007     pages       = {304-313}
    3008 }
    3009 
    3010 @phdthesis{Chen09,
    3011     author      = {Jun Chen},
    3012     title       = {Guided Testing of Concurrent Programs Using Value Schedules},
    3013     school      = {University of Waterloo},
    3014     year        = 2009,
    3015     month       = sep,
    3016     address     = {Waterloo, Ontario, Canada, N2L 3G1},
    3017     note        = {\textsf{http://uwspace.uwaterloo.ca/bitstream/\-10012/\-4735/\-1/\-Chen-Jun.pdf}},
    3018 }
    3019 
    3020 @misc{GNU-C++,
    3021     keywords    = {C++, GNU C},
    3022     contributer = {pabuhr@plg},
    3023     author      = {Michael D. Tiemann},
    3024     title       = {User's Guide to GNU {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    3025     howpublished= {Free Software Foundation, 1000 Mass Ave., Cambridge, MA, U.S.A., 02138},
    3026     month       = mar,
    3027     year        = 1990,
    3028 }
    3029 
    3030 % H
    3031 
    3032 @article{Michael04a,
    3033     keywords    = {Lock-free, synchronization, concurrent programming, memory management, multiprogramming, dynamic data structures},
    3034     author      = {Maged M. Michael},
    3035     title       = {Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects},
    3036     journal     = ieeepds,
    3037     volume      = 15,
    3038     number      = 6,
    3039     month       = jun,
    3040     year        = 2004,
    3041     pages       = {491-504},
    3042     publisher   = {IEEE Press},
    3043     address     = {Piscataway, NJ, USA},
    3044 }
    3045 
    3046 @techreport{Hermes90,
    3047     keywords    = {processes, distributed computing},
    3048     contributer = {pabuhr@plg},
    3049     author      = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini},
    3050     title       = {Hermes: A Language for Distributed Computing},
    3051     institution = {IBM T. J. Watson Research Center},
    3052     address     = {Yorktown Heights, New York, U.S.A., 10598},
    3053     month       = oct,
    3054     year        = 1990,
    3055 }
    3056 
    3057 @book{Hermes91,
    3058     keywords    = {processes, distributed computing},
    3059     contributer = {pabuhr@plg},
    3060     author      = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini},
    3061     title       = {Hermes: A Language for Distributed Computing},
    3062     publisher   = {Prentice Hall},
    3063     series      = {Innovative Technology},
    3064     year        = 1991,
    3065 }
    3066 
    3067 @article{katzenelson83b,
    3068     contributer = {gjditchfield@plg},
    3069     author      = "Jacob Katzenelsen",
    3070     title       = "Higher Level Programming and Data Abstraction---A Case Study using Enhanced C",
    3071     journal     = spe,
    3072     year        = 1983,
    3073     volume      = 13,
    3074     number      = 7,
    3075     pages       = {577-596},
    3076     month       = jul
    3077 }
    3078 
    3079 @techreport{Hoare73,
    3080     keywords    = {},
    3081     contributer = {gjditchfield@plg},
    3082     author      = {C. A. R. Hoare},
    3083     title       = {Hints on Programming Language Design},
    3084     institution = {Stanford University Computer Science Department},
    3085     year        = 1973,
    3086     month       = dec,
    3087     number      = {CS-73-403},
    3088     note        = {Reprinted in \cite{pldesign}.}
    3089 }
    3090 
    3091 @article{Dijkstra71,
    3092     keywords    = {monitor, secretary},
    3093     contributer = {pabuhr@plg},
    3094     author      = {E. W. Dijkstra},
    3095     title       = {Hierarchical Ordering of Sequential Processes},
    3096     journal     = acta,
    3097     volume      = 1,
    3098     pages       = {115-138},
    3099     year        = 1971,
    3100 }
    3101 
    3102 @article{Buhr15a,
    3103     keywords    = {software solution, mutual exclusion, performance experiment},
    3104     author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
    3105     title       = {High-Performance {$N$}-Thread Software Solutions for Mutual Exclusion},
    3106     journal     = {Concurrency and Computation: Practice and Experience},
    3107     volume      = 27,
    3108     number      = 3,
    3109     pages       = {651-701},
    3110     month       = mar,
    3111     year        = 2015,
    3112 }
    3113 
    3114 @article{Ackermann28,
    3115     keywords    = {recursion, Ackermann function},
    3116     contributer = {pabuhr@plg},
    3117     author      = {Wilhelm Ackermann},
    3118     title       = {Zum Hilbertschen Aufbau der reellen Zahlen},
    3119     publisher   = {Springer},
    3120     journal     = {Mathematische Annalen},
    3121     number      = 1,
    3122     volume      = 99,
    3123     pages       = {118-133},
    3124     month       = dec,
    3125     year        = 1928,
    3126 }
    3127 
    3128 @inproceedings{typeclass,
    3129     keywords    = {Hindley/Miller type systems, Haskell},
    3130     contributer = {gjditchfield@plg},
    3131     author      = {Philip Wadler and Stephen Blott},
    3132     title       = {How to make {\em Ad-Hoc} Polymorphism Less {\em Ad-Hoc}},
    3133     booktitle   = popl,
    3134     year        = 1989,
    3135     pages       = {60-76},
    3136     organization= {Association for Computing Machinery}
    3137 }
    3138 
    3139 % I
    3140 
    3141 @book{IBM370,
    3142     keywords    = {370, IBM},
    3143     contributer = {pabuhr@plg},
    3144     key         = {IBM370},
    3145     title       = {{IBM} System/370 Principles of Operation},
    3146     publisher   = {IBM},
    3147     number      = {GA22-7000-8},
    3148     month       = oct,
    3149     year        = 1981,
    3150     edition     = {9th}
    3151 }
    3152 
    3153 @book{Icon,
    3154     keywords    = {Icon},
    3155     contributer = {pabuhr@plg},
    3156     author      = {Ralph E. Griswold and Madge T. Griswold},
    3157     title       = {The Icon Programming Language},
    3158     publisher   = {Prentice-Hall},
    3159     year        = 1983,
    3160 }
    3161 
    3162 @inproceedings{Valois94,
    3163     keywords    = {lock free, queue},
    3164     contributer = {pabuhr@plg},
    3165     author      = {John D. Valois},
    3166     title       = {Implementing Lock-Free Queues},
    3167     booktitle   = {Seventh International Conference on Parallel and Distributed Computing Systems},
    3168     address     = {Las Vegas, Nevada, U.S.A.},
    3169     year        = {1994},
    3170     pages       = {64-69},
    3171 }
    3172 
    3173 @article{Hehner81,
    3174     keywords    = {concurrency, critical section, bakery algorithm},
    3175     contributer = {pabuhr@plg},
    3176     author      = {Eric C. R. Hehner and R. K. Shyamasundar},
    3177     title       = {An Implementation of {P} and {V}},
    3178     journal     = ipl,
    3179     year        = 1981,
    3180     month       = aug,
    3181     volume      = 12,
    3182     number      = 4,
    3183     pages       = {196-198},
    3184 }
    3185 
    3186 @incollection{Steenkiste91,
    3187     keywords    = {lisp},
    3188     contributer = {gjditchfield@plg},
    3189     author      = {Peter A. Steenkiste},
    3190     title       = {The Implementation of Tags and Run-Time Checking},
    3191     booktitle   = {Topics in Advanced Language Implementation},
    3192     pages       = {3-24},
    3193     year        = 1991,
    3194     editor      = {Peter Lee},
    3195     chapter     = {1},
    3196     publisher   = {The MIT Press}
    3197 }
    3198 
    3199 @techreport{Roberts89,
    3200     keywords    = {},
    3201     contributer = {pabuhr@plg},
    3202     author      = {Eric S. Roberts},
    3203     title       = {Implementing Exceptions in {C}},
    3204     institution = {Digital Systems Research Center},
    3205     address     = {130 Lytton Avenue, Palo Alto, California, 94301},
    3206     number      = {40},
    3207     month       = mar,
    3208     year        = 1989,
    3209 }
    3210 
    3211 @mastersthesis{Bilson03,
    3212     keywords    = {Cforall, parametric polymorphism, overloading},
    3213     contributer = {pabuhr@plg},
    3214     author      = {Richard C. Bilson},
    3215     title       = {Implementing Overloading and Polymorphism in Cforall},
    3216     school      = {School of Computer Science, University of Waterloo},
    3217     year        = 2003,
    3218     address     = {Waterloo, Ontario, Canada, N2L 3G1},
    3219     note        = {\href{http://plg.uwaterloo.ca/theses/BilsonThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-BilsonThesis.pdf}},
    3220 }
    3221 
    3222 @article{Buhr05b,
    3223     keywords    = {monitor, automatic signal, implicit signal},
    3224     contributer = {pabuhr@plg},
    3225     author      = {Peter A. Buhr and Ashif S. Harji},
    3226     title       = {Implicit-signal monitors},
    3227     journal     = toplas,
    3228     volume      = 27,
    3229     number      = 6,
    3230     month       = nov,
    3231     year        = 2005,
    3232     issn        = {0164-0925},
    3233     pages       = {1270--1343},
    3234     doi         = {http://doi.acm.org/10.1145/1108970.1108975},
    3235     publisher   = {ACM Press},
    3236     address     = {New York, NY, USA},
    3237 }
    3238 
    3239 @article{Baker77,
    3240     author      = {Henry C. Baker, Jr. and Carl Hewitt},
    3241     title       = {The Incremental Garbage Collection of Processes},
    3242     journal     = {SIGART Bulletin},
    3243     publisher   = {ACM},
    3244     address     = {New York, NY, USA},
    3245     month       = aug,
    3246     year        = 1977,
    3247     pages       = {55-59},
    3248     issn        = {0163-5719},
    3249     doi         = {http://doi.acm.org/10.1145/872736.806932},
    3250  }
    3251 
    3252 @book{Algol68,
    3253     keywords    = {Algol68},
    3254     contributer = {pabuhr@plg},
    3255     author      = {C. H. Lindsey and S. G. van der Meulen},
    3256     title       = {Informal Introduction to ALGOL 68},
    3257     publisher   = {North-Holland},
    3258     address     = {London},
    3259     year        = 1977,
    3260 }
    3261 
    3262 @inproceedings{Cook90,
    3263     keywords    = {f-bounded polymorhpism, lambda calculus},
    3264     contributer = {gjditchfield@plg},
    3265     author      = {William R. Cook and Walter L. Hill and Peter S. Canning},
    3266     title       = {Inheritance is Not Subtyping},
    3267     booktitle   = popl,
    3268     year        = 1990,
    3269     pages       = {125-135},
    3270     organization= {Association for Computing Machinery},
    3271     abstract    = {
    3272         In typed object-oriented languages the subtype relation is
    3273         typically based on the inheritance hierarchy.  This approach,
    3274         however, leads either to insecure type-systems or to restrictions
    3275         on inheritance that make it less flexible than untyped Smalltalk
    3276         inheritance.  We present a new typed model of inheritance that
    3277         allows more of the flexibility of Smalltalk inheritance within a
    3278         statically-typed system.  Significant features of our analysis are
    3279         the introduction of polymorphism into the typing of inheritance and
    3280         the uniform application of inheritance to objects, classes and
    3281         types.  The resulting notion of {\em type inheritance} allows us to
    3282         show that the type of an inherited object is an inherited type but
    3283         not always a subtype.
    3284     }
    3285 }
    3286 
    3287 @inproceedings{MMR92,
    3288     keywords    = {},
    3289     contributer = {gjditchfield@plg},
    3290     author      = {Robert E. Minnear and Patrick A. Muckelbauer and Vincent F. Russo},
    3291     title       = {Integrating the {Sun Microsystems} {XDR/RPC} Protocols
    3292                   into the {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Stream Model},
    3293     booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference Proceedings},
    3294     year        = 1992,
    3295     month       = aug,
    3296     pages       = {295-312},
    3297     organization= {USENIX Association},
    3298     address     = {2590 Ninth Street, Suite 215, Berkeley, CA 94710},
    3299     abstract    = {
    3300         This paper reports our experiences integrating the Sun Microsystems
    3301         RPC and XDR protocol specifications into the C++ model of
    3302         input/output streams.  As part of the {\it Renaissance} operating
    3303         system project, we wish to construct network servers and clients,
    3304         written in C++, which interoperate with existing UNIX clients
    3305         and servers.  We discovered that, although it would be possible to
    3306         re-implement the procedural based XDR/RPC implementation
    3307         distributed by Sun Microsystems in C++, it is far cleaner to
    3308         integrate the protocols with the C++ I/O stream model.  We
    3309         feel the resulting model provides a cleaner way of implementing RPC
    3310         clients and servers without losing functionality or compatibility
    3311         with existing clients and servers.
    3312     }
    3313 }
    3314 
    3315 @inproceedings{Zuo08,
    3316     keywords    = {shared memory systems,intelligent multiport memory,multiprocessors systems,shared memory system},
    3317     author      = {Wang Zuo and Wang Zuo and Li Jiaxing},
    3318     title       = {An Intelligent Multi-Port Memory},
    3319     booktitle   = {Symposium on Intelligent Information Technology Application Workshops, Shanghai, China},
    3320     month       = dec,
    3321     year        = 2008,
    3322     pages       = {251-254},
    3323     publisher   = {IEEE Computer Society},
    3324     address     = {Los Alamitos, CA, USA},
    3325 }
    3326 
    3327 @book{Francez96,
    3328     keywords    = {await, formal},
    3329     contributer = {pabuhr@plg},
    3330     author      = {Nissim Francez and Ira R. Forman},
    3331     title       = {Interacting Processes: A Multiparty Approach to Coordinated Distributed Programming},
    3332     publisher   = {Addison-Wesley},
    3333     series      = {ACM Press Books},
    3334     year        = 1996,
    3335 }
    3336 
    3337 @article{Labreche90,
    3338     keywords    = {concurrency, C++},
    3339     contributer = {pabuhr@plg},
    3340     author      = {Pierre Labr{\`{e}}che},
    3341     title       = {Interactors: A Real-Time Executive with Multiparty Interactions in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    3342     journal     = sigplan,
    3343     volume      = 25,
    3344     number      = 4,
    3345     month       = apr,
    3346     year        = 1990,
    3347     pages       = {20-32},
    3348 }
    3349 
    3350 @inproceedings{interfaces,
    3351     keywords    = {parameterized interfaces, classes, recursion/inheritance},
    3352     contributer = {gjditchfield@plg},
    3353     author      = {Peter S. Canning and William R. Cook and Walter L. Hill and
    3354         Walter G. Olthoff},
    3355     title       = {Interfaces for Strongly-Typed Object-Oriented Programming},
    3356     crossref    = "OOPSLA89",
    3357     pages       = {457-467},
    3358     abstract    = {
    3359         This paper develops a system of explicit interfaces for
    3360         object-oriented programming.  The system provides the benefits of
    3361         module interfaces found in languages like Ada and Modula-2 while
    3362         preserving the expressiveness that gives untyped object-oriented
    3363         languages like Smalltalk their flexibility.  Interfaces are
    3364         interpreted as polymorphic types to make the system sufficiently
    3365         powerful.  We use interfaces to analyze the properties of
    3366         inheritance, and identify three distinct kinds of inheritance in
    3367         object-oriented programming, corresponding to objects, classes, and
    3368         interfaces, respectively.  Object interfaces clarify the
    3369         distinction between interface containment and inheritance and give
    3370         insight into limitations caused by equating the notions of type and
    3371         class in many typed object-oriented programming languages.
    3372         Interfaces also have practical consequences for design,
    3373         specification, and maintenance of object-oriented systems.
    3374     }
    3375 }
    3376 
    3377 @phdthesis{Girard72,
    3378     keywords    = {universal quantification},
    3379     contributer = {gjditchfield@plg},
    3380     author      = {J.-Y. Girard},
    3381     title       = {Interpretation fonctionelle et elimination des coupures de
    3382         l'arithmetique d'ordre superieur},
    3383     school      = {Universite Paris},
    3384     year        = {1972}
    3385 }
    3386 
    3387 @article{Karaorman93,
    3388     keywords    = {Eiffel, concurrency libraries},
    3389     contributer = {pabuhr@plg},
    3390     author      = {Murat Karaorman and John Bruno},
    3391     title       = {Introducing Concurrency to a Sequential Language},
    3392     journal     = cacm,
    3393     month       = sep,
    3394     year        = 1993,
    3395     volume      = 36,
    3396     number      = 9,
    3397     pages       = {103-116}
    3398 }
    3399 
    3400 @book{Corman92,
    3401     keywords    = {PRAM, parallel algorithms},
    3402     contributer = {pabuhr@plg},
    3403     author      = {Thomas H. Cormen and Charles E. Leiserson and Ronald L. Rivest},
    3404     title       = {Introduction to Algorithms},
    3405     publisher   = {MIT Press/McGraw-Hill},
    3406     series      = {Electrical Engineering and Computer Science Series},
    3407     year        = 1992,
    3408 }
    3409 
    3410 @book{Hopcroft79,
    3411     keywords    = {finite-state machine, push-dowm automata},
    3412     contributer = {pabuhr@plg},
    3413     author      = {John E. Hopcroft and Jeffrey D. Ullman},
    3414     title       = {Introduction to Automata Theory, Languages and Computation},
    3415     publisher   = {Addison-Wesley},
    3416     year        = 1979,
    3417 }
    3418 
    3419 @techreport{walker87,
    3420     keywords    = {CCS},
    3421     contributer = {gjditchfield@plg},
    3422     author      = {David Walker},
    3423     title       = {Introduction to a Calculus of Communicating Systems},
    3424     institution = {Laboratory for Foundations of Computer Science},
    3425     year        = 1987,
    3426     address     = {Department of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ},
    3427     month       = jun,
    3428     number      = {ECS-LFCS-87-22},
    3429 }
    3430 
    3431 @article{katzenelson83a,
    3432     author      = {Jacob Katzenelson},
    3433     title       = {Introduction to Enhanced C (EC)},
    3434     journal     = spe,
    3435     volume      = 13,
    3436     number      = 7,
    3437     year        = 1983,
    3438     month       = jul,
    3439     pages       = {551-576},
    3440 }
    3441 
    3442 @book{Deitel90,
    3443     keywords    = {concurrency, operating systems},
    3444     contributer = {pabuhr@plg},
    3445     author      = {Harvey M. Deitel},
    3446     title       = {An Introduction to Operating Systems},
    3447     publisher   = {Addison-Wesley},
    3448     year        = 1990,
    3449     edition     = {second},
    3450 }
    3451 
    3452 @techreport{Birrell89,
    3453     keywords    = {threads, monitors},
    3454     contributer = {pabuhr@plg},
    3455     author      = {Andrew D. Birrell},
    3456     title       = {An Introduction to Programming with Threads},
    3457     institution = {Digital Systems Research Center},
    3458     address     = {130 Lytton Avenue, Palo Alto, California, 94301},
    3459     number      = {35},
    3460     month       = jan,
    3461     year        = 1989,
    3462     note        = {{\textsf{http://www.hpl.hp.com/\-techreports/\-Compaq-DEC/\-SRC-RR-35.html}}},
    3463 
    3464 }
    3465 
    3466 @article{t/o,
    3467     keywords    = {Trellis/Owl},
    3468     contributer = {gjditchfield@plg},
    3469     author      = {Craig Schaffert and Topher Cooper and Bruce Bullis and Mike Kilian and Carrie Wilpot},
    3470     title       = {An Introduction to Trellis/Owl},
    3471     journal     = sigplan,
    3472     volume      = 21,
    3473     number      = 11,
    3474     year        = 1986,
    3475     month       = nov,
    3476     pages       = {9-16},
    3477 }
    3478 
    3479 @inproceedings{Hibbard77,
    3480     keywords    = {algol-68, concurrency},
    3481     contributer = {pabuhr@plg},
    3482     author      = {Peter G. Hibbard and P. Knueven and B. W. Leverett},
    3483     title       = {Issues in the Efficient Implementation and Use of Multiprocessing in {Algol} 68},
    3484     booktitle   = {Proceedings of the 5th Annual iii Conference},
    3485     address     = {Guidel, France},
    3486     month       = may,
    3487     year        = 1977,
    3488     pages       = {203-221}
    3489 }
    3490 
    3491 @inproceedings{Miller97,
    3492     keywords    = {exception handling, software-engineering},
    3493     contributer = {pabuhr@plg},
    3494     author      = {Robert Miller and Anand Tripathi},
    3495     title       = {Issues with Exception Hnadling in Object-Oriented Systems},
    3496     booktitle   = {ECOOP'97},
    3497     publisher   = {Springer-Verlag},
    3498     volume      = 1241,
    3499     series      = {Lecture Notes in Computer Science},
    3500     year        = 1997,
    3501     pages       = {85-103}
    3502 }
    3503    
    3504 @article{Murer96,
    3505     keywords    = {interators, generators, cursors},
    3506     contributer = {pabuhr@plg},
    3507     author      = {Stephan Murer and Stephen Omohundro and David Stoutamire and Clemens Szyperski},
    3508     title       = {Iteration Abstraction in Sather},
    3509     journal     = toplas,
    3510     month       = jan,
    3511     year        = 1996,
    3512     volume      = 18,
    3513     number      = 1,
    3514     pages       = {1-15},
    3515 }
    3516 
    3517 % J
    3518                  
    3519 @book{Java,
    3520     keywords    = {Java},
    3521     contributer = {pabuhr@plg},
    3522     author      = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha},
    3523     title       = {The {Java} Language Specification},
    3524     publisher   = {Addison-Wesley},
    3525     year        = 2000,
    3526     edition     = {second},
    3527 }
    3528 
    3529 @manual{Java8,
    3530     keywords    = {Java SE 8},
    3531     contributer = {pabuhr@plg},
    3532     author      = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha and Alex Buckley},
    3533     title       = {The {Java} Language Specification},
    3534     publisher   = {Oracle},
    3535     year        = 2015,
    3536     edition     = {Java SE 8},
    3537 }
    3538 
    3539 @manual{JUC,
    3540     keywords    = {Java concurrency library},
    3541     contributer = {pabuhr@plg},
    3542     title       = {java.util.concurrency},
    3543     author      = {Doug Lea},
    3544     organization= {Oracle},
    3545     year        = 2014,
    3546     note        = {\href{http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/package-summary.html}{\textsf{http://docs.oracle.com/\-javase/7/\-docs/\-api/\-java/\-util/\-concurrent/\-package-summary.html}}},
    3547 }
    3548 
    3549 % K
    3550 
    3551 @article{Duggan96,
    3552     keywords    = {concurrency, critical section},
    3553     contributer = {pabuhr@plg},
    3554     author      = {Dominic Duggan and Gordon V. Cormack and John Ophel},
    3555     title       = {Kinded Type Inference for Parametric Overloading},
    3556     journal     = acta,
    3557     volume      = 33,
    3558     number      = 1,
    3559     year        = 1996,
    3560     pages       = {21-68},
    3561 }
    3562 
    3563 @article{Peter35,
    3564     keywords    = {recursion, Ackermann function},
    3565     contributer = {pabuhr@plg},
    3566     author      = {R{\'{o}}zsa P{\'{e}}ter},
    3567     title       = {Konstruktion nichtrekursiver Funktionen},
    3568     publisher   = {Springer},
    3569     journal     = {Mathematische Annalen},
    3570     number      = 111,
    3571     volume      = 1,
    3572     pages       = {42-60},
    3573     month       = dec,
    3574     year        = 1935,
    3575 }
    3576 
    3577 % L
    3578 
    3579 @TechReport{WVWR88:L,
    3580     contributer = {gjditchf@plg},
    3581     author      = {Hanno Wupper and Jan Vytopil and Martin Wieczorek and Dick de Reus},
    3582     title       = {{L}_{3333}: A Simple Language with Static Typing of Hard Real-Time Constraints},
    3583     institution = {Department of Informatics, Faculty of Science, Catholic University Nijmegen},
    3584     year        = 1988,
    3585     number      = {88-3},
    3586     address     = {Katholieke Universiteit Nijmegen, Fakulteit der Wiskunde
    3587                    en Natuurwetenschappen, Infomatica V, Toernooiveld, 6512
    3588                    ED Nijmegen, The Netherlands},
    3589     month       = apr,
    3590     annote      = {A polymorphic typed lambda calculus with \begin{itemize}
    3591                    \item A trivial type, ``!'', with a single element.
    3592                    \item Labelled types, distinct from each other.
    3593                    ``!False'' and ``!True'' are distinct types, each
    3594                    containing a single value serving as boolean false and
    3595                    true.  ``2'' is an abbreviation for ``!0 succ succ'', the
    3596                    type containing only 2.
    3597                    \item Disjunction types ``\{| !False, !True |\}''.  Interval
    3598                    types are abbreviations for disjunctions.
    3599                    \item Conjunction types ``\{\& real Re, real Im \&\}'', where
    3600                    ``Re'' and ``Im'' are type labels that distinguish between the
    3601                    fields.
    3602                    \item Pair types ``\{^ a, b ^\}'', for use in recursive types
    3603                    and dyadic infix functions.
    3604                    \item Function types, universal types, existential types,
    3605                    and subtyping (viewed as coercion), as in Fun.
    3606                    \end{itemize}
    3607                    Disjunctions and conjunctions types are associative and
    3608                    commutative (i.e. flat).  Each type has a matching
    3609                    constructor.  Functions use pattern matching on type
    3610                    labels to strip labels and extract conjunction fields:
    3611                    \begin{verbatim}
    3612                    \lambda n {0...1000000 Guilders}. ... n ...
    3613                    -- both argument and n are amounts in Guilders.
    3614                    \lambda n {0...1000000} Guilders. ... n ...
    3615                    -- argument in Guilders, but n is in 0...1000000.
    3616                    \end{verbatim}
    3617                    ``Function bundles'' (conjunctions of functions), applied
    3618                    to arguments, replace Dijkstra's guarded if...fi, but the
    3619                    bundles are first-class and the guards are part of their
    3620                    type.
    3621 
    3622                    The same trick used to define the type ``2'' is used to
    3623                    move absolute times into the type system, to allow static
    3624                    checking. ``0`'' denotes a time before the system begins
    3625                    execution.  ``\#`'' denotes ``eventually'', and ``?`''
    3626                    denotes ``maybe never''.  ``a\\t'' and ``a@t'' are types
    3627                    of a value of type a that will be available no later
    3628                    (earlier) than time t.  Universals and existentials use
    3629                    subtyping to parameterize functions by start time:
    3630                    \begin{verbatim}
    3631                    let f {\forall t > \#`}. {a\t} \on {b\t+d}
    3632                    f{then} y -- argument y must be available at time ``then''.
    3633                    \end{verbatim}
    3634                    Functions can return before their arguments are available
    3635                    if they don't use them.  However, function {\em bundles}
    3636                    can't return until their result type is known, so the
    3637                    lower and upper time bounds of the bundle are the
    3638                    second-last upper bound of the component functions: at
    3639                    that time, there is only one alternative left.
    3640 
    3641                    Explicit time parameterization allows slack in time
    3642                    specification.  Tools could point out slack or determine
    3643                    degree of parallelism.}
    3644 }
    3645 
    3646 @mastersthesis{Clarke90,
    3647     keywords    = {concurrency, postponing requests},
    3648     contributer = {pabuhr@plg},
    3649     author      = {Charles L. A. Clarke},
    3650     title       = {Language and Compiler Support for Synchronous Message Passing Architectures},
    3651     school      = {University of Waterloo},
    3652     year        = 1990,
    3653     address     = {Waterloo, Ontario, Canada, N2L 3G1}
    3654 }
    3655 
    3656 @article{Tennent77,
    3657     keywords    = {abstraction, correspondence, Pascal},
    3658     contributer = {gjditchfield@plg},
    3659     author      = {R. D. Tennent},
    3660     title       = {Language Design Methods Based on Semantic Principles},
    3661     journal     = acta,
    3662     year        = 1977,
    3663     volume      = 8,
    3664     number      = 2,
    3665     pages       = {97-112},
    3666     note        = {reprinted in \cite{pldesign}},
    3667     abstract    = {
    3668         Two language design methods based on principles derived from the
    3669         denotational approach to programming language semantics are
    3670         described and illustrated by an application to the language Pascal.
    3671         The principles are, firstly, the correspondence between parametric
    3672         and declarative mechanisms and secondly, a principle of abstraction
    3673         for programming languages adapted from set theory.  Several useful
    3674         extensions and generalizations of Pascal emerge by applying these
    3675         principles, including a solution to the array parameter problem,
    3676         and a modularization facility.
    3677     },
    3678 }
    3679 
    3680 @article{Liskov86,
    3681     keywords    = {synchronous communication, concurrency},
    3682     contributer = {pabuhr@plg},
    3683     author      = {Barbara Liskov and Maurice Kerlihy and Lucy Gilbert},
    3684     title       = {Limitations of Synchronous Communication with Static
    3685                    Process Structure in Languages for Distributed Computing},
    3686     journal     = {},
    3687     volume      = {},
    3688     number      = {},
    3689     month       = {},
    3690     year        = {},
    3691     pages       = {},
    3692 }
    3693 
    3694 @article{Linda,
    3695     keywords    = {Linda, concurrency},
    3696     contributer = {pabuhr@plg},
    3697     author      = {Nicholas Carriero and David Gelernter},
    3698     title       = {Linda in Context},
    3699     journal     = cacm,
    3700     volume      = 32,
    3701     number      = 4,
    3702     month       = apr,
    3703     year        = 1989,
    3704     pages       = {444-458}
    3705 }
    3706 
    3707 @book{Weissman67,
    3708     keywords    = {lisp},
    3709     author      = {Clark Weissman},
    3710     title       = {Lisp 1.5 Primer},
    3711     publisher   = {Dickenson Publishing},
    3712     year        = 1967,
    3713 }
    3714 
    3715 @article{Sundell08,
    3716     keywords    = {lock free, deque},
    3717     contributer = {pabuhr@plg},
    3718     author      = {H{\r{a}}kan Sundell and Philippas Tsigas},
    3719     title       = {Lock-free Deques and Doubly Linked Lists},
    3720     journal     = {J. Parallel Distrib. Comput.},
    3721     volume      = 68,
    3722     number      = 7,
    3723     year        = 2008,
    3724     pages       = {1008-1020},
    3725 }
    3726 
    3727 @article{Cormack89,
    3728     keywords    = {parsing, LR, error recovery},
    3729     contributer = {pabuhr@plg},
    3730     author      = {Gordon V. Cormack},
    3731     title       = {An {LR} Substring Parser for Noncorrecting Syntax Error Recovery},
    3732     journal     = sigplan,
    3733     volume      = 24,
    3734     number      = 7,
    3735     month       = jul,
    3736     year        = 1989,
    3737     pages       = {161-169},
    3738     note        = {Proceedings of the {SIGPLAN}~'89 Conference on Programming Language Design and Implementation}
    3739 }
    3740 
    3741 % M
    3742 
    3743 @book{M68K,
    3744     keywords    = {M680XX, Motorola},
    3745     contributer = {pabuhr@plg},
    3746     key         = {Motorola},
    3747     title       = {M68000 Family Programmer's Reference Manual},
    3748     publisher   = {Motorola},
    3749     year        = 1992,
    3750 }
    3751 
    3752 @article{c++libs,
    3753     keywords    = {directory structure},
    3754     contributer = {gjditchfield@plg},
    3755     author      = {J. M. Coggins and G. Bollella},
    3756     title       = {Managing {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Libraries},
    3757     journal     = sigplan,
    3758     year        = 1989,
    3759     month       = jun, volume = 24, number = 6, pages = {37-48},
    3760     abstract    = {
    3761         This paper describes a scheme we have used to manage a large
    3762         library written in the C++ language.  The scheme imposes a
    3763         directory structure, and represents dependency hierarchy in a
    3764         globally accessible file we call the 'prelude' file.  We also
    3765         discuss the structure of the description files (makefiles) used
    3766         with the UNIX options we have found to be useful in reducing the
    3767         size of the library, and how to minimize recompilation time after
    3768         trivial changes to the source code of the library.
    3769     }
    3770 }
    3771 
    3772 @inproceedings{mprof,
    3773     keywords    = {malloc},
    3774     contributer = {gjditchfield@plg},
    3775     author      = {Benjamin Zorn and Paul Hilfinger},
    3776     title       = {A Memory Allocation Profiler for {C} and Lisp Programs},
    3777     booktitle   = {Summer 1988 {USENIX} proceedings},
    3778     year        = 1988
    3779 }
    3780 
    3781 @manual{MMTk,
    3782     keywords    = {Java memory management},
    3783     contributer = {pabuhr@plg},
    3784     title       = {MMTk: The Memory Management Toolkit},
    3785     author      = {Steve Blackburn and Robin Garner and Daniel Frampton},
    3786     month       = sep,
    3787     year        = 2006,
    3788     note        = {\textsf{http://cs.anu.edu.au/\-\char`\~Robin.Garner/\-mmtk-guide.pdf}},
    3789 }
    3790 
    3791 @article{Adve10,
    3792     keywords    = {Java memory management},
    3793     contributer = {pabuhr@plg},
    3794     author      = {Sarita V. Adve and Hans-J. Boehm},
    3795     title       = {Memory Models: A Case for Rethinking Parallel Languages and Hardware},
    3796     journal     = cacm,
    3797     volume      = 53,
    3798     number      = 8,
    3799     month       = aug,
    3800     year        = 2010,
    3801     pages       = {90-101},
    3802     publisher   = {ACM},
    3803     address     = {New York, NY, USA},
    3804 }
    3805 @techreport{Mesa,
    3806     keywords    = {monitors, packages},
    3807     contributer = {pabuhr@plg},
    3808     author      = {James G. Mitchell and William Maybury and Richard Sweet},
    3809     title       = {Mesa Language Manual},
    3810     institution = {Xerox Palo Alto Research Center},
    3811     number      = {CSL--79--3},
    3812     month       = apr,
    3813     year        = 1979
    3814 }
    3815 
    3816 @article{Andrews89,
    3817     keywords    = {semaphore, split-binary, baton},
    3818     contributer = {pabuhr@plg},
    3819     author      = {Gregory R. Andrews},
    3820     title       = {A Method for Solving Synronization Problems},
    3821     journal     = scp,
    3822     volume      = 13,
    3823     number      = 4,
    3824     month       = dec,
    3825     year        = 1989,
    3826     pages       = {1-21},
    3827 }
    3828 
    3829 @inproceedings{Mitchell78,
    3830     keywords    = {Mesa},
    3831     contributer = {pabuhr@plg},
    3832     author      = {James G. Mitchell},
    3833     title       = {Mesa: A Designer's User Perspective},
    3834     booktitle   = {Spring CompCom 78},
    3835     organization= {Sixteenth IEEE Computer Society International Conference},
    3836     address     = {San Francisco, California, U.S.A.},
    3837     month       = feb,
    3838     year        = 1978,
    3839     pages       = {36-39},
    3840     note        = {IEEE Catalog No. 78CH1328-4C},
    3841 }
    3842 
    3843 @article{Gentleman81,
    3844     keywords    = {messages, concurrency},
    3845     contributer = {pabuhr@plg},
    3846     author      = {W. Morven Gentleman},
    3847     title       = {Message Passing between Sequential Processes:
    3848                    the Reply Primitive and the Administrator Concept},
    3849     journal     = spe,
    3850     month       = may,
    3851     year        = 1981,
    3852     volume      = 11,
    3853     number      = 5,
    3854     pages       = {435-466}
    3855 }
    3856 
    3857 @article{Cormack88,
    3858     keywords    = {concurrency},
    3859     contributer = {pabuhr@plg},
    3860     author      = {G. V. Cormack},
    3861     title       = {A Micro Kernel for Concurrency in C},
    3862     journal     = spe,
    3863     month       = may,
    3864     year        = 1988,
    3865     volume      = 18,
    3866     number      = 4,
    3867     pages       = {485-491}
    3868 }
    3869 
    3870 @article{Buhr90a,
    3871     keywords    = {concurrency, light-weight process, shared memory},
    3872     contributer = {pabuhr@plg},
    3873     author      = {Peter A. Buhr and Richard A. Stroobosscher},
    3874     title       = {The $\mu${S}ystem: Providing Light-Weight Concurrency on Shared-Memory Multiprocessor Computers Running {UNIX}},
    3875     journal     = spe,
    3876     volume      = 20,
    3877     number      = 9,
    3878     month       = sep,
    3879     year        = 1990,
    3880     pages       = {929-963},
    3881 }
    3882 
    3883 @techreport{uSystem,
    3884     keywords    = {C, concurrency, light-weight process, shared memory},
    3885     contributer = {pabuhr@plg},
    3886     author      = {Peter A. Buhr and Hamish I. Macdonald and Richard A. Stroobosscher},
    3887     title       = {$\mu${S}ystem Annotated Reference Manual, Version 4.4.3},
    3888     institution = {Department of Computer Science, University of Waterloo},
    3889     address     = {Waterloo, Ontario, Canada, N2L 3G1},
    3890     month       = sep,
    3891     year        = 1994,
    3892     note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-uSystem/\-uSystem.ps.gz}}},
    3893 }
    3894 
    3895 @book{Mips4000,
    3896     key         = {Mips4000},
    3897     title       = {MIPS R4000 Microprocessor User's Manual},
    3898     publisher   = {MIPS Computer Systems Inc},
    3899     year        = 1991,
    3900 }
    3901 
    3902 @inproceedings{Mjolner,
    3903     keywords    = {Mjolner, hierarchical windows},
    3904     contributer = {pabuhr@plg},
    3905     author      = {G\"{o}rel Hedin and Boris Magnusson},
    3906     title       = {The Mj{\o}lner Environment: Direct Interaction with Abstractions},
    3907     booktitle   = {Proceedings of the European Conference on Object Oriented Programming},
    3908     organization= {ECOOP'88},
    3909     publisher   = {Springer-Verlag},
    3910     volume      = 322,
    3911     editor      = {S. Gjessing and K. Nygaard},
    3912     address     = {Oslo, Norway},
    3913     month       = aug,
    3914     year        = 1988,
    3915     pages       = {41-54},
    3916     note        = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
    3917 }
    3918 
    3919 @article{Skillicorn98,
    3920     keywords    = {parallel models},
    3921     contributer = {pabuhr@plg},
    3922     author      = {David B. Skillicorn and Domenico Talia},
    3923     title       = {Models and Languages for Parallel Computation},
    3924     journal     = acmcs,
    3925     volume      = 30,
    3926     number      = 2,
    3927     month       = jun,
    3928     year        = 1998,
    3929     pages       = {123-169},
    3930 }
    3931 
    3932 @article{Werther96,
    3933     keywords    = {C++, language syntax},
    3934     contributer = {pabuhr@plg},
    3935     author      = {Ben Werther and Damian Conway},
    3936     title       = {A Modest Proposal: {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Resyntaxed},
    3937     journal     = sigplan,
    3938     volume      = 31,
    3939     number      = 11,
    3940     month       = nov,
    3941     year        = 1996,
    3942     pages       = {74-82},
    3943 }
    3944 
    3945 @book{Alexandrescu01,
    3946     keywords    = {c design-patterns programming},
    3947     contributer = {pabuhr@plg},
    3948     author      = {Andrei Alexandrescu},
    3949     title       = {Modern C++ Design: Generic Programming and Design Patterns Applied},
    3950     publisher   = {Addison-Wesley Professional},
    3951     month       = feb,
    3952     year        = 2001,
    3953     isbn        = {0201704315},
    3954 }
    3955 
    3956 @book{Tanenbaum92,
    3957     keywords    = {concurrency, operating systems},
    3958     contributer = {pabuhr@plg},
    3959     author      = {Andrew S. Tanenbaum},
    3960     title       = {Modern Operating Systems},
    3961     publisher   = {Prentice-Hall},
    3962     year        = 1992,
    3963 }
    3964 
    3965 @article{Wirth77,
    3966     keywords    = {modules, coroutines},
    3967     contributer = {pabuhr},
    3968     author      = {Niklaus Wirth},
    3969     title       = {Modula: a Language for Modular Multiprogramming},
    3970     journal     = spe,
    3971     month       = {January--February},
    3972     year        = 1977,
    3973     volume      = 7,
    3974     number      = 1,
    3975     pages       = {3-35},
    3976 }
    3977 
    3978 @book{Harbison92,
    3979     contributer = {mhcoffin},
    3980     author      = {Samuel P. Harbison},
    3981     title       = {Modula-3},
    3982     publisher   = {Prentise Hall, Inc.},
    3983     year        = {1992},
    3984     comment     = {This is a textbook for learning Modula-3.}
    3985 }
    3986 
    3987 @techreport{Modula-3:old,
    3988     keywords    = {Modula-3, inheritance, type extension},
    3989     contributer = {gjditchfield@plg},
    3990     author      = {Luca Cardelli and James Donahue and Lucille Glassman and Mick
    3991                    Jordan and Bill Kalsow and Greg Nelson},
    3992     title       = {Modula-3 Report},
    3993     institution = {Systems Research Center},
    3994     address     = {130 Lytton Avenue, Palo Alto, California  94301},
    3995     month       = aug,
    3996     year        = 1988,
    3997     number      = 31
    3998 }
    3999  
    4000 @article{Dueck90,
    4001     keywords    = {attribute grammars},
    4002     contributer = {pabuhr@plg},
    4003     author      = {Gerald D. P. Dueck and Gordon V. Cormack},
    4004     title       = {Modular Attribute Grammars},
    4005     journal     = {The Computer Journal},
    4006     month       = apr,
    4007     year        = 1990,
    4008     volume      = 33,
    4009     number      = 2,
    4010     pages       = {164-172},
    4011 }
    4012 
    4013 @article{Yemini85,
    4014     keywords    = {exception handling},
    4015     contributer = {pabuhr@plg},
    4016     author      = {Shaula Yemini and Daniel M. Berry},
    4017     title       = {A Modular Verifiable Exception-Handling Mechanism},
    4018     journal     = toplas,
    4019     month       = apr,
    4020     year        = 1985,
    4021     volume      = 7,
    4022     number      = 2,
    4023     pages       = {214-243},
    4024 }
    4025 
    4026 @article{Buhr95b,
    4027     keywords    = {concurrency, monitors, classification},
    4028     contributer = {pabuhr@plg},
    4029     author      = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
    4030     title       = {Monitor Classification},
    4031     journal     = acmcs,
    4032     volume      = 27,
    4033     number      = 1,
    4034     month       = mar,
    4035     year        = 1995,
    4036     pages       = {63-107},
    4037 }
    4038 
    4039 @article{Hoare74,
    4040     keywords    = {monitor},
    4041     contributer = {pabuhr@plg},
    4042     author      = {C. A. R. Hoare},
    4043     title       = {Monitors: An Operating System Structuring Concept},
    4044     journal     = cacm,
    4045     volume      = 17,
    4046     number      = 10,
    4047     month       = oct,
    4048     year        = 1974,
    4049     pages       = {549-557},
    4050     annote      = {
    4051     }
    4052 }
    4053 
    4054 @inbook{Buhr99a,
    4055     keywords    = {concurrency, monitors, classification},
    4056     contributer = {pabuhr@plg},
    4057     author      = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
    4058     title       = {Encyclopedia of Computer Science and Technology},
    4059     chapter     = {Monitor Taxonomy},
    4060     publisher   = {Marcel Dekker, Inc},
    4061     volume      = {40, supplement 25},
    4062     year        = 1999,
    4063     pages       = {191-212},
    4064 }
    4065 %    editor     = {Allen Kent and James G. Williams},
    4066 
    4067 @manual{MPI,
    4068     keywords    = {MPI},
    4069     contributer = {pabuhr@plg},
    4070     title       = {MPI: A Message-Passing Interface Standard, Version 3.1},
    4071     organization= {Message Passing Interface Forum},
    4072     address     = {University of Tennessee, Knoxville, Tennessee},
    4073     month       = jun,
    4074     year        = 2015,
    4075     note        = {\href{http://www.mpi-forum.org/docs/mpi-3.1/mpi31-report.pdf}{\textsf{http://www.mpi-forum.org/\-docs/\-mpi-3.1/\-mpi31-report.pdf}}},
    4076 }
    4077 
    4078 @article{multilisp,
    4079     keywords    = {futures, scheme},
    4080     contributer = {gjditchfield@plg},
    4081     author      = {Halstead, Jr.,Robert H.},
    4082     title       = {Multilisp: A Language for Concurrent Symbolic Programming},
    4083     journal     = toplas,
    4084     volume      = 7,
    4085     number      = 4,
    4086     pages       = {501-538},
    4087     month       = oct,
    4088     year        = 1985,
    4089     comment     = {
    4090         (future E) begins evaluating the expression E, and
    4091         returns a ``future'' representing the value.  When evaluation is
    4092         finished, the value of E replaces the future.  Operations that need
    4093         the future's value suspend until it is available.  Assignment and
    4094         parameter passing do not suspend.  Future introduces concurrency
    4095         between the calculation of a value and its use; reference to
    4096         futures is a synchronization mechanism.
    4097 
    4098         (pcall F A B ... C) concurrently evaluates F, A, B, ... C, and then
    4099         applies F to the arguments.  pcall can be built from future and a
    4100         ``touch'' operation.  pcall is included because it may not be easy
    4101         to determine that there are no critical sections between the future
    4102         expression and the code between the future call and the value's
    4103         first use.
    4104 
    4105         (delay E) is like future, but E's process does not begin until its
    4106         value is needed.  It provides lazy evaluation.  Replacing delay
    4107         with future would launch an infinite number of processes.
    4108     }
    4109 }
    4110 
    4111 @techreport{Bretthauer89,
    4112     keywords    = {multiple inheritance},
    4113     contributer = {pabuhr@plg},
    4114     author      = {Harry Bretthauer and Thomas Christaller and J\"{u}rgen Kopp},
    4115     title       = {Multiple vs. Single Inheritance in Object-oriented Programming Languages. What do we really want?},
    4116     institution = {Gesellschaft F\"{u}r Mathematik und Datenverarbeitung mbH},
    4117     address     = {Schlo$\beta$ Birlinghoven, Postfach 12 40, D-5205 Sankt Augustin 1, Deutschland},
    4118     number      = {Arbeitspapiere der GMD 415},
    4119     month       = nov,
    4120     year        = 1989,
    4121 }
    4122 
    4123 @inproceedings{c++:multinh,
    4124     keywords    = {C++, multiple inheritance, implementation},
    4125     contributer = {gjditchfield@plg},
    4126     author      = {Bjarne Stroustrup},
    4127     title       = {Multiple Inheritance for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    4128     booktitle   = {Proceedings of the Spring '87 EUUG Conference},
    4129     month       = may, year = 1987
    4130 }
    4131 
    4132 @inproceedings{st:mult,
    4133     keywords    = {smalltalk, multiple inheritance, implementation},
    4134     contributer = {gjditchfield@plg},
    4135     author      = {Daniel H. H. Ingalls and A. H. Borning},
    4136     title       = {Multiple Inheritance in Smalltalk-80},
    4137     booktitle   = {Proceedings of the National Conference on Artificial Intelligence},
    4138     month       = aug,
    4139     year        = 1982,
    4140     pages       = {234-238},
    4141     organization= {American Association for Artificial Intelligence},
    4142     comment     = {
    4143         Methods are looked up in the current class, the superclasses, the
    4144         supersuperclasses, etc.  The same method can be inherited
    4145         repeatedly, but having different methods for the same message is an
    4146         error.  Only one copy is made for multiply-inherited fields.
    4147 
    4148         {\tt X.m} is the method m in superclass X.  {\tt super.m} is
    4149         allowed if there is no ambiguity; {\tt self super.m} replaces {\tt
    4150         super m}.  {\tt all.m} invokes all inherited versions of m.
    4151 
    4152         Methods on the first-superclass chain are found as usual.  Methods
    4153         from other superclasses are copied into the class dictionary.  An
    4154         error method is created if inherited methods conflict.  The parser
    4155         is changed to allow compound selectors.  {\tt Object
    4156         messageNotUnderstood} is changed to look for compound selectors and
    4157         dynamically add a method with the right name and body to the class.
    4158         When methods are edited, they are copied into subclasses and
    4159         compound selector versions are deleted, as appropriate.
    4160     }
    4161 }
    4162 
    4163 @article{Lamport86I,
    4164     keywords    = {software solutions, N-thread, mutual exclusions},
    4165     contributer = {pabuhr@plg},
    4166     author      = {Leslie Lamport},
    4167     title       = {The Mutual Exclusion Problem: Part\,{I}--A Theory of Interprocess Communication},
    4168     journal     = jacm,
    4169     volume      = 33,
    4170     number      = 2,
    4171     month       = apr,
    4172     year        = 1986,
    4173     pages       = {313--326},
    4174     numpages    = {14},
    4175     publisher   = {ACM},
    4176     address     = {New York, NY, USA},
    4177 }
    4178 
    4179 @article{Lamport86II,
    4180     keywords    = {software solutions, N-thread, mutual exclusions},
    4181     contributer = {pabuhr@plg},
    4182     author      = {Leslie Lamport},
    4183     title       = {The Mutual Exclusion Problem: Part\,{II}--Statement and Solutions},
    4184     journal     = jacm,
    4185     volume      = 33,
    4186     number      = 2,
    4187     month       = apr,
    4188     year        = 1986,
    4189     pages       = {327--348},
    4190     numpages    = {22},
    4191     publisher   = {ACM},
    4192     address     = {New York, NY, USA},
    4193 }
    4194 
    4195 @article{Burns78,
    4196     keywords    = {hardware, N-process solution, O(N)},
    4197     contributer = {pabuhr@plg},
    4198     author      = {James E. Burns},
    4199     title       = {Mutual Exclusion with Linear Waiting Using Binary Shared Variables},
    4200     journal     = {SIGACT News},
    4201     volume      = 10,
    4202     number      = 2,
    4203     month       = {Summer},
    4204     year        = 1978,
    4205     pages       = {42-47},
    4206 }
    4207 
    4208 @inproceedings{Burns80,
    4209     keywords    = {N-process software solution},
    4210     contributer = {pabuhr@plg},
    4211     author      = {James E. Burns and Nancy A. Lynch},
    4212     title       = {Mutual Exclusion using Indivisible Reads and Writes},
    4213     booktitle   = {Proceedings of the 18th Annual Allerton Conference on Communications, Control and Computing, Monticello, Illinois, USA},
    4214     year        = 1980,
    4215     pages       = {833-842},
    4216     note        = {\href{http://groups.csail.mit.edu/tds/papers/Lynch/allertonconf.pdf}{\textsf{http://\-groups.csail.mit.edu/\-tds/\-papers/\-Lynch/\-allertonconf.pdf}} [Accessed on March 2014]},
    4217     optnote     = {\textsf{http://\-groups.csail.mit.edu/\-tds/\-papers/\-Lynch/\-allertonconf.pdf}},
    4218 }
    4219 
    4220 @article{Peterson81,
    4221     keywords    = {concurrency, critical section},
    4222     contributer = {pabuhr@plg},
    4223     author      = {G. L. Peterson},
    4224     title       = {Myths About the Mutual Exclusion Problem},
    4225     journal     = ipl,
    4226     year        = 1981,
    4227     month       = jun,
    4228     volume      = 12,
    4229     number      = 3,
    4230     pages       = {115-116},
    4231 }
    4232 
    4233 % N
    4234 
    4235 @article{Haddon77,
    4236     keywords    = {monitors, nested monitor calls},
    4237     contributer = {pabuhr@plg},
    4238     author      = {Bruce K. Haddon},
    4239     title       = {Nested Monitor Calls},
    4240     journal     = osr,
    4241     volume      = 11,
    4242     number      = 4,
    4243     month       = oct,
    4244     year        = 1977,
    4245     pages       = {18-23},
    4246 }
    4247 
    4248 @inproceedings{nesting,
    4249     keywords    = {},
    4250     contributer = {gjditchfield@plg},
    4251     author      = {Lori A. Clarke and Jack C. Wilenden and Alexander L. Wolf},
    4252     title       = {Nesting in {Ada} Programs is for the Birds},
    4253     booktitle   = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada}
    4254         Programming Language},
    4255     year        = 1980,
    4256     month       = dec, pages = {139-145},
    4257     note        = {SIGPLAN Notices, v. 15, n. 11},
    4258     abstract    = {
    4259         Given a data abstraction construct like the Ada package and in the
    4260         light of current thoughts on programming methodology, we feel that
    4261         nesting is an anachronism.  In this paper we propose a nest-free
    4262         program style for Ada that eschews nested program units and
    4263         declarations within blocks and instead heavily utilizes packages
    4264         and context specifications as mechanisms for controlling
    4265         visibility.  We view this proposal as a first step toward the
    4266         development of programming methods that exploit the novel language
    4267         features available in Ada.  Consideration of this proposal's
    4268         ramifications for data flow, control flow, and overall program
    4269         structure substantiates our contention that a tree structure is
    4270         seldom a natural representation of a program and that nesting
    4271         therefore generally interferes with program development and
    4272         readability.
    4273     }
    4274 }
    4275 
    4276 @inproceedings{Buhr88,
    4277     keywords    = {nested classes, persistence},
    4278     contributer = {pabuhr@plg},
    4279     author      = {P. A. Buhr and C. R. Zarnke},
    4280     title       = {Nesting in an Object Oriented Language is NOT for the Birds},
    4281     booktitle   = {Proceedings of the European Conference on Object Oriented Programming},
    4282     publisher   = {Springer-Verlag},
    4283     volume      = 322,
    4284     editor      = {S. Gjessing and K. Nygaard},
    4285     address     = {Oslo, Norway},
    4286     month       = aug,
    4287     year        = 1988,
    4288     pages       = {128-145},
    4289     note        = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
    4290 }
    4291 
    4292 @inproceedings{Thompson90new,
    4293     keywords    = {Plan 9},
    4294     contributer = {pabuhr@plg},
    4295     title       = {A New C Compiler},
    4296     author      = {Ken Thompson},
    4297     booktitle   = {Proceedings of the Summer 1990 UKUUG Conference},
    4298     year        = 1990,
    4299     pages       = {41--51},
    4300     url         = {http://doc.cat-v.org/bell_labs/new_c_compilers/new_c_compiler.pdf}
    4301 }
    4302 
    4303 @article{Trono94,
    4304     author      = {John A. Trono},
    4305     title       = {A New Exercise in Concurrency},
    4306     journal     = {SIGCSE Bulletin},
    4307     volume      = {26},
    4308     number      = {3},
    4309     month       = sep,
    4310     year        = {1994},
    4311     pages       = {8-10},
    4312     publisher   = {ACM},
    4313     address     = {New York, NY, USA},
    4314 }
    4315 
    4316 @article{Lamport74,
    4317     keywords    = {concurrency, N-Process solution, O(N)},
    4318     contributer = {pabuhr@plg},
    4319     author      = {Leslie Lamport},
    4320     title       = {A New Solution of Dijkstra's Concurrent Programming Problem},
    4321     journal     = cacm,
    4322     month       = aug,
    4323     year        = 1974,
    4324     volume      = 17,
    4325     number      = 8,
    4326     pages       = {453-455},
    4327 }
    4328 
    4329 @article{landin,
    4330     keywords    = {},
    4331     contributer = {gjditchfield@plg},
    4332     author      = {P. J. Landin},
    4333     title       = {The Next 700 Programing Languages},
    4334     journal     = cacm,
    4335     year        = 1966,
    4336     volume      = 9,
    4337     pages       = {157-164},
    4338 }
    4339 
    4340 @article{Herlihy05,
    4341     keywords    = {Multiprocessors, concurrent data structures, dynamic data structures, memory management, nonblocking synchronization},
    4342     contributer = {pabuhr@plg},
    4343     author      = {Maurice Herlihy and Victor Luchangco and Paul Martin and Mark Moir},
    4344     title       = {Nonblocking Memory Management Support for Dynamic-sized Data Structures},
    4345     journal     = tocs,
    4346     volume      = 23,
    4347     number      = 2,
    4348     month       = may,
    4349     year        = 2005,
    4350     pages       = {146-196},
    4351     numpages    = {51},
    4352     publisher   = {ACM},
    4353     address     = {New York, NY, USA},
    4354 }
    4355 
    4356 % O
    4357 
    4358 @inproceedings{oop:abcl/1,
    4359     keywords    = {concurrency, OOPL, futures},
    4360     contributer = {gjditchfield@plg},
    4361     author      = {Akinori Yonezawa and Jean-Pierre Briot and Etsuya Shibayama},
    4362     title       = {Object-Oriented Concurrent Programming in {ABCL/1}},
    4363     crossref    = "OOPSLA86",
    4364     pages       = {258-268},
    4365     comment     = {
    4366         Actions for messages sent to an object are executed concurrently
    4367         iff the object has no members.  A select construct specifies a set
    4368         of message patterns.
    4369 
    4370         Express messages have priority.  If an express message arrives
    4371         while an ordinary message is being processed, the action for the
    4372         ordinary message is suspended or aborted and the action for the
    4373         express message is executed.  The sender decides which class a
    4374         message belongs in.  Non-interruptible sections can be defined.
    4375 
    4376         Message sends can be non-blocking, or can block until a reply is
    4377         received, at the sender's option.  The receiver can continue to
    4378         execute after sending the reply.
    4379 
    4380         Replies can send back ``futures'', and put values in them later.
    4381         Futures are queues of values, not single values.  The caller can
    4382         use a ``ready?'' predicate to test for empty queue, or can use
    4383         operations to get the first or all queue elements; these operations
    4384         block if the queue is empty.
    4385     }
    4386 }
    4387 
    4388 @techreport{Schmidt95,
    4389     keywords    = {ACE, concurrency, library},
    4390     contributer = {pabuhr@plg},
    4391     author      = {Douglas C. Schmidt},
    4392     title       = {An OO Encapsulation of Lightweight OS Concurrency Mechanisms in the {ACE} Toolkit},
    4393     institution = {Washington University in St. Louis},
    4394     year        = 1995,
    4395     number      = 31,
    4396     note        = {{\small\textsf{http://\-www.cs.wustl.edu/\-\char`\~schmidt/\-PDF/\-IPC\_SAP-92.pdf}}},
    4397 }
    4398 
    4399 @inproceedings{OOEx,
    4400     keywords    = {Exceptions, object-oriented programming languages},
    4401     contributer = {gjditchfield@plg},
    4402     author      = {Christophe Dony},
    4403     title       = {An Object-oriented Exception Handling System for an Object-oriented Language},
    4404     booktitle   = {ECOOP '88. European Conference on Object-Oriented Programming},
    4405     year        = 1988,
    4406     pages       = {146-161},
    4407     editor      = {S. Gjessing and K. Nygaard},
    4408     organization= {DND, The Norwegian Computer Society},
    4409     publisher   = {Springer-Verlag},
    4410     comment     = {
    4411            Objectives:
    4412            - Users can define new exceptions.
    4413            - Default handlers can be attached to exceptions.
    4414            - Handlers can be attached to classes.
    4415            - Handlers can be attached to dynamic entities (expressions).
    4416            - Exceptions propagate first along the invocation chain.
    4417            - Exceptions should be hierarchically organized classes.
    4418            - Handlers should take into account the exception hierarchy (i.e.,
    4419              should handle raising of sub-exceptions).
    4420            The ``exceptional-event'' class has two subclasses.  ``Warning''
    4421            has a ``resume'' method, and ``error'' has ``exit'' and
    4422            ``retry'' methods.  Signalling an exception creates an instance
    4423            of the exception, whose members are used to pass information
    4424            back to the handler.  Handlers are instances of class
    4425            ``protect-handler'' with a method ``protect {\em expression}'',
    4426            or are methods defined for the class or the exception.
    4427     }
    4428 }
    4429 
    4430 @article{CommonObjects,
    4431     author      = {A. Snyder},
    4432     title       = {Object-Oriented Programming for Common Lisp},
    4433     address     = {Palo Alto CA},
    4434     year        = 1985,
    4435     publisher   = {Software Technology Laboratory, Hewlett-Packard Laboratories},
    4436     journal     = {Report ATC-85-1},
    4437 }
    4438 
    4439 @book{objective-c,
    4440     keywords    = {},
    4441     author      = {Brad J. Cox},
    4442     title       = {Object-oriented programming; an evolutionary approach},
    4443     publisher   = {Addison-Wesley},
    4444     year        = 1986
    4445 }
    4446 
    4447 @book{Beta,
    4448     keywords    = {Beta, object oriented, concurrency, exceptions},
    4449     contributer = {pabuhr@plg},
    4450     author      = {Ole Lehrmann Madsen and Birger M{\o}ller-Pedersen and Kristen Nygaard},
    4451     title       = {Object-oriented Programming in the {BETA} Programming Language},
    4452     publisher   = {Addison-Wesley},
    4453     year        = 1993,
    4454 }
    4455 
    4456 @article{Flavors,
    4457     author      = {D. A. Moon},
    4458     title       = {Object-Oriented Programming with Flavors},
    4459     address     = {Portland OR},
    4460     month       = sep,
    4461     year        = 1986,
    4462     journal     = {Proc. ACM Conf. on Object-Oriented Systems, Languages and Applications},
    4463 }
    4464 
    4465 @article{Buhr00b,
    4466     keywords    = {concurrency, C++, real-time},
    4467     contributer = {pabuhr@plg},
    4468     author      = {Peter A. Buhr and Ashif S. Harji and Philipp E. Lim and Jiongxiong Chen},
    4469     title       = {Object-Oriented Real-Time Concurrency},
    4470     journal     = sigplan,
    4471     volume      = 35,
    4472     number      = 10,
    4473     month       = oct,
    4474     year        = 2000,
    4475     pages       = {29-46},
    4476     note        = {OOPSLA'00, Oct. 15--19, 2000, Minneapolis, Minnesota, U.S.A.},
    4477 }
    4478 
    4479 @book{Meyer88,
    4480     keywords    = {Eiffel},
    4481     contributer = {pabuhr@plg},
    4482     author      = {Bertrand Meyer},
    4483     title       = {Object-oriented Software Construction},
    4484     publisher   = {Prentice Hall},
    4485     year        = {1988},
    4486     series      = {Prentice Hall International Series in Computer Science},
    4487 }
    4488 
    4489 @article{objectPascal,
    4490     keywords    = {objects, modules},
    4491     contributer = {gjditchfield@plg},
    4492     author      = {Larry Tesler},
    4493     title       = {Object Pascal Report},
    4494     journal     = {Structured Language World},
    4495     year        = 1985,
    4496     volume      = 9,
    4497     number      = 3,
    4498 }
    4499 
    4500 @misc{obj-c:next,
    4501     keywords    = {categories, protocols, Objective C},
    4502     contributor = {gjditchfield@angus},
    4503     author      = {NeXT Computer, Inc.},
    4504     title       = {Objective C Extensions},
    4505     howpublished= {On-line documentation in ``NEXTSTEP 3.1 Developer''},
    4506     year        = 1993
    4507 }
    4508 
    4509 @book{Galletly96,
    4510     keywords    = {occam},
    4511     author      = {John Galletly},
    4512     title       = {{OCCAM} 2: Including {OCCAM} 2.1},
    4513     publisher   = {{UCL} (University College London) Press Ltd.},
    4514     edition     = {second},
    4515     year        = 1996,
    4516 }
    4517 
    4518 @techreport{Morrison88,
    4519     keywords    = {objects, concurrency, persistence},
    4520     contributer = {pabuhr@plg},
    4521     author      = {R. Morrison and A. L. Brown and R. Carrick and R. Connor and A. Dearle},
    4522     title       = {On the integration of Object-Oriented and Process-Oriented computation in persistent environments},
    4523     institution = {Department of Computational Science, University of St. Andrews, Scotland},
    4524     number      = {PPRR 57},
    4525     month       = jan,
    4526     year        = 1988,
    4527 }
    4528 
    4529 @article{Peterson73,
    4530     keywords    = {goto, structured programming},
    4531     contributer = {pabuhr@plg},
    4532     author      = {W. W. Peterson and T. Kasami and N. Tokura},
    4533     title       = {On the Capabilities of While, Repeat, and Exit Statements},
    4534     journal     = cacm,
    4535     month       = aug,
    4536     year        = 1973,
    4537     volume      = 16,
    4538     number      = 8,
    4539     pages       = {503-512}
    4540 }
    4541 
    4542 @article{Bak:overload,
    4543     keywords    = {compilation},
    4544     contributer = {gjditchfield@plg},
    4545     author      = {Theodore P. Baker},
    4546     title       = {A One-Pass Algorithm for Overload Resolution in {Ada}},
    4547     journal     = toplas,
    4548     year        = 1982,
    4549     month       = oct,
    4550     volume      = 4,
    4551     number      = 4,
    4552     pages       = {601-614},
    4553     abstract    = {
    4554         A simple method is presented for detecting ambiguities and finding
    4555         the correct interpretations of expressions in the programming
    4556         language Ada.  Unlike previously reported solutions to this
    4557         problem, which require multiple passes over a tree structure, the
    4558         method described here operates in one bottom-up pass, during which
    4559         a directed acyclic graph is produced.  The correctness of this
    4560         approach is demonstrated by a brief formal argument.
    4561     },
    4562     comment     = {
    4563         See also \cite{D:overload}.
    4564         }
    4565 }
    4566 
    4567 @techreport{OpenMP,
    4568     keywords    = {concurrency, openmp, spmd},
    4569     contributer = {pabuhr@plg},
    4570     author      = {OpenMP Architecture Review Board},
    4571     title       = {OpenMP Application Program Interface, Version 4.0},
    4572     month       = jul,
    4573     year        = 2013,
    4574     note        = {\href{http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf}{\textsf{http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf}}},
    4575 }
    4576 
    4577 @book{Deitel04,
    4578     keywords    = {concurrency, operating systems},
    4579     contributer = {pabuhr@plg},
    4580     author      = {Harvey M. Deitel and Paul J. Deitel and David R. Choffnes},
    4581     title       = {Operating Systems},
    4582     publisher   = {Pearson Prentice-Hall},
    4583     year        = 2004,
    4584     edition     = {third},
    4585 }
    4586 
    4587 @book{Stalling98,
    4588     keywords    = {concurrency, operating systems},
    4589     contributer = {pabuhr@plg},
    4590     author      = {William Stallings},
    4591     title       = {Operating Systems: Internals and Design Principles},
    4592     publisher   = {Prentice-Hall},
    4593     year        = 1998,
    4594     edition     = {third},
    4595 }
    4596 
    4597 @book{Stalling01,
    4598     keywords    = {concurrency, operating systems},
    4599     contributer = {pabuhr@plg},
    4600     author      = {William Stallings},
    4601     title       = {Operating Systems: Internals and Design Principles},
    4602     publisher   = {Prentice-Hall},
    4603     year        = 2001,
    4604     edition     = {fourth},
    4605 }
    4606 
    4607 @book{Silberschatz91,
    4608     keywords    = {concurrency, operating systems},
    4609     contributer = {pabuhr@plg},
    4610     author      = {Abraham Silberschatz and James L. Peterson and Peter Galvin},
    4611     title       = {Operating System Concepts},
    4612     publisher   = {Addision-Wesley},
    4613     year        = 1991,
    4614     edition     = {third},
    4615 }
    4616 
    4617 @book{Tanenbaum87,
    4618     keywords    = {concurrency, operating systems},
    4619     contributer = {pabuhr@plg},
    4620     author      = {Andrew S. Tanenbaum},
    4621     title       = {Operating Systems : Design and Implementation},
    4622     publisher   = {Prentice-Hall},
    4623     series      = {Software Series},
    4624     year        = 1987,
    4625 }
    4626 
    4627 @book{Hansen73,
    4628     keywords    = {monitors},
    4629     contributer = {pabuhr@plg},
    4630     author      = {Per {Brinch Hansen}},
    4631     title       = {Operating System Principles},
    4632     publisher   = {Prentice-Hall},
    4633     year        = 1973,
    4634 }
    4635 
    4636 @book{Bic03,
    4637     keywords    = {concurrency, operating systems},
    4638     contributer = {pabuhr@plg},
    4639     author      = {Lubomir F. Bic and Alan C. Shaw},
    4640     title       = {Operating System Principles},
    4641     publisher   = {Prentice-Hall},
    4642     year        = 2003,
    4643 }
    4644 
    4645 @techreport{milner88,
    4646     keywords    = {},
    4647     contributer = {gjditchfield@plg},
    4648     author      = {Robin Milner},
    4649     title       = {Operational and Algebraic Semantics of Concurrent Processes},
    4650     institution = {Laboratory for Foundations of Computer Science},
    4651     year        = 1988,
    4652     address     = {Department of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ},
    4653     month       = feb,
    4654     number      = {ECS-LFCS-88-46}
    4655 }
    4656 
    4657 @article{Ford82,
    4658     keywords    = {},
    4659     contributer = {pabuhr@plg},
    4660     author      = {G. Ford and B. Hansche},
    4661     title       = {Optional, Repeatable, and Varying Type Parameters},
    4662     journal     = sigplan,
    4663     volume      = 17,
    4664     number      = 2,
    4665     month       = feb,
    4666     year        = 1982,
    4667     pages       = {41-48},
    4668 }
    4669 
    4670 @manual{pli,
    4671     keywords    = {PL/I},
    4672     contributer = {gjditchfield@plg},
    4673     key         = {IBM},
    4674     title       = {{OS} and {DOS} {PL/I} Reference Manual},
    4675     organization= {International Business Machines},
    4676     edition     = {first},
    4677     month       = sep,
    4678     year        = 1981,
    4679     note        = {Manual GC26-3977-0},
    4680 }
    4681 
    4682 @techreport{D:overload,
    4683     keywords    = {overload resolution, compilation},
    4684     contributer = {gjditchfield@plg},
    4685     author      = {M. Dausmann et. al.},
    4686     title       = {Overloading in {Ada}},
    4687     institution = {Universitat Karlsruhe},
    4688     year        = 1979,
    4689     number      = {23/79},
    4690     comment     = {
    4691         Probably the earliest description of the two-pass (bottom-up,
    4692         top-down) overload resolution algorithm. See also
    4693         \cite{PW:overload,WS:overload,PDM:overload,Cor:overload,Bak:overload}.
    4694     }
    4695 }
    4696 
    4697 @article{EB87,
    4698     keywords    = {packages, private types, assignment, equality},
    4699     contributer = {gjditchfield@plg},
    4700     author      = {J. Dana Eckart and Richard J. LeBlanc},
    4701     title       = {Overloading in the {Ada} Language: Is it too restrictive?},
    4702     journal     = {Computer Languages},
    4703     year        = 1987,
    4704     volume      = 12, number = {3/4}, pages = {163-172},
    4705     abstract    = {
    4706         Packages in the Ada language provide a mechanism for extending the
    4707         language through the development of additional data types.  Such
    4708         types can be better integrated into the language using operator
    4709         overloading; however, key limitations prevent new types from being
    4710         transparently integrated into the language.  Allowing function
    4711         names to overload private type names would give a cleaner and
    4712         clearer mechanism for building values of these types.  Furthermore,
    4713         by allowing redefinitions of ``:='' and by making it easier to
    4714         overload ``='' for private types, Ada coud be transformed into a
    4715         more expressive language.
    4716     }
    4717 }
    4718 
    4719 @article{PW:overload,
    4720     keywords    = {compilation},
    4721     contributer = {gjditchfield@plg},
    4722     author      = {Guido Persch and Georg Winterstein and Manfred Dausman and Sophia Drossopoulou},
    4723     title       = {Overloading in Preliminary {Ada}},
    4724     journal     = sigplan,
    4725     year        = 1980,
    4726     month       = nov, volume = 15, number = 11, pages = {47-56},
    4727     note        = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada} Programming
    4728          Language},
    4729     comment     = {
    4730         The two-pass (bottom-up, then top-down) algorithm, with a proof
    4731         that two passes suffice.  See also \cite{D:overload}.
    4732     }
    4733 }
    4734 
    4735 @article{SR,
    4736     keywords    = {concurrency, messages, rendezvous},
    4737     contributer = {pabuhr@plg},
    4738     author      = {Gregory R. Andrews and Ronald A. Olsson and Michael Coffin and
    4739                   Irving Elshoff and Kelvin Nilsen and Titus Purdin and Gregg Townsend},
    4740     title       = {An Overview of the {SR} Language and Implementation},
    4741     journal     = toplas,
    4742     month       = jan,
    4743     year        = 1988,
    4744     volume      = 10,
    4745     number      = 1,
    4746     pages       = {51-86},
    4747 }
    4748 
    4749 % P
    4750 
    4751 @article{Andrews91,
    4752     keywords    = {general concurrency},
    4753     contributer = {pabuhr@plg},
    4754     author      = {Gregory R. Andrews},
    4755     title       = {Paradigms for Process Interaction in Distributed Programs},
    4756     journal     = acmcs,
    4757     volume      = 23,
    4758     number      = 1,
    4759     month       = mar,
    4760     year        = 1991,
    4761     pages       = {49-90},
    4762 }
    4763 
    4764 @book{PPC++,
    4765     keywords    = {concurrency, parallel, distributed, C++},
    4766     contributer = {pabuhr@plg},
    4767     editor      = {Gregory V. Wilson and Paul Lu},
    4768     title       = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    4769     publisher   = {MIT Press},
    4770     series      = {Scientific and Engineering Computation Series},
    4771     year        = 1996,
    4772     pages       = {1-42},
    4773 }
    4774 
    4775 @incollection{Stroustrup96,
    4776     keywords    = {concurrency, C++},
    4777     contributer = {pabuhr@plg},
    4778     author      = {Bjarne Stroustrup},
    4779     title       = {A Perspective on Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    4780     editor      = {Gregory V. Wilson and Paul Lu},
    4781     booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    4782     publisher   = {MIT Press},
    4783     series      = {Scientific and Engineering Computation Series},
    4784     year        = 1996,
    4785     pages       = {xxvi-xxvii},
    4786 }
    4787 
    4788 @incollection{Yang96b,
    4789     keywords    = {concurrency, C++},
    4790     contributer = {pabuhr@plg},
    4791     author      = {Shelby X. Yang and Dennis Gannon and Peter Beckman and Jacob Gotwals and Neelakantan Sundaresan},
    4792     editor      = {Gregory V. Wilson and Paul Lu},
    4793     title       = {p{C}++},
    4794     booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    4795     publisher   = {MIT Press},
    4796     address     = {Cambridge, MA, USA},
    4797     series      = {Scientific and Engineering Computation Series},
    4798     pages       = {507-546},
    4799     year        = 1996,
    4800 }
    4801 
    4802 @article{goguen84,
    4803     keywords    = {},
    4804     contributer = {gjditchfield@plg},
    4805     author      = {Goseph A. Goguen},
    4806     title       = {Parameterized Programming},
    4807     journal     = ieeese,
    4808     year        = 1984,
    4809     month       = sep, volume = "SE-10", number = 5, pages = {528-543},
    4810     abstract    = {
    4811         Parameterized programming is a powerful technique for the reliable
    4812         reuse of software.  In this technique, modules are parameterized
    4813         over very general interfaces that describe what properties of an
    4814         environment are required for the module to work correctly.
    4815         Reusability is enhanced by the flexibility of the parameterization
    4816         mechanism proposed here.  Reliability is further enhanced by
    4817         permitting interface requirements to include more than purely
    4818         syntactic information.  This paper introduces three new ideas that
    4819         seem especially useful in supporting parameterized programming: 1)
    4820         {\em theories}, which declare global properties of program modules
    4821         and interfaces; 2) {\em views}, which connect theories with program
    4822         modules in an elegant way; and 3) {\em module expressions}, a kind
    4823         of general structured program transformation which produces new
    4824         modules by modifying and combining existing modules.  Although
    4825         these ideas are illustrated with some simple examples in the OBJ
    4826         programming language, they should also be taken as proposals for an
    4827         Ada library system, for adding modules to Prolog, and as
    4828         considerations for future language design efforts.  OBJ is an
    4829         ultra-high level programming language, based upon rewrite rules,
    4830         that incorporates these ideas, and many others from modern
    4831         programming methodology.
    4832     }
    4833 }
    4834 
    4835 @inproceedings{c++:templates,
    4836     author      = {Bjarne Stroustrup},
    4837     contributer = {gjditchfield@plg},
    4838     title       = {Parameterized Types for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    4839     booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
    4840     organization= {USENIX Association},
    4841     year        = 1988, pages = {1-18}
    4842 }
    4843 
    4844 @inproceedings{Boehm85,
    4845     keywords    = {second-order unification},
    4846     contributer = {gjditchfield@plg},
    4847     author      = {Hans-J. Boehm},
    4848     title       = {Partial Polymorphic Type Inference is Undecidable},
    4849     booktitle   = {26th Annual Symposium on Foundations of Computer Science},
    4850     year        = 1985,
    4851     pages       = {339-345},
    4852     organization= {IEEE Computer Society},
    4853     publisher   = {IEEE Computer Society Press},
    4854     address     = {1730 Massachusetts Avenue, N.W, Washington, D.C. 20036-1903},
    4855     summary     = {
    4856         Given a base typed lambda calculus with function types, type
    4857         abstractions, and a recursive expression \(\mbox{fix } x:t.e\),
    4858         then type inference for the partially typed language
    4859         \begin{eqnarray}
    4860         \lambda x:\tau.e        &\Rightarrow& \lambda x.e       \\
    4861         \mbox{fix } x:\tau.e    &\Rightarrow& \mbox{fix } x.e   \\
    4862         e \tau                  &\Rightarrow& e ?
    4863         \end{eqnarray}
    4864         is undecidable.
    4865     }
    4866 }
    4867 
    4868 @book{Pascal,
    4869     keywords    = {Pascal},
    4870     contributer = {pabuhr@plg},
    4871     author      = {Kathleen Jensen and Niklaus Wirth},
    4872     title       = {{P}ascal User Manual and Report},
    4873     publisher   = {Springer--Verlag},
    4874     year        = 1985,
    4875     edition     = {third},
    4876     note        = {Revised by Andrew B. Mickel and James F. Miner, ISO Pascal Standard}
    4877 }
    4878 
    4879 @book{Pascal:old,
    4880     keywords    = {Pascal},
    4881     contributer = {pabuhr@plg},
    4882     author      = {Kathleen Jensen and Niklaus Wirth},
    4883     title       = {{P}ascal User Manual and Report},
    4884     publisher   = {Springer--Verlag},
    4885     year        = 1975,
    4886     edition     = {first},
    4887 }
    4888 
    4889 @article{Turba85,
    4890     keywords    = {Pascal, exception handling, inheritance},
    4891     contributer = {pabuhr@plg},
    4892     author      = {Thomas N. Turba},
    4893     title       = {The {P}ascal Exception Handling Proposal},
    4894     journal     = sigplan,
    4895     volume      = 20,
    4896     number      = 8,
    4897     month       = aug,
    4898     year        = 1985,
    4899     pages       = {93-98},
    4900 }
    4901 
    4902 @manual{Pascal/VS,
    4903     keywords    = {PL/I},
    4904     contributer = {pabuhr@plg},
    4905     key         = {IBM},
    4906     title       = {{P}ascal/{VS} Language Reference Manual},
    4907     organization= {International Business Machines},
    4908     edition     = {first},
    4909     year        = 1981,
    4910     note        = {Manual SH20-6168-1},
    4911 }
    4912 
    4913 @article{Anderson90,
    4914     keywords    = {spin locks, back off, performance},
    4915     contributer = {pabuhr@plg},
    4916     author      = {Thomas E. Anderson},
    4917     title       = {The Performance of Spin Lock Alternatives for Shared-Memory Multiprocessors},
    4918     journal     = ieeepds,
    4919     month       = jan,
    4920     year        = 1990,
    4921     volume      = 1,
    4922     number      = 1,
    4923     pages       = {6-16},
    4924 }
    4925 
    4926 @article{poly,
    4927     keywords    = {Poly, Standard ML, Russell, persistence},
    4928     contributer = {gjditchfield@plg},
    4929     author      = {David C. J. Matthews},
    4930     title       = {Poly Manual},
    4931     journal     = sigplan,
    4932     month       = sep, year = 1985,
    4933     volume      = 20, number = 9, pages = {52-76}
    4934 }
    4935 
    4936 @techreport{Atkinson87b,
    4937     keywords    = {naming, persistence},
    4938     contributer = {pabuhr@plg},
    4939     author      = {M. P. Atkinson and R. Morrison},
    4940     title       = {Polymorphic Names and Iterations},
    4941     institution = {Universities of Glasgow and St. Andrews, Scotland},
    4942     number      = {PPRR-53-87},
    4943     month       = nov,
    4944     year        = 1987,
    4945 }
    4946 
    4947 @book{Harland,
    4948     keywords    = {},
    4949     author      = {David M. Harland},
    4950     title       = {Polymorphic Programming Languages: Design and Implementation},
    4951     publisher   = {Ellis Horwood},
    4952     year        = 1984,
    4953     series      = {Computers and their Applications},
    4954     address     = {Market Cross House, Cooper Street, Chichester, West Sussex,
    4955         PO19 1EB, England},
    4956     summary     = {
    4957         The principles of Procedural Abstraction, Data Type Completeness,
    4958         Declaration Correspondence, and Orthogonality are ruthlessly applied
    4959         to the design of a polymorphic language.
    4960     }
    4961 }
    4962 
    4963 @unpublished{poa,
    4964     keywords    = {Force N, type inference, reusability, transcendance},
    4965     contributer = {gjditchfield@plg},
    4966     author      = {G. V. Cormack and A. K. Wright},
    4967     title       = {Polymorphism, Overloading, and Abstraction},
    4968     note        = {personal communication}
    4969 }
    4970 
    4971 @inproceedings{forceone:impl,
    4972     keywords    = {Parametric polymorphism, ForceOne},
    4973     contributer = {gjditchfield@plg},
    4974     author      = {G. V. Cormack and A. K. Wright},
    4975     title       = {Polymorphism in the Compiled Language {ForceOne}},
    4976     booktitle   = {Proceedings of the 20th Hawaii International Conference on Systems Sciences},
    4977     month       = jan,
    4978     year        = 1987,
    4979     pages       = {284-292},
    4980 }
    4981 
    4982 @incollection{POOL-T,
    4983     keywords    = {objects, concurrency},
    4984     contributer = {pabuhr@plg},
    4985     author      = {Pierre America},
    4986     title       = {POOL-T: A Parallel Object-Oriented Language},
    4987     booktitle   = {Object-Oriented Concurrent Programming},
    4988     publisher   = {The MIT Press},
    4989     year        = 1987,
    4990     pages       = {199-220},
    4991     editor      = {Akinori Yonezawa and Mario Tokoro}
    4992 }
    4993 
    4994 @article{Hardgrave76,
    4995     keywords    = {positional, keyword, parameters, arguments},
    4996     contributer = {pabuhr@plg},
    4997     author      = {W. T. Hardgrave},
    4998     title       = {Positional versus Keyword Parameter Communication in Programming Languages},
    4999     journal     = sigplan,
    5000     volume      = 11,
    5001     number      = 5,
    5002     month       = may,
    5003     year        = 1976,
    5004     pages       = {52-58},
    5005 }
    5006 
    5007 @book{PowerPC,
    5008     key         = {PowerPC processor},
    5009     title       = {Programming Environments Manual for 32-Bit Implementations of the PowerPC ArchitectureARM Architecture},
    5010     publisher   = {Freescale Semiconductor},
    5011     volume      = {MPCFPE32B},
    5012     edition     = {Rev. 3},
    5013     month       = 9,
    5014     year        = 2005,
    5015 }
    5016 
    5017 @article{Ada:preliminary,
    5018     keywords    = {Ada},
    5019     contributer = {pabuhr@plg},
    5020     author      = {Jean D. Ichbiah and Bernd Krieg-Brueckner and Brian A. Wichmann
    5021                    and Henry F. Ledgard and Jean-Claude Heliard and Jean-Raymond Abrial
    5022                    and John G. P. Barnes and Olivier Roubine},
    5023     title       = {Preliminary {Ada} Reference Manual},
    5024     journal     = sigplan,
    5025     volume      = 14,
    5026     number      = 6,
    5027     month       = jun,
    5028     year        = 1979,
    5029     note        = {Part A},
    5030 }
    5031 
    5032 @techreport{Forsythe,
    5033     author      = {John C. Reynolds},
    5034     title       = {Preliminary Design of the Programming Language {Forsythe}},
    5035     institution = {Carnegie Mellon University},
    5036     number      = {CMU-CS-88-159},
    5037     month       = jun,
    5038     year        = 1988,
    5039 }
    5040 
    5041 @article{PRESTO,
    5042     keywords    = {concurrency, threads},
    5043     contributer = {dgharriss@plg},
    5044     author      = {B. N. Bershad and E. D. Lazowska and H. M. Levy},
    5045     title       = {{PRESTO}: A System for Object-oriented Parallel Programming},
    5046     journal     = spe,
    5047     volume      = 18,
    5048     number      = 8,
    5049     month       = aug,
    5050     year        = 1988,
    5051     pages       = {713-732}
    5052 }
    5053 
    5054 @book{Ben-Ari82,
    5055     keywords    = {concurrency, parallel, programming languages},
    5056     contributer = {pabuhr@plg},
    5057     author      = {Mordechai Ben-Ari},
    5058     title       = {Principles of Concurrent Programming},
    5059     publisher   = {Prentice-Hall International},
    5060     year        = 1982,
    5061 }
    5062 
    5063 @book{Tennent81,
    5064     author      = {R. D. Tennent},
    5065     title       = {Principles of Programming Languages},
    5066     publisher   = {Prentice-Hall International},
    5067     year        = 1981,
    5068     series      = {Series in Computer Science}
    5069 }
    5070 
    5071 @article{Lister77,
    5072     keywords    = {monitors, nested monitor calls},
    5073     contributer = {pabuhr@plg},
    5074     author      = {Andrew Lister},
    5075     title       = {The Problem of Nested Monitor Calls},
    5076     journal     = osr,
    5077     volume      = 11,
    5078     number      = 3,
    5079     month       = jul,
    5080     year        = 1977,
    5081     pages       = {5-7},
    5082 }
    5083 
    5084 @article{psa:persistence,
    5085     keywords    = {persistence, first-class procedures, closure, PS-Algol,
    5086         Abstract Data Types},
    5087     contributer = {gjditchfield@plg},
    5088     author      = {Malcolm P. Atkinson and Ronald Morrison},
    5089     title       = {Procedures as Persistent Data Objects},
    5090     journal     = toplas,
    5091     volume      = {7},    number = {4},
    5092     pages       = {539-559},
    5093     month       = oct, year = 1985,
    5094     comment     = {
    5095         PS-Algol has ``structures'', accessible only through ``pntrs''.
    5096         Pntrs can refer to any type of structure.  Field references involve
    5097         a run-time check.  This, plus first-class procedures, can simulate
    5098         abstract data types.  Procedure variables operating on pntrs
    5099         simulate ADT operations.  A block defines a structure to implement
    5100         the ADT, and assigns procedures to the variables.  Functions
    5101         returning structures containing procedures  simulate multiple
    5102         implementations and parameterized ADTs.
    5103 
    5104         An outer procedure that returns a procedure that contains
    5105         (non-local) references to the outer procedure's parameters
    5106         implements partial evaluation.
    5107 
    5108         Modules can be simulated like ADT's.  The module itself is a
    5109         structure instance that is placed in persistent storage, and the
    5110         module is imported by fetching it from the persistent store.
    5111         Multiple instances of modules are easy.  Installation of new
    5112         versions can be done by replacing the version in the database.
    5113     }
    5114 }
    5115 
    5116 @article{Procol89,
    5117     keywords    = {active objects, object-oriented languages,
    5118         object-based languages, explicit per-object protocol},
    5119     contributer = {akgoel@plg},
    5120     author      = {Jan van den Bos and Chris Laffra},
    5121     title       = {PROCOL: A Parallel Object Language with Protocols},
    5122     journal     = sigplan,
    5123     volume      = 24,
    5124     number      = 10,
    5125     month       = oct,
    5126     year        = 1989,
    5127     pages       = {95-102},
    5128     note        = {Proceedings of the OOPSLA'89 Conference, Oct. 1--6, 1989, New Orleans, Lousiana},
    5129     abstract    = {},
    5130 }
    5131 
    5132 @book{Butenhof97,
    5133     keywords    = {PThreads, concurrency},
    5134     contributer = {pabuhr@plg},
    5135     author      = {David R. Butenhof},
    5136     title       = {Programming with {POSIX} Threads},
    5137     publisher   = {Addison-Wesley},
    5138     series      = {Professional Computing},
    5139     year        = 1997,
    5140 }
    5141 
    5142 @book{SETL,
    5143     keywords    = {SETL},
    5144     contributer = {pabuhr@plg},
    5145     author      = {J. T. Schwartz and R. B. K. Dewar and E. Dubinsky and E. Schonberg},
    5146     title       = {Programming with Sets: An Introduction to {SETL}},
    5147     publisher   = {Springer-Verlag},
    5148     year        = 1986,
    5149 }
    5150 
    5151 @book{Genuys68,
    5152     keywords    = {contains Dijkstra's Cooperating Sequential Processes},
    5153     contributer = {pabuhr@plg},
    5154     editor      = {F. Genuys},
    5155     title       = {Programming Languages},
    5156     publisher   = {Academic Press},
    5157     address     = {London, New York},
    5158     year        = 1968,
    5159     note        = {NATO Advanced Study Institute, Villard-de-Lans, 1966}
    5160 }
    5161 
    5162 @manual{ANSI99:C,
    5163     keywords    = {ANSI C 99},
    5164     contributer = {pabuhr@plg},
    5165     title       = {Programming Languages -- {C}},
    5166     organization= {International Standard ISO/IEC 9899:1999 (E)},
    5167     publisher   = {American National Standards Institute},
    5168     address     = {www.ansi.org},
    5169     year        = 1999,
    5170 }
    5171 
    5172 @manual{ANSI98:C++,
    5173     keywords    = {ANSI C++ 98},
    5174     contributer = {pabuhr@plg},
    5175     key         = {C++98},
    5176     title       = {Programming Languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    5177     organization= {International Standard ISO/IEC 14882:1998 (E)},
    5178     publisher   = {American National Standards Institute},
    5179     address     = {www.ansi.org},
    5180     year        = 1998,
    5181 }
    5182 
    5183 @manual{ANSI14:C++,
    5184     keywords    = {ISO/IEC C++ 14},
    5185     contributer = {pabuhr@plg},
    5186     key         = {C++14},
    5187     title       = {Programming Languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    5188     edition     = {fourth},
    5189     organization= {International Standard ISO/IEC 14882:2014 (E)},
    5190     publisher   = {International Standard Organization},
    5191     address     = {http://www.iso.org},
    5192     year        = 2014,
    5193 }
    5194 
    5195 @manual{MS:VisualC++,
    5196     keywords    = {Microsoft Visual C++},
    5197     contributer = {pabuhr@plg},
    5198     title       = {Microsoft Visual {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} .NET Language Reference},
    5199     organization= {Microsoft Corporation},
    5200     year        = 2002,
    5201     note        = {Microsoft Press, Redmond, Washington, U.S.A.},
    5202 }
    5203 
    5204 @article{HasselBring00,
    5205     keywords    = {concurrency, prototyping},
    5206     contributer = {pabuhr@plg},
    5207     author      = {Wilhelm Hasselbring},
    5208     title       = {Programming Languages and Systems for Prototyping Concurrent Applications},
    5209     journal     = acmcs,
    5210     volume      = 32,
    5211     number      = 1,
    5212     month       = mar,
    5213     year        = 2000,
    5214     pages       = {43-79},
    5215 }
    5216 
    5217 @article{LLgen,
    5218     keywords    = {ll(1), parser generator, separate compilation},
    5219     contributer = {gjditchfield@plg},
    5220     author      = {Dick Grune and Ceriel J. J. Jacobs},
    5221     title       = {A Programmer-friendly LL(1) Parser Generator},
    5222     journal     = spe,
    5223     month       = jan, year = 1988,
    5224     volume      = 18, number = 1, pages = {29-33},
    5225     comment     = {
    5226         LLgen generates C-language recursive-descent parsers.  The input
    5227         contains procedure-like rules with alternation and repetition
    5228         constructs on the right, and (typed) parameters on the left.
    5229         C actions are specified between items in the right side.
    5230         Alternation and repetition (reduce and shift) conflicts can be
    5231         resolved statically or at run time.
    5232 
    5233         A grammar can be specified in several files.  All files must be
    5234         submitted to LLgen at once, but if the C file generated is no
    5235         different from the old version, then the old version is not
    5236         replaced and hence need not be recompiled, which saves lots of
    5237         time.
    5238 
    5239         When an incorrect token is found, the automatic error recovery
    5240         algorithm discards tokens until an ``acceptable'' token is found;
    5241         if the acceptable token is not correct, a correct one is inserted.
    5242     }
    5243 }
    5244 
    5245 @techreport{russell,
    5246     keywords    = {Russell},
    5247     contributer = {gjditchfield@plg},
    5248     author      = {H. Boehm and A. Demers and J. Donahue},
    5249     title       = {A Programmer's Introduction to Russell},
    5250     institution = {Rice University},
    5251     year        = 1985,
    5252     number      = {85-16}
    5253 }
    5254 
    5255 @techreport{PDM89,
    5256     keywords    = {existential types, universal types},
    5257     contributer = {gjditchfield@plg},
    5258     author      = {Benjamin Pierce and Scott Dietzen and Spiro Michaylov},
    5259     title       = {Programming in Higher-Order Typed Lambda Calculi},
    5260     institution = {School of Computer Science, Carnegie Mellon University},
    5261     year        = 1989,
    5262     address     = {Pittsburg, PA 15213-3890},
    5263     month       = mar, number = {CMU-CS-89-111},
    5264     abstract    = {
    5265         This tutorial presents a hierarchy of increasingly powerful
    5266         languages, beginning with Church's simply typed
    5267         \(\lambda\)-calculus (\(F_1\)) and the second-order polymorphic
    5268         \(\lambda\)-calculus of Girard and Reynolds, and culminating in a
    5269         fragment of Girard's \(\omega\)-order polymorphic
    5270         \(\lambda\)-calculus (\(F_\omega\)).  Our focus throughout is on
    5271         the unusual style of programming that arises in these languages,
    5272         where all functions are total and the primary control construct is
    5273         iteration rather than general recursion.
    5274     }
    5275 }
    5276 
    5277 @book{Modula-2,
    5278     keywords    = {modules, coroutines},
    5279     contributer = {pabuhr},
    5280     author      = {Niklaus Wirth},
    5281     title       = {Programming in Modula-2},
    5282     publisher   = {Springer-Verlag},
    5283     year        = 1988,
    5284     edition     = {fourth},
    5285     series      = {Texts and Monographs in Computer Science},
    5286 }
    5287 
    5288 @manual{Ada,
    5289     keywords    = {Ada, packages, tasks, exceptions},
    5290     contributer = {pabuhr@plg},
    5291     title       = {The Programming Language {Ada}: Reference Manual},
    5292     organization= {United States Department of Defense},
    5293     edition     = {{ANSI/MIL-STD-1815A-1983}},
    5294     month       = feb,
    5295     year        = 1983,
    5296     note        = {Published by Springer-Verlag}
    5297 }
    5298 
    5299 @manual{ada:old,
    5300     keywords    = {Ada, packages, tasks, exceptions},
    5301     contributer = {gjditchfield@plg},
    5302     title       = {The Programming Language {Ada}: Reference Manual},
    5303     organization= {United States Department of Defense},
    5304     publisher   = {Springer-Verlag},
    5305     year        = 1981
    5306 }
    5307 
    5308 @book{Ghezzi,
    5309     keywords    = {},
    5310     author      = {Carlo Ghezzi and Mehdi Jazayeri},
    5311     title       = {Programming Language Concepts},
    5312     publisher   = {Wiley},
    5313     year        = 1982
    5314 }
    5315 
    5316 @article{ConcurrentPascal,
    5317     keywords    = {Concurrent Pascal},
    5318     contributer = {pabuhr@plg},
    5319     author      = {Per {Brinch Hansen}},
    5320     title       = {The Programming Language Concurrent Pascal},
    5321     journal     = ieeese,
    5322     volume      = 2,
    5323     month       = jun,
    5324     year        = 1975,
    5325     pages       = {199-206}
    5326 }
    5327 
    5328 @phdthesis{Buhr85:thesis,
    5329     keywords    = {},
    5330     contributer = {pabuhr@plg},
    5331     author      = {P. A. Buhr},
    5332     title       = {A Programming System},
    5333     school      = {University of Manitoba},
    5334     year        = {1985}
    5335 }
    5336 
    5337 @techreport{pierce91,
    5338     keywords    = {typed lambda calculus},
    5339     contributer = {gjditchfield@plg},
    5340     author      = {Benjamin C. Pierce},
    5341     title       = {Programming with Intersection Types, Union Types, and Polymorphism},
    5342     institution = {Carnegie Mellon University},
    5343     year        = 1991,
    5344     month       = feb, number = "CMU-CS-91-106",
    5345     annote      = {
    5346         Discusses a typed lambda calculus with
    5347         \begin{itemize}
    5348         \item
    5349         Intersection types \(\tau = \tau_1\wedge\tau_2\) with \(\tau \le
    5350         \tau_i\) for all \(i\).
    5351         \item
    5352         Union types \(\tau = \tau_1\vee\tau_2\) with \(\tau_i \le \tau\),
    5353         and with implicit coercions from \(tau_i\) to \(\tau\).  Only
    5354         operations valid for both element types can be applied to the
    5355         union; there are no projections.  Union types are to variant
    5356         records as set union is to disjoint set union.
    5357         \item
    5358         Function types and universal quantification, with subtyping rules.
    5359         When functions and arguments intersections, the result of
    5360         application is the intersection of all valid combinations.
    5361         \item
    5362         Distribution rules for combinations of types.
    5363         \item
    5364         "Union elimination": "case \(x = e\) of \(e'\)", where \(e\) is a
    5365         union, has type \(\tau\) if \(e'\) has that type with \(x\) having
    5366         every element type of the union.
    5367         \item
    5368         "Finitary quantification": "for \(t\) in \(\tau_1,\ldots,\tau_n.e\)"
    5369         typechecks \(e\) with \(t\) bound to each choice, and intersects
    5370         the results.
    5371         \end{itemize}
    5372 
    5373         Examples include: type of "natural" numbers, treated as a union of
    5374         "zero" and "positive" types; default parameters, faked by using an
    5375         argument that is an intersection of a data type and a function
    5376         taking an explicit argument.
    5377 
    5378         Unions can be mostly faked, according to Mitchell:
    5379         \[\tau_1\vee\tau_2 \equiv
    5380              \forall\tau.(\tau_1\on\tau)\wedge(\tau_2\on\tau)\]
    5381     }
    5382 }
    5383 
    5384 @article{promises,
    5385     keywords    = {futures, Argus, call streams, rpc},
    5386     contributer = {gjditchfield@plg},
    5387     author      = {Barbara Liskov and Liuba Shrira},
    5388     title       = {Promises: Linguistic Support for Efficient Asynchronous
    5389           Procedure Calls in Distributed Systems},
    5390     journal     = sigplan,
    5391     year        = 1988,
    5392     month       = jul, volume = 23, number = 7, pages = {260-267},
    5393     note        = {Proceedings of the SIGPLAN '88 Conference on Programming Language
    5394          Design and Implementation},
    5395     abstract    = {
    5396         This paper deals with the integration of an efficient asynchronous
    5397         remote procedure call mechanism into a programming language.  It
    5398         describes a new data type called a {\em promise} that was designed
    5399         to support asynchronous calls.  Promises allow a caller to run in
    5400         parallel with a call and to pick up the results of the call,
    5401         including any exceptions it raises, in a convenient and type-safe
    5402         manner.  The paper also discusses efficient composition of
    5403         sequences of asynchronous calls to different locations in a
    5404         network.
    5405     }
    5406 }
    5407 
    5408 @article{Cook89,
    5409     keywords    = {},
    5410     contributer = {gjditchfield@plg},
    5411     author      = {W. R. Cook},
    5412     title       = {A Proposal for Making {Eiffel} Type-safe},
    5413     journal     = {The Computer Journal},
    5414     year        = 1989,
    5415     volume      = 32, number = 4, pages = {305-311},
    5416     abstract    = {
    5417        
    5418     }
    5419 }
    5420 
    5421 @inproceedings{Foxall79,
    5422     keywords    = {},
    5423     contributer = {pabuhr@plg},
    5424     author      = {D. G. Foxall and M. L. Joliat and R. F. Kamel and J. J. Miceli},
    5425     title       = {{PROTEL}: A High Level Language for Telephony},
    5426     booktitle   = {Proceedings 3rd International Computer Software and Applications Conference},
    5427     month       = nov,
    5428     year        = 1979,
    5429     pages       = {193-197},
    5430 }
    5431 
    5432 @techreport{PS-Algol,
    5433     keywords    = {algol, persistence},
    5434     contributer = {pabuhr@plg},
    5435     key         = {PS-Algol},
    5436     title       = {The {PS-Algol} Reference Manual, 4th Ed.},
    5437     author      = {},
    5438     institution = {University of Glasgow and St. Andrews, Scotland},
    5439     number      = {PPRR 12},
    5440     month       = jun,
    5441     year        = 1987,
    5442 }
    5443 
    5444 @manual{Python,
    5445     keywords    = {Python},
    5446     contributer = {pabuhr},
    5447     title       = {Python Reference Manual, Release 2.5},
    5448     author      = {Guido van Rossum},
    5449     organization= {Python Software Foundation},
    5450     month       = sep,
    5451     year        = 2006,
    5452     note        = {Fred L. Drake, Jr., editor},
    5453 }
    5454 
    5455 % Q
    5456 
    5457 @article{Hoare61,
    5458     keywords    = {quick sort},
    5459     contributer = {pabuhr@plg},
    5460     author      = {C. A. R. Hoare},
    5461     title       = {Algorithms 63/64: Partition/Quicksort},
    5462     journal     = cacm,
    5463     volume      = 4,
    5464     number      = 7,
    5465     month       = jul,
    5466     year        = 1961,
    5467     pages       = {321},
    5468 }
    5469 
    5470 % R
    5471 
    5472 @article{Ada:rationale:preliminary,
    5473     keywords    = {Ada},
    5474     contributer = {pabuhr@plg},
    5475     author      = {J. D. Ichbiah and J. C. Heliard and O. Roubine and
    5476                    J. G. P. Barnes and B. Krieg-Brueckner and B. A. Wichmann},
    5477     title       = {Rationale for the Design of the {ADA} Programming Language},
    5478     journal     = sigplan,
    5479     volume      = 14,
    5480     number      = 6,
    5481     month       = jun,
    5482     year        = 1979,
    5483     note        = {Part B},
    5484 }
    5485 
    5486 @book{Ada:rationale,
    5487     keywords    = {Ada},
    5488     contributer = {pabuhr@plg},
    5489     author      = {Jean D. Ichbiah and John G. P. Barnes and Robert J. Firth and Mike Woodger},
    5490     title       = {Rationale for the Design of the {ADA} Programming Language},
    5491     publisher   = {Under Secretary of Defense, Research and Engineering},
    5492     year        = 1986,
    5493     address     = {Ada Joint Program Office, OUSDRE(R\&AT), The Pentagon, Washington, D. C., 20301, U.S.A.},
    5494 }
    5495 
    5496 @manual{Ada95,
    5497     keywords    = {Ada},
    5498     contributer = {pabuhr@plg},
    5499     title       = {{A}da Reference Manual},
    5500     edition     = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
    5501     organization = {Intermetrics, Inc.},
    5502     month       = dec,
    5503     year        = 1995,
    5504     note        = {Language and Standards Libraries}
    5505 }
    5506 
    5507 @manual{Ada12,
    5508     keywords    = {Ada},
    5509     contributer = {pabuhr@plg},
    5510     title       = {Programming languages -- {Ada}},
    5511     edition     = {third},
    5512     organization= {International Standard ISO/IEC 1989:2014},
    5513     publisher   = {International Standard Organization},
    5514     address     = {http://www.iso.org},
    5515     year        = 2012,
    5516 }
    5517 
    5518 @manual{Ada95:annotated,
    5519     keywords    = {Ada},
    5520     contributer = {pabuhr@plg},
    5521     title       = {Annotated {A}da Reference Manual},
    5522     edition     = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
    5523     organization = {Intermetrics, Inc.},
    5524     month       = dec,
    5525     year        = 1995,
    5526     note        = {Language and Standards Libraries}
    5527 }
    5528 
    5529 @book{JavaRT00,
    5530     keywords    = {real time, draft},
    5531     contributer = {pabuhr@plg},
    5532     author      = {Greg Bollella and Ben Brosgol and Peter Dibble and Steve Furr and James Gosling and David Hardin and Mark Turnbull},
    5533     title       = {The Real-Time Specification for {J}ava},
    5534     series      = {The Real-Time for Java Expert Group, {\small\textsf{http://\-www.rtj.org}}},
    5535     publisher   = {Addison-Wesley},
    5536     year        = 2000,
    5537 }
    5538 
    5539 @manual{JavaRT99,
    5540     organization= {Real Time for Java Experts Group},
    5541     address     = {{\small\textsf{http://\-www.rtj.org}}},
    5542     month       = sep,
    5543     year        = 1999,
    5544 }
    5545 
    5546 @article{Robinson48,
    5547     keywords    = {recursion, Ackermann function},
    5548     contributer = {pabuhr@plg},
    5549     author      = {Raphael Mitchel Robinson},
    5550     title       = {Recursion and Double Recursion},
    5551     publisher   = {American Mathematical Society},
    5552     journal     = {Bulletin of the American Mathematical Society},
    5553     volume      = 54,
    5554     pages       = {987-993},
    5555     year        = 1948,
    5556 }
    5557 
    5558 @article{Dijkstra:red,
    5559     keywords    = {ada},
    5560     contributer = {gjditchfield@plg},
    5561     author      = {Edsger W. Dijkstra},
    5562     title       = {On the RED Language submitted to the DoD},
    5563     journal     = sigplan,
    5564     year        = 1978,
    5565     month       = oct,
    5566     volume      = 13,
    5567     number      = 10,
    5568     pages       = {27-32},
    5569 }
    5570 
    5571 @article{RemoteRendezvous,
    5572     keywords    = {rendezvous, concurrency},
    5573     contributer = {pabuhr@plg},
    5574     author      = {N. D. Gammage and R. F. Kamel and L. M. Casey},
    5575     title       = {Remote Rendezvous},
    5576     journal     = spe,
    5577     month       = oct,
    5578     year        = 1987,
    5579     volume      = 17,
    5580     number      = 10,
    5581     pages       = {741-755}
    5582 }
    5583 
    5584 @article{Euclid,
    5585     keywords    = {Euclid},
    5586     contributer = {pabuhr@plg},
    5587     author      = {B. W. Lampson and J. J. Horning and R. L. London and J. G. Mitchell and G. L. Popek},
    5588     title       = {Report on the Programming Language Euclid},
    5589     journal     = sigplan,
    5590     volume      = 12,
    5591     number      = 2,
    5592     month       = feb,
    5593     year        = 1977,
    5594     pages       = {1-79}
    5595 }
    5596 
    5597 @techreport{LOGLAN88,
    5598     keywords    = {LOGLAN},
    5599     contributer = {pabuhr@plg},
    5600     author      = {Boleslaw Ciesielski and Antoni Kreczmar and Marek Lao and Andrzej Litwiniuk and Teresa Przytycka and Andrzej Salwicki and Jolanta Warpechowska and Marek Warpechowski and Andrzej Szalas and Danuta Szczepanska--Wasersztrum},
    5601     title       = {Report on the Programming Language LOGLAN'88},
    5602     institution = {Institute of Informatics, University of Warsaw},
    5603     address     = {Pkin 8th Floor, 00-901 Warsaw, Poland},
    5604     number      = {},
    5605     month       = dec,
    5606     year        = 1988,
    5607 }
    5608 
    5609 @article{FH91,
    5610     keywords    = {lcc},
    5611     contributer = {gjditchfield@plg},
    5612     author      = {Christopher W. Fraser and David R. Hanson},
    5613     title       = {A Retargetable Compiler for {ANSI} {C}},
    5614     journal     = sigplan,
    5615     year        = 1991,
    5616     month       = oct, volume = 26, number = 10, pages = {29-43},
    5617     abstract    = {
    5618         {\tt lcc} is a new retargetable compiler for ANSI C.  Versions for
    5619         the VAX, Motorola 68020, SPARC, and MIPS are in production use at
    5620         Princeton University and at AT\&T Bell Laboratories.  With a few
    5621         exceptions, little about {\tt lcc} is unusual---it integrates
    5622         several well engineered, existing techniques---but it is smaller
    5623         and faster than most other C compilers, and it generates code of
    5624         comparable quality.  {\tt lcc}'s target-independent front end
    5625         performs a few simple, but effective, optimizations that contribute
    5626         to good code; examples include simulating register declarations and
    5627         partitioning switch statements into dense tables.  It also
    5628         implements target-independent function tracing and expression-level
    5629         profiling.
    5630     }
    5631 }
    5632 
    5633 @article{Algol68revised,
    5634     keywords    = {},
    5635     contributer = {gjditchfield@plg},
    5636     author      = {A. van Wijngaarden and B. J. Mailloux and J. E. L. Peck and
    5637         C. H. A. Koster and M. Sintzoff and C. H. Lindsey and L. G. L. T.
    5638         Meertens and R. G. Fisher},
    5639     title       = {Revised Report on the Algorithmic Language {ALGOL} 68},
    5640     journal     = sigplan,
    5641     year        = 1977,
    5642     month       = may,
    5643     volume      = 12,
    5644     number      = 5,
    5645     pages       = {1-70}
    5646 }
    5647 
    5648 @article{scheme,
    5649     keywords    = {},
    5650     contributer = {gjditchfield@plg},
    5651     author      = {Jonathan Rees and William Clinger},
    5652     title       = {Revised$^3$ Report on the Algorithmic Language {S}cheme},
    5653     journal     = sigplan,
    5654     year        = 1986,
    5655     month       = dec,
    5656     volume      = 21,
    5657     number      = 12,
    5658     pages       = {37-79},
    5659 }
    5660 
    5661 @article{scheme5,
    5662     keywords    = {scheme},
    5663     contributer = {pabuhr@plg},
    5664     author      = {H. Abelson and Adams, IV, N. I. and D. H. Bartley and G. Brooks and R. K. Dybvig and D. P. Friedman and
    5665                    R. Halstead and C. Hanson and C. T. Haynes and E. Kohlbecker and D. Oxley and K. M. Pitman and G. J. Rozas and
    5666                    G. L. Steele Jr. and G. J. Sussman and M. Wand and \emph{Ed. by} Richard Kelsey and William Clinger and Jonathan Rees},
    5667     title       = {Revised$^5$ Report on the Algorithmic Language {S}cheme},
    5668     journal     = sigplan,
    5669     year        = 1998,
    5670     month       = sep,
    5671     volume      = 33,
    5672     number      = 9,
    5673     pages       = {26-76},
    5674 }
    5675 
    5676 @manual{Rust,
    5677     keywords    = {Rust programming language},
    5678     contributer = {pabuhr@plg},
    5679     title       = {The {Rust} Programming Language},
    5680     organization= {The Rust Project Developers},
    5681     year        = 2015,
    5682     note        = {\href{https://doc.rust-lang.org/reference.html}{https://\-doc.rust-lang.org/\-reference.html}},
    5683 }
    5684 
    5685 % S
    5686 
    5687 @inproceedings{Michael04,
    5688     keywords    = {lock free, dynamic memory allocation},
    5689     contributer = {pabuhr@plg},
    5690     author      = {Maged M. Michael},
    5691     title       = {Scalable Lock-free Dynamic Memory Allocation},
    5692     booktitle   = {PLDI '04: Proceedings of the ACM SIGPLAN 2004 Conference on Programming Language Design and Implementation},
    5693     location    = {Washington DC, USA},
    5694     publisher   = {ACM},
    5695     address     = {New York, NY, USA},
    5696     volume      = 39,
    5697     year        = 2004,
    5698     month       = jun,
    5699     pages       = {35-46},
    5700 }
    5701 
    5702 @article{Anderson92,
    5703     keywords    = {light-weight tasks},
    5704     contributer = {pabuhr@plg},
    5705     author      = {Thomas E. Anderson and Brian N. Bershad and Edward D. Lazowska and Henry M. Levy},
    5706     title       = {Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism},
    5707     journal     = tocs,
    5708     volume      = 10,
    5709     number      = 1,
    5710     month       = feb,
    5711     year        = 1992,
    5712     pages       = {53-79},
    5713 }
    5714 
    5715 @manual{SELF,
    5716     keywords    = {programming language, obect-oriented, polymorphism},
    5717     contributer = {pabuhr@plg},
    5718     author      = {Ole Agesen and Lars Bak and Craig Chambers and Bay-Wei Chang and Urs H{\o}lzle
    5719                    and John H. Maloney and Randall B. Smith and David Ungar and Mario Wolczko},
    5720     title       = {The {SELF} 3.0 Programmer's Reference Manual},
    5721     organization= {Sun Microsystems, Inc., and Stanford University},
    5722     year        = 1993,
    5723 }
    5724 
    5725 @inproceedings{Cardelli84,
    5726     keywords    = {subtypes, recursive types, records, variants, object oriented},
    5727     contributer = {gjditchfield@plg},
    5728     author      = {Luca Cardelli},
    5729     title       = {A Semantics of Multiple Inheritance},
    5730     booktitle   = {Semantics of Data Types},
    5731     year        = 1984,
    5732     pages       = {51-67},
    5733     editor      = {G. Kahn and D. B. MacQueen and G. D. Plotkin},
    5734     publisher   = {Springer-Verlag},
    5735     note        = {Lecture Notes in Computer Science v. 173},
    5736 }
    5737 
    5738 @techreport{Adve95,
    5739     keywords    = {shared memory, consistency models},
    5740     contributer = {pabuhr@plg},
    5741     author      = {Sarita V. Adve and Kourosh Gharachorloo},
    5742     title       = {Shared Memory Consistency Models: A Tutorial},
    5743     institution = {Western Research Laboratory},
    5744     address     = {250 University Avenue, Palo Alto, California, 94301, U.S.A.},
    5745     number      = {7},
    5746     month       = sep,
    5747     year        = 1995,
    5748     note        = {\href{http://www.hpl.hp.com/techreports/Compaq-DEC/WRL-95-7.pdf}{\textsf{http://www.hpl.hp.com/\-techreports/\-Compaq-DEC/\-WRL-95-7.pdf}}, Reprinted in \cite{Adve95reprint}.},
    5749 }
    5750 
    5751 @article{Adve95reprint,
    5752     keywords    = {shared memory, consistency models},
    5753     contributer = {pabuhr@plg},
    5754     author      = {Sarita V. Adve and Kourosh Gharachorloo},
    5755     journal     = {Computer},
    5756     title       = {Shared Memory Consistency Models: A Tutorial},
    5757     month       = dec,
    5758     year        = 1996,
    5759     volume      = 29,
    5760     number      = 12,
    5761     pages       = {66-76},
    5762 }
    5763 
    5764 @inproceedings{Howard76b,
    5765     keywords    = {monitors},
    5766     contributer = {pabuhr@plg},
    5767     author      = {J. H. Howard},
    5768     title       = {Signaling in Monitors},
    5769     booktitle   = {Proceedings Second International Conference Software Engineering},
    5770     address     = {San Francisco, U.S.A},
    5771     publisher   = {IEEE Computer Society},
    5772     month       = oct,
    5773     year        = 1976,
    5774     pages       = {47-52}
    5775 }
    5776 
    5777 @techreport{Schemenauer01,
    5778     keywords    = {Phthon, generator, coroutine},
    5779     contributer = {pabuhr@plg},
    5780     author      = {Neil Schemenauer and Tim Peters and Magnus Lie Hetland},
    5781     title       = {Simple Generators},
    5782     month       = may,
    5783     year        = 2001,
    5784     note        = {{\small\textsf{http://www.python.org/peps/pep-0255.html}}},
    5785 }
    5786 
    5787 @inproceedings{Michael96,
    5788     keywords    = {compare_and_swap, concurrent queue, lock-free, multiprogramming, non-blocking},
    5789     contributer = {pabuhr@plg},
    5790     author      = {Maged M. Michael and Michael L. Scott},
    5791     title       = {Simple, Fast, and Practical Non-blocking and Blocking Concurrent Queue Algorithms},
    5792     booktitle   = {Proceedings of the Fifteenth Annual ACM Symposium on Principles of Distributed Computing},
    5793     series      = {PODC'96},
    5794     year        = 1996,
    5795     location    = {Philadelphia, Pennsylvania, USA},
    5796     pages       = {267--275},
    5797     numpages    = {9},
    5798     publisher   = {ACM},
    5799     address     = {New York, NY, USA},
    5800 }
    5801 
    5802 @inproceedings{Dice10,
    5803     keywords    = {hardware, synchronization, transactional memory},
    5804     author      = {Dave Dice and Yossi Lev and Virendra J. Marathe and Mark Moir and Dan Nussbaum and Marek Olszewski},
    5805     title       = {Simplifying Concurrent Algorithms by Exploiting Hardware Transactional Memory},
    5806     booktitle   = {Proceedings of the Twenty-second Annual ACM Symposium on Parallelism in Algorithms and Architectures},
    5807     series      = {SPAA'10},
    5808     year        = 2010,
    5809     location    = {Thira, Santorini, Greece},
    5810     pages       = {325-334},
    5811     numpages    = {10},
    5812     publisher   = {ACM},
    5813     address     = {New York, NY, USA},
    5814 }
    5815 
    5816 @article{PDM:overload,
    5817     keywords    = {compilation},
    5818     contributer = {gjditchfield@plg},
    5819     author      = {Tom Pennello and Frank DeRemer and Richard Meyers},
    5820     title       = {A Simplified Operator Identification Scheme for {Ada}},
    5821     journal     = sigplan,
    5822     year        = 1980,
    5823     month       = {July--August},
    5824     volume      = 15,
    5825     number      = {7/8},
    5826     pages       = {82-87},
    5827     comment     = {
    5828         The two-pass (bottom-up, top-down) overload resolution algorithm
    5829         for Ada, with a proof that two passes suffice and a claim that two
    5830         are necessary.  See \cite{D:overload}.
    5831     }
    5832 }
    5833 
    5834 @book{SimulaBegin,
    5835     author      = {Graham M. Birtwistle and Ole-Johan Dahl and Bj{\o}rn Myhrhaug and Kristen Nygaard},
    5836     title       = {{SIMULA} begin},
    5837     publisher   = {Studentlitteratur},
    5838     year        = {1980},
    5839     address     = {Lund, Sweden},
    5840     edition     = {second},
    5841 }
    5842 
    5843 @book{Simula67,
    5844     author      = "O-J Dahl and B. Myhrhaug and K. Nygaard",
    5845     address     = "Oslo Norway",
    5846     month       = oct,
    5847     year        = 1970,
    5848     publisher   = "Norwegian Computing Center",
    5849     title       = "Simula67 Common Base Language"
    5850 }
    5851 
    5852 @book{smalltalk,
    5853     keywords    = {Smalltalk, abstract class, protocol},
    5854     contributer = {gjditchfield@plg},
    5855     author      = {A. Goldberg and D. Robson},
    5856     title       = {Smalltalk-80: The Language and its Implementation},
    5857     publisher   = {Addison-Wesley},
    5858     year        = 1983
    5859 }
    5860 
    5861 @inproceedings{Edelson92,
    5862     keywords    = {persistence, pointers},
    5863     contributer = {pabuhr@plg},
    5864     author      = {Daniel R. Edelson},
    5865     title       = {Smart Pointers: They're Smart, but They're Not Pointers},
    5866     booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Technical Conference Proceedings},
    5867     organization= {USENIX Association},
    5868     address     = {Portland, Oregon, U.S.A.},
    5869     month       = aug,
    5870     year        = 1992,
    5871     pages       = {1-19},
    5872 }
    5873 
    5874 @book{SNOBOL,
    5875     keywords    = {SNOBOL4},
    5876     contributer = {pabuhr@plg},
    5877     author      = {R. E. Griswold and J. F. Poage and I. P. Polonsky},
    5878     title       = {The SNOBOL4 Programming Language},
    5879     edition     = {second},
    5880     publisher   = {Prentice-Hall},
    5881     year        = 1971,
    5882 }
    5883 
    5884 @article{Sutter05b,
    5885     keywords    = {concurrency},
    5886     contributer = {pabuhr@plg},
    5887     author      = {Herb Sutter and James Larus},
    5888     title       = {Software and the Concurrency Revolution},
    5889     journal     = Queue,
    5890     year        = 2005,
    5891     month       = sep,
    5892     volume      = 3,
    5893     number      = 7,
    5894     pages       = {54-62},
    5895 }
    5896 
    5897 @inproceedings{raytheon,
    5898     keywords    = {cobol},
    5899     contributer = {gjditchfield@plg},
    5900     author      = {Robert G. Lanergan and Charles A. Grasso},
    5901     title       = {Software Engineering with Reusable Designs and Code},
    5902     booktitle   = {Workshop on Reusability in Programming},
    5903     year        = 1983,
    5904     month       = sep,
    5905     pages       = {224-234},
    5906     organization= {{ITT} Programming},
    5907     summary     = {
    5908         60\% of business application design and code are redundant.
    5909         Three standard program plans are used.  Reuse doubles productivity
    5910         during development and greatly helps program comprehension during
    5911         maintenance.
    5912     }
    5913 }
    5914 
    5915 @article{Hecht86,
    5916     keywords    = {exception handling, robustness},
    5917     contributer = {pabuhr@plg},
    5918     author      = {H. Hecht and M. Hecht},
    5919     title       = {Software Reliability in the Systems Context},
    5920     journal     = ieeese,
    5921     year        = 1986,
    5922     volume      = 12,
    5923     number      = 1,
    5924     pages       = {51-58},
    5925 }
    5926 
    5927 @inproceedings{Herlihy03,
    5928     author      = {Maurice Herlihy and Victor Luchangco and Mark Moir and William N. {Scherer III}},
    5929     title       = {Software Transactional Memory for Dynamic-sized Data Structures},
    5930     booktitle   = {Proceedings of the Twenty-second Annual Symposium on Principles of Distributed Computing},
    5931     series      = {PODC '03},
    5932     year        = {2003},
    5933     location    = {Boston, Massachusetts},
    5934     pages       = {92-101},
    5935     numpages    = {10},
    5936     publisher   = {ACM},
    5937     address     = {New York, NY, USA},
    5938 }
    5939 
    5940 @article{Dijkstra65a,
    5941     keywords    = {N-thread software-solution mutual exclusion},
    5942     contributer = {pabuhr@plg},
    5943     author      = {Edsger W. Dijkstra},
    5944     title       = {Solution of a Problem in Concurrent Programming Control},
    5945     journal     = cacm,
    5946     volume      = 8,
    5947     number      = 9,
    5948     month       = sep,
    5949     year        = 1965,
    5950     pages       = {569},
    5951     publisher   = {ACM},
    5952     address     = {New York, NY, USA},
    5953 }
    5954 
    5955 @inproceedings{Chen05,
    5956     keywords    = {fixed-priority, preemption},
    5957     contributer = {pabuhr@plg},
    5958     author      = {Jiongxiong Chen and Ashif Harji and Peter Buhr},
    5959     title       = {Solution Space for Fixed-Priority with Preemption Threshold},
    5960     booktitle   = {Proceedings of the 11th Real Time and Embedded Technology and Applications Symposium (RTAS'05)},
    5961     organization= {IEEE},
    5962     address     = {San Francisco, CA, U.S.A},
    5963     month       = mar,
    5964     year        = 2005,
    5965     pages       = {385-394}
    5966 }
    5967 
    5968 @inproceedings{Tiemann88,
    5969     keywords    = {wrappers},
    5970     contributer = {pabuhr@plg},
    5971     author      = {Michael D. Tiemann},
    5972     title       = {Solving the RPC problem in GNU {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    5973     booktitle   = {Proceedings of the USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
    5974     organization= {USENIX Association},
    5975     address     = {Denver, Colorado, U.S.A},
    5976     month       = oct,
    5977     year        = 1988,
    5978     pages       = {343-361}
    5979 }
    5980 
    5981 @book{Campbell74,
    5982     keywords    = {path expressions},
    5983     contributer = {pabuhr@plg},
    5984     author      = {R. H. Campbell and A. N. Habermann},
    5985     title       = {The Specification of Process Synchronization by Path Expressions},
    5986     publisher   = {Springer-Verlag},
    5987     year        = 1974,
    5988     volume      = 16,
    5989     pages       = {89-102},
    5990     series      = {Lecture Notes in Computer Science},
    5991 }
    5992 
    5993 @article{Bentley85,
    5994     keywords    = {CSP, concurrency},
    5995     contributer = {pabuhr@plg},
    5996     author      = {J. Bentley},
    5997     title       = {A Spelling Checker},
    5998     journal     = cacm,
    5999     month       = may,
    6000     year        = 1985,
    6001     volume      = 28,
    6002     number      = 5,
    6003     pages       = {456-462},
    6004 }
    6005 
    6006 @manual{POSIX01,
    6007     keywords    = {POSIX, Standard},
    6008     contributer = {pabuhr@plg},
    6009     key         = {POSIX},
    6010     title       = {1003.1 Standard for Information Technology -- Portable Operating System Interface (POSIX), System Interface, Issue 6},
    6011     organization= {IEEE and The Open Group},
    6012     year        = 2001,
    6013 }
    6014 
    6015 @manual{POSIX08,
    6016     keywords    = {POSIX, Standard},
    6017     contributer = {pabuhr@plg},
    6018     key         = {POSIX},
    6019     title       = {1003.1 Standard for Information Technology -- Portable Operating System Interface (POSIX), Base Specifications, Issue 7},
    6020     organization= {IEEE and The Open Group},
    6021     year        = 2008,
    6022 }
    6023 
    6024 @inproceedings{ML:NJ,
    6025     keywords    = {continuations, ML},
    6026     contributer = {pabuhr@plg},
    6027     author      = {A. Appel and D. MacQueen},
    6028     title       = {A Standard {ML} Compiler},
    6029     booktitle   = {Functional Programming Languages and Computer Architecture},
    6030     publisher   = {Springer-Verlag},
    6031     series      = {Lecture Notes in Computer Science},
    6032     volume      = 274,
    6033     year        = 1987,
    6034     pages       = {301-324},
    6035 }
    6036 
    6037 @techreport{MLreport,
    6038     keywords    = {ML, polymorphism},
    6039     contributer = {pabuhr@plg},
    6040     author      = {R. Milner},
    6041     title       = {The Standard {ML} Core Language},
    6042     institution = {},
    6043     number      = {Polymorphism II.2},
    6044     month       = oct,
    6045     year        = 1985
    6046 }
    6047 
    6048 @inproceedings{Ghelli,
    6049     keywords    = {},
    6050     contributer = {gjditchfield@plg},
    6051     author      = {Giorgio Ghelli},
    6052     title       = {A Static Type System for Message Passing},
    6053     crossref    = "OOPSLA91",
    6054     pages       = {129-145},
    6055     summary     = {
    6056         A strong, statically checked type system for object oriented
    6057         languages is defined by modelling methods as overloaded functions
    6058         with a "self" parameter, with dynamic overload resolution.  This
    6059         allows covariant method redefinition.  However, if equality is
    6060         covariantly redefined for Point and ColoredPoint classes, and a
    6061         ColoredPoint is compared to a Point, Point equality will be used,
    6062         even if self is the colored point!
    6063     }
    6064 }
    6065 
    6066 @article{Dijkstra68b,
    6067     keywords    = {semaphore, P/V},
    6068     contributer = {pabuhr@plg},
    6069     author      = {E. W. Dijkstra},
    6070     title       = {The Structure of the ``{THE}''--Multiprogramming System},
    6071     journal     = cacm,
    6072     month       = may,
    6073     year        = 1968,
    6074     volume      = 11,
    6075     number      = 5,
    6076     pages       = {341-346}
    6077 }
    6078 
    6079 @book{Holt78,
    6080     keywords    = {operating systems, concurrency},
    6081     contributer = {pabuhr@plg},
    6082     author      = {R. C. Holt and G. S. Graham and E. D. Lazowska and M. A. Scott},
    6083     title       = {Structured Concurrent Programming with Operating System Applications},
    6084     publisher   = {Addison-Wesley},
    6085     year        = 1978,
    6086 }
    6087 
    6088 @article{Stevens74,
    6089     keywords    = {coupling, cohesion},
    6090     contributer = {pabuhr@plg},
    6091     author      = {W. P. Stevens and and G. J. Myers and L. L. Constantine},
    6092     title       = {Structured Design},
    6093     journal     = ibmsj,
    6094     year        = 1974,
    6095     volume      = 13,
    6096     number      = 2,
    6097     pages       = {115-139},
    6098 }
    6099 
    6100 @article{Hansen72b,
    6101     keywords    = {critical region},
    6102     contributer = {pabuhr@plg},
    6103     author      = {Per {Brinch Hansen}},
    6104     title       = {Structured Multiprogramming},
    6105     journal     = cacm,
    6106     volume      = 15,
    6107     number      = 7,
    6108     month       = jul,
    6109     year        = 1972,
    6110     pages       = {574-578},
    6111 }
    6112 
    6113 @article{Knuth74,
    6114     keywords    = {structured programming, goto statement},
    6115     contributer = {pabuhr@plg},
    6116     author      = {Donald E. Knuth},
    6117     title       = {Structured Programming with go to Statements},
    6118     journal     = acmcs,
    6119     volume      = 6,
    6120     number      = 4,
    6121     month       = dec,
    6122     year        = 1974,
    6123     pages       = {261-301},
    6124     issn        = {0360-0300},
    6125     doi         = {http://doi.acm.org/10.1145/356635.356640},
    6126     publisher   = {ACM},
    6127     address     = {New York, NY, USA},
    6128 }
    6129 
    6130 @article{Lang98,
    6131     keywords    = {real-time, exception handling},
    6132     contributer = {pabuhr@plg},
    6133     author      = {Jun Lang and David B. Stewart},
    6134     title       = {A Study of the Applicability of Existing Exception-Handling Techniques to Component-Based Real-Time Software Technology},
    6135     journal     = toplas,
    6136     month       = mar,
    6137     year        = 1998,
    6138     volume      = 20,
    6139     number      = 2,
    6140     pages       = {274-301},
    6141 }
    6142 
    6143 @mastersthesis{Fortier89,
    6144     keywords    = {monitors},
    6145     contributer = {pabuhr@plg},
    6146     author      = {Michel Fortier},
    6147     title       = {Study of Monitors},
    6148     school      = {Department of Computer Science, University of Waterloo},
    6149     year        = 1989,
    6150     address     = {Waterloo, Ontario, Canada, N2L 3G1},
    6151 }
    6152 
    6153 @techreport{AmadioCardelli,
    6154     keywords    = {},
    6155     contributer = {gjditchfield@plg},
    6156     author      = {Roberto M. Amadio and Luca Cardelli},
    6157     title       = {Subtyping Recursive Types},
    6158     institution = {Digital Equipment Corporation Systems Research Center},
    6159     year        = 1990,
    6160     address     = {130 Lytton Avenue, Palo Alto, California 94301},
    6161     month       = aug,
    6162     number      = 62,
    6163     summary     = {
    6164         \[ (s \leq t \Rightarrow \alpha \leq \beta) \Rightarrow
    6165                \mu s.\alpha leq \mu t.\beta  \]
    6166         \[ \alpha = C[\alpha] \and \beta = C[\beta] \and C contractive
    6167                \Rightarrow \alpha = \beta \]
    6168         where a type \(\alpha\) is contractive in the type variable \(t\)
    6169         if either \(t\) does not occur free in \(\alpha\), or \(\alpha\)
    6170         can be rewritten via unfolding as a type of the shape
    6171         \(\alpha_1 \rightarrow \alpha_2\), and unfolding rewrites
    6172         \(\mu t.\alpha\) as \([t\leftarrow\mu t.\alpha]\alpha\).  An
    6173         algorithm for finding type contexts \(C\) is given.
    6174     }
    6175 }
    6176 
    6177 @techreport{Dijkstra80,
    6178     keywords    = {split binary semaphores, general to binary},
    6179     contributer = {pabuhr@plg},
    6180     author      = {Edsger W. Dijkstra},
    6181     title       = {The Superfluity of the General Semaphore},
    6182     institution = {Nuenen},
    6183     address     = {Netherlands},
    6184     number      = {EWD734},
    6185     month       = apr,
    6186     year        = 1980,
    6187 }
    6188 
    6189 @inproceedings{Burns81,
    6190     keywords    = {N-thread software-solution mutual exclusion},
    6191     contributer = {pabuhr@plg},
    6192     author      = {James E. Burns},
    6193     title       = {Symmetry in Systems of Asynchronous Processes},
    6194     booktitle   = {22nd Annual Symposium on Foundations of Computer Science, Nashville, TN, USA},
    6195     year        = 1981,
    6196     month       = oct,
    6197     organization= {IEEE Computer Society},
    6198     address     = {Los Angeles, CA, USA},
    6199     pages       = {169-174},
    6200 }
    6201 
    6202 @article{Coffman71,
    6203     keywords    = {deadlock},
    6204     contributer = {pabuhr@plg},
    6205     author      = {E. G. {Coffman, Jr.} and M. J. Elphick and A. Shoshani},
    6206     title       = {System Deadlocks},
    6207     journal     = acmcs,
    6208     volume      = 3,
    6209     number      = 2,
    6210     month       = jun,
    6211     year        = 1971,
    6212     pages       = {67-78},
    6213     publisher   = {ACM Press},
    6214     address     = {New York, NY, USA},
    6215     doi         = {http://doi.acm.org/10.1145/356586.356588},
    6216 }
    6217 
    6218 @phdthesis{Holmes99,
    6219     keywords    = {synchronization, inheritance anomaly},
    6220     contributer = {pabuhr@plg},
    6221     author      = {David Holmes},
    6222     title       = {Synchronisation Rings: Composable Synchronisation for Object-Oriented Systems},
    6223     school      = {Department of Computing, Macquarie University},
    6224     month       = oct,
    6225     year        = 1999,
    6226     address     = {Sydney, Australia},
    6227 }
    6228 
    6229 @book{Taubenfeld06,
    6230     keywords    = {concurrency, synchronization},
    6231     author      = {Gadi Taubenfeld},
    6232     title       = {Synchronization Algorithms and Concurrent Programming},
    6233     publisher   = {Pearson/Prentice Hall},
    6234     year        = 2006,
    6235 }
    6236 
    6237 @article{Buhr92b,
    6238     keywords    = {concurrency, exception handling, interventions},
    6239     contributer = {pabuhr@plg},
    6240     author      = {Peter A. Buhr and Hamish I. Macdonald and C. Robert Zarnke},
    6241     title       = {Synchronous and Asynchronous Handling of Abnormal Events in the $\mu${S}ystem},
    6242     journal     = spe,
    6243     volume      = 22,
    6244     number      = 9,
    6245     month       = sep,
    6246     year        = 1992,
    6247     pages       = {735-776},
    6248 }
    6249 
    6250 @inproceedings{Greenwald96,
    6251     keywords    = {compare and swap, hardware atomicity},
    6252     contributer = {pabuhr@plg},
    6253     author      = {Michael Greenwald and David Cheriton},
    6254     title       = {The Synergy between Non-blocking Synchronization and Operating System Structure},
    6255     booktitle   = {Proceedings of the Second USENIX Symposium on Operating Systems Design and Implementation},
    6256     organization= {USENIX Association},
    6257     address     = {Seattle, Washington, U.S.A.},
    6258     month       = oct,
    6259     year        = 1996,
    6260     pages       = {123-136},
    6261 }
    6262 
    6263 @inbook{SunLWP,
    6264     keywords    = {light-weight processes, threads},
    6265     contributer = {pabuhr@plg},
    6266     key         = {Sun},
    6267     title       = {System Services Overview, Lightweight Processes},
    6268     chapter     = {6},
    6269     pages       = {71-111},
    6270     publisher   = {Sun Microsystems},
    6271     month       = may,
    6272     year        = 1988,
    6273     note        = {available as Part Number: 800-1753-10},
    6274 }
    6275 
    6276 @article{Randell75,
    6277     contributer = {pabuhr@plg},
    6278     author      = {Brian Randell},
    6279     title       = {System Structure for Software Fault Tolerance},
    6280     journal     = ieeese,
    6281     volume      = {SE-1},
    6282     number      = 2,
    6283     month       = jun,
    6284     year        = 1975,
    6285     pages       = {220-232},
    6286 }
    6287 
    6288 @book{Modula-3,
    6289     keywords    = {language reference manual},
    6290     contributer = {pabuhr@plg},
    6291     author      = {Andrew Birrell and Mark R. Brown and Luca Cardelli and Jim Donahue and Lucille Glassman and John Gutag and Jim Harning and Bill Kalsow and Roy Levin and Greg Nelson},
    6292     title       = {Systems Programming with Modula-3},
    6293     publisher   = {Prentice-Hall, Inc.},
    6294     year        = 1991,
    6295     series      = {Prentice Hall Series in Innovative Technology}
    6296 }
    6297 
    6298 % T
    6299 
    6300 @article{Yeager91,
    6301     keywords    = {teaching, concurrency},
    6302     contributer = {pabuhr@plg},
    6303     author      = {Dorian P. Yeager},
    6304     title       = {Teaching Concurrency in the Programming Languages Course},
    6305     journal     = {SIGCSE BULLETIN},
    6306     volume      = 23,
    6307     number      = 1,
    6308     month       = mar,
    6309     year        = 1991,
    6310     pages       = {155-161},
    6311     note        = {The Papers of the Twenty-Second SIGCSE Technical Symposium on Computer Science Education,
    6312                    March. 7--8, 1991, San Antonio, Texas, U.S.A.},
    6313 }
    6314 
    6315 @article{ml,
    6316     keywords    = {ML, polymorphism},
    6317     contributer = {gjditchfield@plg},
    6318     author      = {Robin Milner},
    6319     title       = {A Theory of Type Polymorphism in Programming},
    6320     journal     = jcss,
    6321     year        = 1978,
    6322     volume      = 17, pages = {348-375}
    6323 }
    6324 
    6325 @book{Thoth,
    6326     keywords    = {messages, concurrency},
    6327     contributer = {pabuhr@plg},
    6328     author      = {D. R. Cheriton},
    6329     title       = {The Thoth System: Multi-Process Structuring and Portability},
    6330     publisher   = {American Elsevier},
    6331     year        = 1982
    6332 }
    6333 
    6334 @article{Boehm05,
    6335     keywords    = {concurrency, C++},
    6336     contributer = {pabuhr@plg},
    6337     author      = {Hans-J. Boehm},
    6338     title       = {Threads Cannot be Implemented as a Library},
    6339     journal     = sigplan,
    6340     volume      = 40,
    6341     number      = 6,
    6342     month       = jun,
    6343     year        = 2005,
    6344     pages       = {261-268},
    6345 }
    6346 
    6347 @misc{Bumbulis90,
    6348     keywords    = {parameter inference, ForceN},
    6349     contributer = {gjditchfield@plg},
    6350     author      = {Peter Bumbulis},
    6351     title       = {Towards Making Signatures First-Class},
    6352     howpublished= {personal communication},
    6353     month       = sep, year = 1990,
    6354     note        = {}
    6355 }
    6356 
    6357 @techreport{alphard:preempt,
    6358     keywords    = {},
    6359     contributer = {gjditchfield@plg},
    6360     author      = {Mary Shaw and Wm. A. Wulf},
    6361     title       = {Toward Relaxing Assumptions in Languages and Their Implementations},
    6362     institution = {Carnegie-Mellon University},
    6363     year        = 1980,
    6364     month       = jan,
    6365     note        = {Reprinted in \cite{alphard}.}
    6366 }
    6367 
    6368 @inproceedings{Reynolds74,
    6369     keywords    = {universal quantification, typed lambda calculus},
    6370     contributer = {gjditchfield@plg},
    6371     author      = {John C. Reynolds},
    6372     title       = {Towards a Theory of Type Structure},
    6373     booktitle   = {Colloque sur la Programmation},
    6374     year        = 1974,
    6375     pages       = {408-423},
    6376     editor      = {B. Robinet},
    6377     publisher   = {Springer-Verlag},
    6378     note        = {Lecture Notes in Computer Science, v. 19},
    6379     abstract    = {
    6380        
    6381     }
    6382 }
    6383 
    6384 @incollection{Hoare72,
    6385     keywords    = {critical region, concurrency},
    6386     contributer = {pabuhr@plg},
    6387     author      = {C. A. R. Hoare},
    6388     title       = {Towards a Theory of Parallel Programming},
    6389     booktitle   = {Operating Systems Techniques},
    6390     editor      = {C. A. R. Hoare and R. H. Perott},
    6391     publisher   = {Academic Press, New York},
    6392     year        = 1972,
    6393     pages       = {61-71},
    6394 }
    6395 
    6396 @inproceedings{Mitchell90,
    6397     keywords    = {polymorphism, lambda calculus, bounded quantification},
    6398     contributer = {gjditchfield@plg},
    6399     author      = {John C. Mitchell},
    6400     title       = {Toward a Typed Foundation for Method Specialization and Inheritance},
    6401     booktitle   = {Conference Record of the Seventeenth Annual ACM Symposium
    6402         on Principles of Programming Languages},
    6403     year        = 1990,
    6404     month       = jan, pages = {109-124},
    6405     organization= {Association for Computing Machinery},
    6406     abstract    = {
    6407         This paper disucsses the phenomenon of {\em method specialization}
    6408         in object-oriented programming languages.  A typed function
    6409         calculus of objects and classes is presented, featuring method
    6410         specialization when methods are added or redefined.  The soundness
    6411         of the typing rules (without subtyping) is suggested by a
    6412         translation into a more traditional calculus with
    6413         recursively-defined record types.  However, semantic questions
    6414         regarding the subtype relation on classes remain open.
    6415     }
    6416 }
    6417 
    6418 @article{EL1,
    6419     keywords    = {polymorphism},
    6420     contributer = {pabuhr@plg},
    6421     author      = {B. Wegbreit},
    6422     title       = {The Treatment of Data Types in {EL1}},
    6423     journal     = cacm,
    6424     volume      = 17,
    6425     number      = 5,
    6426     month       = may,
    6427     year        = 1974,
    6428     pages       = {251-264},
    6429 }
    6430 
    6431 @mastersthesis{Till89,
    6432     keywords    = {C, multiple return values, tuples},
    6433     contributer = {pabuhr@plg},
    6434     author      = {David W. Till},
    6435     title       = {Tuples In Imperative Programming Languages},
    6436     school      = {Department of Computer Science, University of Waterloo},
    6437     year        = 1989,
    6438     address     = {Waterloo, Ontario, Canada, N2L 3G1},
    6439 }
    6440 
    6441 @article{turing:old,
    6442     keywords    = {verification, context conditions, faithful execution},
    6443     contributer = {gjditchfield@plg},
    6444     author      = {R. C. Holt and J. R. Cordy},
    6445     title       = {The Turing Programming Language},
    6446     journal     = cacm,
    6447     year        = 1988,
    6448     month       = dec,
    6449     volume      = 31, number = 12, pages = {1410-1423}
    6450 }
    6451 
    6452 @book{Turing,
    6453     keywords    = {verification, context conditions, faithful execution},
    6454     contributer = {pabuhr@plg},
    6455     author      = {R. C. Holt},
    6456     title       = {Turing Reference Manual},
    6457     publisher   = {Holt Software Associates Inc.},
    6458     year        = 1992,
    6459     edition     = {third},
    6460 }
    6461 
    6462 @techreport{Dijkstra79,
    6463     keywords    = {split binary semaphores},
    6464     contributer = {pabuhr@plg},
    6465     author      = {Edsger W. Dijkstra},
    6466     title       = {A Tutorial on the Split Binary Semaphore},
    6467     institution = {Nuenen},
    6468     address     = {Netherlands},
    6469     number      = {EWD703},
    6470     month       = mar,
    6471     year        = 1979,
    6472 }
    6473 
    6474 @book{pldesign,
    6475     keywords    = {},
    6476     editor      = {Anthony I. Wasserman},
    6477     title       = {Tutorial: Programming Language Design},
    6478     publisher   = {Computer Society Press},
    6479     year        = 1980
    6480 }
    6481  
    6482 @article{Leroy00,
    6483     keywords    = {type-systems, exceptions},
    6484     contributer = {pabuhr@plg},
    6485     author      = {Xavier Leroy and Fran\c{c}ois Pessaux},
    6486     title       = {Type-Based Analysis of Uncaught Exceptions},
    6487     journal     = toplas,
    6488     month       = mar,
    6489     year        = 2000,
    6490     volume      = 22,
    6491     number      = 2,
    6492     pages       = {340-377},
    6493     comment     = {
    6494         Argues against declaring exceptions on routine definitions.
    6495     },
    6496 }
    6497 
    6498 @article{Cormack90,
    6499     keywords    = {polymorphism},
    6500     contributer = {pabuhr@plg},
    6501     author      = {G. V. Cormack and A. K. Wright},
    6502     title       = {Type-dependent Parameter Inference},
    6503     journal     = sigplan,
    6504     volume      = 25,
    6505     number      = 6,
    6506     month       = jun,
    6507     year        = 1990,
    6508     pages       = {127-136},
    6509     note        = {Proceedings of the ACM Sigplan'90 Conference on Programming Language Design and Implementation
    6510                    June 20-22, 1990, White Plains, New York, U.S.A.},
    6511 }
    6512 
    6513 @article{concatenation,
    6514     keywords    = {record concatenation, isa},
    6515     contributer = {gjditchfield@plg},
    6516     author      = {N. Wirth},
    6517     title       = {Type Extensions},
    6518     journal     = toplas,
    6519     volume      = {10},
    6520     number      = {2},
    6521     pages       = {204-214},
    6522     month       = apr, year = 1988,
    6523     comment     = {
    6524         Extended record types add fields to their base record.  Assignment
    6525         truncations.  Pointers can point at extended type instances.  For
    6526         polymorphism, call by value is assignment, and call by reference is
    6527         pointer passing.  Overloading isn't discussed.  Type information
    6528         can be recovered through an ``is'' type test or through type guards
    6529         (casts).  A version of the WITH statement could avoid repeated
    6530         checking.
    6531 
    6532         Private/public access to record fields can be provided by exporting
    6533         a base type, and using a private extension. Statically allocated
    6534         instances need a compiler hint specifying the maximum size of the
    6535         private type.
    6536 
    6537         Type checking is cheap (if the creation of pointer values is
    6538         controlled).  Types have type descriptors.  Extension descriptors
    6539         point at their direct base.  Heap objects point at their
    6540         descriptor, and reference parameters are accompanied by type
    6541         descriptor parameters.  ``v is t0'' loops along the chain of
    6542         descriptors.
    6543     }
    6544 }
    6545 
    6546 % U
    6547 
    6548 @unpublished{uC++book,
    6549     keywords    = {control structure, concurrency},
    6550     contributer = {pabuhr@plg},
    6551     author      = {Peter A. Buhr},
    6552     title       = {Understanding Control Flow with Concurrent Programming using $\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
    6553     year        = 1999,
    6554     note        = {Textbook in preparation}
    6555 }
    6556 
    6557 @article{Cardelli85,
    6558     keywords    = {polymorphism},
    6559     contributer = {pabuhr@plg},
    6560     author      = {Luca Cardelli and Peter Wegner},
    6561     title       = {On Understanding Types, Data Abstractions, and Polymorphism},
    6562     journal     = acmcs,
    6563     month       = dec,
    6564     year        = 1985,
    6565     volume      = 17,
    6566     number      = 4,
    6567     pages       = {471-522},
    6568 }
    6569 
    6570 @inproceedings{Wilson92,
    6571     keywords    = {garbage collection survey},
    6572     contributer = {pabuhr@plg},
    6573     author      = {Paul R. Wilson},
    6574     title       = {Uniprocessor Garbage Collection Techniques},
    6575     booktitle   = {Proceedings of the International Workshop on Memory Management},
    6576     location    = {St. Malo, France},
    6577     publisher   = {Springer-Verlag},
    6578     series      = {Lecture Notes in Computer Science},
    6579     volume      = 637,
    6580     month       = sep,
    6581     year        = {1992},
    6582     pages       = {1-42},
    6583 }
    6584 
    6585 @inproceedings{Hewitt73,
    6586     author      = {Carl Hewitt and Peter Bishop and Richard Steiger},
    6587     title       = {A Universal Modular {ACTOR} Formalism for Artificial Intelligence},
    6588     booktitle   = {Proceedings of the 3rd International Joint Conference on Artificial Intelligence},
    6589     address     = {Standford, California, U.S.A.},
    6590     pages       = {235-245},
    6591     month       = aug,
    6592     year        = 1973,
    6593 }
    6594 
    6595 @article{Bourne78,
    6596     keywords    = {Shell},
    6597     contributer = {pabuhr@plg},
    6598     author      = {S. R. Bourne},
    6599     title       = {The UNIX Shell},
    6600     journal     = {The Bell System Technical Journal},
    6601     volume      = {57, part 2},
    6602     month       = {July--August},
    6603     year        = 1978,
    6604     pages       = {1971-1990},
    6605 }
    6606 
    6607 @inproceedings{Krischer12,
    6608     keywords    = {exception, usability, asynchronous, assertion, injection, logging},
    6609     contributer = {pabuhr@plg},
    6610     author      = {Roy Krischer and Peter A. Buhr},
    6611     title       = {Usability Challenges in Exception Handling},
    6612     booktitle   = {5th International Workshop on Exception Handling (WEH)},
    6613     organization= {16th International Symposium on the Foundations of Software Engineering (FSE 16)},
    6614     address     = {Zurich, Switzerland},
    6615     month       = jun,
    6616     year        = 2012,
    6617     pages       = {7-13},
    6618 }
    6619 
    6620 @techreport{Harmony,
    6621     keywords    = {messages, concurrency},
    6622     contributer = {pabuhr@plg},
    6623     author      = {W. Morven Gentleman},
    6624     title       = {Using the Harmony Operating System},
    6625     institution = {National Research Council of Canada, Ottawa, Canada},
    6626     number      = {24685},
    6627     month       = may,
    6628     year        = 1985
    6629 }
    6630 
    6631 @article{delegation,
    6632     keywords    = {delegation, inheritance, actors},
    6633     contributer = {gjditchfield@plg},
    6634     author      = {Henry Lieverman},
    6635     title       = {Using Prototypical Objects to Implement Shared Behavior in
    6636                   Object Oriented Systems},
    6637     journal     = sigplan,
    6638     month       = nov, year = 1986,
    6639     volume      = 21, number = 11, pages = {214-223}
    6640 }
    6641 
    6642 % V
    6643 
    6644 @article{V-Kernel,
    6645     keywords    = {messages, concurrency},
    6646     contributer = {pabuhr@plg},
    6647     author      = {David R. Cheriton},
    6648     title       = {The {V} Distributed System},
    6649     journal     = cacm,
    6650     month       = mar,
    6651     year        = 1988,
    6652     volume      = 31,
    6653     number      = 3,
    6654     pages       = {314-333}
    6655 }
    6656 
    6657 @inproceedings{Amdahl67,
    6658     author      = {Gene M. Amdahl},
    6659     title       = {Validity of the Single Processor Approach to Achieving Large Scale Computing Capabilities},
    6660     booktitle   = {Proceedings of the April 18-20, 1967, Spring Joint Computer Conference},
    6661     series      = {AFIPS '67 (Spring)},
    6662     year        = 1967,
    6663     location    = {Atlantic City, New Jersey},
    6664     pages       = {483--485},
    6665     publisher   = {ACM},
    6666     address     = {New York, NY, USA},
    6667 }
    6668 
    6669 @article{Mayer81,
    6670     keywords    = {},
    6671     contributer = {pabuhr@plg},
    6672     author      = {A. J. W. Mayer},
    6673     title       = {Value Receiving Procedures},
    6674     journal     = sigplan,
    6675     volume      = 16,
    6676     number      = 11,
    6677     month       = nov,
    6678     year        = 1981,
    6679     pages       = {30-34},
    6680 }
    6681 
    6682 @article{Doran80,
    6683     keywords    = {concurrency, Dekker's Algorithm},
    6684     contributer = {pabuhr@plg},
    6685     author      = {R. W. Doran and L. K. Thomas},
    6686     title       = {Variants of the Software Solution to Mutual Exclusion},
    6687     journal     = ipl,
    6688     month       = jul,
    6689     year        = 1980,
    6690     volume      = 10,
    6691     number      = {4/5},
    6692     pages       = {206-208},
    6693 }
    6694 
    6695 @book{VAX,
    6696     keywords    = {VAX, DEC},
    6697     contributer = {pabuhr@plg},
    6698     key         = {VAX},
    6699     title       = {VAX-11 Architecture Reference Manual},
    6700     publisher   = {Digital Press},
    6701     month       = may,
    6702     year        = 1982,
    6703 }
    6704 
    6705 @book{Kenah88,
    6706     author      = {Lawrence J. Kenah and Ruth E. Goldenberg and Simon F. Bate},
    6707     title       = {{VAX/VMS} Internals and Data Structures Version 4.4},
    6708     publisher   = {Digital Press},
    6709     year        = 1988,
    6710 }
    6711 
    6712 @article{Hesselink13,
    6713     keywords    = {software solutions, N-thread, mutual exclusions},
    6714     contributer = {pabuhr@plg},
    6715     author      = {Wim H. Hesselink},
    6716     title       = {Verifying a Simplification of Mutual Exclusion by {L}ycklama--{H}adzilacos},
    6717     journal     = {Acta Informatica},
    6718     publisher   = {Springer-Verlag},
    6719     year        = {2013},
    6720     volume      = {50},
    6721     number      = {3},
    6722     pages       = {199-228},
    6723 }
    6724 
    6725 % W
    6726 
    6727 @article{Herlihy91,
    6728     keywords    = {linearization, wait-free synchronization},
    6729     contributer = {pabuhr@plg},
    6730     author      = {Maurice Herlihy},
    6731     title       = {Wait-free Synchronization},
    6732     journal     = toplas,
    6733     volume      = {13},
    6734     number      = {1},
    6735     month       = jan,
    6736     year        = 1991,
    6737     pages       = {124--149},
    6738     numpages    = {26},
    6739     publisher   = {ACM},
    6740     address     = {New York, NY, USA},
    6741 }
    6742 
    6743 @techreport{Moss90,
    6744     keywords    = {Swizzling, database},
    6745     contributer = {akgoel@plg},
    6746     author      = {J. Moss},
    6747     title       = {Working with Persistent Objects: To Swizzle or Not to Swizzle},
    6748     institution = {CS Department, University of Massachusetts},
    6749     address     = {},
    6750     number      = {CS 90-38},
    6751     month       = may,
    6752     year        = 1990,
    6753 }
    6754 
    6755 @inproceedings{Str:oop,
    6756     keywords    = { },
    6757     contributer = {pabuhr@plg},
    6758     author      = {Bjarne Stroustrup},
    6759     title       = {What is ``Object-Oriented Programming''?},
    6760     booktitle   = {Proceedings of the First European Conference on Object Oriented Programming},
    6761     month       = jun,
    6762     year        = 1987
    6763 }
    6764 
    6765 @misc{Stroustrup:overloading,
    6766     keywords    = {operator overloading},
    6767     contributer = {pabuhr@plg},
    6768     author      = {Bjarne Stroustrup},
    6769     title       = {Why can't I overload dot, ::, sizeof, etc.?},
    6770     month       = oct,
    6771     year        = 2007,
    6772     howpublished= {{\small\textsf{http://\-www.research.att.com/\-bs/\-bs\_faq2.html\-\#overload-dot}}},
    6773 }
    6774 
    6775 @techreport{Gray85,
    6776     keywords    = {fault-tolerant system},
    6777     contributer = {pabuhr@plg},
    6778     author      = {Jim Gray},
    6779     title       = {Why Do Computers Stop and What Can Be Done About It?},
    6780     institution = {Tandem Computers},
    6781     number      = {85.7 PN87614},
    6782     month       = jun,
    6783     year        = 1985,
    6784     note        = {\textsf{http://www.hpl.hp.com/\-techreports/\-tandem/\-TR-85.7.pdf}},
    6785 }
    6786 
    6787 % X
    6788 
    6789 % Y
    6790 
    6791 % Z
    6792 
    6793 % Cross-referenced entries:
    6794 
    6795 % O
    6796 
    6797 % The SIGPLAN Notices issue should be in a note field, but notes are
    6798 % inherited by all refering entries, instead of being held in the
    6799 % cross-referenced entry.  Putting it in "publisher" is a kludge, but it
    6800 % works.
    6801 @proceedings{OOPSLA86,
    6802     contributer = {gjditchfield@plg},
    6803     title       = {{OOPSLA} '86 Conference Proceedings},
    6804     booktitle   = {{OOPSLA} '86 Conference Proceedings},
    6805     year        = 1986,
    6806     editor      = {Norman Meyrowitz},
    6807     publisher   = sigplan # " 21(11)",
    6808     organization= {Association for Computing Machinery},
    6809     address     = {Portland, Oregon},
    6810     month       = sep # { 29}
    6811 }
    6812 
    6813 @proceedings{OOPSLA87,
    6814     contributer = {gjditchfield@plg},
    6815     title       = {{OOPSLA} '87 Conference Proceedings},
    6816     booktitle   = {{OOPSLA} '87 Conference Proceedings},
    6817     year        = 1987,
    6818     editor      = {Norman Meyrowitz},
    6819     publisher   = sigplan # " 22(12)",
    6820     organization= {Association for Computing Machinery},
    6821     address     = {Orlando, Florida},
    6822     month       = oct # { 4--8}
    6823 }
    6824 
    6825 @proceedings{OOPSLA88,
    6826     contributer = {gjditchfield@plg},
    6827     title       = {{OOPSLA} '88 Conference Proceedings},
    6828     booktitle   = {{OOPSLA} '88 Conference Proceedings},
    6829     year        = 1988,
    6830     editor      = {Norman Meyrowitz},
    6831     publisher   = sigplan # " 23(11)",
    6832     organization= {Association for Computing Machinery},
    6833     address     = {San Diego, California},
    6834     month       = sep # { 25--30}
    6835 }
    6836 
    6837 @proceedings{OOPSLA89,
    6838     contributer = {gjditchfield@plg},
    6839     title       = {{OOPSLA} '89 Conference Proceedings},
    6840     booktitle   = {{OOPSLA} '89 Conference Proceedings},
    6841     year        = 1989,
    6842     editor      = {Norman Meyrowitz},
    6843     publisher   = sigplan # " 24(10)",
    6844     organization= {Association for Computing Machinery},
    6845     address     = {New Orleans, Louisiana},
    6846     month       = oct # { 1--6}
    6847 }
    6848 
    6849 @proceedings{OOPSLA90,
    6850     contributer = {gjditchfield@plg},
    6851     title       = {{OOPSLA/ECOOP} '90 Conference Proceedings},
    6852     booktitle   = {{OOPSLA} '90 Conference Proceedings},
    6853     year        = 1990,
    6854     editor      = {Norman Meyrowitz},
    6855     publisher   = sigplan # " 25(10)",
    6856     organization= {Association for Computing Machinery},
    6857     address     = {Ottawa, Canada},
    6858     month       = oct # { 21--25}
    6859 }
    6860 
    6861 @proceedings{OOPSLA91,
    6862     contributer = {gjditchfield@plg},
    6863     title       = {{OOPSLA} '91 Conference Proceedings},
    6864     booktitle   = {{OOPSLA} '91 Conference Proceedings},
    6865     year        = 1991,
    6866     editor      = {Andreas Paepcke},
    6867     publisher   = sigplan # " 26(11)",
    6868     organization= {Association for Computing Machinery},
    6869     address     = {Phoenix, Arizona},
    6870     month       = oct # { 6--11}
    6871 }
     1/usr/local/bibliographies/pl.bib
  • doc/refrat/refrat.tex

    r57aa6f5 r8a63547  
    1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -*- Mode: Latex -*- %%%%%%%%%%%%%%%%%%%%%%%%%%%%
    2 %%
     1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -*- Mode: Latex -*- %%%%%%%%%%%%%%%%%%%%%%%%%%%%``%%
    32%% Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
    43%%
     
    1110%% Created On       : Wed Apr  6 14:52:25 2016
    1211%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Fri Jun  3 09:43:48 2016
    14 %% Update Count     : 66
     12%% Last Modified On : Tue May  3 18:00:28 2016
     13%% Update Count     : 64
    1514%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1615
     
    3029\usepackage{textcomp}
    3130\usepackage[latin1]{inputenc}
    32 \usepackage{fullpage,times,comment}
     31\usepackage{upquote}
     32\usepackage{fullpage,times}
    3333\usepackage{epic,eepic}
    34 \usepackage{upquote}                                                                    % switch curled `' to straight `'
    3534\usepackage{xspace}
    36 \usepackage{varioref}                                                                   % extended references
    37 \usepackage{listings}                                                                   % format program code
    38 \usepackage{footmisc}                                                                   % support label/reference in footnote
    39 \usepackage{latexsym}                                   % \Box glyph
     35\usepackage{varioref}
     36\usepackage{listings}
     37\usepackage{comment}
     38\usepackage{latexsym}                                   % \Box
    4039\usepackage{mathptmx}                                   % better math font with "times"
    4140\usepackage[pagewise]{lineno}
  • doc/user/user.tex

    r57aa6f5 r8a63547  
    1111%% Created On       : Wed Apr  6 14:53:29 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Fri Jun  3 09:49:31 2016
    14 %% Update Count     : 281
     13%% Last Modified On : Tue May  3 08:05:33 2016
     14%% Update Count     : 246
    1515%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1616
     
    3030\usepackage{textcomp}
    3131\usepackage[latin1]{inputenc}
    32 \usepackage{fullpage,times,comment}
     32\usepackage{upquote}
     33\usepackage{fullpage,times}
    3334\usepackage{epic,eepic}
    34 \usepackage{upquote}                                                                    % switch curled `' to straight `'
    3535\usepackage{xspace}
    36 \usepackage{varioref}                                                                   % extended references
    37 \usepackage{listings}                                                                   % format program code
    38 \usepackage{footmisc}                                                                   % support label/reference in footnote
    39 \usepackage{latexsym}                                   % \Box glyph
     36\usepackage{varioref}
     37\usepackage{listings}
     38\usepackage{footmisc}
     39\usepackage{comment}
     40\usepackage{latexsym}                                   % \Box
    4041\usepackage{mathptmx}                                   % better math font with "times"
    4142\usepackage[pagewise]{lineno}
     
    112113The syntax of the \CFA language builds from C, and should look immediately familiar to C programmers.
    113114% Any language feature that is not described here can be assumed to be using the standard C11 syntax.
    114 \CFA adds many modern programming-language features that directly leads to increased \emph{safety} and \emph{productivity}, while maintaining interoperability with existing C programs and achieving C performance.
     115\CFA adds many modern programming-language features, which directly leads to increased safety and productivity, while maintaining interoperability with existing C programs and achieving C performance.
    115116Like C, \CFA is a statically typed, procedural language with a low-overhead runtime, meaning there is no global garbage-collection.
    116117The primary new features include parametric-polymorphism routines and types, exceptions, concurrency, and modules.
     
    243244The 1999 C standard plus GNU extensions.
    244245\item\hspace*{-4pt}\Indexc{-fgnu89-¶inline¶}\index{compilation option!-fgnu89-inline@{©-fgnu89-¶inline¶©}}
    245 Use the traditional GNU semantics for inline routines in C99 mode, which allows inline routines in header files.
     246Use the traditional GNU semantics for inline routines in C99 mode.
    246247\end{description}
    247248The following new \CFA option is available:
     
    11731174Unfortunately, this restriction forces programmers to use ©goto© to achieve the equivalent for more than one level of nesting.
    11741175To prevent having to make this switch, the ©break© and ©continue© are extended with a target label to support static multi-level exit~\cite{Buhr85,Java}.
    1175 \VRef[Figure]{f:LabelledBreak} shows the labelled ©break©, and the target control structure of the exit.
    1176 The inner most loop has three exit points, which cause termination of one or more of the three nested loops, respectively.
    1177 \VRef[Figure]{f:LabelledContinue} shows the labelled ©continue©, and which control structure is the target of the next loop iteration.
    1178 The inner most loop has three restart points, which cause the next loop iteration to begin, respectively.
    1179 
    1180 \begin{figure}
    1181 \centering
     1176For the labelled ©break©, it is possible to specify which control structure is the target for exit, as in:
     1177\begin{quote2}
    11821178\begin{tabular}{@{}l@{\hspace{30pt}}l@{}}
    11831179\multicolumn{1}{c@{\hspace{30pt}}}{\textbf{\CFA}}       & \multicolumn{1}{c}{\textbf{C}}        \\
     
    12001196                        ... goto L1; ...
    12011197                        ... goto L2; ...
    1202                         ... goto L3; // or break 
     1198                        ... goto L3; // or break
    12031199                } L3: ;
    12041200        } L2: ;
     
    12061202\end{lstlisting}
    12071203\end{tabular}
    1208 \caption{Labelled Break}
    1209 \label{f:LabelledBreak}
    1210 
    1211 \vspace*{0.25in}
    1212 
     1204\end{quote2}
     1205The inner most loop has three exit points, which cause termination of one or more of the three nested loops, respectively.
     1206For the labelled ©continue©, it is possible to specify which control structure is the target for the next loop iteration, as in:
     1207\begin{quote2}
    12131208\begin{tabular}{@{}l@{\hspace{30pt}}l@{}}
    12141209\multicolumn{1}{c@{\hspace{30pt}}}{\textbf{\CFA}}       & \multicolumn{1}{c}{\textbf{C}}        \\
     
    12191214                        ... continue ®L1®; ...
    12201215                        ... continue ®L2®; ...
    1221                         ... continue ®L3®; // or continue
     1216                        ... continue ®L3®; ...
    12221217
    12231218                }
     
    12341229                        ... goto L1; ...
    12351230                        ... goto L2; ...
    1236                         ... goto L3; // or continue
     1231                        ... goto L3; ...
    12371232                  L3: ;
    12381233                }
     
    12431238\end{lstlisting}
    12441239\end{tabular}
    1245 \caption{Labelled Continue}
    1246 \label{f:LabelledContinue}
    1247 \end{figure}
    1248 
     1240\end{quote2}
     1241The inner most loop has three restart points, which cause the next loop iteration to begin, respectively.
    12491242For both ©break© and ©continue©, the target label must be directly associated with a ©for©, ©while© or ©do© statement;
    12501243for ©break©, the target label can also be associated with a ©switch© statement.
     
    33363329\begin{lstlisting}
    33373330struct Line {
    3338         float lnth;
     3331        float length;
    33393332}
    33403333// default constructor
    33413334void ?{}( Line * l ) {
    3342         l->lnth = 0.0;
    33433335        sout | "default" | endl;
     3336        l.length = 0.0;
    33443337}
    33453338
    33463339
    33473340// constructor with length
    3348 void ?{}( Line * l, float lnth ) {
    3349         l->lnth = lnth;
    3350         sout | "lnth" | l->lnth | endl;
    3351 
     3341void ?{}( Line * l, float length ) {
     3342        sout | "length" | length | endl;
     3343
     3344        l.length = length;
    33523345}
    33533346
    33543347// destructor
    3355 void ^?() {
     3348void ^?(Line &l) {
    33563349        sout | "destroyed" | endl;
    3357         l.lnth = 0.0;
     3350        l.length = 0.0;
    33583351}
    33593352
    33603353// usage
    33613354Line line1;
    3362 Line line2 = { 3.4 };
     3355Line line2{ 3.4 };
    33633356\end{lstlisting}
    33643357&
    33653358\begin{lstlisting}[language=C++]
    33663359class Line {
    3367         float lnth;
     3360        float length;
    33683361
    33693362        // default constructor
    33703363        Line() {
    33713364                cout << "default" << endl;
    3372                 lnth = 0.0;
     3365                length = 0.0;
    33733366        }
    33743367
    33753368
    3376         // constructor with lnth
     3369        // constructor with length
    33773370        Line( float l ) {
    33783371                cout << "length " << length
Note: See TracChangeset for help on using the changeset viewer.