source: doc/bibliography/pl.bib @ 507e7a2

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

update TIOBE entry

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