source: doc/bibliography/cfa.bib @ 2ca35b1

aaron-thesisarm-ehcleanup-dtorsdeferred_resndemanglerjacob/cs343-translationjenkins-sandboxnew-astnew-envno_listpersistent-indexerresolv-newwith_gc
Last change on this file since 2ca35b1 was 2ca35b1, checked in by Aaron Moss <a3moss@…>, 4 years ago

Add Polymorphic C reference, fix some typos

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