source: doc/bibliography/pl.bib @ 4271a1e

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 4271a1e was 4271a1e, checked in by Aaron Moss <a3moss@…>, 4 years ago

Stub extra related work section

  • Property mode set to 100644
File size: 228.7 KB
Line 
1% Conventions: uncross-referenced entries appear first, then
2%    cross-referenced entries.  In both groups, entries are sorted by their
3%    title field.  Lines like "% A" exist to speed searches.  The main
4%    paper on a language uses the language name as the citation key.  Other
5%    papers use ``<language name>:'' as a prefix.  Please consider leaving
6%    keyword lists and an abstract or comment for future generations, and
7%    put some identification in a contributer field.
8
9%    Predefined journal names:
10%  acmcs: Computing Surveys             acta: Acta Infomatica
11@string{acta="Acta Infomatica"}
12%  cacm: Communications of the ACM
13%  ibmjrd: IBM J. Research & Development ibmsj: IBM Systems Journal
14%  ieeese: IEEE Trans. on Soft. Eng.    ieeetc: IEEE Trans. on Computers
15%  ieeetcad: IEEE Trans. on Computer-Aided Design of Integrated Circuits
16%  ipl: Information Processing Letters  jacm: Journal of the ACM
17%  jcss: J. Computer & System Sciences  scp: Science of Comp. Programming
18%  sicomp: SIAM J. on Computing         tocs: ACM Trans. on Comp. Systems
19%  tods: ACM Trans. on Database Sys.    tog: ACM Trans. on Graphics
20%  toms: ACM Trans. on Math. Software   toois: ACM Trans. on Office Info. Sys.
21%  toplas: ACM Trans. on Prog. Lang. & Sys.
22%  tcs: Theoretical Computer Science
23@string{ieeepds="IEEE Transactions on Parallel and Distributed Systems"}
24% @string{ieeepds="IEEE Trans. Parallel Distrib. Syst."}
25@string{ieeese="IEEE Transactions on Software Engineering"}
26% @string{ieeese="IEEE Trans. Softw. Eng."}
27@string{spe="Software---\-Practice and Experience"}
28% @string{spe="Softw. Pract. Exp."}
29@string{ccpe="Concurrency and Computation: Practice and Experience"}
30% @string{ccpe="Concurrency Comput: Pract 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 7.0.0},
1442    institution = {School of Computer Science, University of Waterloo},
1443    address     = {Waterloo, Ontario, Canada, N2L 3G1},
1444    month       = dec,
1445    year        = 2017,
1446    note        = {\href{http://plg.uwaterloo.ca/~usystem/pub/uSystem/u++-7.0.0.sh}{http://\-plg.\-uwaterloo.\-ca/\-$\sim$usystem/\-pub/\-uSystem/\-u++-7.0.0.sh}},
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{Pharr12,
3649  title={ispc: A SPMD compiler for high-performance CPU programming},
3650  author={Pharr, Matt and Mark, William R},
3651  booktitle={Innovative Parallel Computing (InPar), 2012},
3652  pages={1--13},
3653  year={2012},
3654  organization={IEEE}
3655}
3656
3657@inproceedings{Hibbard77,
3658    keywords    = {algol-68, concurrency},
3659    contributer = {pabuhr@plg},
3660    author      = {Peter G. Hibbard and P. Knueven and B. W. Leverett},
3661    title       = {Issues in the Efficient Implementation and Use of Multiprocessing in {Algol} 68},
3662    booktitle   = {Proceedings of the 5th Annual iii Conference},
3663    address     = {Guidel, France},
3664    month       = may,
3665    year        = 1977,
3666    pages       = {203-221}
3667}
3668
3669@inproceedings{Miller97,
3670    keywords    = {exception handling, software-engineering},
3671    contributer = {pabuhr@plg},
3672    author      = {Robert Miller and Anand Tripathi},
3673    title       = {Issues with Exception Hnadling in Object-Oriented Systems},
3674    booktitle   = {ECOOP'97},
3675    publisher   = {Springer},
3676    volume      = 1241,
3677    series      = {Lecture Notes in Computer Science},
3678    year        = 1997,
3679    pages       = {85-103}
3680}
3681   
3682@article{Murer96,
3683    keywords    = {interators, generators, cursors},
3684    contributer = {pabuhr@plg},
3685    author      = {Stephan Murer and Stephen Omohundro and David Stoutamire and Clemens Szyperski},
3686    title       = {Iteration Abstraction in Sather},
3687    journal     = toplas,
3688    month       = jan,
3689    year        = 1996,
3690    volume      = 18,
3691    number      = 1,
3692    pages       = {1-15},
3693}
3694
3695% J
3696                 
3697@book{Java,
3698    keywords    = {Java},
3699    contributer = {pabuhr@plg},
3700    author      = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha},
3701    title       = {The {Java} Language Specification},
3702    publisher   = {Addison-Wesley},
3703    address     = {Reading},
3704    year        = 2000,
3705    edition     = {2nd},
3706}
3707
3708@manual{Java8,
3709    keywords    = {Java SE 8},
3710    contributer = {pabuhr@plg},
3711    author      = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha and Alex Buckley},
3712    title       = {{Java} Language Specification},
3713    publisher   = {Oracle},
3714    year        = 2015,
3715    edition     = {Java SE 8},
3716}
3717
3718@manual{JUC,
3719    keywords    = {Java concurrency library},
3720    contributer = {pabuhr@plg},
3721    title       = {java.util.concurrency},
3722    author      = {Doug Lea},
3723    organization= {Oracle},
3724    year        = 2014,
3725    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}},
3726}
3727
3728% K
3729
3730@article{Duggan96,
3731    keywords    = {concurrency, critical section},
3732    contributer = {pabuhr@plg},
3733    author      = {Dominic Duggan and Gordon V. Cormack and John Ophel},
3734    title       = {Kinded Type Inference for Parametric Overloading},
3735    journal     = acta,
3736    volume      = 33,
3737    number      = 1,
3738    year        = 1996,
3739    pages       = {21-68},
3740}
3741
3742@article{Peter35,
3743    keywords    = {recursion, Ackermann function},
3744    contributer = {pabuhr@plg},
3745    author      = {R{\'{o}}zsa P{\'{e}}ter},
3746    title       = {Konstruktion nichtrekursiver Funktionen},
3747    publisher   = {Springer},
3748    journal     = mathann,
3749    number      = 111,
3750    volume      = 1,
3751    pages       = {42-60},
3752    month       = dec,
3753    year        = 1935,
3754}
3755
3756% L
3757
3758@TechReport{WVWR88:L,
3759    contributer = {gjditchf@plg},
3760    author      = {Hanno Wupper and Jan Vytopil and Martin Wieczorek and Dick de Reus},
3761    title       = {{L}_{3333}: A Simple Language with Static Typing of Hard Real-Time Constraints},
3762    institution = {Department of Informatics, Faculty of Science, Catholic University Nijmegen},
3763    year        = 1988,
3764    number      = {88-3},
3765    address     = {Katholieke Universiteit Nijmegen, Fakulteit der Wiskunde
3766                   en Natuurwetenschappen, Infomatica V, Toernooiveld, 6512
3767                   ED Nijmegen, The Netherlands},
3768    month       = apr,
3769    annote      = {A polymorphic typed lambda calculus with \begin{itemize}
3770                   \item A trivial type, ``!'', with a single element.
3771                   \item Labelled types, distinct from each other.
3772                   ``!False'' and ``!True'' are distinct types, each
3773                   containing a single value serving as boolean false and
3774                   true.  ``2'' is an abbreviation for ``!0 succ succ'', the
3775                   type containing only 2.
3776                   \item Disjunction types ``\{| !False, !True |\}''.  Interval
3777                   types are abbreviations for disjunctions.
3778                   \item Conjunction types ``\{\& real Re, real Im \&\}'', where
3779                   ``Re'' and ``Im'' are type labels that distinguish between the
3780                   fields.
3781                   \item Pair types ``\{^ a, b ^\}'', for use in recursive types
3782                   and dyadic infix functions.
3783                   \item Function types, universal types, existential types,
3784                   and subtyping (viewed as coercion), as in Fun.
3785                   \end{itemize}
3786                   Disjunctions and conjunctions types are associative and
3787                   commutative (i.e. flat).  Each type has a matching
3788                   constructor.  Functions use pattern matching on type
3789                   labels to strip labels and extract conjunction fields:
3790                   \begin{verbatim}
3791                   \lambda n {0...1000000 Guilders}. ... n ...
3792                   -- both argument and n are amounts in Guilders.
3793                   \lambda n {0...1000000} Guilders. ... n ...
3794                   -- argument in Guilders, but n is in 0...1000000.
3795                   \end{verbatim}
3796                   ``Function bundles'' (conjunctions of functions), applied
3797                   to arguments, replace Dijkstra's guarded if...fi, but the
3798                   bundles are first-class and the guards are part of their
3799                   type.
3800
3801                   The same trick used to define the type ``2'' is used to
3802                   move absolute times into the type system, to allow static
3803                   checking. ``0`'' denotes a time before the system begins
3804                   execution.  ``\#`'' denotes ``eventually'', and ``?`''
3805                   denotes ``maybe never''.  ``a\\t'' and ``a@t'' are types
3806                   of a value of type a that will be available no later
3807                   (earlier) than time t.  Universals and existentials use
3808                   subtyping to parameterize functions by start time:
3809                   \begin{verbatim}
3810                   let f {\forall t > \#`}. {a\t} \on {b\t+d}
3811                   f{then} y -- argument y must be available at time ``then''.
3812                   \end{verbatim}
3813                   Functions can return before their arguments are available
3814                   if they don't use them.  However, function {\em bundles}
3815                   can't return until their result type is known, so the
3816                   lower and upper time bounds of the bundle are the
3817                   second-last upper bound of the component functions: at
3818                   that time, there is only one alternative left.
3819
3820                   Explicit time parameterization allows slack in time
3821                   specification.  Tools could point out slack or determine
3822                   degree of parallelism.}
3823}
3824
3825@mastersthesis{Clarke90,
3826    keywords    = {concurrency, postponing requests},
3827    contributer = {pabuhr@plg},
3828    author      = {Charles L. A. Clarke},
3829    title       = {Language and Compiler Support for Synchronous Message Passing Architectures},
3830    school      = {University of Waterloo},
3831    year        = 1990,
3832    address     = {Waterloo, Ontario, Canada, N2L 3G1}
3833}
3834
3835@article{Tennent77,
3836    keywords    = {abstraction, correspondence, Pascal},
3837    contributer = {gjditchfield@plg},
3838    author      = {R. D. Tennent},
3839    title       = {Language Design Methods Based on Semantic Principles},
3840    journal     = acta,
3841    year        = 1977,
3842    volume      = 8,
3843    number      = 2,
3844    pages       = {97-112},
3845    note        = {reprinted in \cite{pldesign}},
3846    abstract    = {
3847        Two language design methods based on principles derived from the
3848        denotational approach to programming language semantics are
3849        described and illustrated by an application to the language Pascal.
3850        The principles are, firstly, the correspondence between parametric
3851        and declarative mechanisms and secondly, a principle of abstraction
3852        for programming languages adapted from set theory.  Several useful
3853        extensions and generalizations of Pascal emerge by applying these
3854        principles, including a solution to the array parameter problem,
3855        and a modularization facility.
3856    },
3857}
3858
3859@article{Liskov86,
3860    keywords    = {synchronous communication, concurrency},
3861    contributer = {pabuhr@plg},
3862    author      = {Barbara Liskov and Maurice Kerlihy and Lucy Gilbert},
3863    title       = {Limitations of Synchronous Communication with Static
3864                   Process Structure in Languages for Distributed Computing},
3865    journal     = {},
3866    volume      = {},
3867    number      = {},
3868    month       = {},
3869    year        = {},
3870    pages       = {},
3871}
3872
3873@article{Linda,
3874    keywords    = {Linda, concurrency},
3875    contributer = {pabuhr@plg},
3876    author      = {Nicholas Carriero and David Gelernter},
3877    title       = {Linda in Context},
3878    journal     = cacm,
3879    volume      = 32,
3880    number      = 4,
3881    month       = apr,
3882    year        = 1989,
3883    pages       = {444-458}
3884}
3885
3886@book{Weissman67,
3887    keywords    = {lisp},
3888    author      = {Clark Weissman},
3889    title       = {Lisp 1.5 Primer},
3890    publisher   = {Dickenson Publishing},
3891    address     = {Belmont},
3892    year        = 1967,
3893}
3894
3895@article{Sundell08,
3896    keywords    = {lock free, deque},
3897    contributer = {pabuhr@plg},
3898    author      = {H{\r{a}}kan Sundell and Philippas Tsigas},
3899    title       = {Lock-free Deques and Doubly Linked Lists},
3900    journal     = {J. Parallel Distrib. Comput.},
3901    volume      = 68,
3902    number      = 7,
3903    year        = 2008,
3904    pages       = {1008-1020},
3905}
3906
3907@article{Cormack89,
3908    keywords    = {parsing, LR, error recovery},
3909    contributer = {pabuhr@plg},
3910    author      = {Gordon V. Cormack},
3911    title       = {An {LR} Substring Parser for Noncorrecting Syntax Error Recovery},
3912    journal     = sigplan,
3913    volume      = 24,
3914    number      = 7,
3915    month       = jul,
3916    year        = 1989,
3917    pages       = {161-169},
3918    note        = {Proceedings of the {SIGPLAN}~'89 Conference on Programming Language Design and Implementation}
3919}
3920
3921% M
3922
3923@book{M68K,
3924    keywords    = {M680XX, Motorola},
3925    contributer = {pabuhr@plg},
3926    key         = {Motorola},
3927    title       = {M68000 Family Programmer's Reference Manual},
3928    publisher   = {Motorola},
3929    year        = 1992,
3930}
3931
3932@article{c++libs,
3933    keywords    = {directory structure},
3934    contributer = {gjditchfield@plg},
3935    author      = {J. M. Coggins and G. Bollella},
3936    title       = {Managing {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Libraries},
3937    journal     = sigplan,
3938    year        = 1989,
3939    month       = jun, volume = 24, number = 6, pages = {37-48},
3940    abstract    = {
3941        This paper describes a scheme we have used to manage a large
3942        library written in the C++ language.  The scheme imposes a
3943        directory structure, and represents dependency hierarchy in a
3944        globally accessible file we call the 'prelude' file.  We also
3945        discuss the structure of the description files (makefiles) used
3946        with the UNIX options we have found to be useful in reducing the
3947        size of the library, and how to minimize recompilation time after
3948        trivial changes to the source code of the library.
3949    }
3950}
3951
3952@inproceedings{mprof,
3953    keywords    = {malloc},
3954    contributer = {gjditchfield@plg},
3955    author      = {Benjamin Zorn and Paul Hilfinger},
3956    title       = {A Memory Allocation Profiler for {C} and Lisp Programs},
3957    booktitle   = {Summer 1988 {USENIX} proceedings},
3958    year        = 1988
3959}
3960
3961@manual{MMTk,
3962    keywords    = {Java memory management},
3963    contributer = {pabuhr@plg},
3964    title       = {MMTk: The Memory Management Toolkit},
3965    author      = {Steve Blackburn and Robin Garner and Daniel Frampton},
3966    month       = sep,
3967    year        = 2006,
3968    note        = {\textsf{http://cs.anu.edu.au/\-\char`\~Robin.Garner/\-mmtk-guide.pdf}},
3969}
3970
3971@article{Adve10,
3972    keywords    = {Java memory management},
3973    contributer = {pabuhr@plg},
3974    author      = {Sarita V. Adve and Hans-J. Boehm},
3975    title       = {Memory Models: A Case for Rethinking Parallel Languages and Hardware},
3976    journal     = cacm,
3977    volume      = 53,
3978    number      = 8,
3979    month       = aug,
3980    year        = 2010,
3981    pages       = {90-101},
3982    publisher   = {ACM},
3983    address     = {New York, NY, USA},
3984}
3985@techreport{Mesa,
3986    keywords    = {monitors, packages},
3987    contributer = {pabuhr@plg},
3988    author      = {James G. Mitchell and William Maybury and Richard Sweet},
3989    title       = {Mesa Language Manual},
3990    institution = {Xerox Palo Alto Research Center},
3991    number      = {CSL--79--3},
3992    month       = apr,
3993    year        = 1979
3994}
3995
3996@article{Andrews89,
3997    keywords    = {semaphore, split-binary, baton},
3998    contributer = {pabuhr@plg},
3999    author      = {Gregory R. Andrews},
4000    title       = {A Method for Solving Synronization Problems},
4001    journal     = scp,
4002    volume      = 13,
4003    number      = 4,
4004    month       = dec,
4005    year        = 1989,
4006    pages       = {1-21},
4007}
4008
4009@inproceedings{Mitchell78,
4010    keywords    = {Mesa},
4011    contributer = {pabuhr@plg},
4012    author      = {James G. Mitchell},
4013    title       = {Mesa: A Designer's User Perspective},
4014    booktitle   = {Spring CompCom 78},
4015    organization= {Sixteenth IEEE Computer Society International Conference},
4016    address     = {San Francisco, California, U.S.A.},
4017    month       = feb,
4018    year        = 1978,
4019    pages       = {36-39},
4020    note        = {IEEE Catalog No. 78CH1328-4C},
4021}
4022
4023@article{Gentleman81,
4024    keywords    = {messages, concurrency},
4025    contributer = {pabuhr@plg},
4026    author      = {W. Morven Gentleman},
4027    title       = {Message Passing between Sequential Processes:
4028                   the Reply Primitive and the Administrator Concept},
4029    journal     = spe,
4030    month       = may,
4031    year        = 1981,
4032    volume      = 11,
4033    number      = 5,
4034    pages       = {435-466}
4035}
4036
4037@article{Cormack88,
4038    keywords    = {concurrency},
4039    contributer = {pabuhr@plg},
4040    author      = {G. V. Cormack},
4041    title       = {A Micro Kernel for Concurrency in C},
4042    journal     = spe,
4043    month       = may,
4044    year        = 1988,
4045    volume      = 18,
4046    number      = 4,
4047    pages       = {485-491}
4048}
4049
4050@article{Buhr90a,
4051    keywords    = {concurrency, light-weight process, shared memory},
4052    contributer = {pabuhr@plg},
4053    author      = {Peter A. Buhr and Richard A. Stroobosscher},
4054    title       = {The $\mu${S}ystem: Providing Light-Weight Concurrency on Shared-Memory Multiprocessor Computers Running {UNIX}},
4055    journal     = spe,
4056    volume      = 20,
4057    number      = 9,
4058    month       = sep,
4059    year        = 1990,
4060    pages       = {929-963},
4061}
4062
4063@techreport{uSystem,
4064    keywords    = {C, concurrency, light-weight process, shared memory},
4065    contributer = {pabuhr@plg},
4066    author      = {Peter A. Buhr and Hamish I. Macdonald and Richard A. Stroobosscher},
4067    title       = {$\mu${S}ystem Annotated Reference Manual, Version 4.4.3},
4068    institution = {Department of Computer Science, University of Waterloo},
4069    address     = {Waterloo, Ontario, Canada, N2L 3G1},
4070    month       = sep,
4071    year        = 1994,
4072    note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-uSystem/\-uSystem.ps.gz}}},
4073}
4074
4075@book{Mips4000,
4076    key         = {Mips4000},
4077    title       = {MIPS R4000 Microprocessor User's Manual},
4078    publisher   = {MIPS Computer Systems Inc},
4079    year        = 1991,
4080}
4081
4082@inproceedings{Mjolner,
4083    keywords    = {Mjolner, hierarchical windows},
4084    contributer = {pabuhr@plg},
4085    author      = {G\"{o}rel Hedin and Boris Magnusson},
4086    title       = {The Mj{\o}lner Environment: Direct Interaction with Abstractions},
4087    booktitle   = {Proceedings of the European Conference on Object Oriented Programming},
4088    organization= {ECOOP'88},
4089    publisher   = {Springer},
4090    volume      = 322,
4091    editor      = {S. Gjessing and K. Nygaard},
4092    address     = {Oslo, Norway},
4093    month       = aug,
4094    year        = 1988,
4095    pages       = {41-54},
4096    note        = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
4097}
4098
4099@article{Skillicorn98,
4100    keywords    = {parallel models},
4101    contributer = {pabuhr@plg},
4102    author      = {David B. Skillicorn and Domenico Talia},
4103    title       = {Models and Languages for Parallel Computation},
4104    journal     = acmcs,
4105    volume      = 30,
4106    number      = 2,
4107    month       = jun,
4108    year        = 1998,
4109    pages       = {123-169},
4110}
4111
4112@article{Werther96,
4113    keywords    = {C++, language syntax},
4114    contributer = {pabuhr@plg},
4115    author      = {Ben Werther and Damian Conway},
4116    title       = {A Modest Proposal: {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Resyntaxed},
4117    journal     = sigplan,
4118    volume      = 31,
4119    number      = 11,
4120    month       = nov,
4121    year        = 1996,
4122    pages       = {74-82},
4123}
4124
4125@book{Alexandrescu01,
4126    keywords    = {c design-patterns programming},
4127    contributer = {pabuhr@plg},
4128    author      = {Andrei Alexandrescu},
4129    title       = {Modern C++ Design: Generic Programming and Design Patterns Applied},
4130    publisher   = {Addison-Wesley Professional},
4131    address     = {Boston},
4132    month       = feb,
4133    year        = 2001,
4134    isbn        = {0201704315},
4135}
4136
4137@book{Tanenbaum92,
4138    keywords    = {concurrency, operating systems},
4139    contributer = {pabuhr@plg},
4140    author      = {Andrew S. Tanenbaum},
4141    title       = {Modern Operating Systems},
4142    publisher   = {Prentice-Hall},
4143    address     = {Englewood Cliffs},
4144    year        = 1992,
4145}
4146
4147@article{Wirth77,
4148    keywords    = {modules, coroutines},
4149    contributer = {pabuhr},
4150    author      = {Niklaus Wirth},
4151    title       = {Modula: a Language for Modular Multiprogramming},
4152    journal     = spe,
4153    month       = {January--February},
4154    year        = 1977,
4155    volume      = 7,
4156    number      = 1,
4157    pages       = {3-35},
4158}
4159
4160@book{Harbison92,
4161    contributer = {mhcoffin},
4162    author      = {Samuel P. Harbison},
4163    title       = {Modula-3},
4164    publisher   = {Prentise Hall, Inc.},
4165    year        = {1992},
4166    comment     = {This is a textbook for learning Modula-3.}
4167}
4168
4169@techreport{Modula-3:old,
4170    keywords    = {Modula-3, inheritance, type extension},
4171    contributer = {gjditchfield@plg},
4172    author      = {Luca Cardelli and James Donahue and Lucille Glassman and Mick
4173                   Jordan and Bill Kalsow and Greg Nelson},
4174    title       = {Modula-3 Report},
4175    institution = {Systems Research Center},
4176    address     = {130 Lytton Avenue, Palo Alto, California  94301},
4177    month       = aug,
4178    year        = 1988,
4179    number      = 31
4180}
4181 
4182@article{Dueck90,
4183    keywords    = {attribute grammars},
4184    contributer = {pabuhr@plg},
4185    author      = {Gerald D. P. Dueck and Gordon V. Cormack},
4186    title       = {Modular Attribute Grammars},
4187    journal     = {The Computer Journal},
4188    month       = apr,
4189    year        = 1990,
4190    volume      = 33,
4191    number      = 2,
4192    pages       = {164-172},
4193}
4194
4195@article{Yemini85,
4196    keywords    = {exception handling},
4197    contributer = {pabuhr@plg},
4198    author      = {Shaula Yemini and Daniel M. Berry},
4199    title       = {A Modular Verifiable Exception-Handling Mechanism},
4200    journal     = toplas,
4201    month       = apr,
4202    year        = 1985,
4203    volume      = 7,
4204    number      = 2,
4205    pages       = {214-243},
4206}
4207
4208@article{Buhr95b,
4209    keywords    = {concurrency, monitors, classification},
4210    contributer = {pabuhr@plg},
4211    author      = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
4212    title       = {Monitor Classification},
4213    journal     = acmcs,
4214    volume      = 27,
4215    number      = 1,
4216    month       = mar,
4217    year        = 1995,
4218    pages       = {63-107},
4219}
4220
4221@article{Hoare74,
4222    keywords    = {monitor},
4223    contributer = {pabuhr@plg},
4224    author      = {C. A. R. Hoare},
4225    title       = {Monitors: An Operating System Structuring Concept},
4226    journal     = cacm,
4227    volume      = 17,
4228    number      = 10,
4229    month       = oct,
4230    year        = 1974,
4231    pages       = {549-557},
4232    annote      = {
4233    }
4234}
4235
4236@inbook{Buhr99a,
4237    keywords    = {concurrency, monitors, classification},
4238    contributer = {pabuhr@plg},
4239    author      = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
4240    title       = {Encyclopedia of Computer Science and Technology},
4241    chapter     = {Monitor Taxonomy},
4242    publisher   = {Marcel Dekker, Inc},
4243    volume      = {40, supplement 25},
4244    year        = 1999,
4245    pages       = {191-212},
4246}
4247%    editor     = {Allen Kent and James G. Williams},
4248
4249@manual{MPI,
4250    keywords    = {MPI},
4251    contributer = {pabuhr@plg},
4252    title       = {MPI: A Message-Passing Interface Standard, Version 3.1},
4253    organization= {Message Passing Interface Forum},
4254    address     = {University of Tennessee, Knoxville, Tennessee},
4255    month       = jun,
4256    year        = 2015,
4257    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}},
4258}
4259
4260@article{multilisp,
4261    keywords    = {futures, scheme},
4262    contributer = {gjditchfield@plg},
4263    author      = {Halstead, Jr.,Robert H.},
4264    title       = {Multilisp: A Language for Concurrent Symbolic Programming},
4265    journal     = toplas,
4266    volume      = 7,
4267    number      = 4,
4268    pages       = {501-538},
4269    month       = oct,
4270    year        = 1985,
4271    comment     = {
4272        (future E) begins evaluating the expression E, and
4273        returns a ``future'' representing the value.  When evaluation is
4274        finished, the value of E replaces the future.  Operations that need
4275        the future's value suspend until it is available.  Assignment and
4276        parameter passing do not suspend.  Future introduces concurrency
4277        between the calculation of a value and its use; reference to
4278        futures is a synchronization mechanism.
4279
4280        (pcall F A B ... C) concurrently evaluates F, A, B, ... C, and then
4281        applies F to the arguments.  pcall can be built from future and a
4282        ``touch'' operation.  pcall is included because it may not be easy
4283        to determine that there are no critical sections between the future
4284        expression and the code between the future call and the value's
4285        first use.
4286
4287        (delay E) is like future, but E's process does not begin until its
4288        value is needed.  It provides lazy evaluation.  Replacing delay
4289        with future would launch an infinite number of processes.
4290    }
4291}
4292
4293@techreport{Bretthauer89,
4294    keywords    = {multiple inheritance},
4295    contributer = {pabuhr@plg},
4296    author      = {Harry Bretthauer and Thomas Christaller and J\"{u}rgen Kopp}, 
4297    title       = {Multiple vs. Single Inheritance in Object-oriented Programming Languages. What do we really want?},
4298    institution = {Gesellschaft F\"{u}r Mathematik und Datenverarbeitung mbH},
4299    address     = {Schlo$\beta$ Birlinghoven, Postfach 12 40, D-5205 Sankt Augustin 1, Deutschland},
4300    number      = {Arbeitspapiere der GMD 415},
4301    month       = nov,
4302    year        = 1989,
4303}
4304
4305@inproceedings{c++:multinh,
4306    keywords    = {C++, multiple inheritance, implementation},
4307    contributer = {gjditchfield@plg},
4308    author      = {Bjarne Stroustrup},
4309    title       = {Multiple Inheritance for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4310    booktitle   = {Proceedings of the Spring '87 EUUG Conference},
4311    month       = may, year = 1987
4312}
4313
4314@inproceedings{st:mult,
4315    keywords    = {smalltalk, multiple inheritance, implementation},
4316    contributer = {gjditchfield@plg},
4317    author      = {Daniel H. H. Ingalls and A. H. Borning},
4318    title       = {Multiple Inheritance in Smalltalk-80},
4319    booktitle   = {Proceedings of the National Conference on Artificial Intelligence},
4320    month       = aug,
4321    year        = 1982,
4322    pages       = {234-238},
4323    organization= {American Association for Artificial Intelligence},
4324    comment     = {
4325        Methods are looked up in the current class, the superclasses, the
4326        supersuperclasses, etc.  The same method can be inherited
4327        repeatedly, but having different methods for the same message is an
4328        error.  Only one copy is made for multiply-inherited fields.
4329
4330        {\tt X.m} is the method m in superclass X.  {\tt super.m} is
4331        allowed if there is no ambiguity; {\tt self super.m} replaces {\tt
4332        super m}.  {\tt all.m} invokes all inherited versions of m.
4333
4334        Methods on the first-superclass chain are found as usual.  Methods
4335        from other superclasses are copied into the class dictionary.  An
4336        error method is created if inherited methods conflict.  The parser
4337        is changed to allow compound selectors.  {\tt Object
4338        messageNotUnderstood} is changed to look for compound selectors and
4339        dynamically add a method with the right name and body to the class.
4340        When methods are edited, they are copied into subclasses and
4341        compound selector versions are deleted, as appropriate.
4342    }
4343}
4344
4345@article{Lamport86I,
4346    keywords    = {software solutions, N-thread, mutual exclusions},
4347    contributer = {pabuhr@plg},
4348    author      = {Leslie Lamport},
4349    title       = {The Mutual Exclusion Problem: Part\,{I}--A Theory of Interprocess Communication},
4350    journal     = jacm,
4351    volume      = 33,
4352    number      = 2,
4353    month       = apr,
4354    year        = 1986,
4355    pages       = {313--326},
4356    numpages    = {14},
4357    publisher   = {ACM},
4358    address     = {New York, NY, USA},
4359}
4360
4361@article{Lamport86II,
4362    keywords    = {software solutions, N-thread, mutual exclusions},
4363    contributer = {pabuhr@plg},
4364    author      = {Leslie Lamport},
4365    title       = {The Mutual Exclusion Problem: Part\,{II}--Statement and Solutions},
4366    journal     = jacm,
4367    volume      = 33,
4368    number      = 2,
4369    month       = apr,
4370    year        = 1986,
4371    pages       = {327--348},
4372    numpages    = {22},
4373    publisher   = {ACM},
4374    address     = {New York, NY, USA},
4375}
4376
4377@article{Burns78,
4378    keywords    = {hardware, N-process solution, O(N)},
4379    contributer = {pabuhr@plg},
4380    author      = {James E. Burns},
4381    title       = {Mutual Exclusion with Linear Waiting Using Binary Shared Variables},
4382    journal     = {SIGACT News},
4383    volume      = 10,
4384    number      = 2,
4385    month       = {Summer},
4386    year        = 1978,
4387    pages       = {42-47},
4388}
4389
4390@inproceedings{Burns80,
4391    keywords    = {N-process software solution},
4392    contributer = {pabuhr@plg},
4393    author      = {James E. Burns and Nancy A. Lynch},
4394    title       = {Mutual Exclusion using Indivisible Reads and Writes},
4395    booktitle   = {Proceedings of the 18th Annual Allerton Conference on Communications, Control and Computing, Monticello, Illinois, USA},
4396    year        = 1980,
4397    pages       = {833-842},
4398    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]},
4399    optnote     = {\textsf{http://\-groups.csail.mit.edu/\-tds/\-papers/\-Lynch/\-allertonconf.pdf}},
4400}
4401
4402@article{Peterson81,
4403    keywords    = {concurrency, critical section},
4404    contributer = {pabuhr@plg},
4405    author      = {G. L. Peterson},
4406    title       = {Myths About the Mutual Exclusion Problem},
4407    journal     = ipl,
4408    year        = 1981,
4409    month       = jun,
4410    volume      = 12,
4411    number      = 3,
4412    pages       = {115-116},
4413}
4414
4415% N
4416
4417@article{Haddon77,
4418    keywords    = {monitors, nested monitor calls},
4419    contributer = {pabuhr@plg},
4420    author      = {Bruce K. Haddon},
4421    title       = {Nested Monitor Calls},
4422    journal     = osr,
4423    volume      = 11,
4424    number      = 4,
4425    month       = oct,
4426    year        = 1977,
4427    pages       = {18-23},
4428}
4429
4430@inproceedings{nesting,
4431    keywords    = {},
4432    contributer = {gjditchfield@plg},
4433    author      = {Lori A. Clarke and Jack C. Wilenden and Alexander L. Wolf},
4434    title       = {Nesting in {Ada} Programs is for the Birds},
4435    booktitle   = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada}
4436        Programming Language},
4437    year        = 1980,
4438    month       = dec, pages = {139-145},
4439    note        = {SIGPLAN Notices, v. 15, n. 11},
4440    abstract    = {
4441        Given a data abstraction construct like the Ada package and in the
4442        light of current thoughts on programming methodology, we feel that
4443        nesting is an anachronism.  In this paper we propose a nest-free
4444        program style for Ada that eschews nested program units and
4445        declarations within blocks and instead heavily utilizes packages
4446        and context specifications as mechanisms for controlling
4447        visibility.  We view this proposal as a first step toward the
4448        development of programming methods that exploit the novel language
4449        features available in Ada.  Consideration of this proposal's
4450        ramifications for data flow, control flow, and overall program
4451        structure substantiates our contention that a tree structure is
4452        seldom a natural representation of a program and that nesting
4453        therefore generally interferes with program development and
4454        readability.
4455    }
4456}
4457
4458@inproceedings{Buhr88,
4459    keywords    = {nested classes, persistence},
4460    contributer = {pabuhr@plg},
4461    author      = {P. A. Buhr and C. R. Zarnke},
4462    title       = {Nesting in an Object Oriented Language is NOT for the Birds},
4463    booktitle   = {Proceedings of the European Conference on Object Oriented Programming},
4464    publisher   = {Springer},
4465    volume      = 322,
4466    editor      = {S. Gjessing and K. Nygaard},
4467    address     = {Oslo, Norway},
4468    month       = aug,
4469    year        = 1988,
4470    pages       = {128-145},
4471    note        = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
4472}
4473
4474@inproceedings{Thompson90new,
4475    keywords    = {Plan 9},
4476    contributer = {pabuhr@plg},
4477    title       = {A New {C} Compiler},
4478    author      = {Ken Thompson},
4479    booktitle   = {Proceedings of the Summer 1990 UKUUG Conference},
4480    year        = 1990,
4481    pages       = {41-51},
4482    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}},
4483}
4484
4485@article{Trono94,
4486    author      = {John A. Trono},
4487    title       = {A New Exercise in Concurrency},
4488    journal     = {SIGCSE Bulletin},
4489    volume      = {26},
4490    number      = {3},
4491    month       = sep,
4492    year        = {1994},
4493    pages       = {8-10},
4494    publisher   = {ACM},
4495    address     = {New York, NY, USA},
4496}
4497
4498@article{Anderson01,
4499    keywords    = {software solutions, fast path},
4500    contributer = {pabuhr@plg},
4501    author      = {James H. Anderson and Yong-Jik Kim},
4502    title       = {A New Fast-Path Mechanism For Mutual Exclusion},
4503    journal     = {Distributed Computing},
4504    month       = jan,
4505    year        = 2001,
4506    volume      = 14,
4507    number      = 1,
4508    pages       = {17-29},
4509}
4510
4511@article{Lamport74,
4512    keywords    = {concurrency, N-Process solution, O(N)},
4513    contributer = {pabuhr@plg},
4514    author      = {Leslie Lamport},
4515    title       = {A New Solution of Dijkstra's Concurrent Programming Problem},
4516    journal     = cacm,
4517    month       = aug,
4518    year        = 1974,
4519    volume      = 17,
4520    number      = 8,
4521    pages       = {453-455},
4522}
4523
4524@book{NeWS,
4525    AUTHOR      = {James Gosling and David S. H. Rosenthal and Richelle J. Arden},
4526    TITLE       = {The {NeWS} Book},
4527    PUBLISHER   = {Springer-Verlag},
4528    YEAR        = {1989}
4529}
4530
4531@article{landin,
4532    keywords    = {},
4533    contributer = {gjditchfield@plg},
4534    author      = {P. J. Landin},
4535    title       = {The Next 700 Programing Languages},
4536    journal     = cacm,
4537    year        = 1966,
4538    volume      = 9,
4539    pages       = {157-164},
4540}
4541
4542@article{Herlihy05,
4543    keywords    = {Multiprocessors, concurrent data structures, dynamic data structures, memory management, nonblocking synchronization},
4544    contributer = {pabuhr@plg},
4545    author      = {Maurice Herlihy and Victor Luchangco and Paul Martin and Mark Moir},
4546    title       = {Nonblocking Memory Management Support for Dynamic-sized Data Structures},
4547    journal     = tocs,
4548    volume      = 23,
4549    number      = 2,
4550    month       = may,
4551    year        = 2005,
4552    pages       = {146-196},
4553    numpages    = {51},
4554    publisher   = {ACM},
4555    address     = {New York, NY, USA},
4556}
4557
4558% O
4559
4560@inproceedings{oop:abcl/1,
4561    keywords    = {concurrency, OOPL, futures},
4562    contributer = {gjditchfield@plg},
4563    author      = {Akinori Yonezawa and Jean-Pierre Briot and Etsuya Shibayama},
4564    title       = {Object-Oriented Concurrent Programming in {ABCL/1}},
4565    crossref    = "OOPSLA86",
4566    pages       = {258-268},
4567    comment     = {
4568        Actions for messages sent to an object are executed concurrently
4569        iff the object has no members.  A select construct specifies a set
4570        of message patterns.
4571
4572        Express messages have priority.  If an express message arrives
4573        while an ordinary message is being processed, the action for the
4574        ordinary message is suspended or aborted and the action for the
4575        express message is executed.  The sender decides which class a
4576        message belongs in.  Non-interruptible sections can be defined.
4577
4578        Message sends can be non-blocking, or can block until a reply is
4579        received, at the sender's option.  The receiver can continue to
4580        execute after sending the reply.
4581
4582        Replies can send back ``futures'', and put values in them later.
4583        Futures are queues of values, not single values.  The caller can
4584        use a ``ready?'' predicate to test for empty queue, or can use
4585        operations to get the first or all queue elements; these operations
4586        block if the queue is empty.
4587    }
4588}
4589
4590@techreport{Schmidt95,
4591    keywords    = {ACE, concurrency, library},
4592    contributer = {pabuhr@plg},
4593    author      = {Douglas C. Schmidt},
4594    title       = {An OO Encapsulation of Lightweight OS Concurrency Mechanisms in the {ACE} Toolkit},
4595    institution = {Washington University in St. Louis},
4596    year        = 1995,
4597    number      = 31,
4598    note        = {{\small\textsf{http://\-www.cs.wustl.edu/\-\char`\~schmidt/\-PDF/\-IPC\_SAP-92.pdf}}},
4599}
4600
4601@inproceedings{OOEx,
4602    keywords    = {Exceptions, object-oriented programming languages},
4603    contributer = {gjditchfield@plg},
4604    author      = {Christophe Dony},
4605    title       = {An Object-oriented Exception Handling System for an Object-oriented Language},
4606    booktitle   = {ECOOP '88. European Conference on Object-Oriented Programming},
4607    year        = 1988,
4608    pages       = {146-161},
4609    editor      = {S. Gjessing and K. Nygaard},
4610    organization= {DND, The Norwegian Computer Society},
4611    publisher   = {Springer},
4612    comment     = {
4613           Objectives:
4614           - Users can define new exceptions.
4615           - Default handlers can be attached to exceptions.
4616           - Handlers can be attached to classes.
4617           - Handlers can be attached to dynamic entities (expressions).
4618           - Exceptions propagate first along the invocation chain.
4619           - Exceptions should be hierarchically organized classes.
4620           - Handlers should take into account the exception hierarchy (i.e.,
4621             should handle raising of sub-exceptions).
4622           The ``exceptional-event'' class has two subclasses.  ``Warning''
4623           has a ``resume'' method, and ``error'' has ``exit'' and
4624           ``retry'' methods.  Signalling an exception creates an instance
4625           of the exception, whose members are used to pass information
4626           back to the handler.  Handlers are instances of class
4627           ``protect-handler'' with a method ``protect {\em expression}'',
4628           or are methods defined for the class or the exception.
4629    }
4630}
4631
4632@article{CommonObjects,
4633    author      = {A. Snyder},
4634    title       = {Object-Oriented Programming for Common Lisp},
4635    address     = {Palo Alto CA},
4636    year        = 1985,
4637    publisher   = {Software Technology Laboratory, Hewlett-Packard Laboratories},
4638    journal     = {Report ATC-85-1},
4639}
4640
4641@book{objective-c,
4642    keywords    = {},
4643    author      = {Brad J. Cox},
4644    title       = {Object-oriented programming; an evolutionary approach},
4645    publisher   = {Addison-Wesley},
4646    address     = {Boston},
4647    year        = 1986
4648}
4649
4650@manual{obj-c-book,
4651    keywords    = {objective-c},
4652    contributor = {a3moss@uwaterloo.ca},
4653    author      = {{Objective-C}},
4654    title       = {The {Objective-C} Programming Language},
4655    organization= {Apple Computer Inc.},
4656    address     = {Cupertino, CA},
4657    year        = 2003
4658}
4659
4660@online{xcode7,
4661    keywords    = {objective-c},
4662    contributor = {a3moss@uwaterloo.ca},
4663    author      = {{Xcode}},
4664    title       = {{Xcode} 7 Release Notes},
4665    year        = 2015,
4666    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}},
4667    urldate     = {2017-04-04}
4668}
4669
4670@book{Beta,
4671    keywords    = {Beta, object oriented, concurrency, exceptions},
4672    contributer = {pabuhr@plg},
4673    author      = {Ole Lehrmann Madsen and Birger M{\o}ller-Pedersen and Kristen Nygaard},
4674    title       = {Object-oriented Programming in the {BETA} Programming Language},
4675    publisher   = {Addison-Wesley},
4676    address     = {Boston},
4677    year        = 1993,
4678}
4679
4680@article{Flavors,
4681    author      = {D. A. Moon},
4682    title       = {Object-Oriented Programming with Flavors},
4683    address     = {Portland OR},
4684    month       = sep,
4685    year        = 1986,
4686    journal     = {Proc. ACM Conf. on Object-Oriented Systems, Languages and Applications},
4687}
4688
4689@article{Buhr00b,
4690    keywords    = {concurrency, C++, real-time},
4691    contributer = {pabuhr@plg},
4692    author      = {Peter A. Buhr and Ashif S. Harji and Philipp E. Lim and Jiongxiong Chen},
4693    title       = {Object-Oriented Real-Time Concurrency},
4694    journal     = sigplan,
4695    volume      = 35,
4696    number      = 10,
4697    month       = oct,
4698    year        = 2000,
4699    pages       = {29-46},
4700    note        = {OOPSLA'00, Oct. 15--19, 2000, Minneapolis, Minnesota, U.S.A.},
4701}
4702
4703@book{Meyer88,
4704    keywords    = {Eiffel},
4705    contributer = {pabuhr@plg},
4706    author      = {Bertrand Meyer},
4707    title       = {Object-oriented Software Construction},
4708    publisher   = {Prentice-Hall},
4709    address     = {Englewood Cliffs},
4710    year        = {1988},
4711    series      = {Prentice-Hall International Series in Computer Science},
4712}
4713
4714@article{objectPascal,
4715    keywords    = {objects, modules},
4716    contributer = {gjditchfield@plg},
4717    author      = {Larry Tesler},
4718    title       = {Object Pascal Report},
4719    journal     = {Structured Language World},
4720    year        = 1985,
4721    volume      = 9,
4722    number      = 3,
4723}
4724
4725@misc{obj-c:next,
4726    keywords    = {categories, protocols, Objective C},
4727    contributor = {gjditchfield@angus},
4728    author      = {NeXT Computer, Inc.},
4729    title       = {Objective C Extensions},
4730    howpublished= {On-line documentation in ``NEXTSTEP 3.1 Developer''},
4731    year        = 1993
4732}
4733
4734@book{Galletly96,
4735    keywords    = {occam},
4736    author      = {John Galletly},
4737    title       = {{OCCAM} 2: Including {OCCAM} 2.1},
4738    publisher   = {{UCL} (University College London) Press},
4739    address     = {London},
4740    edition     = {2nd},
4741    year        = 1996,
4742}
4743
4744@techreport{Morrison88,
4745    keywords    = {objects, concurrency, persistence},
4746    contributer = {pabuhr@plg},
4747    author      = {R. Morrison and A. L. Brown and R. Carrick and R. Connor and A. Dearle},
4748    title       = {On the integration of Object-Oriented and Process-Oriented computation in persistent environments},
4749    institution = {Department of Computational Science, University of St. Andrews, Scotland},
4750    number      = {PPRR 57},
4751    month       = jan,
4752    year        = 1988,
4753}
4754
4755@article{Peterson73,
4756    keywords    = {goto, structured programming},
4757    contributer = {pabuhr@plg},
4758    author      = {W. W. Peterson and T. Kasami and N. Tokura},
4759    title       = {On the Capabilities of While, Repeat, and Exit Statements},
4760    journal     = cacm,
4761    month       = aug,
4762    year        = 1973,
4763    volume      = 16,
4764    number      = 8,
4765    pages       = {503-512}
4766}
4767
4768@article{Baker82,
4769    keywords    = {compilation},
4770    contributer = {gjditchfield@plg},
4771    author      = {Theodore P. Baker},
4772    title       = {A One-Pass Algorithm for Overload Resolution in {Ada}},
4773    journal     = toplas,
4774    year        = 1982,
4775    month       = oct,
4776    volume      = 4,
4777    number      = 4,
4778    pages       = {601-614},
4779    abstract    = {
4780        A simple method is presented for detecting ambiguities and finding
4781        the correct interpretations of expressions in the programming
4782        language Ada.  Unlike previously reported solutions to this
4783        problem, which require multiple passes over a tree structure, the
4784        method described here operates in one bottom-up pass, during which
4785        a directed acyclic graph is produced.  The correctness of this
4786        approach is demonstrated by a brief formal argument.
4787    },
4788    comment     = {
4789        See also \cite{D:overload}.
4790        }
4791}
4792
4793@techreport{OpenMP,
4794    keywords    = {concurrency, openmp, spmd},
4795    contributer = {pabuhr@plg},
4796    author      = {OpenMP Architecture Review Board},
4797    title       = {OpenMP Application Program Interface, Version 4.0},
4798    month       = jul,
4799    year        = 2013,
4800    note        = {\href{http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf}{http://\-www.openmp.org/\-mp-documents/\-OpenMP4.0.0.pdf}},
4801}
4802
4803@book{Deitel04,
4804    keywords    = {concurrency, operating systems},
4805    contributer = {pabuhr@plg},
4806    author      = {Harvey M. Deitel and Paul J. Deitel and David R. Choffnes},
4807    title       = {Operating Systems},
4808    publisher   = {Pearson Prentice-Hall},
4809    address     = {Englewood Cliffs},
4810    year        = 2004,
4811    edition     = {3rd},
4812}
4813
4814@book{Stalling98,
4815    keywords    = {concurrency, operating systems},
4816    contributer = {pabuhr@plg},
4817    author      = {William Stallings},
4818    title       = {Operating Systems: Internals and Design Principles},
4819    publisher   = {Prentice-Hall},
4820    address     = {Englewood Cliffs},
4821    year        = 1998,
4822    edition     = {3rd},
4823}
4824
4825@book{Stalling01,
4826    keywords    = {concurrency, operating systems},
4827    contributer = {pabuhr@plg},
4828    author      = {William Stallings},
4829    title       = {Operating Systems: Internals and Design Principles},
4830    publisher   = {Prentice-Hall},
4831    address     = {Englewood Cliffs},
4832    year        = 2001,
4833    edition     = {4th},
4834}
4835
4836@book{Silberschatz91,
4837    keywords    = {concurrency, operating systems},
4838    contributer = {pabuhr@plg},
4839    author      = {Abraham Silberschatz and James L. Peterson and Peter Galvin},
4840    title       = {Operating System Concepts},
4841    publisher   = {Addision-Wesley},
4842    address     = {Boston},
4843    year        = 1991,
4844    edition     = {3rd},
4845}
4846
4847@book{Tanenbaum87,
4848    keywords    = {concurrency, operating systems},
4849    contributer = {pabuhr@plg},
4850    author      = {Andrew S. Tanenbaum},
4851    title       = {Operating Systems : Design and Implementation},
4852    publisher   = {Prentice-Hall},
4853    address     = {Englewood Cliffs},
4854    series      = {Software Series},
4855    year        = 1987,
4856}
4857
4858@book{Hansen73,
4859    keywords    = {monitors},
4860    contributer = {pabuhr@plg},
4861    author      = {Per {Brinch Hansen}},
4862    title       = {Operating System Principles},
4863    publisher   = {Prentice-Hall},
4864    address     = {Englewood Cliffs},
4865    year        = 1973,
4866}
4867
4868@book{Bic03,
4869    keywords    = {concurrency, operating systems},
4870    contributer = {pabuhr@plg},
4871    author      = {Lubomir F. Bic and Alan C. Shaw},
4872    title       = {Operating System Principles},
4873    publisher   = {Prentice-Hall},
4874    address     = {Englewood Cliffs},
4875    year        = 2003,
4876}
4877
4878@techreport{milner88,
4879    keywords    = {},
4880    contributer = {gjditchfield@plg},
4881    author      = {Robin Milner},
4882    title       = {Operational and Algebraic Semantics of Concurrent Processes},
4883    institution = {Laboratory for Foundations of Computer Science},
4884    year        = 1988,
4885    address     = {Department of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ},
4886    month       = feb,
4887    number      = {ECS-LFCS-88-46}
4888}
4889
4890@article{Ganzinger80,
4891    contributer = {a3moss@uwaterloo.ca},
4892    author      = {Ganzinger, Harald and Ripken, Knut},
4893    title       = {Operator Identification in {ADA}: Formal Specification, Complexity, and Concrete Implementation},
4894    journal     = {SIGPLAN Notices},
4895    issue_date  = {February 1980},
4896    volume      = {15},
4897    number      = {2},
4898    month       = feb,
4899    year        = {1980},
4900    issn        = {0362-1340},
4901    pages       = {30--42},
4902    numpages    = {13},
4903    url         = {http://doi.acm.org/10.1145/947586.947589},
4904    doi         = {10.1145/947586.947589},
4905    publisher   = {ACM},
4906    address     = {New York, NY, USA}
4907}
4908
4909@article{Ford82,
4910    keywords    = {},
4911    contributer = {pabuhr@plg},
4912    author      = {G. Ford and B. Hansche},
4913    title       = {Optional, Repeatable, and Varying Type Parameters},
4914    journal     = sigplan,
4915    volume      = 17,
4916    number      = 2,
4917    month       = feb,
4918    year        = 1982,
4919    pages       = {41-48},
4920}
4921
4922@manual{pli,
4923    keywords    = {PL/I},
4924    contributer = {gjditchfield@plg},
4925    key         = {IBM},
4926    title       = {{OS} and {DOS} {PL/I} Reference Manual},
4927    organization= {International Business Machines},
4928    edition     = {1st},
4929    month       = sep,
4930    year        = 1981,
4931    note        = {Manual GC26-3977-0},
4932}
4933
4934@techreport{D:overload,
4935    keywords    = {overload resolution, compilation},
4936    contributer = {gjditchfield@plg},
4937    author      = {M. Dausmann et. al.},
4938    title       = {Overloading in {Ada}},
4939    institution = {Universitat Karlsruhe},
4940    year        = 1979,
4941    number      = {23/79},
4942    comment     = {
4943        Probably the earliest description of the two-pass (bottom-up,
4944        top-down) overload resolution algorithm. See also
4945        \cite{PW:overload,WS:overload,PDM:overload,Cor:overload,Bak:overload}.
4946    }
4947}
4948
4949@article{EB87,
4950    keywords    = {packages, private types, assignment, equality},
4951    contributer = {gjditchfield@plg},
4952    author      = {J. Dana Eckart and Richard J. LeBlanc},
4953    title       = {Overloading in the {Ada} Language: Is it too restrictive?},
4954    journal     = {Computer Languages},
4955    year        = 1987,
4956    volume      = 12,
4957    number      = {3/4},
4958    pages       = {163-172},
4959    abstract    = {
4960        Packages in the Ada language provide a mechanism for extending the
4961        language through the development of additional data types.  Such
4962        types can be better integrated into the language using operator
4963        overloading; however, key limitations prevent new types from being
4964        transparently integrated into the language.  Allowing function
4965        names to overload private type names would give a cleaner and
4966        clearer mechanism for building values of these types.  Furthermore,
4967        by allowing redefinitions of ``:='' and by making it easier to
4968        overload ``='' for private types, Ada coud be transformed into a
4969        more expressive language.
4970    }
4971}
4972
4973@article{PW:overload,
4974    keywords    = {compilation},
4975    contributer = {gjditchfield@plg},
4976    author      = {Guido Persch and Georg Winterstein and Manfred Dausman and Sophia Drossopoulou},
4977    title       = {Overloading in Preliminary {Ada}},
4978    journal     = sigplan,
4979    year        = 1980,
4980    month       = nov, volume = 15, number = 11, pages = {47-56},
4981    note        = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada} Programming Language}, 
4982    comment     = {
4983        The two-pass (bottom-up, then top-down) algorithm, with a proof
4984        that two passes suffice.  See also \cite{D:overload}.
4985    }
4986}
4987
4988@article{SR,
4989    keywords    = {concurrency, messages, rendezvous},
4990    contributer = {pabuhr@plg},
4991    author      = {Gregory R. Andrews and Ronald A. Olsson and Michael Coffin and
4992                  Irving Elshoff and Kelvin Nilsen and Titus Purdin and Gregg Townsend},
4993    title       = {An Overview of the {SR} Language and Implementation},
4994    journal     = toplas,
4995    month       = jan,
4996    year        = 1988,
4997    volume      = 10,
4998    number      = 1,
4999    pages       = {51-86},
5000}
5001
5002% P
5003
5004@article{Andrews91,
5005    keywords    = {general concurrency},
5006    contributer = {pabuhr@plg},
5007    author      = {Gregory R. Andrews},
5008    title       = {Paradigms for Process Interaction in Distributed Programs},
5009    journal     = acmcs,
5010    volume      = 23,
5011    number      = 1,
5012    month       = mar,
5013    year        = 1991,
5014    pages       = {49-90},
5015}
5016
5017@book{PPC++,
5018    keywords    = {concurrency, parallel, distributed, C++},
5019    contributer = {pabuhr@plg},
5020    editor      = {Gregory V. Wilson and Paul Lu},
5021    title       = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5022    publisher   = {MIT Press},
5023    series      = {Scientific and Engineering Computation Series},
5024    year        = 1996,
5025    pages       = {1-42},
5026}
5027
5028@incollection{Stroustrup96,
5029    keywords    = {concurrency, C++},
5030    contributer = {pabuhr@plg},
5031    author      = {Bjarne Stroustrup},
5032    title       = {A Perspective on Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5033    editor      = {Gregory V. Wilson and Paul Lu},
5034    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5035    publisher   = {MIT Press},
5036    series      = {Scientific and Engineering Computation Series},
5037    year        = 1996,
5038    pages       = {xxvi-xxvii},
5039}
5040
5041@incollection{Yang96b,
5042    keywords    = {concurrency, C++},
5043    contributer = {pabuhr@plg},
5044    author      = {Shelby X. Yang and Dennis Gannon and Peter Beckman and Jacob Gotwals and Neelakantan Sundaresan},
5045    editor      = {Gregory V. Wilson and Paul Lu},
5046    title       = {p{C}++},
5047    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5048    publisher   = {MIT Press},
5049    address     = {Cambridge},
5050    series      = {Scientific and Engineering Computation Series},
5051    pages       = {507-546},
5052    year        = 1996,
5053}
5054
5055@article{goguen84,
5056    keywords    = {},
5057    contributer = {gjditchfield@plg},
5058    author      = {Goseph A. Goguen},
5059    title       = {Parameterized Programming},
5060    journal     = ieeese,
5061    year        = 1984,
5062    month       = sep, volume = "SE-10", number = 5, pages = {528-543},
5063    abstract    = {
5064        Parameterized programming is a powerful technique for the reliable
5065        reuse of software.  In this technique, modules are parameterized
5066        over very general interfaces that describe what properties of an
5067        environment are required for the module to work correctly.
5068        Reusability is enhanced by the flexibility of the parameterization
5069        mechanism proposed here.  Reliability is further enhanced by
5070        permitting interface requirements to include more than purely
5071        syntactic information.  This paper introduces three new ideas that
5072        seem especially useful in supporting parameterized programming: 1)
5073        {\em theories}, which declare global properties of program modules
5074        and interfaces; 2) {\em views}, which connect theories with program
5075        modules in an elegant way; and 3) {\em module expressions}, a kind
5076        of general structured program transformation which produces new
5077        modules by modifying and combining existing modules.  Although
5078        these ideas are illustrated with some simple examples in the OBJ
5079        programming language, they should also be taken as proposals for an
5080        Ada library system, for adding modules to Prolog, and as
5081        considerations for future language design efforts.  OBJ is an
5082        ultra-high level programming language, based upon rewrite rules,
5083        that incorporates these ideas, and many others from modern
5084        programming methodology.
5085    }
5086}
5087
5088@inproceedings{c++:templates,
5089    author      = {Bjarne Stroustrup},
5090    contributer = {gjditchfield@plg},
5091    title       = {Parameterized Types for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5092    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
5093    organization= {USENIX Association},
5094    year        = 1988, pages = {1-18}
5095}
5096
5097@inproceedings{Boehm85,
5098    keywords    = {second-order unification},
5099    contributer = {gjditchfield@plg},
5100    author      = {Hans-J. Boehm},
5101    title       = {Partial Polymorphic Type Inference is Undecidable},
5102    booktitle   = {26th Annual Symposium on Foundations of Computer Science},
5103    year        = 1985,
5104    pages       = {339-345},
5105    organization= {IEEE Computer Society},
5106    publisher   = {IEEE Computer Society Press},
5107    address     = {1730 Massachusetts Avenue, N.W, Washington, D.C. 20036-1903},
5108    summary     = {
5109        Given a base typed lambda calculus with function types, type
5110        abstractions, and a recursive expression \(\mbox{fix } x:t.e\),
5111        then type inference for the partially typed language
5112        \begin{eqnarray}
5113        \lambda x:\tau.e        &\Rightarrow& \lambda x.e       \\
5114        \mbox{fix } x:\tau.e    &\Rightarrow& \mbox{fix } x.e   \\
5115        e \tau                  &\Rightarrow& e ?
5116        \end{eqnarray}
5117        is undecidable.
5118    }
5119}
5120
5121@book{Pascal,
5122    keywords    = {Pascal},
5123    contributer = {pabuhr@plg},
5124    author      = {Kathleen Jensen and Niklaus Wirth},
5125    title       = {{P}ascal User Manual and Report, ISO Pascal Standard},
5126    publisher   = {Springer--Verlag},
5127    year        = 1991,
5128    edition     = {4th},
5129    note        = {Revised by Andrew B. Mickel and James F. Miner}
5130}
5131
5132@book{Pascal:old,
5133    keywords    = {Pascal},
5134    contributer = {pabuhr@plg},
5135    author      = {Kathleen Jensen and Niklaus Wirth},
5136    title       = {{P}ascal User Manual and Report},
5137    publisher   = {Springer--Verlag},
5138    year        = 1975,
5139    edition     = {1st},
5140}
5141
5142@article{Turba85,
5143    keywords    = {Pascal, exception handling, inheritance},
5144    contributer = {pabuhr@plg},
5145    author      = {Thomas N. Turba},
5146    title       = {The {P}ascal Exception Handling Proposal},
5147    journal     = sigplan,
5148    volume      = 20,
5149    number      = 8,
5150    month       = aug,
5151    year        = 1985,
5152    pages       = {93-98},
5153}
5154
5155@manual{Pascal/VS,
5156    keywords    = {PL/I},
5157    contributer = {pabuhr@plg},
5158    key         = {IBM},
5159    title       = {{P}ascal/{VS} Language Reference Manual},
5160    organization= {International Business Machines},
5161    edition     = {1st},
5162    year        = 1981,
5163    note        = {Manual SH20-6168-1},
5164}
5165
5166@article{Anderson90,
5167    keywords    = {spin locks, back off, performance},
5168    contributer = {pabuhr@plg},
5169    author      = {Thomas E. Anderson},
5170    title       = {The Performance of Spin Lock Alternatives for Shared-Memory Multiprocessors},
5171    journal     = ieeepds,
5172    month       = jan,
5173    year        = 1990,
5174    volume      = 1,
5175    number      = 1,
5176    pages       = {6-16},
5177}
5178
5179@article{poly,
5180    keywords    = {Poly, Standard ML, Russell, persistence},
5181    contributer = {gjditchfield@plg},
5182    author      = {David C. J. Matthews},
5183    title       = {Poly Manual},
5184    journal     = sigplan,
5185    month       = sep, year = 1985,
5186    volume      = 20, number = 9, pages = {52-76}
5187}
5188
5189@techreport{Atkinson87b,
5190    keywords    = {naming, persistence},
5191    contributer = {pabuhr@plg},
5192    author      = {M. P. Atkinson and R. Morrison},
5193    title       = {Polymorphic Names and Iterations},
5194    institution = {Universities of Glasgow and St. Andrews, Scotland},
5195    number      = {PPRR-53-87},
5196    month       = nov,
5197    year        = 1987,
5198}
5199
5200@book{Harland,
5201    keywords    = {},
5202    author      = {David M. Harland},
5203    title       = {Polymorphic Programming Languages: Design and Implementation},
5204    publisher   = {Ellis Horwood},
5205    year        = 1984,
5206    series      = {Computers and their Applications},
5207    address     = {Market Cross House, Cooper Street, Chichester, West Sussex,
5208        PO19 1EB, England},
5209    summary     = {
5210        The principles of Procedural Abstraction, Data Type Completeness,
5211        Declaration Correspondence, and Orthogonality are ruthlessly applied
5212        to the design of a polymorphic language.
5213    }
5214}
5215
5216@unpublished{poa,
5217    keywords    = {Force N, type inference, reusability, transcendance},
5218    contributer = {gjditchfield@plg},
5219    author      = {G. V. Cormack and A. K. Wright},
5220    title       = {Polymorphism, Overloading, and Abstraction},
5221    note        = {personal communication}
5222}
5223
5224@inproceedings{forceone:impl,
5225    keywords    = {Parametric polymorphism, ForceOne},
5226    contributer = {gjditchfield@plg},
5227    author      = {G. V. Cormack and A. K. Wright},
5228    title       = {Polymorphism in the Compiled Language {ForceOne}},
5229    booktitle   = {Proceedings of the 20th Hawaii International Conference on Systems Sciences},
5230    month       = jan,
5231    year        = 1987,
5232    pages       = {284-292},
5233}
5234
5235@incollection{POOL-T,
5236    keywords    = {objects, concurrency},
5237    contributer = {pabuhr@plg},
5238    author      = {Pierre America},
5239    title       = {POOL-T: A Parallel Object-Oriented Language},
5240    booktitle   = {Object-Oriented Concurrent Programming},
5241    publisher   = {The MIT Press},
5242    year        = 1987,
5243    pages       = {199-220},
5244    editor      = {Akinori Yonezawa and Mario Tokoro}
5245}
5246
5247@article{Hardgrave76,
5248    keywords    = {positional, keyword, parameters, arguments},
5249    contributer = {pabuhr@plg},
5250    author      = {W. T. Hardgrave},
5251    title       = {Positional versus Keyword Parameter Communication in Programming Languages},
5252    journal     = sigplan,
5253    volume      = 11,
5254    number      = 5,
5255    month       = may,
5256    year        = 1976,
5257    pages       = {52-58},
5258}
5259
5260@book{PowerPC,
5261    key         = {PowerPC processor},
5262    title       = {Programming Environments Manual for 32-Bit Implementations of the PowerPC ArchitectureARM Architecture},
5263    publisher   = {Freescale Semiconductor},
5264    volume      = {MPCFPE32B},
5265    edition     = {Rev. 3},
5266    month       = 9,
5267    year        = 2005,
5268}
5269
5270@article{Ada:preliminary,
5271    keywords    = {Ada},
5272    contributer = {pabuhr@plg},
5273    author      = {Jean D. Ichbiah and Bernd Krieg-Brueckner and Brian A. Wichmann
5274                   and Henry F. Ledgard and Jean-Claude Heliard and Jean-Raymond Abrial
5275                   and John G. P. Barnes and Olivier Roubine},
5276    title       = {Preliminary {Ada} Reference Manual},
5277    journal     = sigplan,
5278    volume      = 14,
5279    number      = 6,
5280    month       = jun,
5281    year        = 1979,
5282    note        = {Part A},
5283}
5284
5285@techreport{Forsythe,
5286    author      = {John C. Reynolds},
5287    title       = {Preliminary Design of the Programming Language {Forsythe}},
5288    institution = {Carnegie Mellon University},
5289    number      = {CMU-CS-88-159},
5290    month       = jun,
5291    year        = 1988,
5292}
5293
5294@article{PRESTO,
5295    keywords    = {concurrency, threads},
5296    contributer = {dgharriss@plg},
5297    author      = {B. N. Bershad and E. D. Lazowska and H. M. Levy},
5298    title       = {{PRESTO}: A System for Object-oriented Parallel Programming},
5299    journal     = spe,
5300    volume      = 18,
5301    number      = 8,
5302    month       = aug,
5303    year        = 1988,
5304    pages       = {713-732}
5305}
5306
5307@book{Ben-Ari82,
5308    keywords    = {concurrency, parallel, programming languages},
5309    contributer = {pabuhr@plg},
5310    author      = {Mordechai Ben-Ari},
5311    title       = {Principles of Concurrent Programming},
5312    publisher   = {Prentice-Hall International},
5313    address     = {Englewood Cliffs},
5314    year        = 1982,
5315}
5316
5317@book{Tennent81,
5318    author      = {R. D. Tennent},
5319    title       = {Principles of Programming Languages},
5320    publisher   = {Prentice-Hall International},
5321    address     = {Englewood Cliffs},
5322    year        = 1981,
5323    series      = {Series in Computer Science}
5324}
5325
5326@article{Lister77,
5327    keywords    = {monitors, nested monitor calls},
5328    contributer = {pabuhr@plg},
5329    author      = {Andrew Lister},
5330    title       = {The Problem of Nested Monitor Calls},
5331    journal     = osr,
5332    volume      = 11,
5333    number      = 3,
5334    month       = jul,
5335    year        = 1977,
5336    pages       = {5-7},
5337}
5338
5339@article{psa:persistence,
5340    keywords    = {persistence, first-class procedures, closure, PS-Algol,
5341        Abstract Data Types},
5342    contributer = {gjditchfield@plg},
5343    author      = {Malcolm P. Atkinson and Ronald Morrison},
5344    title       = {Procedures as Persistent Data Objects},
5345    journal     = toplas,
5346    volume      = {7},    number = {4},
5347    pages       = {539-559},
5348    month       = oct, year = 1985,
5349    comment     = {
5350        PS-Algol has ``structures'', accessible only through ``pntrs''.
5351        Pntrs can refer to any type of structure.  Field references involve
5352        a run-time check.  This, plus first-class procedures, can simulate
5353        abstract data types.  Procedure variables operating on pntrs
5354        simulate ADT operations.  A block defines a structure to implement
5355        the ADT, and assigns procedures to the variables.  Functions
5356        returning structures containing procedures  simulate multiple
5357        implementations and parameterized ADTs.
5358
5359        An outer procedure that returns a procedure that contains
5360        (non-local) references to the outer procedure's parameters
5361        implements partial evaluation.
5362
5363        Modules can be simulated like ADT's.  The module itself is a
5364        structure instance that is placed in persistent storage, and the
5365        module is imported by fetching it from the persistent store.
5366        Multiple instances of modules are easy.  Installation of new
5367        versions can be done by replacing the version in the database.
5368    }
5369}
5370
5371@article{Procol89,
5372    keywords    = {active objects, object-oriented languages,
5373        object-based languages, explicit per-object protocol},
5374    contributer = {akgoel@plg},
5375    author      = {Jan van den Bos and Chris Laffra},
5376    title       = {PROCOL: A Parallel Object Language with Protocols},
5377    journal     = sigplan,
5378    volume      = 24,
5379    number      = 10,
5380    month       = oct,
5381    year        = 1989,
5382    pages       = {95-102},
5383    note        = {Proceedings of the OOPSLA'89 Conference, Oct. 1--6, 1989, New Orleans, Lousiana},
5384    abstract    = {},
5385}
5386
5387@book{Butenhof97,
5388    keywords    = {PThreads, concurrency},
5389    contributer = {pabuhr@plg},
5390    author      = {David R. Butenhof},
5391    title       = {Programming with {POSIX} Threads},
5392    publisher   = {Addison-Wesley},
5393    address     = {Boston},
5394    series      = {Professional Computing},
5395    year        = 1997,
5396}
5397
5398@book{SETL,
5399    keywords    = {SETL},
5400    contributer = {pabuhr@plg},
5401    author      = {J. T. Schwartz and R. B. K. Dewar and E. Dubinsky and E. Schonberg},
5402    title       = {Programming with Sets: An Introduction to {SETL}},
5403    publisher   = {Springer},
5404    address     = {New York, NY, USA},
5405    year        = 1986,
5406}
5407
5408@book{Genuys68,
5409    keywords    = {contains Dijkstra's Cooperating Sequential Processes},
5410    contributer = {pabuhr@plg},
5411    editor      = {F. Genuys},
5412    title       = {Programming Languages},
5413    publisher   = {Academic Press},
5414    address     = {London, New York},
5415    year        = 1968,
5416    note        = {NATO Advanced Study Institute, Villard-de-Lans, 1966}
5417}
5418
5419@manual{ANSI99:C,
5420    keywords    = {ANSI C 99},
5421    contributer = {pabuhr@plg},
5422    title       = {Programming Languages -- {C}},
5423    organization= {International Standard ISO/IEC 9899:1999 (E)},
5424    publisher   = {American National Standards Institute},
5425    address     = {www.ansi.org},
5426    year        = 1999,
5427}
5428
5429@manual{ANSI98:C++,
5430    keywords    = {ANSI C++ 98},
5431    contributer = {pabuhr@plg},
5432    key         = {C++98},
5433    title       = {Programming Languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5434    organization= {International Standard ISO/IEC 14882:1998 (E)},
5435    publisher   = {American National Standards Institute},
5436    address     = {www.ansi.org},
5437    year        = 1998,
5438}
5439
5440@manual{C++14,
5441    keywords    = {ISO/IEC C++ 14},
5442    contributer = {pabuhr@plg},
5443    author      = {C++14},
5444    title       = {Programming Languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} ISO/IEC 14882:2014},
5445    edition     = {4th},
5446    publisher   = {International Standard Organization},
5447    address     = {\href{https://www.iso.org/standard/64029.html}{https://\-www.iso.org/\-standard/\-64029.html}},
5448    year        = 2014,
5449}
5450
5451@manual{MS:VisualC++,
5452    keywords    = {Microsoft Visual C++},
5453    contributer = {pabuhr@plg},
5454    title       = {Microsoft Visual {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} .NET Language Reference},
5455    organization= {Microsoft Corporation},
5456    year        = 2002,
5457    note        = {Microsoft Press, Redmond, Washington, U.S.A.},
5458}
5459
5460@article{HasselBring00,
5461    keywords    = {concurrency, prototyping},
5462    contributer = {pabuhr@plg},
5463    author      = {Wilhelm Hasselbring},
5464    title       = {Programming Languages and Systems for Prototyping Concurrent Applications},
5465    journal     = acmcs,
5466    volume      = 32,
5467    number      = 1,
5468    month       = mar,
5469    year        = 2000,
5470    pages       = {43-79},
5471}
5472
5473@article{LLgen,
5474    keywords    = {ll(1), parser generator, separate compilation},
5475    contributer = {gjditchfield@plg},
5476    author      = {Dick Grune and Ceriel J. J. Jacobs},
5477    title       = {A Programmer-friendly LL(1) Parser Generator},
5478    journal     = spe,
5479    month       = jan, year = 1988,
5480    volume      = 18, number = 1, pages = {29-33},
5481    comment     = {
5482        LLgen generates C-language recursive-descent parsers.  The input
5483        contains procedure-like rules with alternation and repetition
5484        constructs on the right, and (typed) parameters on the left.
5485        C actions are specified between items in the right side.
5486        Alternation and repetition (reduce and shift) conflicts can be
5487        resolved statically or at run time.
5488
5489        A grammar can be specified in several files.  All files must be
5490        submitted to LLgen at once, but if the C file generated is no
5491        different from the old version, then the old version is not
5492        replaced and hence need not be recompiled, which saves lots of
5493        time.
5494
5495        When an incorrect token is found, the automatic error recovery
5496        algorithm discards tokens until an ``acceptable'' token is found;
5497        if the acceptable token is not correct, a correct one is inserted.
5498    }
5499}
5500
5501@techreport{russell,
5502    keywords    = {Russell},
5503    contributer = {gjditchfield@plg},
5504    author      = {H. Boehm and A. Demers and J. Donahue},
5505    title       = {A Programmer's Introduction to Russell},
5506    institution = {Rice University},
5507    year        = 1985,
5508    number      = {85-16}
5509}
5510
5511@techreport{PDM89,
5512    keywords    = {existential types, universal types},
5513    contributer = {gjditchfield@plg},
5514    author      = {Benjamin Pierce and Scott Dietzen and Spiro Michaylov},
5515    title       = {Programming in Higher-Order Typed Lambda Calculi},
5516    institution = {School of Computer Science, Carnegie Mellon University},
5517    year        = 1989,
5518    address     = {Pittsburg, PA 15213-3890},
5519    month       = mar, number = {CMU-CS-89-111},
5520    abstract    = {
5521        This tutorial presents a hierarchy of increasingly powerful
5522        languages, beginning with Church's simply typed
5523        \(\lambda\)-calculus (\(F_1\)) and the second-order polymorphic
5524        \(\lambda\)-calculus of Girard and Reynolds, and culminating in a
5525        fragment of Girard's \(\omega\)-order polymorphic
5526        \(\lambda\)-calculus (\(F_\omega\)).  Our focus throughout is on
5527        the unusual style of programming that arises in these languages,
5528        where all functions are total and the primary control construct is
5529        iteration rather than general recursion.
5530    }
5531}
5532
5533@book{Modula-2,
5534    keywords    = {modules, coroutines},
5535    contributer = {pabuhr},
5536    author      = {Niklaus Wirth},
5537    title       = {Programming in Modula-2},
5538    publisher   = {Springer},
5539    address     = {New York},
5540    year        = 1988,
5541    edition     = {4th},
5542    series      = {Texts and Monographs in Computer Science},
5543}
5544
5545@manual{Ada,
5546    keywords    = {Ada, packages, tasks, exceptions},
5547    contributer = {pabuhr@plg},
5548    title       = {The Programming Language {Ada}: Reference Manual},
5549    author      = {Ada},
5550    organization= {United States Department of Defense},
5551    edition     = {{ANSI/MIL-STD-1815A-1983}},
5552    month       = feb,
5553    year        = 1983,
5554    note        = {Springer, New York},
5555}
5556
5557@manual{ada:old,
5558    keywords    = {Ada, packages, tasks, exceptions},
5559    contributer = {gjditchfield@plg},
5560    title       = {The Programming Language {Ada}: Reference Manual},
5561    organization= {United States Department of Defense},
5562    publisher   = {Springer},
5563    year        = 1981
5564}
5565
5566@book{Ghezzi,
5567    keywords    = {},
5568    author      = {Carlo Ghezzi and Mehdi Jazayeri},
5569    title       = {Programming Language Concepts},
5570    publisher   = {Wiley},
5571    year        = 1982
5572}
5573
5574@article{ConcurrentPascal,
5575    keywords    = {Concurrent Pascal},
5576    contributer = {pabuhr@plg},
5577    author      = {Per {Brinch Hansen}},
5578    title       = {The Programming Language Concurrent Pascal},
5579    journal     = ieeese,
5580    volume      = 2,
5581    month       = jun,
5582    year        = 1975,
5583    pages       = {199-206}
5584}
5585
5586@phdthesis{Buhr85:thesis,
5587    keywords    = {},
5588    contributer = {pabuhr@plg},
5589    author      = {P. A. Buhr},
5590    title       = {A Programming System},
5591    school      = {University of Manitoba},
5592    year        = {1985}
5593}
5594
5595@techreport{pierce91,
5596    keywords    = {typed lambda calculus},
5597    contributer = {gjditchfield@plg},
5598    author      = {Benjamin C. Pierce},
5599    title       = {Programming with Intersection Types, Union Types, and Polymorphism},
5600    institution = {Carnegie Mellon University},
5601    year        = 1991,
5602    month       = feb, number = "CMU-CS-91-106",
5603    annote      = {
5604        Discusses a typed lambda calculus with
5605        \begin{itemize}
5606        \item
5607        Intersection types \(\tau = \tau_1\wedge\tau_2\) with \(\tau \le
5608        \tau_i\) for all \(i\).
5609        \item
5610        Union types \(\tau = \tau_1\vee\tau_2\) with \(\tau_i \le \tau\),
5611        and with implicit coercions from \(tau_i\) to \(\tau\).  Only
5612        operations valid for both element types can be applied to the
5613        union; there are no projections.  Union types are to variant
5614        records as set union is to disjoint set union.
5615        \item
5616        Function types and universal quantification, with subtyping rules.
5617        When functions and arguments intersections, the result of
5618        application is the intersection of all valid combinations.
5619        \item
5620        Distribution rules for combinations of types.
5621        \item
5622        "Union elimination": "case \(x = e\) of \(e'\)", where \(e\) is a
5623        union, has type \(\tau\) if \(e'\) has that type with \(x\) having
5624        every element type of the union.
5625        \item
5626        "Finitary quantification": "for \(t\) in \(\tau_1,\ldots,\tau_n.e\)"
5627        typechecks \(e\) with \(t\) bound to each choice, and intersects
5628        the results.
5629        \end{itemize}
5630
5631        Examples include: type of "natural" numbers, treated as a union of
5632        "zero" and "positive" types; default parameters, faked by using an
5633        argument that is an intersection of a data type and a function
5634        taking an explicit argument.
5635
5636        Unions can be mostly faked, according to Mitchell:
5637        \[\tau_1\vee\tau_2 \equiv
5638             \forall\tau.(\tau_1\on\tau)\wedge(\tau_2\on\tau)\]
5639    }
5640}
5641
5642@article{promises,
5643    keywords    = {futures, Argus, call streams, rpc},
5644    contributer = {gjditchfield@plg},
5645    author      = {Barbara Liskov and Liuba Shrira},
5646    title       = {Promises: Linguistic Support for Efficient Asynchronous
5647          Procedure Calls in Distributed Systems},
5648    journal     = sigplan,
5649    year        = 1988,
5650    month       = jul, volume = 23, number = 7, pages = {260-267},
5651    note        = {Proceedings of the SIGPLAN '88 Conference on Programming Language
5652         Design and Implementation},
5653    abstract    = {
5654        This paper deals with the integration of an efficient asynchronous
5655        remote procedure call mechanism into a programming language.  It
5656        describes a new data type called a {\em promise} that was designed
5657        to support asynchronous calls.  Promises allow a caller to run in
5658        parallel with a call and to pick up the results of the call,
5659        including any exceptions it raises, in a convenient and type-safe
5660        manner.  The paper also discusses efficient composition of
5661        sequences of asynchronous calls to different locations in a
5662        network.
5663    }
5664}
5665
5666@article{Cook89,
5667    keywords    = {},
5668    contributer = {gjditchfield@plg},
5669    author      = {W. R. Cook},
5670    title       = {A Proposal for Making {Eiffel} Type-safe},
5671    journal     = {The Computer Journal},
5672    year        = 1989,
5673    volume      = 32, number = 4, pages = {305-311},
5674    abstract    = {
5675       
5676    }
5677}
5678
5679@inproceedings{Foxall79,
5680    keywords    = {},
5681    contributer = {pabuhr@plg},
5682    author      = {D. G. Foxall and M. L. Joliat and R. F. Kamel and J. J. Miceli},
5683    title       = {{PROTEL}: A High Level Language for Telephony},
5684    booktitle   = {Proceedings 3rd International Computer Software and Applications Conference},
5685    month       = nov,
5686    year        = 1979,
5687    pages       = {193-197},
5688}
5689
5690@techreport{PS-Algol,
5691    keywords    = {algol, persistence},
5692    contributer = {pabuhr@plg},
5693    key         = {PS-Algol},
5694    title       = {The {PS-Algol} Reference Manual, 4th Ed.},
5695    author      = {},
5696    institution = {University of Glasgow and St. Andrews, Scotland},
5697    number      = {PPRR 12},
5698    month       = jun,
5699    year        = 1987,
5700}
5701
5702@manual{Python,
5703    keywords    = {Python},
5704    contributer = {pabuhr},
5705    title       = {Python Reference Manual, Release 2.5},
5706    author      = {Guido van Rossum},
5707    organization= {Python Software Foundation},
5708    month       = sep,
5709    year        = 2006,
5710    note        = {Fred L. Drake, Jr., editor},
5711}
5712
5713% Q
5714
5715@article{Grossman06,
5716    keywords    = {Cyclone, existential types, polymorphism, type variables},
5717    contributer = {a3moss@plg},
5718    author      = {Dan Grossman},
5719    title       = {Quantified Types in an Imperative Language},
5720    journal     = toplas,
5721    issue_date  = {May 2006},
5722    volume      = {28},
5723    number      = {3},
5724    month       = may,
5725    year        = 2006,
5726    issn        = {0164-0925},
5727    pages       = {429-475},
5728    url         = {http://doi.acm.org.proxy.lib.uwaterloo.ca/10.1145/1133651.1133653},
5729    doi         = {10.1145/1133651.1133653},
5730    acmid       = {1133653},
5731    publisher   = {ACM},
5732    address     = {New York, NY, USA},
5733}
5734
5735@article{Hoare61,
5736    keywords    = {quick sort},
5737    contributer = {pabuhr@plg},
5738    author      = {C. A. R. Hoare},
5739    title       = {Algorithms 63/64: Partition/Quicksort},
5740    journal     = cacm,
5741    volume      = 4,
5742    number      = 7,
5743    month       = jul,
5744    year        = 1961,
5745    pages       = {321},
5746}
5747
5748% R
5749
5750@article{Ada:rationale:preliminary,
5751    keywords    = {Ada},
5752    contributer = {pabuhr@plg},
5753    author      = {J. D. Ichbiah and J. C. Heliard and O. Roubine and
5754                   J. G. P. Barnes and B. Krieg-Brueckner and B. A. Wichmann},
5755    title       = {Rationale for the Design of the {ADA} Programming Language},
5756    journal     = sigplan,
5757    volume      = 14,
5758    number      = 6,
5759    month       = jun,
5760    year        = 1979,
5761    note        = {Part B},
5762}
5763
5764@book{Ada:rationale,
5765    keywords    = {Ada},
5766    contributer = {pabuhr@plg},
5767    author      = {Jean D. Ichbiah and John G. P. Barnes and Robert J. Firth and Mike Woodger},
5768    title       = {Rationale for the Design of the {ADA} Programming Language},
5769    publisher   = {Under Secretary of Defense, Research and Engineering},
5770    year        = 1986,
5771    address     = {Ada Joint Program Office, OUSDRE(R\&AT), The Pentagon, Washington, D. C., 20301, U.S.A.},
5772}
5773
5774@manual{Ada95,
5775    keywords    = {Ada},
5776    contributer = {pabuhr@plg},
5777    title       = {{A}da Reference Manual},
5778    edition     = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
5779    organization= {Intermetrics, Inc.},
5780    month       = dec,
5781    year        = 1995,
5782    note        = {Language and Standards Libraries}
5783}
5784
5785@manual{Ada12,
5786    keywords    = {ISO/IEC Ada},
5787    contributer = {pabuhr@plg},
5788    author      = {Ada12},
5789    title       = {Programming languages -- {Ada} ISO/IEC 8652:2012},
5790    edition     = {3rd},
5791    publisher   = {International Standard Organization},
5792    address     = {\href{https://www.iso.org/standard/61507.html}{https://\-www.iso.org/\-standard/\-61507.html}},
5793    year        = 2012,
5794}
5795
5796@manual{Ada95:annotated,
5797    keywords    = {Ada},
5798    contributer = {pabuhr@plg},
5799    title       = {Annotated {A}da Reference Manual},
5800    edition     = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
5801    organization = {Intermetrics, Inc.},
5802    month       = dec,
5803    year        = 1995,
5804    note        = {Language and Standards Libraries}
5805}
5806
5807@book{JavaRT00,
5808    keywords    = {real time, draft},
5809    contributer = {pabuhr@plg},
5810    author      = {Greg Bollella and Ben Brosgol and Peter Dibble and Steve Furr and James Gosling and David Hardin and Mark Turnbull},
5811    title       = {The Real-Time Specification for {J}ava},
5812    series      = {The Real-Time for Java Expert Group, {\small\textsf{http://\-www.rtj.org}}},
5813    publisher   = {Addison-Wesley},
5814    address     = {Boston},
5815    year        = 2000,
5816}
5817
5818@manual{JavaRT99,
5819    organization= {Real Time for Java Experts Group},
5820    address     = {{\small\textsf{http://\-www.rtj.org}}},
5821    month       = sep,
5822    year        = 1999,
5823}
5824
5825@article{Robinson48,
5826    keywords    = {recursion, Ackermann function},
5827    contributer = {pabuhr@plg},
5828    author      = {Raphael Mitchel Robinson},
5829    title       = {Recursion and Double Recursion},
5830    publisher   = {American Mathematical Society},
5831    journal     = {Bulletin of the American Mathematical Society},
5832    volume      = 54,
5833    pages       = {987-993},
5834    year        = 1948,
5835}
5836
5837@article{Dijkstra:red,
5838    keywords    = {ada},
5839    contributer = {gjditchfield@plg},
5840    author      = {Edsger W. Dijkstra},
5841    title       = {On the RED Language submitted to the DoD},
5842    journal     = sigplan,
5843    year        = 1978,
5844    month       = oct,
5845    volume      = 13,
5846    number      = 10,
5847    pages       = {27-32},
5848}
5849
5850@article{RemoteRendezvous,
5851    keywords    = {rendezvous, concurrency},
5852    contributer = {pabuhr@plg},
5853    author      = {N. D. Gammage and R. F. Kamel and L. M. Casey},
5854    title       = {Remote Rendezvous},
5855    journal     = spe,
5856    month       = oct,
5857    year        = 1987,
5858    volume      = 17,
5859    number      = 10,
5860    pages       = {741-755}
5861}
5862
5863@article{Euclid,
5864    keywords    = {Euclid},
5865    contributer = {pabuhr@plg},
5866    author      = {B. W. Lampson and J. J. Horning and R. L. London and J. G. Mitchell and G. L. Popek},
5867    title       = {Report on the Programming Language Euclid},
5868    journal     = sigplan,
5869    volume      = 12,
5870    number      = 2,
5871    month       = feb,
5872    year        = 1977,
5873    pages       = {1-79}
5874}
5875
5876@techreport{LOGLAN88,
5877    keywords    = {LOGLAN},
5878    contributer = {pabuhr@plg},
5879    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},
5880    title       = {Report on the Programming Language LOGLAN'88},
5881    institution = {Institute of Informatics, University of Warsaw},
5882    address     = {Pkin 8th Floor, 00-901 Warsaw, Poland},
5883    number      = {},
5884    month       = dec,
5885    year        = 1988,
5886}
5887
5888@mastersthesis{Schluntz17,
5889    author      = {Robert Schluntz},
5890    title       = {Resource Management and Tuples in {C}$\mathbf{\forall}$},
5891    school      = {School of Computer Science, University of Waterloo},
5892    year        = 2017,
5893    address     = {Waterloo, Ontario, Canada, N2L 3G1},
5894    note        = {\href{https://uwspace.uwaterloo.ca/handle/10012/11830}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-11830}},
5895}
5896
5897@article{FH91,
5898    keywords    = {lcc},
5899    contributer = {gjditchfield@plg},
5900    author      = {Christopher W. Fraser and David R. Hanson},
5901    title       = {A Retargetable Compiler for {ANSI} {C}},
5902    journal     = sigplan,
5903    year        = 1991,
5904    month       = oct, volume = 26, number = 10, pages = {29-43},
5905    abstract    = {
5906        {\tt lcc} is a new retargetable compiler for ANSI C.  Versions for
5907        the VAX, Motorola 68020, SPARC, and MIPS are in production use at
5908        Princeton University and at AT\&T Bell Laboratories.  With a few
5909        exceptions, little about {\tt lcc} is unusual---it integrates
5910        several well engineered, existing techniques---but it is smaller
5911        and faster than most other C compilers, and it generates code of
5912        comparable quality.  {\tt lcc}'s target-independent front end
5913        performs a few simple, but effective, optimizations that contribute
5914        to good code; examples include simulating register declarations and
5915        partitioning switch statements into dense tables.  It also
5916        implements target-independent function tracing and expression-level
5917        profiling.
5918    }
5919}
5920
5921@article{Algol68revised,
5922    keywords    = {},
5923    contributer = {gjditchfield@plg},
5924    author      = {A. van Wijngaarden and B. J. Mailloux and J. E. L. Peck and
5925        C. H. A. Koster and M. Sintzoff and C. H. Lindsey and L. G. L. T.
5926        Meertens and R. G. Fisher},
5927    title       = {Revised Report on the Algorithmic Language {ALGOL} 68},
5928    journal     = sigplan,
5929    year        = 1977,
5930    month       = may,
5931    volume      = 12,
5932    number      = 5,
5933    pages       = {1-70}
5934}
5935
5936@article{scheme,
5937    keywords    = {},
5938    contributer = {gjditchfield@plg},
5939    author      = {Jonathan Rees and William Clinger},
5940    title       = {Revised$^3$ Report on the Algorithmic Language {S}cheme},
5941    journal     = sigplan,
5942    year        = 1986,
5943    month       = dec,
5944    volume      = 21,
5945    number      = 12,
5946    pages       = {37-79},
5947}
5948
5949@article{scheme5,
5950    keywords    = {scheme},
5951    contributer = {pabuhr@plg},
5952    author      = {H. Abelson and Adams, IV, N. I. and D. H. Bartley and G. Brooks and R. K. Dybvig and D. P. Friedman and
5953                   R. Halstead and C. Hanson and C. T. Haynes and E. Kohlbecker and D. Oxley and K. M. Pitman and G. J. Rozas and
5954                   G. L. Steele Jr. and G. J. Sussman and M. Wand and \emph{Ed. by} Richard Kelsey and William Clinger and Jonathan Rees},
5955    title       = {Revised$^5$ Report on the Algorithmic Language {S}cheme},
5956    journal     = sigplan,
5957    year        = 1998,
5958    month       = sep,
5959    volume      = 33,
5960    number      = 9,
5961    pages       = {26-76},
5962}
5963
5964@manual{Rust,
5965    keywords    = {Rust programming language},
5966    contributer = {pabuhr@plg},
5967    author      <