source: doc/bibliography/pl.bib @ 200b2b5

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

Add uC++, CCured & Ironclad C++ to related work

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