source: doc/bibliography/pl.bib @ f6f0d06f

ADTarm-ehast-experimentalenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprpthread-emulationqualifiedEnum
Last change on this file since f6f0d06f was 251454a0, checked in by Peter A. Buhr <pabuhr@…>, 5 years ago

more writing

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