source: doc/bibliography/pl.bib @ 5ff188f

aaron-thesisarm-ehcleanup-dtorsdeferred_resndemanglerjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprnew-envno_listpersistent-indexerresolv-newwith_gc
Last change on this file since 5ff188f was 5ff188f, checked in by Peter A. Buhr <pabuhr@…>, 4 years ago

further changes to document Makefiles

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