source: doc/bibliography/pl.bib@ 834f634

ADT aaron-thesis arm-eh ast-experimental cleanup-dtors enum forall-pointer-decay jacob/cs343-translation jenkins-sandbox new-ast new-ast-unique-expr pthread-emulation qualifiedEnum
Last change on this file since 834f634 was 1836081, checked in by Aaron Moss <a3moss@…>, 7 years ago

thesis: second draft of ch.5

  • Property mode set to 100644
File size: 245.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
24string{ieeepds="IEEE Transactions on Parallel and Distributed Systems"}
25@string{ieeepds="IEEE Trans. Parallel Distrib. Syst."}
26string{ieeese="IEEE Transactions on Software Engineering"}
27@string{ieeese="IEEE Trans. Softw. Eng."}
28string{spe="Software---\-Practice and Experience"}
29@string{spe="Softw. Pract. Exper."}
30string{ccpe="Concurrency and Computation: Practice and Experience"}
31@string{ccpe="Concurrency Comput.: Pract. Exper."}
32string{sigplan="SIGPLAN Notices"}
33@string{sigplan="SIGPLAN Not."}
34string{joop="Journal of Object-Oriented Programming"}
35@string{joop="J. of Object-Oriented Program."}
36@string{popl="Conference Record of the ACM Symposium on Principles of Programming Languages"}
37@string{osr="Operating Systems Review"}
38@string{pldi="Programming Language Design and Implementation"}
39@string{toplas="Transactions on Programming Languages and Systems"}
40string{mathann="Mathematische Annalen"}
41@string{mathann="Math. Ann."}
42
43% A
44
45@incollection{ABC++,
46 keywords = {concurrency, parallel, distributed, C++},
47 contributer = {pabuhr@plg},
48 author = {William G. O'Farrell and Frank Ch. Eigler and S. David Pullara and Gregory V. Wilson },
49 title = {{ABC}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
50 editor = {Gregory V. Wilson and Paul Lu},
51 booktitle = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
52 publisher = {MIT Press},
53 address = {New York},
54 series = {Scientific and Engineering Computation Series},
55 year = 1996,
56 pages = {1-42},
57}
58
59@techreport{CL90abstract,
60 keywords = {},
61 contributer = {gjditchfield@plg},
62 author = {Luca Cardelli and Xavier Leroy},
63 title = {Abstract Types and the Dot Notation},
64 institution = {Systems Research Center},
65 year = 1990,
66 address = {130 Lytton Avenue, Palo Alto, CA 94301},
67 number = 56,
68 summary = {
69 The existential types of Mitchell and Plotkin \cite{atet} model
70 abstract types, but their ``open'' notation is unlike the usual dot
71 notation used in programming languages. This paper gives
72 translations between the ``open'' and ``dot'' forms, and suggests
73 extensions for nested and for parameterized abstractions.
74 }
75}
76
77@article{atet,
78 keywords = {lambda calculus, polymorphism},
79 contributer = {gjditchfield@plg},
80 author = {John C. Mitchell and Gordon D. Plotkin},
81 title = {Abstract Types have Existential Type},
82 journal = toplas,
83 year = 1988,
84 month = jul, volume = 10, number = 3, pages = {470-502},
85 abstract = {
86 Abstract data type declarations appear in typed programming
87 languages like Ada, Alphard, CLU and ML. This form of declaration
88 binds a list of identifiers to a type with associated operations, a
89 composite ``value'' we call a {\em data algebra}. We use a
90 second-order typed lambda calculus SOL to show how data algebras
91 may be given types, passed as parameters, and returned as results of
92 function calls. In the process, we discuss the semantics of
93 abstract data type declarations and review a connection between
94 typed programming languages and constructive logic.
95 }
96}
97
98@article{alphard:intro,
99 keywords = {encapsulation, data abstraction},
100 contributer = {gjditchfield@plg},
101 author = {Wm. A. Wulf and Ralph L. London and Mary Shaw},
102 title = {Abstraction and Verification in Alphard: Introduction to Language and Methodology},
103 journal = ieeese,
104 year = 1976,
105 month = dec, volume = {SE-2}, number = 4, pages = {253-265},
106 note = {Reprinted in \cite{alphard}.},
107 abstract = {
108 Alphard is a programming language whose goals include supporting
109 both the development of well-structured programs and the formal
110 verification of these programs. This paper attempts to capture the
111 symbiotic influence of these two goals on the design of the
112 language. To that end the language description is interleaved with
113 the presentation of a proof technique and discudssion of
114 programming methodology. Examples to illustrate both the language
115 and the verification technique are included.
116 }
117}
118
119@book{Hilfinger83,
120 keywords = {ada},
121 author = {Paul N. Hilfinger},
122 title = {Abstraction Mechanisms and Language Design},
123 publisher = {MIT Press},
124 series = {ACM Distinguished Dissertations},
125 year = 1983,
126}
127
128@incollection{Lavender96,
129 author = {R. Greg Lavender and Douglas C. Schmidt},
130 chapter = {Active Object: An Object Behavioral Pattern for Concurrent Programming},
131 title = {Pattern Languages of Program Design 2},
132 editor = {John M. Vlissides and James O. Coplien and Norman L. Kerth},
133 year = 1996,
134 pages = {483-499},
135 publisher = {Addison-Wesley Longman Publishing},
136 address = {Boston},
137}
138
139@article{Nierstrasz87,
140 keywords = {Hybrid, active objects, object-oriented languages, 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{Hoare61,
381 keywords = {quick sort},
382 contributer = {pabuhr@plg},
383 author = {C. A. R. Hoare},
384 title = {Algorithms 63/64: Partition/Quicksort},
385 journal = cacm,
386 volume = 4,
387 number = 7,
388 month = jul,
389 year = 1961,
390 pages = {321},
391}
392
393@article{Cormack81,
394 keywords = {},
395 contributer = {gjditchfield@plg},
396 author = {Gordon V. Cormack},
397 title = {An Algorithm for the Selection of Overloaded Functions in {Ada}},
398 journal = sigplan,
399 year = 1981,
400 month = feb, volume = 16, number = 2, pages = {48-52},
401 comment = {
402 A one-pass, top-down algorithm for overload resolution. Input is a
403 parse tree and the desired result type, and output is the number of
404 solutions. For each overloading of the root identifier with a
405 matching parameter list, recursively solve for each parameter for
406 the corresponding argument type---there should be one solution.
407 }
408}
409
410@book{Raynal86,
411 keywords = {mutual exclusion, locks},
412 contributer = {pabuhr@plg},
413 author = {M. Raynal},
414 title = {Algorithms for Mutual Exclusion},
415 publisher = {MIT Press},
416 address = {Cambridge},
417 series = {Scientific Computation Series},
418 year = 1986,
419 note = {Translated by D. Beeson},
420}
421
422@incollection{Gidenstam05,
423 keywords = {lock free, dynamic memory allocation},
424 contributer = {pabuhr@plg},
425 author = {Anders Gidenstam and Marina Papatriantafilou and Philippas Tsigas},
426 title = {Allocating Memory in a Lock-free Manner},
427 editor = {Gerth St{\o}lting Brodal and Stefano Leonardi},
428 booktitle = {Algorithms -- ESA 2005},
429 pages = {329-342},
430 publisher = {Springer},
431 address = {New York},
432 year = 2005,
433 volume = 3669,
434 series = {Lecture Notes in Computer Science},
435}
436
437@book{Sites92,
438 keywords = {computers, Alpha},
439 contributer = {pabuhr@plg},
440 editor = {Richard L. Sites},
441 title = {Alpha Architecture Reference Manual},
442 publisher = {Digital Press, Burlington},
443 year = 1992,
444}
445
446@book{alphard,
447 keywords = {Parametric polymorphism, alphard, iterators, nested types},
448 contributer = {gjditchfield@plg},
449 key = {Alphard},
450 editor = {Mary Shaw},
451 title = {{ALPHARD}: Form and Content},
452 publisher = {Springer},
453 address = {New York},
454 year = 1981,
455 comment = {Collection of papers about Alphard.}
456}
457
458@article{Kessels77,
459 keywords = {monitors},
460 contributer = {pabuhr@plg},
461 author = {Joep L. W. Kessels},
462 title = {An Alternative to Event Queues for Synchronization in Monitors},
463 journal = cacm,
464 volume = 20,
465 number = 7,
466 month = jul,
467 year = 1977,
468 pages = {500-503},
469 annote = {
470 }
471}
472
473@article{descr,
474 keywords = {X2, subclasses, inheritance, parameterized classes},
475 contributer = {gjditchfield@plg},
476 author = {David Sandberg},
477 title = {An Alternative to Subclassing},
478 journal = sigplan,
479 volume = {21}, number = {11},
480 pages = {424-428},
481 month = nov, year = 1986,
482 comment = {
483 The Smalltalk class hierarchy has three uses: factoring out code;
484 ``Abstraction superclasses'' such as Collection; rapid construction
485 of new classes by incremental change.
486
487 ``A descriptive class specifies a partial behavior by specifying a
488 set of procedure headings that describe what can be done with
489 instances of classes that belong to the descriptive class.'' An
490 ``instance'' statement declares a class to be an instance of a
491 descriptive class and defines the correspondence between
492 operations. Procedures with descriptive class parameters take any
493 instance as arguments. Descriptive classes can describe relations
494 like ``c is a collection with element type e'', but how such things
495 are used isn't explained.
496
497 For each descriptive class used in a parameter list, an implicit
498 parameter is created that is passed a vector of procedures.
499 }
500}
501
502@incollection{Matsuoka93,
503 keywords = {inheritance anomaly},
504 contributer = {pabuhr@plg},
505 author = {Satoshi Matsuoka and Akinori Yonezawa},
506 title = {Analysis of Inheritance Anomaly in Object-Oriented Concurrent Programming Languages},
507 booktitle = {Research Directions in Concurrent Object-Oriented Programming},
508 editor = {Gul Agha and Peter Wegner and Akinori Yonezawa},
509 publisher = {MIT Press},
510 address = {New York},
511 year = 1993,
512 pages = {107-150},
513}
514
515@article{Sinha00,
516 author = {Saurabh Sinha and Mary Jean Harrold},
517 title = {Analysis and Testing of Programs with Exception-Handling Constructs},
518 journal = ieeese,
519 year = 2000,
520 month = sep,
521 volume = 26,
522 number = 9,
523 pages = {849--871},
524}
525
526@inproceedings{Robillard99,
527 author = {Martin P. Robillard and Gail C. Murphy},
528 title = {Analyzing Exception Flow in {J}ava Programs},
529 booktitle = {ESEC/FSE-7: Proceedings of the 7th European Software Engineering Conference held jointly
530 with the 7th ACM SIGSOFT International Symposium on Foundations of Software Engineering},
531 year = 1999,
532 pages = {322--337},
533 isbn = {3-540-66538-2},
534 location = {Toulouse, France},
535 doi = {http://doi.acm.org/10.1145/318773.319251},
536 publisher = {Springer},
537 address = {London, UK},
538}
539
540@book{C++,
541 keywords = {C++, ANSI},
542 author = {Margaret A. Ellis and Bjarne Stroustrup},
543 title = {The Annotated {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Reference Manual},
544 publisher = {Addison-Wesley},
545 address = {Boston},
546 year = 1990,
547 edition = {1st},
548}
549
550@book{APL,
551 keywords = {APL},
552 contributer = {pabuhr@plg},
553 author = {K. E. Iverson},
554 title = {A Programming Language},
555 publisher = {Wiley, New York},
556 year = 1962
557}
558
559@article{PS-Algol:old,
560 author = {M. Atkinson and P. Bailey and K. Chisholm and P. Cockshott and R. Morrison},
561 title = {An Approach to Persistent Programming},
562 journal = {The Computer Journal},
563 year = 1983,
564 volume = 26,
565 number = 4,
566 pages = {360-365},
567}
568
569@inproceedings {Qin18,
570 author = {Henry Qin and Qian Li and Jacqueline Speiser and Peter Kraft and John Ousterhout},
571 title = {Arachne: Core-Aware Thread Management},
572 booktitle = {13th {USENIX} Symp. on Oper. Sys. Design and Impl. ({OSDI} 18)},
573 year = {2018},
574 address = {Carlsbad, CA},
575 pages = {145-160},
576 publisher = {{USENIX} Association},
577 note = {\href{https://www.usenix.org/conference/osdi18/presentation/qin}{https://\-www.usenix.org/\-conference/\-osdi18/\-presentation/\-qin}},
578}
579
580@article{Kessels82,
581 keywords = {concurrency, critical section},
582 contributer = {pabuhr@plg},
583 author = {Joep L. W. Kessels},
584 title = {Arbitration Without Common Modifiable Variables},
585 journal = acta,
586 volume = 17,
587 number = 2,
588 month = jun,
589 year = 1982,
590 pages = {135-141},
591}
592
593@article{Buhr95a,
594 keywords = {concurrency, library approach},
595 contributer = {pabuhr@plg},
596 author = {Peter A. Buhr},
597 title = {Are Safe Concurrency Libraries Possible?},
598 journal = cacm,
599 month = feb,
600 year = 1995,
601 volume = 38,
602 number = 2,
603 pages = {117-120},
604}
605
606@book{ARMv7,
607 key = {ARM processor},
608 title = {ARM Architecture Reference Manual},
609 publisher = {ARM},
610 volume = {ARM DDI 0406C.b (ID072512)},
611 year = 2012,
612}
613
614@book{Herlihy08,
615 contributer = {pabuhr@plg},
616 author = {Herlihy, Maurice and Shavit, Nir},
617 title = {The Art of Multiprocessor Programming},
618 year = 2008,
619 isbn = {0123705916, 9780123705914},
620 publisher = {Morgan Kaufmann Publishers},
621 address = {San Francisco},
622}
623
624@inproceedings{Chung10,
625 keywords = {transactional memory, lock-free programming, x86 architecture},
626 contributer = {pabuhr@plg},
627 author = {Jaewoong Chung and Luke Yen and Stephan Diestelhorst and Martin Pohlack and Michael Hohmuth and David Christie and Dan Grossman},
628 title = {ASF: AMD64 Extension for Lock-Free Data Structures and Transactional Memory},
629 booktitle = {Proceedings of the 2010 43rd Annual IEEE/ACM International Symposium on Microarchitecture},
630 series = {MICRO '43},
631 year = 2010,
632 pages = {39--50},
633 numpages = {12},
634 publisher = {IEEE Computer Society},
635 address = {Washington, DC, USA},
636}
637
638@article{Buhr94a,
639 keywords = {assignment, parameter passing, multiple assignment},
640 contributer = {pabuhr@plg},
641 author = {P. A. Buhr and David Till and C. R. Zarnke},
642 title = {Assignment as the Sole Means of Updating Objects},
643 journal = spe,
644 month = sep,
645 year = 1994,
646 volume = 24,
647 number = 9,
648 pages = {835-870},
649}
650
651@inproceedings{Krischer08,
652 keywords = {exception handling, asynchronous, blocked tasks},
653 contributer = {pabuhr@plg},
654 author = {Roy Krischer and Peter A. Buhr},
655 title = {Asynchronous Exception Propagation in Blocked Tasks},
656 booktitle = {4th International Workshop on Exception Handling (WEH.08)},
657 organization= {16th International Symposium on the Foundations of Software Engineering (FSE 16)},
658 address = {Atlanta, U.S.A},
659 month = nov,
660 year = 2008,
661 pages = {8-15},
662}
663
664@article{Joung00,
665 author = {Joung, Yuh-Jzer},
666 title = {Asynchronous group mutual exclusion},
667 journal = {Dist. Comput.},
668 optjournal = {Distributed Computing},
669 year = {2000},
670 month = {Nov},
671 volume = {13},
672 number = {4},
673 pages = {189--206},
674}
675
676@article{oop:modpascal,
677 keywords = {ModPascal},
678 contributer = {gjditchfield@plg},
679 author = {Walter G. Olthoff},
680 title = {Augmentation of Object-Oriented Programming by Concepts of Abstract Data Type Theory: The ModPascal Experience},
681 journal = sigplan,
682 volume = 21,
683 number = 11,
684 pages = {429-443},
685 month = nov,
686 year = 1986
687}
688
689@inproceedings{Shen91,
690 keywords = {Ada, polymorphism},
691 contributer = {pabuhr@plg},
692 author = {Jun Shen and Gordon V. Cormack},
693 title = {Automatic instantiation in Ada},
694 booktitle = {Proceedings of the ACM Tri-Ada Conference},
695 organization= {ACM},
696 address = {San Jose, California, U.S.A},
697 month = oct,
698 year = 1991,
699 pages = {338-346},
700}
701
702@article{Havender68,
703 keywords = {deadlock},
704 contributer = {pabuhr@plg},
705 author = {J. W. Havender},
706 title = {Avoiding Deadlock in Multitasking Systems},
707 journal = ibmsj,
708 volume = 7,
709 number = 2,
710 year = 1968,
711 pages = {74-84},
712}
713
714% B
715
716@article{Michael13,
717 contributer = {pabuhr@plg},
718 author = {Maged M. Michael},
719 title = {The Balancing Act of Choosing Nonblocking Features},
720 journal = cacm,
721 volume = 56,
722 number = 9,
723 month = sep,
724 year = 2013,
725 pages = {46--53},
726 publisher = {ACM},
727 address = {New York, NY, USA},
728}
729
730@incollection{beta:old,
731 keywords = {beta, patterns, virtual types},
732 contributer = {gjditchfield@plg},
733 author = {Bent Bruun Kristensen and Ole Lehrmann Madsen and Birger M{\o}ller-Pedersen and Kristen Nygaard},
734 title = {The BETA Programming Language},
735 booktitle = {Research Directions in Object-Oriented Programming},
736 publisher = {MIT Press},
737 series = {Computer Systems Series},
738 year = 1987,
739 pages = {7-48},
740 editor = {Bruce Shriver and Peter Wegner}
741}
742
743@article{Knudsen87,
744 keyword = {static exception handling mechanism, BETA, sequel},
745 contributor = {wyrmok@plg},
746 author = {J{\o}rgen Lindskov Knudsen},
747 title = {Better Exception Handling in Block Structured Systems},
748 journal = {IEEE Software},
749 year = 1987,
750 month = may,
751 volume = 4,
752 number = 3,
753 pages = {40-49},
754 comments = {
755 Going up the call hierarchy to look for a handler does not fit an
756 otherwise statically scoped language. Also, not knowing which handler
757 to be used when raising an abnormal event is seen as a weakness of the
758 (dynamic) exception handling mechanism. Knudsen believed that raising
759 an exception should specify the handler for the exception -- the
760 handler is chosen when the exception is raised. However, I don't think
761 his scheme can solve the problem, especially with all the callback
762 routines commonly found in OO programming.
763
764 BETA exception handling mechanism uses his work as a foundation.
765 However, I don't see any benefits BETA has over other language that is
766 a direct consequence of Knudsen's work. On the other hand, my knowledge
767 on BETA is very limited.
768 }
769}
770
771@book{BCPL,
772 keywords = {BCPL},
773 contributer = {pabuhr@plg},
774 author = {M. Richards and C. Whitby-Strevens},
775 title = {{BCPL} -- The Language and Its Compiler},
776 publisher = {Cambridge University Press, Cambridge},
777 year = 1979,
778}
779
780@incollection{Madsen87,
781 keywords = {nested classes},
782 contributer = {pabuhr@watmsg},
783 author = {Ole Lehrmann Madsen},
784 title = {Block Structure and Object Oriented Languages},
785 booktitle = {Research Directions in Object-Oriented Programming},
786 editor = {Bruce Shriver and Peter Wegner},
787 publisher = {MIT Press},
788 series = {Computer Systems Series},
789 year = 1987,
790 pages = {113-128}
791}
792
793@inproceedings{booleanClasses,
794 keywords = {specifications},
795 contributer = {gjditchfield@plg},
796 author = {David McAllester and Ramin Zabih},
797 title = {Boolean Classes},
798 crossref = "OOPSLA86",
799 pages = {417-423},
800 abstract = {
801 We extend the notion of class so that any Boolean combination of
802 classes is also a class. Boolean classes allow greater precision
803 and conciseness in naming the class of objects governed a
804 particular method [sic]. A class can be viewed as a predicate
805 which is either true or false of any given object. Unlike
806 predicates however classes have an inheritance hierarchy which is
807 known at compile time. Boolean classes extend the notion of class,
808 making classes more like predicates, while preserving the compile
809 time computable inheritance hierarchy.
810 },
811 comment = {
812 Classes are predicates; if object {\tt o} is in class {\tt C}, then
813 {\tt C} is true of {\tt o}. Classes are combined with {\tt :AND},
814 {\tt :OR}, and {\tt :NOT}. Inheritance is treated as implication:
815 {\tt (:implies C E)} means that if class {\tt C} is true of {\tt
816 o}, class expression {\tt E} is true of {\tt o}, so if {\tt E} is a
817 class, it is a superclass of {\tt C}. Some class expressions, i.e.
818 {\tt (:OR c1 c2)}, can't be instantiated. Others, i.e. {\tt (:NOT
819 c)}, can't be given methods or members because almost all classes
820 would inherit them, violating modularity. The rules for spotting
821 these problems are complex. Determining if one class inherits from
822 another needs an exponential algorithm.
823 }
824}
825
826@misc{BoostCoroutines15,
827 keywords = {Boost Coroutine Library},
828 contributer = {pabuhr@plg},
829 author = {Oliver Kowalke},
830 title = {Boost Coroutine Library},
831 year = 2015,
832 howpublished= {\href{http://www.boost.org/doc/libs/1_61_0/libs/coroutine/doc/html/index.html}
833 {{http://www.boost.org/\-doc/\-libs/1\_61\_0/\-libs/\-coroutine/\-doc/\-html/\-index.html}}},
834 optnote = {Accessed: 2016-09},
835}
836
837@mastersthesis{Krischer02,
838 author = {Roy Krischer },
839 title = {Bound Exceptions in Object-Oriented Programming Languages},
840 school = {Universit\"at Mannheim},
841 address = {Mannheim, Deutschland},
842 year = 2002,
843 month = oct,
844 type = {Diplomarbeit},
845 note = {\href{https://plg.uwaterloo.ca/~usystem/theses/KrischerThesis.pdf}{https://\-plg.uwaterloo.ca/\-$\sim$usystem/\-theses/\-KrischerThesis.pdf}},
846}
847
848@inproceedings{Buhr03,
849 keywords = {exception handling, bound handler},
850 contributer = {pabuhr@plg},
851 author = {Peter A. Buhr and Roy Krischer},
852 title = {Bound Exceptions in Object Programming},
853 booktitle = {Proceedings of the ECOOP 2003 Workshop on Exception Handling in Object Oriented Systems:
854 Towards Emerging Application Areas and New Programming Paradigms},
855 organization= {ECOOP},
856 address = {Darmstadt, Germany},
857 month = jul,
858 year = 2003,
859 pages = {20-26},
860}
861% note = {http://www.cs.umn.edu/research/technical_reports.php/listing/technical_reports.php?page=report&report_id=03-028}
862
863@inproceedings{Buhr06b,
864 keywords = {exception handling, bound exceptions},
865 author = {Peter A. Buhr and Roy Krischer},
866 title = {Bound Exceptions in Object-Oriented Programming},
867 editor = {C. Dony and J. L. Knudsen and A. Romanovsky and A. Tripathi},
868 booktitle = {Advanced Topics in Exception Handling Techniques},
869 publisher = {Springer},
870 series = {Lecture Notes in Computer Science},
871 volume = 4119,
872 year = 2006,
873 pages = {1-21}
874}
875
876% C
877
878@book{C,
879 keywords = {C},
880 contributer = {pabuhr@plg},
881 author = {Brian W. Kernighan and Dennis M. Ritchie},
882 title = {The {C} Programming Language},
883 publisher = {Prentice-Hall},
884 address = {Englewood Cliffs},
885 year = 1988,
886 edition = {2nd},
887 series = {Prentice-Hall Software Series},
888 comment = {
889 based on draft-proposed ANSI C
890 }
891}
892
893@book{C:old,
894 keywords = {C},
895 contributer = {pabuhr@plg},
896 author = {Brian W. Kernighan and Dennis M. Ritchie},
897 title = {The {C} Programming Language},
898 publisher = {Prentice-Hall},
899 address = {Englewood Cliffs},
900 year = 1978,
901 edition = {1st},
902}
903
904@manual{ANSI89:C,
905 keywords = {ANSI C 89},
906 contributer = {gjditchfield@plg},
907 author = {C90},
908 title = {Programming Languages -- {C}},
909 organization= {American National Standards Institute},
910 address = {New York, NY, U.S.A.},
911 year = 1990,
912 note = {ANSI/ISO 9899-1990}
913}
914
915@manual{C11,
916 keywords = {ISO/IEC C 11},
917 contributer = {pabuhr@plg},
918 key = {C11},
919 title = {C Programming Language {ISO/IEC} 9889:2011-12},
920 edition = {3rd},
921 publisher = {International Standard Organization},
922 address = {\href{https://www.iso.org/standard/57853.html}{https://\-www.iso.org/\-standard/\-57853.html}},
923 year = 2012,
924}
925
926@manual{C++Concepts,
927 keywords = {ISO/IEC TS 19217:2015},
928 contributer = {a3moss@uwaterloo.ca},
929 key = {Concepts},
930 title = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming language -- Extensions for concepts {ISO/IEC} {TS} 19217:2015},
931 publisher = {International Standard Organization},
932 address = {\href{https://www.iso.org/standard/64031.html}{https://\-www.iso.org/\-standard/\-64031.html}},
933 year = 2015,
934}
935
936@misc{Cforall,
937 contributer = {pabuhr@plg},
938 key = {Cforall},
939 author = {{\textsf{C}{$\mathbf{\forall}$} Features}},
940 howpublished= {\href{https://plg.uwaterloo.ca/~cforall/features}{https://\-plg.uwaterloo.ca/\-$\sim$cforall/\-features}},
941 optnote = {Accessed: 2018-01-01},
942}
943
944@mastersthesis{Esteves04,
945 keywords = {Cforall, parametric polymorphism, overloading},
946 contributer = {pabuhr@plg},
947 author = {Rodolfo Gabriel Esteves},
948 title = {\textsf{C}$\mathbf{\forall}$, a Study in Evolutionary Design in Programming Languages},
949 school = {School of Computer Science, University of Waterloo},
950 year = 2004,
951 address = {Waterloo, Ontario, Canada, N2L 3G1},
952 note = {\href{http://plg.uwaterloo.ca/theses/EstevesThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-EstevesThesis.pdf}},
953}
954
955@misc{CFAStackEvaluation,
956 contributer = {a3moss@plg},
957 author = {Aaron Moss},
958 title = {\textsf{C}$\mathbf{\forall}$ Stack Evaluation Programs},
959 year = 2018,
960 howpublished= {\href{https://cforall.uwaterloo.ca/CFAStackEvaluation.zip}{https://cforall.uwaterloo.ca/\-CFAStackEvaluation.zip}},
961 optnote = {[Accessed May 2018]},
962}
963
964@article{Moss18,
965 keywords = {type systems, polymorphism, tuples, Cforall},
966 contributer = {pabuhr@plg},
967 author = {Aaron Moss and Robert Schluntz and Peter A. Buhr},
968 title = {\textsf{C}$\mathbf{\forall}$ : Adding Modern Programming Language Features to C},
969 journal = spe,
970 volume = 48,
971 number = 12,
972 month = dec,
973 year = 2018,
974 pages = {2111-2146},
975 note = {\href{http://dx.doi.org/10.1002/spe.2624}{http://\-dx.doi.org/\-10.1002/\-spe.2624}},
976}
977
978@inproceedings{c++scheme,
979 keywords = {},
980 contributer = {gjditchfield@plg},
981 author = {Vincent F. Russo and Simon M. Kaplan},
982 title = {A {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Interpreter for {S}cheme},
983 booktitle = {Usenix {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
984 year = 1988,
985 pages = {95-108},
986 summary = {
987 The SIOD interpreter for a Scheme subset, written in C, has a
988 tagged union representing data objects, and read(), eval(), and
989 print() functions that are basically large switch statements that
990 switch based on the tag. The authors rewrote it to use a class
991 with virtual read(), eval(), and print() members, without changing
992 any algorithms. The result was more modular, more easily
993 extensible, more reliable, and slightly faster.
994 },
995 comment = {
996 The evidence given is thin.
997 },
998}
999
1000@article{doskernel,
1001 keywords = {light weight processes},
1002 contributer = {gjditchfield@plg},
1003 author = {Tom Green},
1004 title = {A {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Multitasking Kernel},
1005 journal = {Dr. Dobb's Journal of Software Tools},
1006 year = 1989,
1007 month = feb,
1008 volume = 14,
1009 number = 2,
1010 pages = {45-51},
1011 comment = {
1012 A light-weight multitasking kernel for MS-DOS. A task\_control
1013 object holds task objects, which may block themselves on signal
1014 objects. Task switching is normally preemptive, but tasks can turn
1015 off preemption before calling non-reentrant routines. Source code
1016 is given.
1017 }
1018}
1019
1020@inproceedings{Doeppner87,
1021 keywords = {concurrency},
1022 contributer = {pabuhr@plg},
1023 author = {Thomas W. Doeppner and Alan J. Gebele},
1024 title = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} on a Parallel Machine},
1025 booktitle = {Proceedings and Additional Papers {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Workshop},
1026 organization= {USENIX Association},
1027 address = {Santa Fe, New Mexico, U.S.A},
1028 month = nov,
1029 year = 1987,
1030 pages = {94-107},
1031}
1032
1033@book{Lippman91,
1034 keywords = {C++},
1035 contributer = {pabuhr@plg},
1036 author = {Stanley B. Lippman},
1037 title = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Primer},
1038 publisher = {Addison-Wesley},
1039 address = {Boston},
1040 year = 1991,
1041 edition = {2nd},
1042 note = {QA76.73.C15L57},
1043}
1044
1045@book{c++:v1,
1046 keywords = {C++},
1047 contributer = {gjditchfield@plg},
1048 author = {Bjarne Stroustrup},
1049 title = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
1050 publisher = {Addison-Wesley},
1051 address = {Boston},
1052 year = 1986,
1053 edition = {1st},
1054 series = {Addison-Wesley Series in Computer Science}
1055}
1056
1057@book{c++:v2,
1058 keywords = {C++},
1059 contributer = {pabuhr@plg},
1060 author = {Bjarne Stroustrup},
1061 title = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
1062 publisher = {Addison-Wesley},
1063 address = {Boston},
1064 year = 1991,
1065 edition = {2nd},
1066}
1067
1068@book{c++:v3,
1069 keywords = {C++},
1070 contributer = {pabuhr@plg},
1071 author = {Bjarne Stroustrup},
1072 title = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
1073 publisher = {Addison Wesley Longman},
1074 year = 1997,
1075 edition = {3rd},
1076}
1077
1078@manual{Csharp,
1079 keywords = {C#},
1080 contributer = {pabuhr@plg},
1081 title = {C\# Language Specification, Standard ECMA-334},
1082 organization= {ECMA International Standardizing Information and Communication Systems},
1083 month = jun,
1084 year = 2006,
1085 edition = {4th},
1086}
1087
1088@article{Buhr85,
1089 keywords = {goto, multi-exit loop},
1090 contributer = {pabuhr@plg},
1091 author = {P. A. Buhr},
1092 title = {A Case for Teaching Multi-exit Loops to Beginning Programmers},
1093 journal = sigplan,
1094 volume = 20,
1095 number = 11,
1096 month = nov,
1097 year = 1985,
1098 pages = {14-22}
1099}
1100
1101@inproceedings{Necula02,
1102 author = {Necula, George C. and McPeak, Scott and Weimer, Westley},
1103 title = {{CCured}: Type-safe Retrofitting of Legacy Code},
1104 booktitle = {Proceedings of the 29th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages},
1105 series = {POPL '02},
1106 year = {2002},
1107 location = {Portland, Oregon},
1108 pages = {128-139},
1109 publisher = {ACM},
1110 address = {New York, NY, USA},
1111}
1112
1113@techreport{cforall-ug,
1114 keywords = {cforall, user guide},
1115 contributer = {pabuhr@plg},
1116 author = {Peter A. Buhr and Glen Ditchfield and David Till and Charles R. Zarnke},
1117 title = {\textsf{C}$\mathbf{\forall}$ Users Guide, Version 0.1},
1118 institution = {Department of Computer Science, University of Waterloo},
1119 address = {Waterloo, Ontario, Canada, N2L 3G1},
1120 month = oct,
1121 year = 2001,
1122 note = {\href{http://plg.uwaterloo.ca/~cforall/cfa.ps}{http://\-plg.uwaterloo.ca/\-$\sim$cforall/\-cfa.ps}},
1123}
1124
1125@manual{cforall-refrat,
1126 keywords = {polymorphism},
1127 contributer = {gjditchfield@plg},
1128 author = {Glen Ditchfield},
1129 title = {Cforall Reference Manual and Rationale},
1130 edition = {Revision 1.82},
1131 month = jan,
1132 year = 1998,
1133 note = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-Cforall/\-refrat.ps.gz}}},
1134}
1135
1136@Inproceedings{Tarditi18,
1137 keywords = {Checked C},
1138 contributer = {a3moss@uwaterloo.ca},
1139 author = {Tarditi, David and Elliott, Archibald Samuel and Ruef, Andrew and Hicks, Michael},
1140 title = {Checked C: Making C Safe by Extension},
1141 year = {2018},
1142 month = {September},
1143 publisher = {IEEE},
1144 url = {https://www.microsoft.com/en-us/research/publication/checkedc-making-c-safe-by-extension/},
1145 pages = {53-60},
1146}
1147
1148@misc{Clang,
1149 keywords = {clang},
1150 contributer = {a3moss@uwaterloo.ca},
1151 title = {Clang: a {C} language family frontend for {LLVM}},
1152 howpublished = {\href{https://clang.llvm.org/}{https://\-clang.llvm.org/}},
1153 note = {Accessed 2019-02-22}
1154}
1155
1156@book{Yourdon79,
1157 keywords = {software engineering},
1158 contributer = {pabuhr@plg},
1159 editor = {Edward Nash Yourdon},
1160 title = {Classics in Software Engineering},
1161 publisher = {Yourdon Press},
1162 address = {New York},
1163 year = 1979,
1164}
1165
1166@inproceedings{Crnogorac98,
1167 keywords = {inheritance anomaly},
1168 contributer = {pabuhr@plg},
1169 author = {Lobel Crnogorac and Anand S. Rao and Kotagiri Ramamohanarao},
1170 title = {Classifying Inheritance Mechanisms in Concurrent Object-Oriented Programming},
1171 editor = {Eric Jul},
1172 booktitle = {{ECOOP}~'98---Object-Oriented Programming},
1173 series = {Lecture Notes in Computer Science},
1174 publisher = {Springer},
1175 volume = 1445,
1176 year = 1998,
1177 pages = {571-601},
1178 ISBN = {3-540-64737-6},
1179 ISSN = {0302-9743},
1180 abstract = {
1181 Inheritance is one of the key concepts in object-oriented rogramming. However, the
1182 usefulness of inheritance in concurrent object-oriented programming is greatly
1183 reduced by the problem of inheritance anomaly. Inheritance anomaly is manifested
1184 by undesirable re-definitions of inherited code. The problem is aggravated by the
1185 lack of a formal analysis, with a multitude of differing proposals and conflicting
1186 opinions causing the current state of research, and further directions, to be
1187 unclear. In this paper we present a formal analysis of inheritance anomaly in
1188 concurrent object-oriented programming. Starting from a formal definition of the
1189 problem we develop a taxonomy of the anomaly, and use it to classify the various
1190 proposals. As a result, the major ideas, trends and limitations of the various
1191 proposals are clearly exposed. Formal analysis of the anomaly and a thorough
1192 exposition of its causes and implications are the pre-requisites for a successful
1193 integration of inheritance and concurrency.
1194 },
1195}
1196
1197@book{CLU,
1198 keywords = {CLU},
1199 contributer = {gjditchfield@plg},
1200 author = {Barbara Liskov and Russell Atkinson and Toby Bloom and Eliot
1201 Moss and J. Craig Schaffert and Robert Scheifler and Alan Snyder},
1202 title = {CLU Reference Manual},
1203 publisher = {Springer},
1204 address = {New York},
1205 year = 1981,
1206 volume = 114,
1207 series = {Lecture Notes in Computer Science}
1208}
1209
1210@manual{Cobol14,
1211 keywords = {ISO/IEC Cobol 14},
1212 contributer = {pabuhr@plg},
1213 author = {Cobol14},
1214 title = {Programming Languages -- {Cobol} ISO/IEC 1989:2014},
1215 edition = {2nd},
1216 institution = {International Standard Organization},
1217 address = {\href{https://www.iso.org/standard/51416.html}{https://\-www.iso.org/\-standard/\-51416.html}},
1218 year = 2014,
1219}
1220
1221@article{coagulation,
1222 keywords = {register allocation, instruction selection, jello},
1223 contributer = {gjditchfield@plg},
1224 author = {Michael Karr},
1225 title = {Code Generation by Coagulation},
1226 journal = sigplan,
1227 year = 1984,
1228 month = jun,
1229 volume = 19,
1230 number = 6,
1231 pages = {1-12},
1232 note = {Proceedings of the ACM SIGPLAN '84 Symposium on Compiler Construction},
1233 abstract = {
1234 This paper describes a new approach to code-generation. The
1235 central tenet is that there must be a more intimate coupling
1236 between register allocation and instruction selection than exists
1237 in present-day technology. This is achieved by generating code in
1238 very small regions and gradually coalescing the part of the program
1239 that is ``compiled''.
1240 },
1241}
1242
1243@article{Soloway83,
1244 keywords = {goto, structure programming},
1245 contributer = {pabuhr@plg},
1246 author = {E. Soloway and J. Bonar and K. Ehrlich},
1247 title = {Cognitive Strategies and Looping Constructs: An Empirical Study},
1248 journal = cacm,
1249 month = nov,
1250 year = 1983,
1251 volume = 26,
1252 number = 11,
1253 pages = {853-860},
1254}
1255
1256@book{sml:commentary,
1257 author = {Robin Milner and Mads Tofte},
1258 title = {Commentary on Standard {ML}},
1259 publisher = {MIT Press},
1260 address = {Cambridge},
1261 year = 1991
1262}
1263
1264@article{Hyman66,
1265 keywords = {mutual exclusion, software solution, incorrect},
1266 contributer = {pabuhr@plg},
1267 author = {Harris Hyman},
1268 title = {Comments on a Problem in Concurrent Programming Control},
1269 journal = cacm,
1270 month = jan,
1271 year = 1966,
1272 volume = 9,
1273 number = 1,
1274 pages = {45},
1275 note = {Letter to the Editor}
1276}
1277
1278@inproceedings{clos,
1279 keywords = {},
1280 contributer = {gjditchfield@plg},
1281 author = {Linda G. DeMichiel and Richard P. Gabriel},
1282 title = {The Common Lisp Object System: An Overview},
1283 booktitle = {ECOOP '87. European Conference on Object-Oriented Programming},
1284 year = 1987,
1285 pages = {151-170},
1286 publisher = {Springer}
1287}
1288
1289@book{CommonLisp,
1290 keywords = {common lisp},
1291 contributer = {pabuhr@plg},
1292 author = {Guy Steele},
1293 title = {COMMON LISP: The Language},
1294 publisher = {Digital Press},
1295 address = {New York},
1296 year = 1984
1297}
1298
1299@article{CommonLoops,
1300 author = {D. Bobrow and K. Kahn and G. Kiczales and L. Masinter and M. Stefik and F. Zdybel},
1301 title = {CommonLoops: Merging Common Lisp and Object-Oriented Programming},
1302 address = {Portland, Oregon, U.S.A.},
1303 journal = {Proc. ACM Conf. on Object-Oriented Systems, Languages and Applications},
1304 year = 1986,
1305 month = sep,
1306 pages = {17-29},
1307}
1308
1309@article{co-overview,
1310 keywords = {CommonObjects, implementation, encapsulation},
1311 contributer = {gjditchfield@plg},
1312 author = {Alan Snyder},
1313 title = {CommonObjects: An Overview},
1314 journal = sigplan,
1315 year = 1986,
1316 month = oct, volume = 21, number = 10, pages = {19-28},
1317 note = {Object Oriented Programming Workshop}
1318}
1319
1320@article{CSP,
1321 keywords = {CSP, concurrency},
1322 contributer = {pabuhr@plg},
1323 author = {C. A. R. Hoare},
1324 title = {Communicating Sequential Processes},
1325 journal = cacm,
1326 month = aug,
1327 year = 1978,
1328 volume = 21,
1329 number = 8,
1330 pages = {666-677}
1331}
1332
1333@book{Hoare85,
1334 author = {C. A. R. Hoare},
1335 title = {Communicating Sequential Processes},
1336 year = 1985,
1337 isbn = {0-13-153271-5},
1338 publisher = {Prentice-Hall},
1339 address = {Upper Saddle River, NJ, USA},
1340 note = {\href{http://www.usingcsp.com/cspbook.pdf}{http://\-www.usingcsp.com/\-cspbook.pdf}},
1341}
1342
1343@article{Hansen72a,
1344 keywords = {monitors, automatic signal},
1345 contributer = {pabuhr@plg},
1346 author = {Per {Brinch Hansen}},
1347 title = {A Comparison of Two Synchronizing Concepts},
1348 journal = acta,
1349 volume = 1,
1350 year = 1972,
1351 pages = {190-199},
1352}
1353
1354@book{Aho06,
1355 author = {Alfred V. Aho and Monica S. Lam and Ravi Sethi and Jeffrey D. Ullman},
1356 title = {Compilers: Principles, Techniques, and Tools},
1357 edition = {2nd},
1358 year = {2006},
1359 publisher = {Addison-Wesley Longman Publishing},
1360 address = {Boston, MA, USA},
1361}
1362
1363@article{Bacon94,
1364 keywords = {parallelizing compiler},
1365 contributer = {pabuhr@plg},
1366 author = {David F. Bacon and Susan L. Graham and Oliver J. Sharp},
1367 title = {Compiler Transformations for High-Performance Com\-puting},
1368 journal = acmcs,
1369 volume = 26,
1370 number = 4,
1371 month = dec,
1372 year = 1994,
1373 pages = {345-420},
1374}
1375
1376@inproceedings{Berger01,
1377 author = {Emery D. Berger and Benjamin G. Zorn and Kathryn S. McKinley},
1378 title = {Composing High-Performance Memory Allocators},
1379 booktitle = {{SIGPLAN} Conference on Programming Language Design and Implementation},
1380 pages = {114-124},
1381 year = 2001,
1382 url = {http://citeseer.ist.psu.edu/berger01composing.html}
1383}
1384
1385@article{Andrews83,
1386 keywords = {general concurrency},
1387 contributer = {pabuhr@plg},
1388 author = {Gregory R. Andrews and Fred B. Schneider},
1389 title = {Concepts and Notations for Concurrent Programming},
1390 journal = acmcs,
1391 volume = 15,
1392 number = 1,
1393 month = mar,
1394 year = 1983,
1395 pages = {3-43},
1396}
1397
1398@mastersthesis{Mok97,
1399 author = {Wing Yeung Russell Mok},
1400 title = {Concurrent Abnormal Event Handling Mechanisms},
1401 school = {University of Waterloo},
1402 year = 1997,
1403 month = sep,
1404 address = {Waterloo, Ontario, Canada, N2L 3G1},
1405 note = {\href{http://plg.uwaterloo.ca/theses/MokThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-MokThesis.pdf}},
1406}
1407
1408@article{Gehani86,
1409 keywords = {Concurrent programming, C, Distributed systems, rendezvous},
1410 contributer = {dgharriss@plg},
1411 author = {N. H. Gehani and W. D. Roome},
1412 title = {{Concurrent C}},
1413 journal = spe,
1414 volume = 16,
1415 number = 9,
1416 month = sep,
1417 year = 1986,
1418 pages = {821-844},
1419 abstract = {
1420 Our objective is to enhance C so that it can be used to write
1421 concurrent programs that can run efficiently on both single computers
1422 and multicomputers. Our concurrent programming extensions to C are
1423 based on the {\it rendezvous\/} concept. These extensions include
1424 mechanisms for the declaration and creation of processes, for process
1425 synchronization and interaction, for process termination and abortion.
1426 We give a rationale for our decisions and compare Concurrent C
1427 extensions with the concurrent programming facilities in Ada.
1428 Concurrent C has been implemented on the UNIX system running on a
1429 single processor. A distributed version of Concurrent C is being
1430 implemented.
1431 },
1432 comment = {
1433 Select with guarded and screened accepts. Typed processes.
1434 Process-valued expressions and process variables. Processes have
1435 execution priority: Create {\em process-type-name}(args) [with
1436 priority(p)], and the priority can be changed on the fly. Complicated
1437 guard/screen structure on accept: accept {\em transaction}(param names)
1438 [suchthat (exp)] [by (exp)] [compoundstatement]. Accepts cannot
1439 appear in functions! Can specify timeouts on transaction calls.
1440 Code examples: buffer process, dining philosophers, lock manager.
1441 Section on diffs between Concurrent C and Ada.
1442 }
1443}
1444
1445@article{ConcurrentC++,
1446 keywords = {concurrency, C++},
1447 contributer = {pabuhr@plg},
1448 author = {N. H. Gehani and W. D. Roome},
1449 title = {Concurrent {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}: Concurrent Programming with Class(es)},
1450 journal = spe,
1451 month = dec,
1452 year = 1988,
1453 volume = 18,
1454 number = 12,
1455 pages = {1157-1177}
1456}
1457
1458@article{Courtois71,
1459 keywords = {reader and writer, p and v},
1460 contributer = {pabuhr@plg},
1461 author = {P. J. Courtois and F. Heymans and D. L. Parnas},
1462 title = {Concurrent Control with Readers and Writers},
1463 journal = cacm,
1464 volume = 14,
1465 number = 10,
1466 month = oct,
1467 year = 1971,
1468 pages = {667-668},
1469 annote = {
1470 Many errors in the two solutions.
1471 }
1472}
1473
1474@misc{NThreadCode13,
1475 keywords = {N-thread software-solution mutual exclusion},
1476 contributer = {pabuhr@plg},
1477 key = {concurrent locking},
1478 author = {Peter A. Buhr and David Dice and Wim H. Hesselink},
1479 title = {concurrent-locking},
1480 howpublished= {\href{https://github.com/pabuhr/concurrent-locking}{https://\-github.com/\-pabuhr/\-concurrent-locking}},
1481 optnote = {[Accessed April 2017]},
1482}
1483
1484@incollection{Reppy93,
1485 keywords = {ML, concurrency, continuation passing},
1486 contributer = {pabuhr@plg},
1487 author = {John H. Reppy},
1488 title = {Concurrent {ML}: Design, Application and Semantics},
1489 booktitle = {Functional Programming, Concurrency, Simulation and Automated Reasoning},
1490 editor = {P. E. Lauer},
1491 pages = {165-198},
1492 publisher = {Springer},
1493 address = {Berlin, DE},
1494 year = 1993,
1495 ISBN = {3-540-56883-2},
1496 abstract = {
1497 Concurrent ML (CML) is a high-level language for concurrent
1498 programming. It is an extension of Standard ML (SML) and is implemented
1499 on top of Standard ML of New Jersey (SML/NJ). CML is a practical
1500 language and is being used to build real systems. It demonstrates that
1501 one need not sacrifice high-level notation in order to have good
1502 performance. CML is also a well-defined language. In the tradition of
1503 SML, it has a formal semantics and its type-soundness has been
1504 proven.},
1505 note = {
1506 Proceedings of International Lecture Series 1991-92, McMaster
1507 UniversityLecture Notes in Computer Science 693.},
1508}
1509
1510@article{BLASE-2,
1511 keywords = {concurrency, BLASE-2},
1512 contributer = {pabuhr@plg},
1513 author = {Piyush Mehrotra and John Van Rosendale},
1514 title = {Concurrent Object Access in BLASE~2},
1515 journal = sigplan,
1516 volume = 24,
1517 number = 4,
1518 month = apr,
1519 year = 1989,
1520 pages = {40-42},
1521 note = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming,
1522 Sept. 26--27, 1988, San Diego, California, U.S.A},
1523}
1524
1525@techreport{Kafura88,
1526 keywords = {objects, concurrency},
1527 contributer = {pabuhr@plg},
1528 author = {Dennis Kafura},
1529 title = {Concurrent Object-Oriented Real-Time Systems Research},
1530 institution = {Department of Computer Science, Virginia Polytechnic},
1531 number = {TR 88-47},
1532 year = 1988
1533}
1534
1535@article{Buhr92a,
1536 keywords = {C++, concurrency, light-weight process, shared memory},
1537 contributer = {pabuhr@plg},
1538 author = {P. A. Buhr and Glen Ditchfield and R. A. Stroobosscher and B. M. Younger and C. R. Zarnke},
1539 title = {$\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}: Concurrency in the Object-Oriented Language {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
1540 journal = spe,
1541 volume = 22,
1542 number = 2,
1543 month = feb,
1544 year = 1992,
1545 pages = {137-172},
1546}
1547
1548@manual{uC++,
1549 keywords = {C++, concurrency, light-weight process, shared memory},
1550 contributer = {pabuhr@plg},
1551 key = {uC++},
1552 author = {Peter A. Buhr},
1553 title = {$\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Annotated Reference Manual, Version 7.0.0},
1554 organization= {University of Waterloo},
1555 month = sep,
1556 year = 2018,
1557 note = {\href{https://plg.uwaterloo.ca/~usystem/pub/uSystem/uC++.pdf}{https://\-plg.uwaterloo.ca/\-$\sim$usystem/\-pub/\-uSystem/uC++.pdf}},
1558}
1559
1560@book{Burns93,
1561 keywords = {concurrency, Pascal},
1562 contributer = {pabuhr@plg},
1563 author = {Alan Burns and Geoff Davies},
1564 title = {Concurrent Programming},
1565 publisher = {Addison Wesley Longman},
1566 year = 1993,
1567}
1568
1569@article{Hansen73a,
1570 keywords = {monitors},
1571 contributer = {pabuhr@plg},
1572 author = {Per {Brinch Hansen}},
1573 title = {Concurrent Programming Concepts},
1574 journal = spe,
1575 month = dec,
1576 year = 1973,
1577 volume = 5,
1578 number = 4,
1579 pages = {223-245},
1580}
1581
1582@book{Lea97,
1583 keywords = {concurrency, Java},
1584 contributer = {pabuhr@plg},
1585 author = {Doug Lea},
1586 title = {Concurrent Programming in {J}ava: Design Principles and Patterns},
1587 publisher = {Addison-Wesley},
1588 address = {Boston},
1589 year = 1997,
1590 edition = {1st},
1591}
1592
1593@book{Hartley98,
1594 keywords = {concurrency, Java},
1595 contributer = {pabuhr@plg},
1596 author = {Stephen J. Hartley},
1597 title = {Concurrent Programming: The {J}ava Programming Language},
1598 publisher = {Oxford University Press},
1599 year = 1998,
1600 edition = {1st},
1601}
1602
1603@book{Lea00,
1604 keywords = {concurrency, Java},
1605 contributer = {pabuhr@plg},
1606 author = {Doug Lea},
1607 title = {Concurrent Programming in {J}ava: Design Principles and Patterns},
1608 publisher = {Addison-Wesley},
1609 address = {Boston},
1610 year = 2000,
1611 edition = {2nd},
1612}
1613
1614@book{ConcurrentC,
1615 keywords = {concurrency, C},
1616 contributer = {pabuhr@plg},
1617 author = {N. H. Gehani and W. D. Roome},
1618 title = {The {Concurrent C} Programming Language},
1619 publisher = {Silicon Press},
1620 address = {Summit},
1621 year = 1989,
1622}
1623
1624@mastersthesis{Sun15,
1625 author = {Sun, Xianda},
1626 title = {Concurrent High-performance Persistent Hash Table In {J}ava},
1627 school = {School of Computer Sc., University of Waterloo},
1628 year = 2015,
1629 optaddress = {Waterloo, Ontario, Canada, N2L 3G1},
1630 note = {\href{https://uwspace.uwaterloo.ca/handle/10012/10013}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-10013}},
1631}
1632
1633@book{Andrews91:book,
1634 keywords = {concurrency},
1635 contributer = {pabuhr@plg},
1636 author = {Gregory R. Andrews},
1637 title = {Concurrent Programming: Principles and Practice},
1638 publisher = {Benjamin/Cummings Publish\-ing},
1639 address = {Redwood City},
1640 year = 1991,
1641}
1642
1643@article{Buhr05a,
1644 keywords = {concurrency, myths},
1645 contributer = {pabuhr@plg},
1646 author = {Peter A. Buhr and Ashif S. Harji},
1647 title = {Concurrent Urban Legends},
1648 journal = ccpe,
1649 month = aug,
1650 year = 2005,
1651 volume = 17,
1652 number = 9,
1653 pages = {1133-1172},
1654}
1655
1656@mastersthesis{Delisle18,
1657 keywords = {concurrency, Cforall},
1658 contributer = {pabuhr@plg},
1659 author = {Thierry Delisle},
1660 title = {Concurrency in \textsf{C}$\mathbf{\forall}$},
1661 school = {School of Computer Science, University of Waterloo},
1662 year = 2018,
1663 optaddress = {Waterloo, Ontario, Canada, N2L 3G1},
1664 note = {\href{https://uwspace.uwaterloo.ca/handle/10012/12888}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-12888}},
1665}
1666
1667@article{Delisle18b,
1668 keywords = {concurrency, Cforall},
1669 contributer = {pabuhr@plg},
1670 author = {Thierry Delisle and Peter A. Buhr},
1671 title = {Concurrency in \textsf{C}$\mathbf{\forall}$},
1672 year = 2018,
1673 journal = spe,
1674 pages = {1-32},
1675 note = {submitted},
1676}
1677
1678@techreport{Buhr90,
1679 keywords = {objects, concurrency},
1680 contributer = {gjditchfield@plg},
1681 author = {P. A. Buhr and G. J. Ditchfield and B. M. Younger and C. R. Zarnke},
1682 title = {Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
1683 institution = {Department of Computer Science, University of Waterloo},
1684 address = {Waterloo, Ontario, Canada, N2L 3G1},
1685 number = {CS-90-18},
1686 month = may,
1687 year = 1990
1688}
1689
1690@book{Burns98,
1691 keywords = {concurrency, Ada},
1692 author = {Alan Burns and Andy Wellings},
1693 title = {Concurrency in {Ada}},
1694 publisher = {Cambridge University Press},
1695 year = 1998,
1696 edition = {2nd},
1697}
1698
1699@book{Bernstein93,
1700 keywords = {concurrency},
1701 author = {Arthur J. Bernstein and Philip M. Lewis},
1702 title = {Concurrency in Programming and Database Systems},
1703 publisher = {Jones and Bartlett},
1704 year = 1993,
1705}
1706
1707@inproceedings{Pitman01,
1708 keywords = {LISP, exception handling},
1709 contributer = {pabuhr@plg},
1710 author = {Kent M. Pitman},
1711 title = {Condition Handling in the Lisp Language Family},
1712 booktitle = {Exception Handling},
1713 publisher = {Springer},
1714 volume = 2022,
1715 series = {LNCS},
1716 year = 2001,
1717 pages = {39-59}
1718}
1719
1720@inbook{enhancement,
1721 keywords = {bounded polymorphism, Comandos},
1722 contributer = {gjditchfield@plg},
1723 author = {Chris Horn},
1724 title = {Conformace, Genericity, Inheritance and Enhancement},
1725 pages = {223-233},
1726 publisher = {Springer},
1727 year = 1987,
1728 volume = 276,
1729 series = "Lecture Notes in Computer Science",
1730 note = "ECOOP '87 European Conference on Object-Oriented Programming",
1731 summary = {
1732 Considers effect of conformance on Meyer's conclusions in
1733 \cite{polymorphism}.
1734
1735 Implementing a swap function as a member of a type {\cd Swappable}
1736 with {\cd in out Top} parameters doesn't work, because conformance
1737 requires arguments to be of type {\cd Top}.
1738
1739 An enhancive type has a type parameter, bounded by some type, and
1740 defines members. Types conforming to the bound can be passed as
1741 arguments to create types with the extra members. The signature of
1742 the enhanced type is based on the signature of the argument, not the
1743 bound, as if enhancive types were macros. Hence enhanced types do not
1744 necessarily conform to each other. Types conforming to the bound
1745 conform to enhanced types, which allows new functions to be applied
1746 to old types.
1747
1748 Enhancive types are not generic types. If the argument is omitted,
1749 the bound is used as a default. Assignment of enhanced types to
1750 default-enhanced types is allowed (enhanced types conform to the
1751 default-enhanced type). This is (probably) statically type-safe,
1752 because arguments must conform to the bound, and the new members
1753 only use operations defined for the bound.
1754
1755 With facilities for member renaming and deletion, enhancive types
1756 provide the equivalent of constrained generic types.
1757 }
1758}
1759
1760@misc{Taylor10,
1761 keywords = {const, poisoning},
1762 contributer = {pabuhr@plg},
1763 author = {Ian Lance Taylor},
1764 title = {const},
1765 month = oct,
1766 year = 2010,
1767 howpublished= {\href{https://www.airs.com/blog/archives/428}
1768 {https://www.airs.com/\-blog/\-archives/\-428}},
1769 optnote = {Accessed: 2018-05},
1770}
1771
1772@phdthesis{Ditchfield92,
1773 keywords = {C, parametric polymorphism, overloading},
1774 contributer = {pabuhr@plg},
1775 author = {Glen Jeffrey Ditchfield},
1776 title = {Contextual Polymorphism},
1777 school = {Department of Computer Science, University of Waterloo},
1778 year = 1992,
1779 address = {Waterloo, Ontario, Canada, N2L 3G1},
1780 note = {\href{http://plg.uwaterloo.ca/theses/DitchfieldThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-DitchfieldThesis.pdf}}
1781}
1782
1783@inproceedings{frameworks:HHG90,
1784 keywords = {formal},
1785 contributer = {pabuhr@plg},
1786 author = {Richard Helm and Ian M. Holland and Dipayan Gangopadhyay},
1787 title = {Contracts: Specifying Behavioural Compositions in Cbject-Oriented Systems},
1788 booktitle = {Proceedings of ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications},
1789 year = 1990,
1790 pages = {169-180},
1791}
1792
1793@article{Wand80,
1794 keywords = {concurrency, continuation},
1795 contributer = {pabuhr@plg},
1796 author = {Mitchell Wand},
1797 title = {Continuation-Based Multiprocessing},
1798 publisher = {The Lisp Conference},
1799 journal = {Conference Record of the 1980 Lisp Conference},
1800 pages = {19-28},
1801 year = 1980,
1802}
1803
1804@article{Hieb90,
1805 keywords = {continuations, concurrency},
1806 contributer = {pabuhr@plg},
1807 author = {Robert Hieb and R. Kent Dybvig},
1808 title = {Continuations and Concurrency},
1809 journal = sigplan,
1810 volume = 25,
1811 number = 3,
1812 month = mar,
1813 year = 1990,
1814 pages = {128-136},
1815 note = {Proceedings of the Second ACM SIGPLAN Symposium on Principles \& Practise of Parallel Programming,
1816 March. 14--16, 1990, Seattle, Washington, U.S.A},
1817}
1818
1819@inproceedings{Haynes84,
1820 keywords = {continuations, coroutines, Scheme},
1821 contributer = {pabuhr@plg},
1822 author = {Christopher T. Haynes and Daniel P. Friedman and Mitchell Wand},
1823 title = {Continuations and Coroutines},
1824 booktitle = {Conference Record of the 1984 {ACM} Symposium on Lisp and Functional Programming},
1825 organization= {Association for Computing Machinery},
1826 month = aug,
1827 year = 1984,
1828 pages = {293-298},
1829 abstract = {
1830 The power of first class continuations is demonstrated by implementing
1831 a variety of coroutine mechanisms using only continuations and
1832 functional abstraction. The importance of general abstraction
1833 mechanisms such as continuations is discussed.},
1834}
1835
1836@inproceedings{Zahn74,
1837 keywords = {goto, structured programming},
1838 contributer = {pabuhr@plg},
1839 author = {C. T. Zahn},
1840 title = {Control Statement for Natural Top-down Structured Programming},
1841 booktitle = {Symposium on Programming Languages},
1842 address = {Paris, France},
1843 year = 1974,
1844}
1845
1846@unpublished{Ditchfield:conversions,
1847 contributer = {a3moss@uwaterloo.ca},
1848 author = {Glen Ditchfield},
1849 title = {Conversions for \textsf{C}$\mathbf{\forall}$},
1850 note = {\href{http://plg.uwaterloo.ca/~cforall/Conversions/index.html}{http://\-plg.uwaterloo.ca/\-$\sim$cforall/\-Conversions/\-index.html}},
1851 month = {Nov},
1852 year = {2002},
1853 urldate = {28 July 2016},
1854}
1855
1856@techreport{Dijkstra65,
1857 keywords = {concurrency, Dekker's algorithm, semaphores},
1858 contributer = {pabuhr@plg},
1859 author = {Edsger W. Dijkstra},
1860 title = {Cooperating Sequential Processes},
1861 institution = {Technological University},
1862 address = {Eindhoven, Netherlands},
1863 year = 1965,
1864 note = {Reprinted in \cite{Genuys68} pp. 43--112.}
1865}
1866
1867@book{Marlin80,
1868 keywords = {coroutines},
1869 contributer = {pabuhr@plg},
1870 author = {Christopher D. Marlin},
1871 title = {Coroutines: A Programming Methodology, a Language Design and an Implementation},
1872 publisher = {Springer},
1873 address = {New York},
1874 year = 1980,
1875 volume = 95,
1876 series = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis}
1877}
1878
1879@article{Wang71,
1880 keywords = {coroutines},
1881 contributer = {pabuhr@plg},
1882 author = {Arne Wang and Ole-Johan Dahl},
1883 title = {Coroutine Sequencing in a Block Structured Environment},
1884 journal = "BIT",
1885 volume = 11,
1886 month = nov,
1887 year = 1971,
1888 pages = {425-449},
1889}
1890
1891@article{Castagna95,
1892 keywords = {type-systems, covariance, contravariance},
1893 contributer = {pabuhr@plg},
1894 author = {Giuseppe Castagna},
1895 title = {Covariance and Contravariance : Conflict without a Cause},
1896 journal = toplas,
1897 volume = 17,
1898 number = 3,
1899 month = may,
1900 year = 1995,
1901 pages = {341-447},
1902}
1903
1904@book{Fischer88,
1905 keywords = {compiler construction},
1906 author = {Charles N. Fischer and Richard J. {LeBlanc, Jr.}},
1907 title = {Crafting a Compiler},
1908 publisher = {Benjamin Cummings},
1909 year = 1991,
1910}
1911
1912@misc{CS343,
1913 keywords = {uC++ teaching},
1914 contributer = {pabuhr@plg},
1915 key = {Peter Buhr},
1916 title = {CS343},
1917 year = 2018,
1918 howpublished= {\href{https://www.student.cs.uwaterloo.ca/~cs343}{https://\-www.student.cs.uwaterloo.ca/\-$\sim$cs343}},
1919}
1920
1921@inproceedings{Jim02,
1922 keywords = {C dialect, parametric polymorphic, safe memory allocation},
1923 contributer = {pabuhr@plg},
1924 author = {Trevor Jim and Greg Morrisett and Dan Grossman and Michael Hicks and James Cheney and and Yanling Wang},
1925 title = {{C}yclone: A Safe Dialect of {C}},
1926 booktitle = {USENIX Annual Technical Conference},
1927 organization= {USENIX Association},
1928 address = {Monterey, California, U.S.A.},
1929 month = jun,
1930 year = 2002,
1931 pages = {275-288},
1932}
1933
1934% D
1935
1936@manual{D,
1937 keywords = {D programming language},
1938 contributer = {pabuhr@plg},
1939 title = {{D} Programming Language},
1940 author = {Walter Bright and Andrei Alexandrescu},
1941 organization= {Digital Mars},
1942 year = 2016,
1943 note = {\href{http://dlang.org/spec/spec.html}{http://\-dlang.org/\-spec/\-spec.html}},
1944}
1945
1946@techreport{Cui90,
1947 keywords = {exception handling},
1948 contributer = {pabuhr@plg},
1949 author = {Qian Cui},
1950 title = {Data-Oriented Exception Handling},
1951 institution = {Department of Computer Science, University of Maryland},
1952 address = {College Park, Maryland, U.S.A., 20742},
1953 number = {CS-TR-2384},
1954 month = jan,
1955 year = 1990,
1956}
1957
1958@article{Cui92,
1959 contributer = {rkrische@plg},
1960 author = {Qian Cui and John Gannon},
1961 title = {Data-oriented Exception Handling},
1962 journal = {IEEE Transactions on Software Engineering},
1963 month = may,
1964 year = 1992,
1965 volume = 18,
1966 number = 5,
1967 pages = {393-401},
1968}
1969
1970@manual{SIMULA87,
1971 keywords = {Simula standard},
1972 contributer = {gjditchfield@plg},
1973 title = {Databehandling -- Programspr{\aa}k -- {SIMULA}},
1974 organization= {Standardiseringskommissionen i Sverige},
1975 note = {Svensk Standard SS 63 61 14},
1976 year = 1987,
1977 abstract = {Standard for the programming language SIMULA. Written in English.}
1978}
1979
1980@article{Galil91,
1981 keywords = {union-find},
1982 contributer = {a3moss@uwaterloo.ca},
1983 title = {Data structures and algorithms for disjoint set union problems},
1984 author = {Galil, Zvi and Italiano, Giuseppe F},
1985 journal = {ACM Computing Surveys (CSUR)},
1986 volume = 23,
1987 number = 3,
1988 pages = {319--344},
1989 year = 1991,
1990 publisher = {ACM},
1991}
1992
1993@article{Liskov75,
1994 keywords = {abstract data types, encapsulation, verification},
1995 contributer = {gjditchfield@plg},
1996 author = {Barbara H. Liskov},
1997 title = {Data Types and Program Correctness},
1998 journal = sigplan,
1999 year = 1975,
2000 month = jul,
2001 volume = 10,
2002 number = 7,
2003 pages = {16-17},
2004 summary = {
2005 Type definitions should contain the implementation of the type and
2006 its operations. The grouping makes programs simpler and more
2007 understandable. Encapsulating the definition aids verification and
2008 forces a precise specification of the interface.
2009 }
2010}
2011
2012@article{dtav,
2013 keywords = {Russell, types},
2014 contributer = {gjditchfield@plg},
2015 author = {James Donahue and Alan Demers},
2016 title = {Data Types are Values},
2017 journal = toplas,
2018 month = jul,
2019 year = 1985,
2020 volume = 7,
2021 number = 3,
2022 pages = {426-445},
2023 comment = {
2024 Data types are sets of operations providing interpretations of
2025 values from a meaningless, typeless universal value space. Types
2026 and operations are also contained in this value space.
2027
2028 Functions returning types replace generic types.
2029
2030 Polymorphic functions have type parameters. Evaluation is not
2031 macro expansion:
2032 \begin{verbatim}
2033 R == func [n:val integer; T:type[]] val integer
2034 {if n > 0 => r[n-1, Array[1,10,T]] # n <= 0 => 17 fi}
2035 \end{verbatim}
2036 }
2037}
2038
2039@article{Holt72,
2040 keywords = {concurrency, deadlock},
2041 contributer = {pabuhr@plg},
2042 author = {Richard C. Holt},
2043 title = {Some Deadlock Properties of Computer Systems},
2044 journal = acmcs,
2045 volume = 4,
2046 number = 3,
2047 month = sep,
2048 year = 1972,
2049 pages = {179-196},
2050}
2051
2052@misc{debug-malloc,
2053 keywords = {memory allocation debugger},
2054 contributer = {gjditchfield@plg},
2055 author = {Conor P. Cahill},
2056 title = {debug\_malloc},
2057 howpublished= {comp.sources.unix, volume 22, issue 112},
2058 abstract = {
2059 This package is a collection of routines which are a drop-in
2060 replacement for the malloc(3), memory(3), string(3), and bstring(3)
2061 library functions.
2062 }
2063}
2064
2065@book{sml,
2066 keywords = {},
2067 contributer = {pabuhr@plg},
2068 author = {Robin Milner and Mads Tofte and Robert Harper},
2069 title = {The Definition of Standard {ML}},
2070 publisher = {MIT Press},
2071 address = {Cambridge},
2072 year = 1990
2073}
2074
2075@techreport{sml:old,
2076 keywords = {},
2077 contributer = {gjditchfield@plg},
2078 author = {Robert Harper and Robin Milner and Mads Tofte},
2079 title = {The Definition of Standard {ML}, Version 2},
2080 institution = {Department of Computer Science, University of Edinburgh},
2081 year = 1988,
2082 address = {The King's Buildings, Edinburgh EH9 3JZ},
2083 type = {LFCS Report Series}, month = aug, number = {ECS-LFCS-88-62}
2084}
2085
2086@inproceedings{Reynolds72,
2087 keywords = {continuation},
2088 contributer = {pabuhr@plg},
2089 author = {John Reynolds},
2090 title = {Definitional Interpreters for Higher Order Programming Languages},
2091 booktitle = {ACM Conference Proceedings},
2092 organization= {ACM},
2093 year = 1972,
2094 pages = {717-740}
2095}
2096
2097@article{Buhr16,
2098 keywords = {Dekker's algorithm, software solution, mutual exclusion, performance experiment},
2099 author = {Peter A. Buhr and David Dice and Wim H. Hesselink},
2100 title = {Dekker's Mutual Exclusion Algorithm Made RW-Safe},
2101 journal = ccpe,
2102 volume = 28,
2103 number = 1,
2104 pages = {144-165},
2105 month = jan,
2106 year = 2016,
2107}
2108
2109@misc{steelman,
2110 keywords = {Ada},
2111 contributer = {gjditchfied@plg},
2112 author = {High Order Language Working Group},
2113 title = {Department of Defense Requirements for High Order Computer Programming Languages},
2114 month = jun, year = 1978,
2115 note = {Reprinted in \cite{pldesign}.}
2116}
2117
2118@incollection{Tsay98,
2119 keywords = {local spins, mutual exclusion, read/write atomicity, refinement, scalability},
2120 author = {Yih-Kuen Tsay},
2121 title = {Deriving a scalable algorithm for mutual exclusion},
2122 booktitle = {Distributed Computing},
2123 editor = {Shay Kutten},
2124 volume = {1499},
2125 series = {LNCS},
2126 publisher = {Springer},
2127 address = {Berlin Heidelberg},
2128 year = {1998},
2129 pages = {393-407},
2130}
2131
2132@book{Aho74,
2133 keywords = {algorithms, textbook, union-find},
2134 contributer = {a3moss@uwaterloo.ca},
2135 title = {The Design and Analysis of Computer Algorithms},
2136 author = {Aho, Alfred V and Hopcroft, John E and Ullman, Jeffrey D},
2137 year = {1974},
2138 publisher = {Addison-Wesley},
2139 address = {Reading, MA, USA}
2140}
2141
2142@article{Conway63,
2143 keywords = {coroutine, original},
2144 contributer = {pabuhr@plg},
2145 author = {Melvin E. Conway},
2146 title = {Design of a Separable Transition-Diagram Compiler},
2147 journal = cacm,
2148 month = jul,
2149 year = 1963,
2150 volume = 6,
2151 number = 7,
2152 pages = {396-408},
2153}
2154
2155@book{Stroustrup94,
2156 keywords = {C++},
2157 contributor = {wyrmok@plg},
2158 author = {Bjarne Stroustrup},
2159 title = {The Design and Evolution of {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
2160 publisher = {Addison-Wesley},
2161 address = {Boston},
2162 year = 1994
2163}
2164
2165@inproceedings{st:concurrent,
2166 keywords = {concurrency, Smalltalk, futures},
2167 contributer = {gjditchfield@plg},
2168 author = {Yasuhiko Yokote and Mario Tokoro},
2169 title = {The Design and Implementation of {ConcurrentSmalltalk}},
2170 crossref = "OOPSLA86",
2171 pages = {331-340},
2172 comment = {
2173 Objects are ordinary Smalltalk objects or ``atomic'' objects, which
2174 process messages one at a time in FIFO order. Asynchronous method
2175 calls are made by appending ``\&'' at the call site. The sender does
2176 not wait for a reply. If the method returns a value, it
2177 (immediately?) returns a CBox object, which is like a future. The
2178 sender can send the ``receive'' message to the CBox, which blocks
2179 until the CBox contains a value.
2180
2181 A method can execute the ``\verb|^|'' statement to return an object
2182 and terminate, or it can execute ``\verb|^^|'' to return an object
2183 and continue execution. If ``\verb|^^foo|'' is executed after
2184 ``\verb|^^bar|'', foo is discarded, since bar has already been
2185 returned.
2186
2187 The article does not say whether asynchronous messages can be sent
2188 to ordinary objects, or whether ordinary messages can be sent to
2189 atomic objects.
2190 }
2191}
2192
2193@inproceedings{Ichbiah83,
2194 keywords = {Ada, packages, generics},
2195 contributer = {gjditchfield@plg},
2196 author = {Jean D. Ichbiah},
2197 title = {On the Design of {Ada}},
2198 booktitle = {Information Processing 83},
2199 year = 1983,
2200 month = sep, pages = {1-10},
2201 editor = {R. E. A. Mason},
2202 organization= {IFIP},
2203 publisher = {North-Holland},
2204 summary = {
2205 Packages group related declarations or subprograms, and encapsulate
2206 data types. Separate interfaces and bodies promotes information
2207 hiding by removing the need to scan the body, allows the body to be
2208 confidential, and provides a better specification of the contract
2209 between client and implementor. Generics are an efficient way to
2210 factor out parts of similar definitions.
2211 }
2212}
2213
2214@book{Motet96,
2215 keywords = {Ada, exception handling},
2216 contributer = {wyrmok@plg},
2217 author = {G. Motet and A. Mapinard and J. C. Geoffroy},
2218 title = {Design of Dependable {A}da Software},
2219 publisher = {Prentice-Hall},
2220 address = {Englewood Cliffs},
2221 year = 1996,
2222}
2223
2224@article{Richardson93,
2225 keywords = {C++, persistence, database},
2226 contributer = {pabuhr@plg},
2227 author = {Joel E. Richardson and Michael J. Carey and Daniel T. Schuh},
2228 title = {The Design of the {E} Programming Language},
2229 journal = toplas,
2230 month = jul,
2231 year = 1993,
2232 volume = 15,
2233 number = 3,
2234 pages = {494-534},
2235}
2236
2237@article{Hansen81b,
2238 keywords = {concurrency, monitor, critical region},
2239 contributer = {pabuhr@plg},
2240 author = {Per {Brinch Hansen}},
2241 title = {The Design of {E}dison},
2242 journal = spe,
2243 volume = 11,
2244 number = 4,
2245 month = apr,
2246 year = 1981,
2247 pages = {363-396},
2248}
2249
2250@book{Gamma95,
2251 keywords = {design patterns},
2252 author = {Erich Gamma and Richard Helm and Ralph Johnson and John Vlissides},
2253 title = {Design Patterns: Elements of Reusable Object-Oriented Software},
2254 publisher = {Addison-Wesley},
2255 address = {Boston},
2256 year = 1995,
2257 series = {Professional Computing Series},
2258}
2259
2260@inproceedings{Wirth74,
2261 keywords = {},
2262 contributer = {gjditchfield@plg},
2263 author = {Niklaus Wirth},
2264 title = {On the Design of Programming Languages},
2265 booktitle = {Information Processing 74},
2266 year = 1974,
2267 pages = {386-393},
2268 publisher = {North Holland Publishing Company},
2269 note = {Reprinted in \cite{pldesign}.}
2270}
2271
2272@techreport{forceone,
2273 keywords = {Parametric polymorphism, ForceOne},
2274 contributer = {gjditchfield@plg},
2275 author = {Andrew K. Wright},
2276 title = {Design of the Programming Language {ForceOne}},
2277 institution = {University of Waterloo},
2278 month = feb, year = 1987,
2279 number = {CS-87-10}
2280}
2281
2282@techreport{x-2,
2283 keywords = {object based},
2284 contributer = {gjditchfield@plg},
2285 author = {David W. Sandberg},
2286 title = {The Design of the Programming Language {X-2}},
2287 institution = {Oregon State University},
2288 year = 1985,
2289 address = {Department of Computer Science, Corvallis, Oregon, 97331},
2290 number = {85-60-1}
2291}
2292
2293@article{design,
2294 keywords = {Smalltalk, designing classes},
2295 contributer = {gjditchfield@plg},
2296 author = {Ralph E. Johnson and Brian Foote},
2297 title = {Designing Reusable Classes},
2298 journal = joop,
2299 year = 1988,
2300 volume = 1, number = 2, pages = {22-35},
2301 comment = {
2302 Abstract classes represent standard protocols. ``It is better to
2303 inherit from an abstract class than from a concrete class''.
2304 Frameworks are collections of related abstract classes. Successful
2305 abstractions are discovered, not designed.
2306
2307 Protocols: ``If an operation X is implemented by performing a
2308 similar operation on the components of the receiver, then that
2309 operation should also be named X''. Eliminate case analysis by
2310 creating classes with the same operations. Create classes to
2311 represent bundles of parameters. Shrink methods larger than 30
2312 lines.
2313
2314 Hierarchies should be deep and narrow. Subclasses should be
2315 specializations.
2316
2317 Frameworks: split large classes. Factor implementation differences
2318 into subcomponents. Separate methods that do not share instance
2319 variables into components that reflect the different views of the
2320 object. Send messages to components, not self. Reduce implicit
2321 parameter passing through instance variables.
2322 }
2323}
2324
2325@article{dim:c++,
2326 keywords = {Dimensional Analysis, C++},
2327 contributer = {gjditchfield@plg},
2328 author = {Robert F. Cmelic and Narain Gehani},
2329 title = {Dimensional Analysis with {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
2330 journal = {IEEE Software},
2331 month = may, year = 1988,
2332 volume = 5, number = 3, pages = {21-29}
2333}
2334
2335@article{Wegner87,
2336 contributer = {pabuhr@plg},
2337 author = {Peter Wegner},
2338 title = {Dimensions of Object--Based Language Design},
2339 journal = sigplan,
2340 volume = 22,
2341 number = 12,
2342 month = dec,
2343 year = 1987,
2344 pages = {168-182},
2345 note = {Proceedings of the OOPSLA'87 Conference, Oct. 4--8, 1987, Orlando, Florida},
2346}
2347
2348@book{Dijkstra76,
2349 keywords = {concurrent assignment},
2350 author = {E. W. Dijkstra},
2351 title = {A Discipline of Programming},
2352 publisher = {Prentice-Hall},
2353 address = {Englewood Cliffs},
2354 year = 1976,
2355}
2356
2357@book{Lynch96,
2358 keywords = {distributed algorithms},
2359 author = {Nancy A. Lynch},
2360 title = {Distributed Algorithms},
2361 publisher = {Morgan Kaufmann},
2362 year = 1996,
2363}
2364
2365@book{Tanenbaum02,
2366 keywords = {distributed programming},
2367 author = {Andrew S. Tanenbaum and Maarten van Steen},
2368 title = {Distributed Systems: Principles and Paradigms},
2369 publisher = {Prentice-Hall},
2370 address = {Englewood Cliffs},
2371 year = 2002,
2372}
2373
2374@inproceedings{Cargill90,
2375 keywords = {concurrency},
2376 contributer = {pabuhr@plg},
2377 author = {Tom A. Cargill},
2378 title = {Does {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Really Need Multiple Inheritance?},
2379 booktitle = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference Proceedings},
2380 organization= {USENIX Association},
2381 address = {San Francisco, California, U.S.A.},
2382 month = apr,
2383 year = 1990,
2384 pages = {315-323}
2385}
2386
2387@misc{Dotty-github,
2388 keywords = {dotty,scala},
2389 contributer = {a3moss@uwaterloo.ca},
2390 author = {Martin Odersky},
2391 title = {Dotty},
2392 howpublished = {\href{https://github.com/lampepfl/dotty}{https://\-github.com/\-lampepfl/\-dotty}},
2393 note = {Acessed: 2019-02-22}
2394}
2395
2396@unpublished{Duff83,
2397 keywords = {C, switch statement, control flow},
2398 contributer = {pabuhr@plg},
2399 author = {Tom Duff},
2400 title = {Duff's Device},
2401 month = nov,
2402 year = 1983,
2403 note = {\href{http://www.lysator.liu.se/c/duffs-device.html}{http://\-www.lysator.liu.se/\-c/\-duffs-device.html}}
2404}
2405
2406@manual{dwarf2,
2407 keywords = {Debugging DWARF2 specification},
2408 contributer = {rkrische@plg},
2409 title = {DWARF Debugging Information Format},
2410 organization= {Unix International Programming Languages SIG},
2411 publisher = {Unix International},
2412 address = {Waterview Corporate Center, 20 Waterview Boulevard, Parsippany, NJ 07054},
2413 year = {1993}
2414}
2415
2416@article{classicada,
2417 keywords = {Classic Ada},
2418 contributer = {gjditchfield@plg},
2419 author = {Cameron M. Donaldson},
2420 title = {Dynamic Binding and Inheritance in an Object-Oriented {Ada} Design},
2421 journal = {Journal of Pascal, {Ada} \& Modula-2},
2422 year = 1990,
2423 month = {jul/aug}, volume = 9, number = 4, pages = {12-19},
2424 comment = {
2425 Classes are like packages: they can contain subprograms, types,
2426 variables, generic instantiations, and exceptions. They can also
2427 contain class methods, instance methods, and instance variables,
2428 and define creation and initialization subprograms or methods for
2429 instances. Single inheritance provides inheritance of
2430 implementations. Dynamic binding is done with a {\em send}
2431 statement that invokes a class or instance method. A preprocessor
2432 converts Classic Ada to normal Ada.
2433 }
2434}
2435
2436@article{Costanza03,
2437 keywords = {dynamic call},
2438 contributer = {pabuhr@plg},
2439 author = {Pascal Costanza},
2440 title = {Dynamic Scoped Functions as the Essence of {AOP}},
2441 journal = sigplan,
2442 volume = 38,
2443 number = 8,
2444 month = aug,
2445 year = 2003,
2446 pages = {29-35},
2447}
2448
2449% E
2450
2451@inproceedings{Wegbreit71,
2452 keywords = {polymorphism},
2453 contributer = {pabuhr@plg},
2454 author = {B. Wegbreit},
2455 title = {The ECL Programming System},
2456 booktitle = {Proceedings of AFIPS 1971 FJCC},
2457 publisher = {AFIPS Press, vol. 39},
2458 address = {Montvale, New Jersey, U.S.A},
2459 year = 1971,
2460 pages = {253-262},
2461}
2462
2463@manual{JavaScript,
2464 keywords = {JavaScript},
2465 contributer = {pabuhr@plg},
2466 title = {ECMAScript 2015 Language Specification {JavaScript}},
2467 organization= {ECAM International},
2468 address = {Rue du Rhone 114, CH-1204 Geneva, Switzerland},
2469 month = jun,
2470 year = 2015,
2471 note = {6th Edition}
2472}
2473
2474@inproceedings{Peterson77,
2475 keywords = {N-thread software-solution mutual exclusion},
2476 contributer = {pabuhr@plg},
2477 author = {Gary L. Peterson and Michael J. Fischer},
2478 title = {Economical Solutions for the Critical Section Problem in a Distributed System (Extended Abstract)},
2479 booktitle = {Proceedings of the Ninth Annual ACM Symposium on Theory of Computing},
2480 series = {STOC '77},
2481 year = 1977,
2482 location = {Boulder, Colorado, USA},
2483 pages = {91--97},
2484 numpages = {7},
2485 publisher = {ACM},
2486 address = {New York, NY, USA},
2487}
2488
2489@article{Hansen81a,
2490 keywords = {concurrency, monitor, critical region},
2491 contributer = {pabuhr@plg},
2492 author = {Per {Brinch Hansen}},
2493 title = {{E}dison---a Multiprocessor Language},
2494 journal = spe,
2495 volume = 11,
2496 number = 4,
2497 month = apr,
2498 year = {1981},
2499 pages = {325-361},
2500}
2501
2502@article{Tarjan75,
2503 keywords = {union-find},
2504 contributer = {a3moss@uwaterloo.ca},
2505 author = {Tarjan, Robert Endre},
2506 title = {Efficiency of a Good But Not Linear Set Union Algorithm},
2507 journal = {J. ACM},
2508 issue_date = {April 1975},
2509 volume = {22},
2510 number = {2},
2511 month = apr,
2512 year = {1975},
2513 issn = {0004-5411},
2514 pages = {215--225},
2515 numpages = {11},
2516 url = {http://doi.acm.org/10.1145/321879.321884},
2517 doi = {10.1145/321879.321884},
2518 acmid = {321884},
2519 publisher = {ACM},
2520 address = {New York, NY, USA},
2521}
2522
2523@book{Eiffel,
2524 keywords = {Eiffel},
2525 contributer = {pabuhr@plg},
2526 author = {Bertrand Meyer},
2527 title = {Eiffel: The Language},
2528 publisher = {Prentice-Hall},
2529 address = {Englewood Cliffs},
2530 year = 1992,
2531 series = {Prentice-Hall Object-Oriented Series},
2532}
2533
2534@article{WS:overload,
2535 keywords = {compilation},
2536 contributer = {gjditchfield@plg},
2537 author = {Peter J. L. Wallis and Bernhard W. Silverman},
2538 title = {Efficient Implementation of the {Ada} Overloading Rules},
2539 journal = ipl,
2540 year = 1980,
2541 month = apr, volume = 10, number = 3, pages = {120-123},
2542 comment = {
2543 The ``two-pass'' algorithm. An upward pass over a parse tree
2544 calculates the set of possible result types of operators. The
2545 root must have exactly one type, produced in one way. A
2546 downward pass selects the version of the operator that produces the
2547 desired result type, thus setting the result types of subtrees.
2548 See \cite{D:overload}.
2549 }
2550}
2551
2552@techreport{Habermann80,
2553 keywords = {Ada, threads},
2554 contributer = {pabuhr@plg},
2555 author = {A. N. Habermann and I. R. Nassi},
2556 title = {Efficient Implementation of {Ada} Tasks},
2557 institution = {Carnegie-Mellon University},
2558 number = {CMU-CS-80-103},
2559 year = 1980
2560}
2561
2562@article{Emerald,
2563 keywords = {concurrency, polymorphism},
2564 contributer = {pabuhr@plg},
2565 author = {Rajendra K. Raj and Ewan Tempero and Henry M. Levy and Andrew P. Black and Norman C. Hutchinson and Eric Jul},
2566 title = {Emerald: A General-Purpose Programming Language},
2567 journal = spe,
2568 month = jan,
2569 year = 1991,
2570 volume = 21,
2571 number = 1,
2572 pages = {91-118}
2573}
2574
2575@InProceedings{chambers89a,
2576 keywords = {maps, delegation},
2577 author = "Craig Chambers and David Ungar and Elgin Lee",
2578 title = "An Efficient Implementation of {SELF}, a Dynamically-Typed
2579 Object-Oriented Language Based on Prototypes",
2580 crossref = "OOPSLA89",
2581 pages = {49-70}
2582}
2583
2584@article{oop:encapsulation,
2585 keywords = {Encapsulation, Inheritance, Subclasses, Multiple Inheritance},
2586 contributer = {gjditchfield@plg},
2587 author = {Alan Snyder},
2588 title = {Encapsulation and Inheritance in Object-Oriented Programming
2589 Languages},
2590 journal = sigplan,
2591 volume = {21}, number = {11},
2592 pages = {38-45},
2593 month = nov, year = 1986,
2594 comment = {
2595 Client, child interfaces should be distinct. Child interface
2596 shouldn't grant total access to parent.
2597
2598 Rules for redefining parent variable name in a child affect
2599 re-implementation of the parent.
2600
2601 Inheritance can be a promise to obey the semantics of the parent,
2602 or code reuse; the two may be contradictory. Unification
2603 exposes use of inheritance: a child can not be re-implemented
2604 without breaking code that assumes that it is a subclass of the
2605 original parent. If a class uses the names of its parents'
2606 ancestors, then inheritance is part of the parent's child
2607 interface.
2608
2609 Linearizing a multiple inheritance tree means that a class's use of
2610 calls on super need to be understood before it is used as a parent.
2611 Merging repeated ancestors exposes inheritance if an ancestor is
2612 re-implemented. Forbidding inheritance of distinct methods with
2613 the same name exposes implementation of ancestors. Proposed
2614 solution treats the set of ancestors as a tree.
2615 }
2616}
2617
2618@article{st:encapsulator,
2619 keywords = {encapsulator, Smalltalk, monitor},
2620 contributer = {gjditchfield@plg},
2621 author = {Geoffrey A. Pascoe},
2622 title = {Encapsulators: A New Software Paradigm in Smalltalk-80},
2623 journal = sigplan,
2624 volume = {21}, number = {11},
2625 pages = {341-346},
2626 month = nov, year = 1986,
2627 comment = {
2628 Encapsulators are objects that surround other objects.
2629 Pre- and post-actions are performed when messages are sent to the
2630 encapsulated object. They are created here by sending the message
2631 object: to an encapsulator class. Examples given are monitors,
2632 atomic objects, and Model (for model-view-controller interfaces).
2633
2634 Encapsulator classes use a family of selectors that the
2635 encapsulated object will not respond to. Messages for the
2636 encapsulated object are passed on by trapping them with the
2637 doesNotUnderstand method. Various fiddles were needed when setting
2638 up the class and metaclass hierarchies. A few selectors (==,
2639 class) always directly invoke primitive methods; they can't be
2640 used.
2641
2642 Can an encapsulated object be an encapsulator? Probably, but the
2643 middle object's selectors are inaccessible.
2644 }
2645}
2646
2647@manual{EPT,
2648 keywords = {concurrency, light-weight threads},
2649 contributer = {pabuhr@plg},
2650 key = {Encore},
2651 title = {Encore Parallel Thread Manual, 724-06210},
2652 organization= {Encore Computer Corporation},
2653 month = may,
2654 year = 1988,
2655}
2656
2657@manual{Erlang,
2658 keywords = {Erlang},
2659 contributer = {pabuhr@plg},
2660 key = {Erlang},
2661 title = {Erlang/OTP System Documentation 8.1},
2662 organization= {Erlang AB},
2663 month = sep,
2664 year = 2016,
2665 note = {\href{http://erlang.org/doc/pdf/otp-system-documentation.pdf}{http://\-erlang.org/\-doc/\-pdf/\-otp-system-documentation.pdf}},
2666}
2667
2668@inproceedings{MH88,
2669 keywords = {modules, general sums, general products},
2670 contributer = {gjditchfield@plg},
2671 author = {John C. Mitchell and Robert Harper},
2672 title = {The Essence of {ML}},
2673 booktitle = popl,
2674 year = 1988,
2675 pages = {28-46}
2676}
2677
2678@book{LeVerrand,
2679 keywords = {},
2680 author = {D. Le Verrand},
2681 title = {Evaluating {Ada}},
2682 publisher = {North Oxford Academic},
2683 year = 1985
2684}
2685
2686@inproceedings{Bloom79,
2687 keywords = {concurrency},
2688 contributer = {pabuhr@plg},
2689 author = {Toby Bloom},
2690 title = {Evaluating Synchronization Mechanisms},
2691 booktitle = {Proceedings of the Seventh Symposium on Operating Systems Principles},
2692 organization= {ACM SIGOPS},
2693 address = {Pacific Grove, California, U.S.A},
2694 month = dec,
2695 year = 1979,
2696 pages = {24-32}
2697}
2698
2699@inproceedings{XaaS,
2700 keywords = {Everything as a Service, Anything as a Service, Cloud computing, SOA},
2701 contributer = {pabuhr@plg},
2702 author = {Duan, Yucong and Fu, Guohua and Zhou, Nianjun and Sun, Xiaobing and Narendra, Nanjangud C. and Hu, Bo},
2703 title = {Everything As a Service (XaaS) on the Cloud: Origins, Current and Future Trends},
2704 booktitle = {Proceedings of the 2015 IEEE 8th International Conference on Cloud Computing},
2705 series = {CLOUD'15},
2706 year = {2015},
2707 pages = {621--628},
2708 publisher = {IEEE Computer Society},
2709 address = {Washington, DC, USA},
2710}
2711
2712@article{Buhr06a,
2713 keywords = {concurrency, C++, uC++},
2714 contributer = {pabuhr@plg},
2715 author = {Peter A. Buhr and Richard C. Bilson},
2716 title = {Examining $\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} :
2717 High-level Object-Oriented Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
2718 journal = {Dr. Dobb's Journal : Software Tools for the Professional Programmer},
2719 month = feb,
2720 year = 2006,
2721 volume = 31,
2722 number = 2,
2723 pages = {36-40},
2724}
2725
2726@article{ExceptionalC,
2727 keywords = {exception handling, asynchronous events},
2728 contributer = {wyrmok@plg},
2729 author = {N. H. Gehani},
2730 title = {Exceptional {C} or {C} with Exceptions},
2731 journal = spe,
2732 year = 1992,
2733 month = oct,
2734 volume = 22,
2735 number = 10,
2736 pages = {827-848},
2737 comment = {
2738 It is the most extensive exceptional handling mechanism thus
2739 far. Though it doesn't have Mesa resumption, it has
2740 asynchronous signal which is more general and abstract than
2741 the unix signal mechanism. It has an Eiffel like retry
2742 mechanism. Consequently, the scope of guarded region is not
2743 immediately terminated when an exception is raised. In fact,
2744 an exception handler creates a scope under its guarded
2745 region.
2746 }
2747}
2748
2749@incollection{Buhr02,
2750 keywords = {exception handling},
2751 contributer = {pabuhr@plg},
2752 author = {Peter A. Buhr and Ashif Harji and W. Y. Russell Mok},
2753 title = {Exception Handling},
2754 editor = {Marvin V. Zelkowitz},
2755 booktitle = {Advances in COMPUTERS},
2756 publisher = {Academic Press},
2757 address = {London},
2758 volume = 56,
2759 year = 2002,
2760 pages = {245-303},
2761}
2762
2763@article{Cargill94,
2764 keywords = {exception handling},
2765 contributer = {pabuhr@plg},
2766 author = {Tom Cargill},
2767 title = {Exception Handling: a False Sense of Security},
2768 journal = {{C}{\kern-.2em\hbox{\large\texttt{+\kern-.2em+}}} Report},
2769 year = 1994,
2770 month = nov,
2771 volume = 6,
2772 number = 9,
2773 note = {http://www.informit.com/\-content/\-images/\-020163371x/\-supplements/\-Exception\_\-Handling\_\-Article.\-html}
2774}
2775
2776@article{Knudsen84,
2777 keywords = {static exception handling, BETA, sequel},
2778 contributer = {wyrmok@plg},
2779 author = {J{\o}rgen Lindskov Knudsen},
2780 title = {Exception Handling --- A Static Approach},
2781 journal = spe,
2782 year = 1984,
2783 month = may,
2784 volume = 14,
2785 number = 5,
2786 pages = {429-449},
2787}
2788
2789@article{Drew94,
2790 keywords = {exceptions, exception handling},
2791 contributer = {wyrmok@plg},
2792 author = {Steven J. Drew and K. John Gough},
2793 title = {Exception Handling: Expecting the Unexpected},
2794 journal = {Computer Languages},
2795 year = 1994,
2796 month = may,
2797 volume = 20,
2798 number = 2,
2799 comment = {
2800 A recent and good survey on various exception handling mechanisms found
2801 in imperative programming languages. It classifies various mechanism in
2802 terms of flow control and scopes. Asynchronous exceptions and signals
2803 are also covered as Exceptional C is in the survey.
2804 }
2805}
2806
2807@article{Koenig90,
2808 keywords = {exception handling},
2809 contributer = {pabuhr@plg},
2810 author = {Andrew Koenig and Bjarne Stroustrup},
2811 title = {Exception Handling for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
2812 journal = joop,
2813 month = {July/August},
2814 year = 1990,
2815 volume = 3,
2816 number = 2,
2817 pages = {16-33},
2818}
2819
2820@article{Lee83,
2821 keywords = {exception handling, C},
2822 contributer = {pabuhr@plg},
2823 author = {P. A. Lee},
2824 title = {Exception Handling in {C} Programs},
2825 journal = spe,
2826 volume = 13,
2827 number = 5,
2828 month = may,
2829 year = 1983,
2830 pages = {389-405},
2831}
2832
2833@article{Liskov79,
2834 keywords = {exception handling},
2835 contributer = {pabuhr@plg},
2836 author = {Barbara H. Liskov and Alan Snyder},
2837 title = {Exception Handling in {CLU}},
2838 journal = ieeese,
2839 month = nov,
2840 year = 1979,
2841 volume = {SE-5},
2842 number = 6,
2843 pages = {546-558},
2844}
2845
2846@article{Szalas85,
2847 keywords = {concurrency, C++},
2848 contributer = {pabuhr@plg},
2849 author = {Andrzej Szalas and Danuta Szczepanska},
2850 title = {Exception Handling in Parallel Computations},
2851 journal = sigplan,
2852 publisher = {ACM},
2853 address = {New York, NY, USA},
2854 volume = 20,
2855 number = 10,
2856 month = oct,
2857 year = 1985,
2858 pages = {95-104},
2859}
2860
2861@article{MacLaren77,
2862 keywords = {exception handling, PL/I},
2863 contributer = {pabuhr@plg},
2864 author = {M. Donald MacLaren},
2865 title = {Exception Handling in {PL/I}},
2866 journal = sigplan,
2867 volume = 12,
2868 number = 3,
2869 month = mar,
2870 year = 1977,
2871 pages = {101-104},
2872 note = {Proceedings of an ACM Conference on Language Design for Reliable Software,
2873 March 28--30, 1977, Raleigh, North Carolina, U.S.A.},
2874}
2875
2876@article{Goodenough75,
2877 keywords = {exception handling},
2878 contributer = {pabuhr@plg},
2879 author = {J. B. Goodenough},
2880 title = {Exception Handling: Issues and a Proposed Notation},
2881 journal = cacm,
2882 month = dec,
2883 year = 1975,
2884 volume = 18,
2885 number = 12,
2886 pages = {683-696},
2887}
2888
2889@article{Lampson80,
2890 keywords = {monitors},
2891 contributer = {pabuhr@plg},
2892 author = {B. W. Lampson and D. D. Redell},
2893 title = {Experience with Processes and Monitors in Mesa},
2894 journal = cacm,
2895 volume = 23,
2896 number = 2,
2897 month = feb,
2898 year = 1980,
2899 pages = {105-117},
2900}
2901
2902@inproceedings{Shopiro87,
2903 keywords = {concurrency},
2904 contributer = {pabuhr@plg},
2905 author = {Jonathan E. Shopiro},
2906 title = {Extending the {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Task System for Real-Time Control},
2907 booktitle = {Proceedings and Additional Papers {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Workshop},
2908 organization= {USENIX Association},
2909 address = {Santa Fe, New Mexico, U.S.A},
2910 month = nov,
2911 year = 1987,
2912 pages = {77-94}
2913}
2914
2915@article{Modula-2+,
2916 keywords = {Modula-2, exceptions, garbage collection, concurrency},
2917 contributer = {gjditchfield@plg},
2918 author = {Paul Rovner},
2919 title = {Extending Modula-2 to Build Large, Integrated Systems},
2920 journal = {IEEE Software},
2921 month = nov,
2922 year = 1986,
2923 volume = 3,
2924 number = 6,
2925 pages = {46-57},
2926 comment = {
2927 Exceptions can have a parameter. Procedures can declare the
2928 exceptions they can propagate; others are converted to {\tt
2929 SYSTEM.Fail}. If they don't, all exceptions propagate.
2930 Block cleanup statements execute no matter how control leaves the
2931 block.
2932
2933 {\tt REF t} is a garbage-collected pointer. A {\tt REFANY} can be
2934 assigned any {\tt REF t}. Open array types can be used in
2935 parameter and {\tt REF} types. {\tt NEW} creates arrays of fixed,
2936 dynamically determined size.
2937
2938 The {\tt THREAD} module provides lightweight processes, semaphores,
2939 and conditions. A statement {\tt LOCK {\em semaphore} DO
2940 {\em statements} END} is built in.
2941
2942 {\tt SAFE} modules do run-time checks, and only import {\tt
2943 SAFE} modules. One implementation module can implement several
2944 definition modules. Opaque type implementations can be
2945 repeated in modules that import its definition, so implementation
2946 modules can collaborate. The linker checks that all
2947 implementations are the same.
2948 }
2949}
2950
2951@misc{GCCExtensions,
2952 contributer = {a3moss@uwaterloo.ca},
2953 key = {C Extensions},
2954 author = {{C Extensions}},
2955 title = {Extensions to the {C} Language Family},
2956 year = 2014,
2957 howpublished= {\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}},
2958 optnote = {Accessed: 2017-04-02},
2959}
2960
2961@inproceedings{BNRPascal,
2962 keywords = {concurrency, rendezvous},
2963 contributer = {pabuhr@plg},
2964 author = {R. Kamel and N. Gammage},
2965 title = {Experience with Rendezvous},
2966 booktitle = {Proceedings of the 1988 International Conference on Computer Languages},
2967 month = oct,
2968 year = 1988,
2969 pages = {143-149}
2970}
2971
2972@inproceedings{Patwary10,
2973 keywords = {union-find},
2974 contributer = {a3moss@uwaterloo.ca},
2975 author = {Patwary, Md. Mostofa Ali and Blair, Jean and Manne, Fredrik},
2976 editor = {Festa, Paola},
2977 title = {Experiments on Union-Find Algorithms for the Disjoint-Set Data Structure},
2978 booktitle = {Experimental Algorithms},
2979 year = 2010,
2980 publisher = {Springer Berlin Heidelberg},
2981 address = {Berlin, Heidelberg},
2982 pages = {411--423},
2983 isbn = {978-3-642-13193-6}
2984}
2985
2986% F
2987
2988@inproceedings{Knudsen01,
2989 keywords = {Beta, exception handling},
2990 contributer = {pabuhr@plg},
2991 author = {J{\o}rgen Lindskov Knudsen},
2992 title = {Fault Tolerance and Exception Handling in {BETA}},
2993 booktitle = {Exception Handling},
2994 publisher = {Springer},
2995 volume = 2022,
2996 series = {Lecture Notes in Computer Science},
2997 year = 2001,
2998 pages = {1-17}
2999}
3000
3001@article{Lamport87,
3002 keywords = {software solutions, mutual exclusion, fast},
3003 contributer = {pabuhr@plg},
3004 author = {Leslie Lamport},
3005 title = {A Fast Mutual Exclusion Algorithm},
3006 journal = tocs,
3007 volume = 5,
3008 number = 1,
3009 month = jan,
3010 year = {1987},
3011 pages = {1-11},
3012 publisher = {ACM},
3013 address = {New York, NY, USA},
3014}
3015
3016@article{Hesselink17,
3017 keywords = {concurrency, mutual exclusion, performance experiment, software solutions},
3018 title = {Fast mutual exclusion by the {T}riangle algorithm},
3019 author = {Wim H. Hesselink and Peter A. Buhr and David Dice},
3020 journal = ccpe,
3021 volume = 30,
3022 number = 4,
3023 year = 2018,
3024 month = feb,
3025 publisher = {John Wiley \& Sons},
3026 note = {\href{https://doi.org/10.1002/cpe.4183}{https://\-doi.org/\-10.1002/\-cpe.4183}}
3027}
3028
3029@article{Yang95,
3030 keywords = {software solutions, N-thread, mutual exclusions},
3031 contributer = {pabuhr@plg},
3032 author = {Jae-Heon Yang and James H. Anderson},
3033 title = {A Fast, Scalable Mutual Exclusion Algorithm},
3034 journal = {Distributed Computing},
3035 publisher = {Springer-Verlag},
3036 volume = {9},
3037 number = {1},
3038 year = {1995},
3039 pages = {51-60},
3040}
3041
3042@inproceedings{F-bound,
3043 keywords = {},
3044 contributer = {gjditchfield@plg},
3045 author = {Peter Canning and William Cook and Walter Hill and Walter Olthoff and John C. Mitchell},
3046 title = {F-Bounded Polymorphism for Object-Oriented Programming},
3047 booktitle = {Fourth International Conference on Functional Programming Languages and Computer Architecture},
3048 year = 1989,
3049 month = sep,
3050 pages = {273-280}
3051}
3052
3053@mastersthesis{Wasik08,
3054 author = {Ayelet Wasik},
3055 title = {Features of a Multi-Threaded Memory Allocator},
3056 school = {University of Waterloo},
3057 year = 2008,
3058 month = jan,
3059 address = {Waterloo, Ontario, Canada, N2L 3G1},
3060 note = {\textsf{http://uwspace.uwaterloo.ca/\-bitstream/\-10012/\-3501/\-1/\-Thesis.pdf}},
3061}
3062
3063@article{Holzmann94,
3064 keywords = {semaphore, flags},
3065 contributer = {pabuhr@plg},
3066 author = {Gerard J. Holzmann and Bj\"{o}rn Pehrson},
3067 title = {The First Data Networks},
3068 journal = {Scientific American},
3069 month = jan,
3070 year = 1994,
3071 volume = 12,
3072 number = 1,
3073 pages = {124-129},
3074}
3075
3076@article{Bohm66,
3077 keywords = {goto, structured programming},
3078 contributer = {pabuhr@plg},
3079 author = {C. B\"{o}hm and G. Jacopini},
3080 title = {Flow diagrams, Turing Machines and Languages with only two Formation Rules},
3081 journal = cacm,
3082 month = may,
3083 year = 1966,
3084 volume = 9,
3085 number = 5,
3086 pages = {366-371},
3087}
3088
3089@manual{Fortran95,
3090 keywords = {Fortran 95},
3091 contributer = {pabuhr@plg},
3092 key = {Fortran95},
3093 title = {Fortran 95 Standard, ISO/IEC 1539},
3094 organization= {Unicomp, Inc.},
3095 address = {7660 E. Broadway, Tucson, Arizona, U.S.A, 85710},
3096 month = jan,
3097 year = 1997,
3098}
3099
3100@manual{Fortran08,
3101 keywords = {ISO/IEC Fortran 08},
3102 contributer = {pabuhr@plg},
3103 author = {Fortran08},
3104 title = {Programming Languages -- {Fortran} Part 1:Base Language ISO/IEC 1539-1:2010},
3105 edition = {3rd},
3106 publisher = {International Standard Organization},
3107 address = {\href{https://www.iso.org/standard/50459.html}{https://\-www.iso.org/\-standard/\-50459.html}},
3108 year = 2010,
3109}
3110
3111@book{Andrews00:book,
3112 keywords = {concurrency},
3113 contributer = {pabuhr@plg},
3114 author = {Gregory R. Andrews},
3115 title = {Foundations of Multithreaded, Parallel and Distributed Programming},
3116 publisher = {Addison--Wesley},
3117 year = 2000,
3118}
3119
3120@article{Agha89,
3121 keywords = {actors, concurrency},
3122 contributer = {pabuhr@plg},
3123 author = {Gul A. Agha},
3124 title = {Foundational Issues in Concurrent Computing},
3125 journal = sigplan,
3126 month = apr,
3127 year = 1989,
3128 volume = 24,
3129 number = 4,
3130 pages = {60-65},
3131 note = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming,
3132 Sept. 26--27, 1988, San Diego, California, U.S.A},
3133}
3134
3135@article{ool,
3136 keywords = {},
3137 contributer = {gjditchfield@plg},
3138 author = {Douglas T. Ross},
3139 title = {Toward Foundations for the Understanding of Type},
3140 journal = sigplan,
3141 year = 1976,
3142 volume = 11,
3143 pages = {63-65},
3144 note = {Conference on Data: Abstraction, Definition and Structure},
3145 summary = {
3146 Possibly the first use (without definition, alas) of the phrase
3147 "object oriented language". Metaphysical to the point of incoherence.
3148 }
3149}
3150
3151@article{frames,
3152 keywords = {frames},
3153 contributer = {gjditchfield@plg},
3154 author = {Paul G. Basset},
3155 title = {Frame-Based Software Engineering},
3156 journal = {IEEE Software},
3157 month = jul, year = 1987,
3158 volume = 4, number = 4, pages = {9-16}
3159}
3160
3161@misc{Sutter05c,
3162 contributer = {pabuhr@plg},
3163 title = {The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software},
3164 author = {Herb Sutter},
3165 howpublished= {\url{http://www.gotw.ca/publications/concurrency-ddj.htm}},
3166 year = {2005},
3167 note = {originally Dr. Dobb's Journal 30(3)},
3168}
3169
3170@article{Sutter05,
3171 keywords = {concurrency, C++},
3172 contributer = {pabuhr@plg},
3173 author = {Herb Sutter},
3174 title = {A Fundamental Turn Toward Concurrency in Software},
3175 journal = {Dr. Dobb's Journal : Software Tools for the Professional Programmer},
3176 month = mar,
3177 year = 2005,
3178 volume = 30,
3179 number = 3,
3180 pages = {16-22},
3181}
3182
3183@inproceedings{Dony01,
3184 keywords = {Smalltalk, exception handling},
3185 contributer = {pabuhr@plg},
3186 author = {Chistophe Dony},
3187 title = {A Fully Object-Oriented Exception Handling System: Rationale and Smalltalk Implementation},
3188 booktitle = {Exception Handling},
3189 publisher = {Springer},
3190 volume = 2022,
3191 series = {Lecture Notes in Computer Science},
3192 year = 2001,
3193 pages = {18-38}
3194}
3195
3196@misc{FW,
3197 key = {FW},
3198 contributer = {gjditchfield@plg},
3199 title = {Funk \& Wagnalls Standard Desk Dictionary},
3200 year = 1980
3201}
3202
3203@book{Knuth73V1,
3204 contributer = {pabuhr@plg},
3205 author = {Donald E. Knuth},
3206 title = {Fundamental Algorithms},
3207 series = {The Art of Computer Programming},
3208 publisher = {Addison-Wesley},
3209 address = {Boston},
3210 year = 1973,
3211 volume = 1,
3212 edition = {2nd},
3213}
3214
3215@inproceedings{Strachey,
3216 keywords = {polymorphism},
3217 contributer = {gjditchfield@plg},
3218 author = {C. Strachey},
3219 title = {Fundamental Concepts in Programming Languages},
3220 booktitle = {Lecture Notes for the International Summer School in Computer Programming},
3221 year = 1967,
3222 month = aug,
3223 address = {Copenhagen},
3224 comment = {
3225 Defines ad-hoc and parametric polymorphism.
3226 }
3227}
3228
3229@article{Eisenberg72,
3230 keywords = {concurrency, N-Process solution, O(N)},
3231 contributer = {pabuhr@plg},
3232 author = {Murray A. Eisenberg and Michael R. McGuire},
3233 title = {Further Comments on {D}ijkstra's Concurrent Programming Control Problem},
3234 journal = cacm,
3235 month = nov,
3236 year = 1972,
3237 volume = 15,
3238 number = 11,
3239 pages = {999},
3240}
3241
3242% G
3243
3244@article{Boehm88,
3245 keywords = {conservative garbage collection, C},
3246 contributer = {gjditchfield@plg},
3247 author = {Hans-Juergen Boehm and Mark Weiser},
3248 title = {Garbage Collection in an Uncooperative Environment},
3249 journal = spe,
3250 month = sep,
3251 year = 1988,
3252 volume = 18,
3253 number = 9,
3254 pages = {807-820}
3255}
3256
3257@manual{gcc,
3258 keywords = {},
3259 contributer = {gjditchfield@plg},
3260 title = {GCC},
3261 author = {Richard M. Stallman},
3262 organization= {Free Software Foundation},
3263 address = {Cambridge}
3264}
3265
3266@article{doUpon,
3267 keywords = {formal verification, axiomatic semantics, control structures},
3268 contributer = {gjditchfield@plg},
3269 author = {Ed Anson},
3270 title = {A Generalized Iterative Construct and Its Semantics},
3271 journal = toplas,
3272 volume = {9}, number = {4},
3273 pages = {567-581},
3274 month = oct, year = 1987,
3275 comment = {
3276 \begin{verbatim}
3277 do
3278 P1 -> L1
3279 [] P2 -> L2
3280 ...
3281 [] Pm -> Lm
3282 upon
3283 Q1 -> M1
3284 [] Q2 -> M2
3285 ...
3286 [] qn -> mn
3287 od
3288 \end{verbatim}
3289
3290 If there is an i such that Qi is true, execute Mi and terminate.
3291 Otherwise, if there is an i such that Pi is true, execute Li and
3292 repeat the loop. Otherwise, fail.
3293 }
3294}
3295
3296@unpublished{Bilson,
3297 keywords = {generic programming, generics, polymorphism},
3298 contributor = {a3moss@plg},
3299 author = {Richard C. Bilson and Glen Ditchfield and Peter A. Buhr},
3300 title = {Generic Programming with Inferred Models},
3301}
3302
3303@article{Haskell,
3304 keywords = {lazy evaluation, type class},
3305 contributer = {pabuhr},
3306 author = {Paul Hudak and Joseph H. Fasel},
3307 title = {A Gentle Introduction to Haskell},
3308 journal = sigplan,
3309 volume = 27,
3310 number = 5,
3311 month = may,
3312 year = 1992,
3313 pages = {T1-53},
3314}
3315
3316@manual{GMP,
3317 keywords = {GMP arbitrary-precision library},
3318 contributer = {pabuhr@plg},
3319 key = {GMP},
3320 title = {{GNU} Multiple Precision Arithmetic Library},
3321 address = {GNU},
3322 year = 2016,
3323 note = {\href{https://gmplib.org}{https://\-gmplib.org}},
3324}
3325
3326@manual{Go,
3327 keywords = {Go programming language},
3328 contributer = {pabuhr@plg},
3329 author = {Robert Griesemer and Rob Pike and Ken Thompson},
3330 title = {{Go} Programming Language},
3331 organization= {Google},
3332 year = 2009,
3333 note = {\href{http://golang.org/ref/spec}{http://\-golang.org/\-ref/\-spec}},
3334}
3335
3336@article{Dijkstra68a,
3337 keywords = {goto},
3338 contributer = {pabuhr@plg},
3339 author = {Edsger W. Dijkstra},
3340 title = {Go To Statement Considered Harmful},
3341 journal = cacm,
3342 month = mar,
3343 year = 1968,
3344 volume = 11,
3345 number = 3,
3346 pages = {147-148},
3347 note = {Reprinted in \cite{Yourdon79} pp. 29--36.},
3348}
3349
3350@misc{GObject,
3351 keywords = {GObject},
3352 contributor = {a3moss@uwaterloo.ca},
3353 key = {GObject},
3354 organization= {The {GNOME} Project},
3355 title = {{GO}bject Reference Manual},
3356 year = 2014,
3357 howpublished= {https://developer.gnome.org/gobject/stable/},
3358 optnote = {Accessed: 2017-04},
3359}
3360
3361@article{Choi91,
3362 keywords = {contra-variance, functions},
3363 contributer = {pabuhr@plg},
3364 author = {Injun Choi and Michael V. Mannino},
3365 title = {Graph Interpretation of Methods: A Unifying Framework for Polymorphism in Object-Oriented Programming},
3366 journal = {OOPS Messenger},
3367 volume = 2,
3368 number = 1,
3369 month = jan,
3370 year = 1991,
3371 pages = {38-54},
3372}
3373
3374@misc{GNU-C,
3375 keywords = {C, ANSI C},
3376 contributer = {pabuhr@plg},
3377 author = {Richard Stallman},
3378 title = {The Free Software Foundation's Gnu {C} Compiler},
3379 howpublished= {Free Software Foundation, 1000 Mass Ave., Cambridge, MA, U.S.A., 02138},
3380 year = 1989,
3381}
3382
3383@article{Dijkstra:green,
3384 keywords = {ada},
3385 contributer = {gjditchfield@plg},
3386 author = {Edsger W. Dijkstra},
3387 title = {On the GREEN Language submitted to the DoD},
3388 journal = sigplan,
3389 year = 1978,
3390 month = oct,
3391 volume = 13,
3392 number = 10,
3393 pages = {16-21}
3394}
3395
3396@inproceedings{Miller02,
3397 keywords = {exception handling},
3398 contributer = {pabuhr@plg},
3399 author = {Robert Miller and Anand Tripathi},
3400 title = {The Guardian Model for Exception Handling in Distributed Systems},
3401 booktitle = {21st Symposium on Reliable Distributed Systems},
3402 organization= {IEEE},
3403 address = {Suita, Japan},
3404 year = 2002,
3405 month = oct,
3406 pages = {304-313}
3407}
3408
3409@phdthesis{Chen09,
3410 author = {Jun Chen},
3411 title = {Guided Testing of Concurrent Programs Using Value Schedules},
3412 school = {University of Waterloo},
3413 year = 2009,
3414 month = sep,
3415 address = {Waterloo, Ontario, Canada, N2L 3G1},
3416 note = {\textsf{http://uwspace.uwaterloo.ca/bitstream/\-10012/\-4735/\-1/\-Chen-Jun.pdf}},
3417}
3418
3419@misc{GNU-C++,
3420 keywords = {C++, GNU C},
3421 contributer = {pabuhr@plg},
3422 author = {Michael D. Tiemann},
3423 title = {User's Guide to GNU {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
3424 howpublished= {Free Software Foundation, 1000 Mass Ave., Cambridge, MA, U.S.A., 02138},
3425 month = mar,
3426 year = 1990,
3427}
3428
3429% H
3430
3431@manual{Haskell10,
3432 keywords = {Haskell},
3433 contributer = {pabuhr@plg},
3434 author = {Haskell},
3435 title = {Haskell 2010 Language Report},
3436 edition = {{S}imon {M}arlow},
3437 year = 2010,
3438 note = {\href{https://haskell.org/definition/haskell2010.pdf}{https://\-haskell.org/\-definition/\-haskell2010.pdf}},
3439}
3440
3441@article{Michael04a,
3442 keywords = {Lock-free, synchronization, concurrent programming, memory management, multiprogramming, dynamic data structures},
3443 author = {Maged M. Michael},
3444 title = {Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects},
3445 journal = ieeepds,
3446 volume = 15,
3447 number = 6,
3448 month = jun,
3449 year = 2004,
3450 pages = {491-504},
3451 publisher = {IEEE Press},
3452 address = {Piscataway, NJ, USA},
3453}
3454
3455@techreport{Hermes90,
3456 keywords = {processes, distributed computing},
3457 contributer = {pabuhr@plg},
3458 author = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini},
3459 title = {Hermes: A Language for Distributed Computing},
3460 institution = {IBM T. J. Watson Research Center},
3461 address = {Yorktown Heights, New York, U.S.A., 10598},
3462 month = oct,
3463 year = 1990,
3464}
3465
3466@book{Hermes91,
3467 keywords = {processes, distributed computing},
3468 contributer = {pabuhr@plg},
3469 author = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini},
3470 title = {Hermes: A Language for Distributed Computing},
3471 publisher = {Prentice-Hall},
3472 address = {Englewood Cliffs},
3473 series = {Innovative Technology},
3474 year = 1991,
3475}
3476
3477@article{katzenelson83b,
3478 contributer = {gjditchfield@plg},
3479 author = "Jacob Katzenelsen",
3480 title = "Higher Level Programming and Data Abstraction---A Case Study using Enhanced C",
3481 journal = spe,
3482 year = 1983,
3483 volume = 13,
3484 number = 7,
3485 pages = {577-596},
3486 month = jul
3487}
3488
3489@techreport{Hoare73,
3490 keywords = {},
3491 contributer = {gjditchfield@plg},
3492 author = {C. A. R. Hoare},
3493 title = {Hints on Programming Language Design},
3494 institution = {Stanford University Computer Science Department},
3495 year = 1973,
3496 month = dec,
3497 number = {CS-73-403},
3498 note = {Reprinted in \cite{pldesign}.}
3499}
3500
3501@article{Dijkstra71,
3502 keywords = {monitor, secretary},
3503 contributer = {pabuhr@plg},
3504 author = {E. W. Dijkstra},
3505 title = {Hierarchical Ordering of Sequential Processes},
3506 journal = acta,
3507 volume = 1,
3508 pages = {115-138},
3509 year = 1971,
3510}
3511
3512@article{Hesselink17b,
3513 keywords = {concurrency, mutual exclusion, performance experiment, software solutions},
3514 title = {High-Contention Mutual Exclusion by Elevator Algorithms},
3515 author = {Peter A. Buhr and David Dice and Wim H. Hesselink},
3516 journal = ccpe,
3517 volume = 30,
3518 number = 18,
3519 year = 2018,
3520 month = sep,
3521 publisher = {John Wiley \& Sons},
3522 note = {\href{https://doi.org/10.1002/cpe.4475}{https://\-doi.org/\-10.1002/\-cpe.4475}},
3523}
3524
3525@article{Buhr15a,
3526 keywords = {software solution, mutual exclusion, performance experiment},
3527 author = {Peter A. Buhr and David Dice and Wim H. Hesselink},
3528 title = {High-Performance {$N$}-Thread Software Solutions for Mutual Exclusion},
3529 journal = ccpe,
3530 volume = 27,
3531 number = 3,
3532 pages = {651-701},
3533 month = mar,
3534 year = 2015,
3535}
3536
3537@article{Ackermann28,
3538 keywords = {recursion, Ackermann function},
3539 contributer = {pabuhr@plg},
3540 author = {Wilhelm Ackermann},
3541 title = {Zum Hilbertschen Aufbau der reellen Zahlen},
3542 publisher = {Springer},
3543 journal = mathann,
3544 number = 1,
3545 volume = 99,
3546 pages = {118-133},
3547 month = dec,
3548 year = 1928,
3549}
3550
3551@inproceedings{typeclass,
3552 keywords = {Hindley/Miller type systems, Haskell},
3553 contributer = {gjditchfield@plg},
3554 author = {Philip Wadler and Stephen Blott},
3555 title = {How to make {\em Ad-Hoc} Polymorphism Less {\em Ad-Hoc}},
3556 booktitle = popl,
3557 year = 1989,
3558 pages = {60-76},
3559 organization= {Association for Computing Machinery}
3560}
3561
3562% I
3563
3564@book{IBM370,
3565 keywords = {370, IBM},
3566 contributer = {pabuhr@plg},
3567 key = {IBM370},
3568 title = {{IBM} System/370 Principles of Operation},
3569 publisher = {IBM},
3570 number = {GA22-7000-8},
3571 month = oct,
3572 year = 1981,
3573 edition = {9th}
3574}
3575
3576@book{Icon,
3577 keywords = {Icon},
3578 contributer = {pabuhr@plg},
3579 author = {Ralph E. Griswold and Madge T. Griswold},
3580 title = {The Icon Programming Language},
3581 publisher = {Prentice-Hall},
3582 address = {Englewood Cliffs},
3583 year = 1983,
3584}
3585
3586@inproceedings{Valois94,
3587 keywords = {lock free, queue},
3588 contributer = {pabuhr@plg},
3589 author = {John D. Valois},
3590 title = {Implementing Lock-Free Queues},
3591 booktitle = {Seventh International Conference on Parallel and Distributed Computing Systems},
3592 address = {Las Vegas, Nevada, U.S.A.},
3593 year = {1994},
3594 pages = {64-69},
3595}
3596
3597@article{Hehner81,
3598 keywords = {concurrency, critical section, bakery algorithm},
3599 contributer = {pabuhr@plg},
3600 author = {Eric C. R. Hehner and R. K. Shyamasundar},
3601 title = {An Implementation of {P} and {V}},
3602 journal = ipl,
3603 year = 1981,
3604 month = aug,
3605 volume = 12,
3606 number = 4,
3607 pages = {196-198},
3608}
3609
3610@incollection{Steenkiste91,
3611 keywords = {lisp},
3612 contributer = {gjditchfield@plg},
3613 author = {Peter A. Steenkiste},
3614 title = {The Implementation of Tags and Run-Time Checking},
3615 booktitle = {Topics in Advanced Language Implementation},
3616 pages = {3-24},
3617 year = 1991,
3618 editor = {Peter Lee},
3619 chapter = {1},
3620 publisher = {The MIT Press}
3621}
3622
3623@techreport{Roberts89,
3624 keywords = {},
3625 contributer = {pabuhr@plg},
3626 author = {Eric S. Roberts},
3627 title = {Implementing Exceptions in {C}},
3628 institution = {Digital Systems Research Center},
3629 address = {130 Lytton Avenue, Palo Alto, California, 94301},
3630 number = {40},
3631 month = mar,
3632 year = 1989,
3633}
3634
3635@mastersthesis{Bilson03,
3636 keywords = {Cforall, parametric polymorphism, overloading},
3637 contributer = {pabuhr@plg},
3638 author = {Richard C. Bilson},
3639 title = {Implementing Overloading and Polymorphism in \textsf{C}$\mathbf{\forall}$},
3640 school = {School of Computer Science, University of Waterloo},
3641 year = 2003,
3642 address = {Waterloo, Ontario, Canada, N2L 3G1},
3643 note = {\href{http://plg.uwaterloo.ca/theses/BilsonThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-BilsonThesis.pdf}},
3644}
3645
3646@article{Buhr05b,
3647 keywords = {monitor, automatic signal, implicit signal},
3648 contributer = {pabuhr@plg},
3649 author = {Peter A. Buhr and Ashif S. Harji},
3650 title = {Implicit-signal monitors},
3651 journal = toplas,
3652 volume = 27,
3653 number = 6,
3654 month = nov,
3655 year = 2005,
3656 issn = {0164-0925},
3657 pages = {1270--1343},
3658 publisher = {ACM Press},
3659 address = {New York, NY, USA},
3660}
3661
3662@article{Galler64,
3663 keywords = {union-find, original},
3664 contributer = {a3moss@uwaterloo.ca},
3665 title = {An improved equivalence algorithm},
3666 author = {Galler, Bernard A and Fisher, Michael J},
3667 journal = {Communications of the ACM},
3668 volume = {7},
3669 number = {5},
3670 pages = {301--303},
3671 year = {1964},
3672 publisher = {ACM}
3673}
3674
3675@article{Baker77,
3676 author = {Henry C. Baker, Jr. and Carl Hewitt},
3677 title = {The Incremental Garbage Collection of Processes},
3678 journal = {SIGART Bulletin},
3679 publisher = {ACM},
3680 address = {New York, NY, USA},
3681 month = aug,
3682 year = 1977,
3683 pages = {55-59},
3684 issn = {0163-5719},
3685}
3686
3687@book{Algol68,
3688 keywords = {Algol68},
3689 contributer = {pabuhr@plg},
3690 author = {C. H. Lindsey and S. G. van der Meulen},
3691 title = {Informal Introduction to ALGOL 68},
3692 publisher = {North-Holland},
3693 address = {London},
3694 year = 1977,
3695}
3696
3697@inproceedings{Cook90,
3698 keywords = {f-bounded polymorhpism, lambda calculus},
3699 contributer = {gjditchfield@plg},
3700 author = {William R. Cook and Walter L. Hill and Peter S. Canning},
3701 title = {Inheritance is Not Subtyping},
3702 booktitle = popl,
3703 year = 1990,
3704 pages = {125-135},
3705 organization= {Association for Computing Machinery},
3706 abstract = {
3707 In typed object-oriented languages the subtype relation is
3708 typically based on the inheritance hierarchy. This approach,
3709 however, leads either to insecure type-systems or to restrictions
3710 on inheritance that make it less flexible than untyped Smalltalk
3711 inheritance. We present a new typed model of inheritance that
3712 allows more of the flexibility of Smalltalk inheritance within a
3713 statically-typed system. Significant features of our analysis are
3714 the introduction of polymorphism into the typing of inheritance and
3715 the uniform application of inheritance to objects, classes and
3716 types. The resulting notion of {\em type inheritance} allows us to
3717 show that the type of an inherited object is an inherited type but
3718 not always a subtype.
3719 }
3720}
3721
3722@inproceedings{MMR92,
3723 keywords = {},
3724 contributer = {gjditchfield@plg},
3725 author = {Robert E. Minnear and Patrick A. Muckelbauer and Vincent F. Russo},
3726 title = {Integrating the {Sun Microsystems} {XDR/RPC} Protocols
3727 into the {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Stream Model},
3728 booktitle = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference Proceedings},
3729 year = 1992,
3730 month = aug,
3731 pages = {295-312},
3732 organization= {USENIX Association},
3733 address = {2590 Ninth Street, Suite 215, Berkeley, CA 94710},
3734 abstract = {
3735 This paper reports our experiences integrating the Sun Microsystems
3736 RPC and XDR protocol specifications into the C++ model of
3737 input/output streams. As part of the {\it Renaissance} operating
3738 system project, we wish to construct network servers and clients,
3739 written in C++, which interoperate with existing UNIX clients
3740 and servers. We discovered that, although it would be possible to
3741 re-implement the procedural based XDR/RPC implementation
3742 distributed by Sun Microsystems in C++, it is far cleaner to
3743 integrate the protocols with the C++ I/O stream model. We
3744 feel the resulting model provides a cleaner way of implementing RPC
3745 clients and servers without losing functionality or compatibility
3746 with existing clients and servers.
3747 }
3748}
3749
3750@inproceedings{Zuo08,
3751 keywords = {shared memory systems,intelligent multiport memory,multiprocessors systems,shared memory system},
3752 author = {Wang Zuo and Wang Zuo and Li Jiaxing},
3753 title = {An Intelligent Multi-Port Memory},
3754 booktitle = {Symposium on Intelligent Information Technology Application Workshops, Shanghai, China},
3755 month = dec,
3756 year = 2008,
3757 pages = {251-254},
3758 publisher = {IEEE Computer Society},
3759 address = {Los Alamitos, CA, USA},
3760}
3761
3762@book{Francez96,
3763 keywords = {await, formal},
3764 contributer = {pabuhr@plg},
3765 author = {Nissim Francez and Ira R. Forman},
3766 title = {Interacting Processes: A Multiparty Approach to Coordinated Distributed Programming},
3767 publisher = {Addison-Wesley},
3768 address = {Boston},
3769 series = {ACM Press Books},
3770 year = 1996,
3771}
3772
3773@article{Labreche90,
3774 keywords = {concurrency, C++},
3775 contributer = {pabuhr@plg},
3776 author = {Pierre Labr{\`{e}}che},
3777 title = {Interactors: A Real-Time Executive with Multiparty Interactions in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
3778 journal = sigplan,
3779 volume = 25,
3780 number = 4,
3781 month = apr,
3782 year = 1990,
3783 pages = {20-32},
3784}
3785
3786@inproceedings{interfaces,
3787 keywords = {parameterized interfaces, classes, recursion/inheritance},
3788 contributer = {gjditchfield@plg},
3789 author = {Peter S. Canning and William R. Cook and Walter L. Hill and
3790 Walter G. Olthoff},
3791 title = {Interfaces for Strongly-Typed Object-Oriented Programming},
3792 crossref = "OOPSLA89",
3793 pages = {457-467},
3794 abstract = {
3795 This paper develops a system of explicit interfaces for
3796 object-oriented programming. The system provides the benefits of
3797 module interfaces found in languages like Ada and Modula-2 while
3798 preserving the expressiveness that gives untyped object-oriented
3799 languages like Smalltalk their flexibility. Interfaces are
3800 interpreted as polymorphic types to make the system sufficiently
3801 powerful. We use interfaces to analyze the properties of
3802 inheritance, and identify three distinct kinds of inheritance in
3803 object-oriented programming, corresponding to objects, classes, and
3804 interfaces, respectively. Object interfaces clarify the
3805 distinction between interface containment and inheritance and give
3806 insight into limitations caused by equating the notions of type and
3807 class in many typed object-oriented programming languages.
3808 Interfaces also have practical consequences for design,
3809 specification, and maintenance of object-oriented systems.
3810 }
3811}
3812
3813@phdthesis{Girard72,
3814 keywords = {universal quantification},
3815 contributer = {gjditchfield@plg},
3816 author = {J.-Y. Girard},
3817 title = {Interpretation fonctionelle et elimination des coupures de
3818 l'arithmetique d'ordre superieur},
3819 school = {Universite Paris},
3820 year = {1972}
3821}
3822
3823@article{Karaorman93,
3824 keywords = {Eiffel, concurrency libraries},
3825 contributer = {pabuhr@plg},
3826 author = {Murat Karaorman and John Bruno},
3827 title = {Introducing Concurrency to a Sequential Language},
3828 journal = cacm,
3829 month = sep,
3830 year = 1993,
3831 volume = 36,
3832 number = 9,
3833 pages = {103-116}
3834}
3835
3836@book{Corman92,
3837 keywords = {PRAM, parallel algorithms},
3838 contributer = {pabuhr@plg},
3839 author = {Thomas H. Cormen and Charles E. Leiserson and Ronald L. Rivest},
3840 title = {Introduction to Algorithms},
3841 publisher = {MIT Press/McGraw-Hill},
3842 address = {Cambridge},
3843 series = {Electrical Engineering and Computer Science Series},
3844 year = 1992,
3845}
3846
3847@book{Hopcroft79,
3848 keywords = {finite-state machine, push-dowm automata},
3849 contributer = {pabuhr@plg},
3850 author = {John E. Hopcroft and Jeffrey D. Ullman},
3851 title = {Introduction to Automata Theory, Languages and Computation},
3852 publisher = {Addison-Wesley},
3853 address = {Boston},
3854 year = 1979,
3855}
3856
3857@techreport{walker87,
3858 keywords = {CCS},
3859 contributer = {gjditchfield@plg},
3860 author = {David Walker},
3861 title = {Introduction to a Calculus of Communicating Systems},
3862 institution = {Laboratory for Foundations of Computer Science},
3863 year = 1987,
3864 address = {Department of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ},
3865 month = jun,
3866 number = {ECS-LFCS-87-22},
3867}
3868
3869@article{katzenelson83a,
3870 author = {Jacob Katzenelson},
3871 title = {Introduction to Enhanced C (EC)},
3872 journal = spe,
3873 volume = 13,
3874 number = 7,
3875 year = 1983,
3876 month = jul,
3877 pages = {551-576},
3878}
3879
3880@book{Deitel90,
3881 keywords = {concurrency, operating systems},
3882 contributer = {pabuhr@plg},
3883 author = {Harvey M. Deitel},
3884 title = {An Introduction to Operating Systems},
3885 publisher = {Addison-Wesley},
3886 address = {Boston},
3887 year = 1990,
3888 edition = {2nd},
3889}
3890
3891@techreport{Birrell89,
3892 keywords = {threads, monitors},
3893 contributer = {pabuhr@plg},
3894 author = {Andrew D. Birrell},
3895 title = {An Introduction to Programming with Threads},
3896 institution = {Digital Systems Research Center},
3897 address = {130 Lytton Avenue, Palo Alto, California, 94301},
3898 number = {35},
3899 month = jan,
3900 year = 1989,
3901 note = {{\textsf{http://www.hpl.hp.com/\-techreports/\-Compaq-DEC/\-SRC-RR-35.html}}},
3902
3903}
3904
3905@article{t/o,
3906 keywords = {Trellis/Owl},
3907 contributer = {gjditchfield@plg},
3908 author = {Craig Schaffert and Topher Cooper and Bruce Bullis and Mike Kilian and Carrie Wilpot},
3909 title = {An Introduction to Trellis/Owl},
3910 journal = sigplan,
3911 volume = 21,
3912 number = 11,
3913 year = 1986,
3914 month = nov,
3915 pages = {9-16},
3916}
3917
3918@inproceedings{Pharr12,
3919 title = {ispc: A {SPMD} compiler for high-performance CPU programming},
3920 author = {Pharr, Matt and Mark, William R},
3921 booktitle = {Innovative Parallel Computing (InPar), 2012},
3922 pages = {1--13},
3923 year = {2012},
3924 month = may,
3925 address = {San Jose, CA, USA},
3926 publisher = {IEEE},
3927}
3928
3929@inproceedings{DeLozier13,
3930 keywords = {C++, local pointers, memory safety, type-safety},
3931 author = {DeLozier, Christian and Eisenberg, Richard and Nagarakatte, Santosh and Osera, Peter-Michael and Martin, Milo M.K. and Zdancewic, Steve},
3932 title = {{I}ronclad {C++}: A Library-augmented Type-safe Subset of {C++}},
3933 booktitle = {Proceedings of the 2013 ACM SIGPLAN International Conference on Object Oriented Programming Systems Languages \& Applications},
3934 series = {OOPSLA'13},
3935 year = {2013},
3936 address = {Indianapolis, Indiana, USA},
3937 pages = {287-304},
3938 publisher = {ACM},
3939}
3940
3941@inproceedings{Hibbard77,
3942 keywords = {algol-68, concurrency},
3943 contributer = {pabuhr@plg},
3944 author = {Peter G. Hibbard and P. Knueven and B. W. Leverett},
3945 title = {Issues in the Efficient Implementation and Use of Multiprocessing in {Algol} 68},
3946 booktitle = {Proceedings of the 5th Annual iii Conference},
3947 address = {Guidel, France},
3948 month = may,
3949 year = 1977,
3950 pages = {203-221}
3951}
3952
3953@inproceedings{Miller97,
3954 keywords = {exception handling, software-engineering},
3955 contributer = {pabuhr@plg},
3956 author = {Robert Miller and Anand Tripathi},
3957 title = {Issues with Exception Hnadling in Object-Oriented Systems},
3958 booktitle = {ECOOP'97},
3959 publisher = {Springer},
3960 volume = 1241,
3961 series = {Lecture Notes in Computer Science},
3962 year = 1997,
3963 pages = {85-103}
3964}
3965
3966@article{Murer96,
3967 keywords = {interators, generators, cursors},
3968 contributer = {pabuhr@plg},
3969 author = {Stephan Murer and Stephen Omohundro and David Stoutamire and Clemens Szyperski},
3970 title = {Iteration Abstraction in Sather},
3971 journal = toplas,
3972 month = jan,
3973 year = 1996,
3974 volume = 18,
3975 number = 1,
3976 pages = {1-15},
3977}
3978
3979% J
3980
3981@book{Java,
3982 keywords = {Java},
3983 contributer = {pabuhr@plg},
3984 author = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha},
3985 title = {The {Java} Language Specification},
3986 publisher = {Addison-Wesley},
3987 address = {Reading},
3988 year = 2000,
3989 edition = {2nd},
3990}
3991
3992@manual{Java8,
3993 keywords = {Java SE 8},
3994 contributer = {pabuhr@plg},
3995 author = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha and Alex Buckley},
3996 title = {{Java} Language Specification},
3997 publisher = {Oracle},
3998 year = 2015,
3999 edition = {{J}ava {SE} 8},
4000}
4001
4002@manual{JUC,
4003 keywords = {Java concurrency library},
4004 contributer = {pabuhr@plg},
4005 title = {java.util.concurrency},
4006 author = {Doug Lea},
4007 organization= {Oracle},
4008 year = 2014,
4009 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}},
4010}
4011
4012% K
4013
4014@inproceedings{Buhr96b,
4015 author = {Peter A. Buhr and Martin Karsten and Jun Shih},
4016 title = {{\small\textsf{KDB}}: A Multi-threaded Debugger for Multi-threaded Applications},
4017 booktitle = {Proc. of SPDT'96: SIGMETRICS Symp. on Parallel and Distributed Tools},
4018 publisher = {ACM Press},
4019 address = {Philadelphia, Pennsylvania, U.S.A.},
4020 month = may,
4021 year = 1996,
4022 pages = {80-87},
4023}
4024
4025@article{Duggan96,
4026 keywords = {concurrency, critical section},
4027 contributer = {pabuhr@plg},
4028 author = {Dominic Duggan and Gordon V. Cormack and John Ophel},
4029 title = {Kinded Type Inference for Parametric Overloading},
4030 journal = acta,
4031 volume = 33,
4032 number = 1,
4033 year = 1996,
4034 pages = {21-68},
4035}
4036
4037@article{Peter35,
4038 keywords = {recursion, Ackermann function},
4039 contributer = {pabuhr@plg},
4040 author = {R{\'{o}}zsa P{\'{e}}ter},
4041 title = {Konstruktion nichtrekursiver Funktionen},
4042 publisher = {Springer},
4043 journal = mathann,
4044 number = 111,
4045 volume = 1,
4046 pages = {42-60},
4047 month = dec,
4048 year = 1935,
4049}
4050
4051% L
4052
4053@TechReport{WVWR88:L,
4054 contributer = {gjditchf@plg},
4055 author = {Hanno Wupper and Jan Vytopil and Martin Wieczorek and Dick de Reus},
4056 title = {{L}_{3333}: A Simple Language with Static Typing of Hard Real-Time Constraints},
4057 institution = {Department of Informatics, Faculty of Science, Catholic University Nijmegen},
4058 year = 1988,
4059 number = {88-3},
4060 address = {Katholieke Universiteit Nijmegen, Fakulteit der Wiskunde
4061 en Natuurwetenschappen, Infomatica V, Toernooiveld, 6512
4062 ED Nijmegen, The Netherlands},
4063 month = apr,
4064 annote = {A polymorphic typed lambda calculus with \begin{itemize}
4065 \item A trivial type, ``!'', with a single element.
4066 \item Labelled types, distinct from each other.
4067 ``!False'' and ``!True'' are distinct types, each
4068 containing a single value serving as boolean false and
4069 true. ``2'' is an abbreviation for ``!0 succ succ'', the
4070 type containing only 2.
4071 \item Disjunction types ``\{| !False, !True |\}''. Interval
4072 types are abbreviations for disjunctions.
4073 \item Conjunction types ``\{\& real Re, real Im \&\}'', where
4074 ``Re'' and ``Im'' are type labels that distinguish between the
4075 fields.
4076 \item Pair types ``\{^ a, b ^\}'', for use in recursive types
4077 and dyadic infix functions.
4078 \item Function types, universal types, existential types,
4079 and subtyping (viewed as coercion), as in Fun.
4080 \end{itemize}
4081 Disjunctions and conjunctions types are associative and
4082 commutative (i.e. flat). Each type has a matching
4083 constructor. Functions use pattern matching on type
4084 labels to strip labels and extract conjunction fields:
4085 \begin{verbatim}
4086 \lambda n {0...1000000 Guilders}. ... n ...
4087 -- both argument and n are amounts in Guilders.
4088 \lambda n {0...1000000} Guilders. ... n ...
4089 -- argument in Guilders, but n is in 0...1000000.
4090 \end{verbatim}
4091 ``Function bundles'' (conjunctions of functions), applied
4092 to arguments, replace Dijkstra's guarded if...fi, but the
4093 bundles are first-class and the guards are part of their
4094 type.
4095
4096 The same trick used to define the type ``2'' is used to
4097 move absolute times into the type system, to allow static
4098 checking. ``0`'' denotes a time before the system begins
4099 execution. ``\#`'' denotes ``eventually'', and ``?`''
4100 denotes ``maybe never''. ``a\\t'' and ``a@t'' are types
4101 of a value of type a that will be available no later
4102 (earlier) than time t. Universals and existentials use
4103 subtyping to parameterize functions by start time:
4104 \begin{verbatim}
4105 let f {\forall t > \#`}. {a\t} \on {b\t+d}
4106 f{then} y -- argument y must be available at time ``then''.
4107 \end{verbatim}
4108 Functions can return before their arguments are available
4109 if they don't use them. However, function {\em bundles}
4110 can't return until their result type is known, so the
4111 lower and upper time bounds of the bundle are the
4112 second-last upper bound of the component functions: at
4113 that time, there is only one alternative left.
4114
4115 Explicit time parameterization allows slack in time
4116 specification. Tools could point out slack or determine
4117 degree of parallelism.}
4118}
4119
4120@mastersthesis{Clarke90,
4121 keywords = {concurrency, postponing requests},
4122 contributer = {pabuhr@plg},
4123 author = {Charles L. A. Clarke},
4124 title = {Language and Compiler Support for Synchronous Message Passing Architectures},
4125 school = {University of Waterloo},
4126 year = 1990,
4127 address = {Waterloo, Ontario, Canada, N2L 3G1}
4128}
4129
4130@article{Tennent77,
4131 keywords = {abstraction, correspondence, Pascal},
4132 contributer = {gjditchfield@plg},
4133 author = {R. D. Tennent},
4134 title = {Language Design Methods Based on Semantic Principles},
4135 journal = acta,
4136 year = 1977,
4137 volume = 8,
4138 number = 2,
4139 pages = {97-112},
4140 note = {reprinted in \cite{pldesign}},
4141 abstract = {
4142 Two language design methods based on principles derived from the
4143 denotational approach to programming language semantics are
4144 described and illustrated by an application to the language Pascal.
4145 The principles are, firstly, the correspondence between parametric
4146 and declarative mechanisms and secondly, a principle of abstraction
4147 for programming languages adapted from set theory. Several useful
4148 extensions and generalizations of Pascal emerge by applying these
4149 principles, including a solution to the array parameter problem,
4150 and a modularization facility.
4151 },
4152}
4153
4154@article{Liskov86,
4155 keywords = {synchronous communication, concurrency},
4156 contributer = {pabuhr@plg},
4157 author = {Barbara Liskov and Maurice Kerlihy and Lucy Gilbert},
4158 title = {Limitations of Synchronous Communication with Static
4159 Process Structure in Languages for Distributed Computing},
4160 journal = {},
4161 volume = {},
4162 number = {},
4163 month = {},
4164 year = {},
4165 pages = {},
4166}
4167
4168@article{Linda,
4169 keywords = {Linda, concurrency},
4170 contributer = {pabuhr@plg},
4171 author = {Nicholas Carriero and David Gelernter},
4172 title = {Linda in Context},
4173 journal = cacm,
4174 volume = 32,
4175 number = 4,
4176 month = apr,
4177 year = 1989,
4178 pages = {444-458}
4179}
4180
4181@book{Weissman67,
4182 keywords = {lisp},
4183 author = {Clark Weissman},
4184 title = {Lisp 1.5 Primer},
4185 publisher = {Dickenson Publishing},
4186 address = {Belmont},
4187 year = 1967,
4188}
4189
4190@article{Sundell08,
4191 keywords = {lock free, deque},
4192 contributer = {pabuhr@plg},
4193 author = {H{\r{a}}kan Sundell and Philippas Tsigas},
4194 title = {Lock-free Deques and Doubly Linked Lists},
4195 journal = {J. Parallel Distrib. Comput.},
4196 volume = 68,
4197 number = 7,
4198 year = 2008,
4199 pages = {1008-1020},
4200}
4201
4202@misc{Matsakis17,
4203 keywords = {Rust, Chalk, PROLOG},
4204 contributer = {a3moss@uwaterloo.ca},
4205 author = {Nicholas Matsakis},
4206 title = {Lowering {Rust} traits to logic},
4207 month = jan,
4208 year = 2017,
4209 howpublished= {\href{http://smallcultfollowing.com/babysteps/blog/2017/01/26/lowering-rust-traits-to-logic/}
4210 {http://smallcultfollowing.com/\-babysteps/\-blog/\-2017/\-01/\-26/\-lowering-rust-traits-to-logic/}},
4211 optnote = {Accessed: 2019-01},
4212}
4213
4214@article{Cormack89,
4215 keywords = {parsing, LR, error recovery},
4216 contributer = {pabuhr@plg},
4217 author = {Gordon V. Cormack},
4218 title = {An {LR} Substring Parser for Noncorrecting Syntax Error Recovery},
4219 journal = sigplan,
4220 volume = 24,
4221 number = 7,
4222 month = jul,
4223 year = 1989,
4224 pages = {161-169},
4225 note = {Proceedings of the {SIGPLAN}~'89 Conference on Programming Language Design and Implementation}
4226}
4227
4228% M
4229
4230@book{M68K,
4231 keywords = {M680XX, Motorola},
4232 contributer = {pabuhr@plg},
4233 key = {Motorola},
4234 title = {M68000 Family Programmer's Reference Manual},
4235 publisher = {Motorola},
4236 year = 1992,
4237}
4238
4239@misc{Haberman16,
4240 keywords = {C++ template expansion},
4241 contributer = {a3moss@uwaterloo.ca},
4242 author = {Josh Haberman},
4243 title = {Making arbitrarily-large binaries from fixed-size {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} code},
4244 year = 2016,
4245 howpublished= {\href{http://blog.reverberate.org/2016/01/making-arbitrarily-large-binaries-from.html}
4246 {
4247 {http://blog.reverberate.org/\-2016/\-01/\-making-arbitrarily-large-binaries-from.html}
4248 }},
4249 optnote = {Accessed: 2016-09},
4250}
4251
4252@article{c++libs,
4253 keywords = {directory structure},
4254 contributer = {gjditchfield@plg},
4255 author = {J. M. Coggins and G. Bollella},
4256 title = {Managing {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Libraries},
4257 journal = sigplan,
4258 year = 1989,
4259 month = jun, volume = 24, number = 6, pages = {37-48},
4260 abstract = {
4261 This paper describes a scheme we have used to manage a large
4262 library written in the C++ language. The scheme imposes a
4263 directory structure, and represents dependency hierarchy in a
4264 globally accessible file we call the 'prelude' file. We also
4265 discuss the structure of the description files (makefiles) used
4266 with the UNIX options we have found to be useful in reducing the
4267 size of the library, and how to minimize recompilation time after
4268 trivial changes to the source code of the library.
4269 }
4270}
4271
4272@inproceedings{mprof,
4273 keywords = {malloc},
4274 contributer = {gjditchfield@plg},
4275 author = {Benjamin Zorn and Paul Hilfinger},
4276 title = {A Memory Allocation Profiler for {C} and Lisp Programs},
4277 booktitle = {Summer 1988 {USENIX} proceedings},
4278 year = 1988
4279}
4280
4281@manual{MMTk,
4282 keywords = {Java memory management},
4283 contributer = {pabuhr@plg},
4284 title = {MMTk: The Memory Management Toolkit},
4285 author = {Steve Blackburn and Robin Garner and Daniel Frampton},
4286 month = sep,
4287 year = 2006,
4288 note = {\textsf{http://cs.anu.edu.au/\-$\sim$Robin.Garner/\-mmtk-guide.pdf}},
4289}
4290
4291@article{Adve10,
4292 keywords = {Java memory management},
4293 contributer = {pabuhr@plg},
4294 author = {Sarita V. Adve and Hans-J. Boehm},
4295 title = {Memory Models: A Case for Rethinking Parallel Languages and Hardware},
4296 journal = cacm,
4297 volume = 53,
4298 number = 8,
4299 month = aug,
4300 year = 2010,
4301 pages = {90-101},
4302 publisher = {ACM},
4303 address = {New York, NY, USA},
4304}
4305@techreport{Mesa,
4306 keywords = {monitors, packages},
4307 contributer = {pabuhr@plg},
4308 author = {James G. Mitchell and William Maybury and Richard Sweet},
4309 title = {Mesa Language Manual},
4310 institution = {Xerox Palo Alto Research Center},
4311 number = {CSL--79--3},
4312 month = apr,
4313 year = 1979
4314}
4315
4316@article{Andrews89,
4317 keywords = {semaphore, split-binary, baton},
4318 contributer = {pabuhr@plg},
4319 author = {Gregory R. Andrews},
4320 title = {A Method for Solving Synronization Problems},
4321 journal = scp,
4322 volume = 13,
4323 number = 4,
4324 month = dec,
4325 year = 1989,
4326 pages = {1-21},
4327}
4328
4329@inproceedings{Mitchell78,
4330 keywords = {Mesa},
4331 contributer = {pabuhr@plg},
4332 author = {James G. Mitchell},
4333 title = {Mesa: A Designer's User Perspective},
4334 booktitle = {Spring CompCom 78},
4335 organization= {Sixteenth IEEE Computer Society International Conference},
4336 address = {San Francisco, California, U.S.A.},
4337 month = feb,
4338 year = 1978,
4339 pages = {36-39},
4340 note = {IEEE Catalog No. 78CH1328-4C},
4341}
4342
4343@article{Gentleman81,
4344 keywords = {messages, concurrency},
4345 contributer = {pabuhr@plg},
4346 author = {W. Morven Gentleman},
4347 title = {Message Passing between Sequential Processes:
4348 the Reply Primitive and the Administrator Concept},
4349 journal = spe,
4350 month = may,
4351 year = 1981,
4352 volume = 11,
4353 number = 5,
4354 pages = {435-466}
4355}
4356
4357@article{Cormack88,
4358 keywords = {concurrency},
4359 contributer = {pabuhr@plg},
4360 author = {G. V. Cormack},
4361 title = {A Micro Kernel for Concurrency in C},
4362 journal = spe,
4363 month = may,
4364 year = 1988,
4365 volume = 18,
4366 number = 4,
4367 pages = {485-491}
4368}
4369
4370@article{Buhr90a,
4371 keywords = {concurrency, light-weight process, shared memory},
4372 contributer = {pabuhr@plg},
4373 author = {Peter A. Buhr and Richard A. Stroobosscher},
4374 title = {The $\mu${S}ystem: Providing Light-Weight Concurrency on Shared-Memory Multiprocessor Computers Running {UNIX}},
4375 journal = spe,
4376 volume = 20,
4377 number = 9,
4378 month = sep,
4379 year = 1990,
4380 pages = {929-963},
4381}
4382
4383@techreport{uSystem,
4384 keywords = {C, concurrency, light-weight process, shared memory},
4385 contributer = {pabuhr@plg},
4386 author = {Peter A. Buhr and Hamish I. Macdonald and Richard A. Stroobosscher},
4387 title = {$\mu${S}ystem Annotated Reference Manual, Version 4.4.3},
4388 institution = {Department of Computer Science, University of Waterloo},
4389 address = {Waterloo, Ontario, Canada, N2L 3G1},
4390 month = sep,
4391 year = 1994,
4392 note = {\href{https://plg.uwaterloo.ca/~usystem/pub/uSystem/uSystem.pdf}{https://\-plg.uwaterloo.ca/\-$\sim$usystem/\-pub/\-uSystem/\-uSystem.pdf}},
4393}
4394
4395@book{Mips4000,
4396 key = {Mips4000},
4397 title = {MIPS R4000 Microprocessor User's Manual},
4398 publisher = {MIPS Computer Systems Inc},
4399 year = 1991,
4400}
4401
4402@inproceedings{Mjolner,
4403 keywords = {Mjolner, hierarchical windows},
4404 contributer = {pabuhr@plg},
4405 author = {G\"{o}rel Hedin and Boris Magnusson},
4406 title = {The Mj{\o}lner Environment: Direct Interaction with Abstractions},
4407 booktitle = {Proceedings of the European Conference on Object Oriented Programming},
4408 organization= {ECOOP'88},
4409 publisher = {Springer},
4410 volume = 322,
4411 editor = {S. Gjessing and K. Nygaard},
4412 address = {Oslo, Norway},
4413 month = aug,
4414 year = 1988,
4415 pages = {41-54},
4416 note = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
4417}
4418
4419@article{Skillicorn98,
4420 keywords = {parallel models},
4421 contributer = {pabuhr@plg},
4422 author = {David B. Skillicorn and Domenico Talia},
4423 title = {Models and Languages for Parallel Computation},
4424 journal = acmcs,
4425 volume = 30,
4426 number = 2,
4427 month = jun,
4428 year = 1998,
4429 pages = {123-169},
4430}
4431
4432@article{Werther96,
4433 keywords = {C++, language syntax},
4434 contributer = {pabuhr@plg},
4435 author = {Ben Werther and Damian Conway},
4436 title = {A Modest Proposal: {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Resyntaxed},
4437 journal = sigplan,
4438 volume = 31,
4439 number = 11,
4440 month = nov,
4441 year = 1996,
4442 pages = {74-82},
4443}
4444
4445@book{Alexandrescu01,
4446 keywords = {c design-patterns programming},
4447 contributer = {pabuhr@plg},
4448 author = {Andrei Alexandrescu},
4449 title = {Modern C++ Design: Generic Programming and Design Patterns Applied},
4450 publisher = {Addison-Wesley Professional},
4451 address = {Boston},
4452 month = feb,
4453 year = 2001,
4454 isbn = {0201704315},
4455}
4456
4457@book{Tanenbaum92,
4458 keywords = {concurrency, operating systems},
4459 contributer = {pabuhr@plg},
4460 author = {Andrew S. Tanenbaum},
4461 title = {Modern Operating Systems},
4462 publisher = {Prentice-Hall},
4463 address = {Englewood Cliffs},
4464 year = 1992,
4465}
4466
4467@article{Wirth77,
4468 keywords = {modules, coroutines},
4469 contributer = {pabuhr},
4470 author = {Niklaus Wirth},
4471 title = {Modula: a Language for Modular Multiprogramming},
4472 journal = spe,
4473 month = {January--February},
4474 year = 1977,
4475 volume = 7,
4476 number = 1,
4477 pages = {3-35},
4478}
4479
4480@book{Harbison92,
4481 contributer = {mhcoffin},
4482 author = {Samuel P. Harbison},
4483 title = {Modula-3},
4484 publisher = {Prentise Hall, Inc.},
4485 year = {1992},
4486 comment = {This is a textbook for learning Modula-3.}
4487}
4488
4489@techreport{Modula-3:old,
4490 keywords = {Modula-3, inheritance, type extension},
4491 contributer = {gjditchfield@plg},
4492 author = {Luca Cardelli and James Donahue and Lucille Glassman and Mick
4493 Jordan and Bill Kalsow and Greg Nelson},
4494 title = {Modula-3 Report},
4495 institution = {Systems Research Center},
4496 address = {130 Lytton Avenue, Palo Alto, California 94301},
4497 month = aug,
4498 year = 1988,
4499 number = 31
4500}
4501
4502@article{Dueck90,
4503 keywords = {attribute grammars},
4504 contributer = {pabuhr@plg},
4505 author = {Gerald D. P. Dueck and Gordon V. Cormack},
4506 title = {Modular Attribute Grammars},
4507 journal = {The Computer Journal},
4508 month = apr,
4509 year = 1990,
4510 volume = 33,
4511 number = 2,
4512 pages = {164-172},
4513}
4514
4515@article{Yemini85,
4516 keywords = {exception handling},
4517 contributer = {pabuhr@plg},
4518 author = {Shaula Yemini and Daniel M. Berry},
4519 title = {A Modular Verifiable Exception-Handling Mechanism},
4520 journal = toplas,
4521 month = apr,
4522 year = 1985,
4523 volume = 7,
4524 number = 2,
4525 pages = {214-243},
4526}
4527
4528@article{Buhr95b,
4529 keywords = {concurrency, monitors, classification},
4530 contributer = {pabuhr@plg},
4531 author = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
4532 title = {Monitor Classification},
4533 journal = acmcs,
4534 volume = 27,
4535 number = 1,
4536 month = mar,
4537 year = 1995,
4538 pages = {63-107},
4539}
4540
4541@article{Hoare74,
4542 keywords = {monitor},
4543 contributer = {pabuhr@plg},
4544 author = {C. A. R. Hoare},
4545 title = {Monitors: An Operating System Structuring Concept},
4546 journal = cacm,
4547 volume = 17,
4548 number = 10,
4549 month = oct,
4550 year = 1974,
4551 pages = {549-557},
4552 annote = {
4553 }
4554}
4555
4556@inbook{Buhr99a,
4557 keywords = {concurrency, monitors, classification},
4558 contributer = {pabuhr@plg},
4559 author = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
4560 title = {Encyclopedia of Computer Science and Technology},
4561 chapter = {Monitor Taxonomy},
4562 publisher = {Marcel Dekker, Inc},
4563 volume = {40, supplement 25},
4564 year = 1999,
4565 pages = {191-212},
4566}
4567% editor = {Allen Kent and James G. Williams},
4568
4569@manual{MPI,
4570 keywords = {MPI},
4571 contributer = {pabuhr@plg},
4572 title = {MPI: A Message-Passing Interface Standard, Version 3.1},
4573 organization= {Message Passing Interface Forum},
4574 address = {University of Tennessee, Knoxville, Tennessee},
4575 month = jun,
4576 year = 2015,
4577 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}},
4578}
4579
4580@article{multilisp,
4581 keywords = {futures, scheme},
4582 contributer = {gjditchfield@plg},
4583 author = {Halstead, Jr.,Robert H.},
4584 title = {Multilisp: A Language for Concurrent Symbolic Programming},
4585 journal = toplas,
4586 volume = 7,
4587 number = 4,
4588 pages = {501-538},
4589 month = oct,
4590 year = 1985,
4591 comment = {
4592 (future E) begins evaluating the expression E, and
4593 returns a ``future'' representing the value. When evaluation is
4594 finished, the value of E replaces the future. Operations that need
4595 the future's value suspend until it is available. Assignment and
4596 parameter passing do not suspend. Future introduces concurrency
4597 between the calculation of a value and its use; reference to
4598 futures is a synchronization mechanism.
4599
4600 (pcall F A B ... C) concurrently evaluates F, A, B, ... C, and then
4601 applies F to the arguments. pcall can be built from future and a
4602 ``touch'' operation. pcall is included because it may not be easy
4603 to determine that there are no critical sections between the future
4604 expression and the code between the future call and the value's
4605 first use.
4606
4607 (delay E) is like future, but E's process does not begin until its
4608 value is needed. It provides lazy evaluation. Replacing delay
4609 with future would launch an infinite number of processes.
4610 }
4611}
4612
4613@techreport{Bretthauer89,
4614 keywords = {multiple inheritance},
4615 contributer = {pabuhr@plg},
4616 author = {Harry Bretthauer and Thomas Christaller and J\"{u}rgen Kopp},
4617 title = {Multiple vs. Single Inheritance in Object-oriented Programming Languages. What do we really want?},
4618 institution = {Gesellschaft F\"{u}r Mathematik und Datenverarbeitung mbH},
4619 address = {Schlo$\beta$ Birlinghoven, Postfach 12 40, D-5205 Sankt Augustin 1, Deutschland},
4620 number = {Arbeitspapiere der GMD 415},
4621 month = nov,
4622 year = 1989,
4623}
4624
4625@inproceedings{c++:multinh,
4626 keywords = {C++, multiple inheritance, implementation},
4627 contributer = {gjditchfield@plg},
4628 author = {Bjarne Stroustrup},
4629 title = {Multiple Inheritance for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4630 booktitle = {Proceedings of the Spring '87 EUUG Conference},
4631 month = may, year = 1987
4632}
4633
4634@inproceedings{st:mult,
4635 keywords = {smalltalk, multiple inheritance, implementation},
4636 contributer = {gjditchfield@plg},
4637 author = {Daniel H. H. Ingalls and A. H. Borning},
4638 title = {Multiple Inheritance in Smalltalk-80},
4639 booktitle = {Proceedings of the National Conference on Artificial Intelligence},
4640 month = aug,
4641 year = 1982,
4642 pages = {234-238},
4643 organization= {American Association for Artificial Intelligence},
4644 comment = {
4645 Methods are looked up in the current class, the superclasses, the
4646 supersuperclasses, etc. The same method can be inherited
4647 repeatedly, but having different methods for the same message is an
4648 error. Only one copy is made for multiply-inherited fields.
4649
4650 {\tt X.m} is the method m in superclass X. {\tt super.m} is
4651 allowed if there is no ambiguity; {\tt self super.m} replaces {\tt
4652 super m}. {\tt all.m} invokes all inherited versions of m.
4653
4654 Methods on the first-superclass chain are found as usual. Methods
4655 from other superclasses are copied into the class dictionary. An
4656 error method is created if inherited methods conflict. The parser
4657 is changed to allow compound selectors. {\tt Object
4658 messageNotUnderstood} is changed to look for compound selectors and
4659 dynamically add a method with the right name and body to the class.
4660 When methods are edited, they are copied into subclasses and
4661 compound selector versions are deleted, as appropriate.
4662 }
4663}
4664
4665@article{Lamport86I,
4666 keywords = {software solutions, N-thread, mutual exclusions},
4667 contributer = {pabuhr@plg},
4668 author = {Leslie Lamport},
4669 title = {The Mutual Exclusion Problem: Part\,{I}--A Theory of Interprocess Communication},
4670 journal = jacm,
4671 volume = 33,
4672 number = 2,
4673 month = apr,
4674 year = 1986,
4675 pages = {313--326},
4676 numpages = {14},
4677 publisher = {ACM},
4678 address = {New York, NY, USA},
4679}
4680
4681@article{Lamport86II,
4682 keywords = {software solutions, N-thread, mutual exclusions},
4683 contributer = {pabuhr@plg},
4684 author = {Leslie Lamport},
4685 title = {The Mutual Exclusion Problem: Part\,{II}--Statement and Solutions},
4686 journal = jacm,
4687 volume = 33,
4688 number = 2,
4689 month = apr,
4690 year = 1986,
4691 pages = {327--348},
4692 numpages = {22},
4693 publisher = {ACM},
4694 address = {New York, NY, USA},
4695}
4696
4697@article{Burns78,
4698 keywords = {hardware, N-process solution, O(N)},
4699 contributer = {pabuhr@plg},
4700 author = {James E. Burns},
4701 title = {Mutual Exclusion with Linear Waiting Using Binary Shared Variables},
4702 journal = {SIGACT News},
4703 volume = 10,
4704 number = 2,
4705 month = {Summer},
4706 year = 1978,
4707 pages = {42-47},
4708}
4709
4710@inproceedings{Burns80,
4711 keywords = {N-process software solution},
4712 contributer = {pabuhr@plg},
4713 author = {James E. Burns and Nancy A. Lynch},
4714 title = {Mutual Exclusion using Indivisible Reads and Writes},
4715 booktitle = {Proceedings of the 18th Annual Allerton Conference on Communications, Control and Computing, Monticello, Illinois, USA},
4716 year = 1980,
4717 pages = {833-842},
4718 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]},
4719 optnote = {\textsf{http://\-groups.csail.mit.edu/\-tds/\-papers/\-Lynch/\-allertonconf.pdf}},
4720}
4721
4722@article{Peterson81,
4723 keywords = {concurrency, critical section},
4724 contributer = {pabuhr@plg},
4725 author = {G. L. Peterson},
4726 title = {Myths About the Mutual Exclusion Problem},
4727 journal = ipl,
4728 year = 1981,
4729 month = jun,
4730 volume = 12,
4731 number = 3,
4732 pages = {115-116},
4733}
4734
4735% N
4736
4737@techreport{Drepper03,
4738 keywords = {NPTL, threading, 1:1 model},
4739 contributer = {pabuhr@plg},
4740 author = {Ulrich Drepper and Ingo Molnar},
4741 title = {The Native POSIX Thread Library for Linux},
4742 institution = {Red Hat},
4743 year = 2003,
4744 note = {\href{http://www.cs.utexas.edu/~witchel/372/lectures/POSIX_Linux_Threading.pdf}{http://www.cs.utexas.edu/\-$\sim$witchel/\-372/\-lectures/\-POSIX\_Linux\_Threading.pdf}},
4745}
4746
4747@article{Haddon77,
4748 keywords = {monitors, nested monitor calls},
4749 contributer = {pabuhr@plg},
4750 author = {Bruce K. Haddon},
4751 title = {Nested Monitor Calls},
4752 journal = osr,
4753 volume = 11,
4754 number = 4,
4755 month = oct,
4756 year = 1977,
4757 pages = {18-23},
4758}
4759
4760@inproceedings{nesting,
4761 keywords = {},
4762 contributer = {gjditchfield@plg},
4763 author = {Lori A. Clarke and Jack C. Wilenden and Alexander L. Wolf},
4764 title = {Nesting in {Ada} Programs is for the Birds},
4765 booktitle = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada}
4766 Programming Language},
4767 year = 1980,
4768 month = dec, pages = {139-145},
4769 note = {SIGPLAN Notices, v. 15, n. 11},
4770 abstract = {
4771 Given a data abstraction construct like the Ada package and in the
4772 light of current thoughts on programming methodology, we feel that
4773 nesting is an anachronism. In this paper we propose a nest-free
4774 program style for Ada that eschews nested program units and
4775 declarations within blocks and instead heavily utilizes packages
4776 and context specifications as mechanisms for controlling
4777 visibility. We view this proposal as a first step toward the
4778 development of programming methods that exploit the novel language
4779 features available in Ada. Consideration of this proposal's
4780 ramifications for data flow, control flow, and overall program
4781 structure substantiates our contention that a tree structure is
4782 seldom a natural representation of a program and that nesting
4783 therefore generally interferes with program development and
4784 readability.
4785 }
4786}
4787
4788@inproceedings{Buhr88,
4789 keywords = {nested classes, persistence},
4790 contributer = {pabuhr@plg},
4791 author = {P. A. Buhr and C. R. Zarnke},
4792 title = {Nesting in an Object Oriented Language is NOT for the Birds},
4793 booktitle = {Proceedings of the European Conference on Object Oriented Programming},
4794 publisher = {Springer},
4795 volume = 322,
4796 editor = {S. Gjessing and K. Nygaard},
4797 address = {Oslo, Norway},
4798 month = aug,
4799 year = 1988,
4800 pages = {128-145},
4801 note = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
4802}
4803
4804@inproceedings{Thompson90new,
4805 keywords = {Plan 9},
4806 contributer = {pabuhr@plg},
4807 title = {A New {C} Compiler},
4808 author = {Ken Thompson},
4809 booktitle = {Proceedings of the Summer 1990 UKUUG Conference},
4810 year = 1990,
4811 pages = {41-51},
4812 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}},
4813}
4814
4815@article{Trono94,
4816 author = {John A. Trono},
4817 title = {A New Exercise in Concurrency},
4818 journal = {SIGCSE Bulletin},
4819 volume = {26},
4820 number = {3},
4821 month = sep,
4822 year = {1994},
4823 pages = {8-10},
4824 publisher = {ACM},
4825 address = {New York, NY, USA},
4826}
4827
4828@article{Anderson01,
4829 keywords = {software solutions, fast path},
4830 contributer = {pabuhr@plg},
4831 author = {James H. Anderson and Yong-Jik Kim},
4832 title = {A New Fast-Path Mechanism For Mutual Exclusion},
4833 journal = {Distributed Computing},
4834 month = jan,
4835 year = 2001,
4836 volume = 14,
4837 number = 1,
4838 pages = {17-29},
4839}
4840
4841@article{Lamport74,
4842 keywords = {concurrency, N-Process solution, O(N)},
4843 contributer = {pabuhr@plg},
4844 author = {Leslie Lamport},
4845 title = {A New Solution of Dijkstra's Concurrent Programming Problem},
4846 journal = cacm,
4847 month = aug,
4848 year = 1974,
4849 volume = 17,
4850 number = 8,
4851 pages = {453-455},
4852}
4853
4854@book{NeWS,
4855 AUTHOR = {James Gosling and David S. H. Rosenthal and Richelle J. Arden},
4856 TITLE = {The {NeWS} Book},
4857 PUBLISHER = {Springer-Verlag},
4858 YEAR = {1989}
4859}
4860
4861@article{landin,
4862 keywords = {},
4863 contributer = {gjditchfield@plg},
4864 author = {P. J. Landin},
4865 title = {The Next 700 Programing Languages},
4866 journal = cacm,
4867 year = 1966,
4868 volume = 9,
4869 pages = {157-164},
4870}
4871
4872@misc{nginx,
4873 key = {nginx},
4874 author = {{NGINX}},
4875 howpublished= {\href{https://www.nginx.com}{https://\-www.nginx.com}},
4876}
4877
4878@article{Herlihy05,
4879 keywords = {Multiprocessors, concurrent data structures, dynamic data structures, memory management, nonblocking synchronization},
4880 contributer = {pabuhr@plg},
4881 author = {Maurice Herlihy and Victor Luchangco and Paul Martin and Mark Moir},
4882 title = {Nonblocking Memory Management Support for Dynamic-sized Data Structures},
4883 journal = tocs,
4884 volume = 23,
4885 number = 2,
4886 month = may,
4887 year = 2005,
4888 pages = {146-196},
4889 numpages = {51},
4890 publisher = {ACM},
4891 address = {New York, NY, USA},
4892}
4893
4894% O
4895
4896@inproceedings{oop:abcl/1,
4897 keywords = {concurrency, OOPL, futures},
4898 contributer = {gjditchfield@plg},
4899 author = {Akinori Yonezawa and Jean-Pierre Briot and Etsuya Shibayama},
4900 title = {Object-Oriented Concurrent Programming in {ABCL/1}},
4901 crossref = "OOPSLA86",
4902 pages = {258-268},
4903 comment = {
4904 Actions for messages sent to an object are executed concurrently
4905 iff the object has no members. A select construct specifies a set
4906 of message patterns.
4907
4908 Express messages have priority. If an express message arrives
4909 while an ordinary message is being processed, the action for the
4910 ordinary message is suspended or aborted and the action for the
4911 express message is executed. The sender decides which class a
4912 message belongs in. Non-interruptible sections can be defined.
4913
4914 Message sends can be non-blocking, or can block until a reply is
4915 received, at the sender's option. The receiver can continue to
4916 execute after sending the reply.
4917
4918 Replies can send back ``futures'', and put values in them later.
4919 Futures are queues of values, not single values. The caller can
4920 use a ``ready?'' predicate to test for empty queue, or can use
4921 operations to get the first or all queue elements; these operations
4922 block if the queue is empty.
4923 }
4924}
4925
4926@techreport{Schmidt95,
4927 keywords = {ACE, concurrency, library},
4928 contributer = {pabuhr@plg},
4929 author = {Douglas C. Schmidt},
4930 title = {An OO Encapsulation of Lightweight OS Concurrency Mechanisms in the {ACE} Toolkit},
4931 institution = {Washington University in St. Louis},
4932 year = 1995,
4933 number = 31,
4934 note = {{\small\textsf{http://\-www.cs.wustl.edu/\-$\sim$schmidt/\-PDF/\-IPC\_SAP-92.pdf}}},
4935}
4936
4937@inproceedings{OOEx,
4938 keywords = {Exceptions, object-oriented programming languages},
4939 contributer = {gjditchfield@plg},
4940 author = {Christophe Dony},
4941 title = {An Object-oriented Exception Handling System for an Object-oriented Language},
4942 booktitle = {ECOOP '88. European Conference on Object-Oriented Programming},
4943 year = 1988,
4944 pages = {146-161},
4945 editor = {S. Gjessing and K. Nygaard},
4946 organization= {DND, The Norwegian Computer Society},
4947 publisher = {Springer},
4948 comment = {
4949 Objectives:
4950 - Users can define new exceptions.
4951 - Default handlers can be attached to exceptions.
4952 - Handlers can be attached to classes.
4953 - Handlers can be attached to dynamic entities (expressions).
4954 - Exceptions propagate first along the invocation chain.
4955 - Exceptions should be hierarchically organized classes.
4956 - Handlers should take into account the exception hierarchy (i.e.,
4957 should handle raising of sub-exceptions).
4958 The ``exceptional-event'' class has two subclasses. ``Warning''
4959 has a ``resume'' method, and ``error'' has ``exit'' and
4960 ``retry'' methods. Signalling an exception creates an instance
4961 of the exception, whose members are used to pass information
4962 back to the handler. Handlers are instances of class
4963 ``protect-handler'' with a method ``protect {\em expression}'',
4964 or are methods defined for the class or the exception.
4965 }
4966}
4967
4968@article{CommonObjects,
4969 author = {A. Snyder},
4970 title = {Object-Oriented Programming for Common Lisp},
4971 address = {Palo Alto CA},
4972 year = 1985,
4973 publisher = {Software Technology Laboratory, Hewlett-Packard Laboratories},
4974 journal = {Report ATC-85-1},
4975}
4976
4977@book{objective-c,
4978 keywords = {},
4979 author = {Brad J. Cox},
4980 title = {Object-oriented programming; an evolutionary approach},
4981 publisher = {Addison-Wesley},
4982 address = {Boston},
4983 year = 1986
4984}
4985
4986@misc{obj-c-book,
4987 keywords = {objective-c},
4988 contributor = {pabuhr@plg},
4989 key = {Objective-C},
4990 author = {Objective-C},
4991 publisher = {Apple Inc.},
4992 year = 2014,
4993 howpublished= {\href{https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC}{https://\-developer.apple.com/\-library/archive/\-documentation/\-Cocoa/\-Conceptual/\-ProgrammingWithObjectiveC}},
4994 optnote = {Accessed: 2018-03}
4995}
4996
4997@misc{xcode7,
4998 keywords = {objective-c},
4999 contributor = {a3moss@uwaterloo.ca},
5000 key = {Xcode},
5001 title = {{X}code 7 Release Notes},
5002 year = 2015,
5003 howpublished= {\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}},
5004 optnote = {Accessed: 2017-04}
5005}
5006
5007@book{Beta,
5008 keywords = {Beta, object oriented, concurrency, exceptions},
5009 contributer = {pabuhr@plg},
5010 author = {Ole Lehrmann Madsen and Birger M{\o}ller-Pedersen and Kristen Nygaard},
5011 title = {Object-oriented Programming in the {BETA} Programming Language},
5012 publisher = {Addison-Wesley},
5013 address = {Boston},
5014 year = 1993,
5015}
5016
5017@article{Flavors,
5018 author = {D. A. Moon},
5019 title = {Object-Oriented Programming with Flavors},
5020 address = {Portland OR},
5021 month = sep,
5022 year = 1986,
5023 journal = {Proc. ACM Conf. on Object-Oriented Systems, Languages and Applications},
5024}
5025
5026@article{Buhr00b,
5027 keywords = {concurrency, C++, real-time},
5028 contributer = {pabuhr@plg},
5029 author = {Peter A. Buhr and Ashif S. Harji and Philipp E. Lim and Jiongxiong Chen},
5030 title = {Object-Oriented Real-Time Concurrency},
5031 journal = sigplan,
5032 volume = 35,
5033 number = 10,
5034 month = oct,
5035 year = 2000,
5036 pages = {29-46},
5037 note = {OOPSLA'00, Oct. 15--19, 2000, Minneapolis, Minnesota, U.S.A.},
5038}
5039
5040@book{Meyer88,
5041 keywords = {Eiffel},
5042 contributer = {pabuhr@plg},
5043 author = {Bertrand Meyer},
5044 title = {Object-oriented Software Construction},
5045 publisher = {Prentice-Hall},
5046 address = {Englewood Cliffs},
5047 year = {1988},
5048 series = {Prentice-Hall International Series in Computer Science},
5049}
5050
5051@article{objectPascal,
5052 keywords = {objects, modules},
5053 contributer = {gjditchfield@plg},
5054 author = {Larry Tesler},
5055 title = {Object Pascal Report},
5056 journal = {Structured Language World},
5057 year = 1985,
5058 volume = 9,
5059 number = 3,
5060}
5061
5062@misc{obj-c:next,
5063 keywords = {categories, protocols, Objective C},
5064 contributor = {gjditchfield@angus},
5065 author = {NeXT Computer, Inc.},
5066 title = {Objective C Extensions},
5067 howpublished= {On-line documentation in ``NEXTSTEP 3.1 Developer''},
5068 year = 1993
5069}
5070
5071@book{Galletly96,
5072 keywords = {occam},
5073 author = {John Galletly},
5074 title = {{OCCAM} 2: Including {OCCAM} 2.1},
5075 publisher = {{UCL} (University College London) Press},
5076 address = {London},
5077 edition = {2nd},
5078 year = 1996,
5079}
5080
5081@techreport{Morrison88,
5082 keywords = {objects, concurrency, persistence},
5083 contributer = {pabuhr@plg},
5084 author = {R. Morrison and A. L. Brown and R. Carrick and R. Connor and A. Dearle},
5085 title = {On the integration of Object-Oriented and Process-Oriented computation in persistent environments},
5086 institution = {Department of Computational Science, University of St. Andrews, Scotland},
5087 number = {PPRR 57},
5088 month = jan,
5089 year = 1988,
5090}
5091
5092@article{Peterson73,
5093 keywords = {goto, structured programming},
5094 contributer = {pabuhr@plg},
5095 author = {W. W. Peterson and T. Kasami and N. Tokura},
5096 title = {On the Capabilities of While, Repeat, and Exit Statements},
5097 journal = cacm,
5098 month = aug,
5099 year = 1973,
5100 volume = 16,
5101 number = 8,
5102 pages = {503-512}
5103}
5104
5105@article{Baker82,
5106 keywords = {compilation},
5107 contributer = {gjditchfield@plg},
5108 author = {Theodore P. Baker},
5109 title = {A One-Pass Algorithm for Overload Resolution in {Ada}},
5110 journal = toplas,
5111 year = 1982,
5112 month = oct,
5113 volume = 4,
5114 number = 4,
5115 pages = {601-614},
5116 abstract = {
5117 A simple method is presented for detecting ambiguities and finding
5118 the correct interpretations of expressions in the programming
5119 language Ada. Unlike previously reported solutions to this
5120 problem, which require multiple passes over a tree structure, the
5121 method described here operates in one bottom-up pass, during which
5122 a directed acyclic graph is produced. The correctness of this
5123 approach is demonstrated by a brief formal argument.
5124 },
5125 comment = {
5126 See also \cite{D:overload}.
5127 }
5128}
5129
5130@manual{OpenMP,
5131 keywords = {concurrency, openmp, spmd},
5132 contributer = {pabuhr@plg},
5133 key = {OpenMP},
5134 title = {OpenMP Application Program Interface, Version 4.5},
5135 month = nov,
5136 year = 2015,
5137 note = {\href{https://www.openmp.org/wp-content/uploads/openmp-4.5.pdf}{https://\-www.openmp.org/\-wp-content/\-uploads/\-openmp-4.5.pdf}},
5138}
5139
5140@book{Deitel04,
5141 keywords = {concurrency, operating systems},
5142 contributer = {pabuhr@plg},
5143 author = {Harvey M. Deitel and Paul J. Deitel and David R. Choffnes},
5144 title = {Operating Systems},
5145 publisher = {Pearson Prentice-Hall},
5146 address = {Englewood Cliffs},
5147 year = 2004,
5148 edition = {3rd},
5149}
5150
5151@book{Stalling98,
5152 keywords = {concurrency, operating systems},
5153 contributer = {pabuhr@plg},
5154 author = {William Stallings},
5155 title = {Operating Systems: Internals and Design Principles},
5156 publisher = {Prentice-Hall},
5157 address = {Englewood Cliffs},
5158 year = 1998,
5159 edition = {3rd},
5160}
5161
5162@book{Stalling01,
5163 keywords = {concurrency, operating systems},
5164 contributer = {pabuhr@plg},
5165 author = {William Stallings},
5166 title = {Operating Systems: Internals and Design Principles},
5167 publisher = {Prentice-Hall},
5168 address = {Englewood Cliffs},
5169 year = 2001,
5170 edition = {4th},
5171}
5172
5173@book{Silberschatz91,
5174 keywords = {concurrency, operating systems},
5175 contributer = {pabuhr@plg},
5176 author = {Abraham Silberschatz and James L. Peterson and Peter Galvin},
5177 title = {Operating System Concepts},
5178 publisher = {Addision-Wesley},
5179 address = {Boston},
5180 year = 1991,
5181 edition = {3rd},
5182}
5183
5184@book{Tanenbaum87,
5185 keywords = {concurrency, operating systems},
5186 contributer = {pabuhr@plg},
5187 author = {Andrew S. Tanenbaum},
5188 title = {Operating Systems : Design and Implementation},
5189 publisher = {Prentice-Hall},
5190 address = {Englewood Cliffs},
5191 series = {Software Series},
5192 year = 1987,
5193}
5194
5195@book{Hansen73,
5196 keywords = {monitors},
5197 contributer = {pabuhr@plg},
5198 author = {Per {Brinch Hansen}},
5199 title = {Operating System Principles},
5200 publisher = {Prentice-Hall},
5201 address = {Englewood Cliffs},
5202 year = 1973,
5203}
5204
5205@book{Bic03,
5206 keywords = {concurrency, operating systems},
5207 contributer = {pabuhr@plg},
5208 author = {Lubomir F. Bic and Alan C. Shaw},
5209 title = {Operating System Principles},
5210 publisher = {Prentice-Hall},
5211 address = {Englewood Cliffs},
5212 year = 2003,
5213}
5214
5215@techreport{milner88,
5216 keywords = {},
5217 contributer = {gjditchfield@plg},
5218 author = {Robin Milner},
5219 title = {Operational and Algebraic Semantics of Concurrent Processes},
5220 institution = {Laboratory for Foundations of Computer Science},
5221 year = 1988,
5222 address = {Department of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ},
5223 month = feb,
5224 number = {ECS-LFCS-88-46}
5225}
5226
5227@article{Ganzinger80,
5228 contributer = {a3moss@uwaterloo.ca},
5229 author = {Ganzinger, Harald and Ripken, Knut},
5230 title = {Operator Identification in {ADA}: Formal Specification, Complexity, and Concrete Implementation},
5231 journal = {SIGPLAN Notices},
5232 issue_date = {February 1980},
5233 volume = {15},
5234 number = {2},
5235 month = feb,
5236 year = {1980},
5237 issn = {0362-1340},
5238 pages = {30--42},
5239 numpages = {13},
5240 url = {http://doi.acm.org/10.1145/947586.947589},
5241 doi = {10.1145/947586.947589},
5242 publisher = {ACM},
5243 address = {New York, NY, USA}
5244}
5245
5246@article{Ford82,
5247 keywords = {},
5248 contributer = {pabuhr@plg},
5249 author = {G. Ford and B. Hansche},
5250 title = {Optional, Repeatable, and Varying Type Parameters},
5251 journal = sigplan,
5252 volume = 17,
5253 number = 2,
5254 month = feb,
5255 year = 1982,
5256 pages = {41-48},
5257}
5258
5259@manual{pli,
5260 keywords = {PL/I},
5261 contributer = {gjditchfield@plg},
5262 key = {IBM},
5263 title = {{OS} and {DOS} {PL/I} Reference Manual},
5264 organization= {International Business Machines},
5265 edition = {1st},
5266 month = sep,
5267 year = 1981,
5268 note = {Manual GC26-3977-0},
5269}
5270
5271@techreport{D:overload,
5272 keywords = {overload resolution, compilation},
5273 contributer = {gjditchfield@plg},
5274 author = {M. Dausmann et. al.},
5275 title = {Overloading in {Ada}},
5276 institution = {Universitat Karlsruhe},
5277 year = 1979,
5278 number = {23/79},
5279 comment = {
5280 Probably the earliest description of the two-pass (bottom-up,
5281 top-down) overload resolution algorithm. See also
5282 \cite{PW:overload,WS:overload,PDM:overload,Cor:overload,Bak:overload}.
5283 }
5284}
5285
5286@article{EB87,
5287 keywords = {packages, private types, assignment, equality},
5288 contributer = {gjditchfield@plg},
5289 author = {J. Dana Eckart and Richard J. LeBlanc},
5290 title = {Overloading in the {Ada} Language: Is it too restrictive?},
5291 journal = {Computer Languages},
5292 year = 1987,
5293 volume = 12,
5294 number = {3/4},
5295 pages = {163-172},
5296 abstract = {
5297 Packages in the Ada language provide a mechanism for extending the
5298 language through the development of additional data types. Such
5299 types can be better integrated into the language using operator
5300 overloading; however, key limitations prevent new types from being
5301 transparently integrated into the language. Allowing function
5302 names to overload private type names would give a cleaner and
5303 clearer mechanism for building values of these types. Furthermore,
5304 by allowing redefinitions of ``:='' and by making it easier to
5305 overload ``='' for private types, Ada coud be transformed into a
5306 more expressive language.
5307 }
5308}
5309
5310@article{PW:overload,
5311 keywords = {compilation},
5312 contributer = {gjditchfield@plg},
5313 author = {Guido Persch and Georg Winterstein and Manfred Dausman and Sophia Drossopoulou},
5314 title = {Overloading in Preliminary {Ada}},
5315 journal = sigplan,
5316 year = 1980,
5317 month = nov, volume = 15, number = 11, pages = {47-56},
5318 note = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada} Programming Language},
5319 comment = {
5320 The two-pass (bottom-up, then top-down) algorithm, with a proof
5321 that two passes suffice. See also \cite{D:overload}.
5322 }
5323}
5324
5325@article{SR,
5326 keywords = {concurrency, messages, rendezvous},
5327 contributer = {pabuhr@plg},
5328 author = {Gregory R. Andrews and Ronald A. Olsson and Michael Coffin and
5329 Irving Elshoff and Kelvin Nilsen and Titus Purdin and Gregg Townsend},
5330 title = {An Overview of the {SR} Language and Implementation},
5331 journal = toplas,
5332 month = jan,
5333 year = 1988,
5334 volume = 10,
5335 number = 1,
5336 pages = {51-86},
5337}
5338
5339% P
5340
5341@article{Andrews91,
5342 keywords = {general concurrency},
5343 contributer = {pabuhr@plg},
5344 author = {Gregory R. Andrews},
5345 title = {Paradigms for Process Interaction in Distributed Programs},
5346 journal = acmcs,
5347 volume = 23,
5348 number = 1,
5349 month = mar,
5350 year = 1991,
5351 pages = {49-90},
5352}
5353
5354@book{PPC++,
5355 keywords = {concurrency, parallel, distributed, C++},
5356 contributer = {pabuhr@plg},
5357 editor = {Gregory V. Wilson and Paul Lu},
5358 title = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5359 publisher = {MIT Press},
5360 series = {Scientific and Engineering Computation Series},
5361 year = 1996,
5362 pages = {1-42},
5363}
5364
5365@incollection{Stroustrup96,
5366 keywords = {concurrency, C++},
5367 contributer = {pabuhr@plg},
5368 author = {Bjarne Stroustrup},
5369 title = {A Perspective on Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5370 editor = {Gregory V. Wilson and Paul Lu},
5371 booktitle = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5372 publisher = {MIT Press},
5373 series = {Scientific and Engineering Computation Series},
5374 year = 1996,
5375 pages = {xxvi-xxvii},
5376}
5377
5378@incollection{Yang96b,
5379 keywords = {concurrency, C++},
5380 contributer = {pabuhr@plg},
5381 author = {Shelby X. Yang and Dennis Gannon and Peter Beckman and Jacob Gotwals and Neelakantan Sundaresan},
5382 editor = {Gregory V. Wilson and Paul Lu},
5383 title = {p{C}++},
5384 booktitle = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5385 publisher = {MIT Press},
5386 address = {Cambridge},
5387 series = {Scientific and Engineering Computation Series},
5388 pages = {507-546},
5389 year = 1996,
5390}
5391
5392@article{goguen84,
5393 keywords = {},
5394 contributer = {gjditchfield@plg},
5395 author = {Goseph A. Goguen},
5396 title = {Parameterized Programming},
5397 journal = ieeese,
5398 year = 1984,
5399 month = sep, volume = "SE-10", number = 5, pages = {528-543},
5400 abstract = {
5401 Parameterized programming is a powerful technique for the reliable
5402 reuse of software. In this technique, modules are parameterized
5403 over very general interfaces that describe what properties of an
5404 environment are required for the module to work correctly.
5405 Reusability is enhanced by the flexibility of the parameterization
5406 mechanism proposed here. Reliability is further enhanced by
5407 permitting interface requirements to include more than purely
5408 syntactic information. This paper introduces three new ideas that
5409 seem especially useful in supporting parameterized programming: 1)
5410 {\em theories}, which declare global properties of program modules
5411 and interfaces; 2) {\em views}, which connect theories with program
5412 modules in an elegant way; and 3) {\em module expressions}, a kind
5413 of general structured program transformation which produces new
5414 modules by modifying and combining existing modules. Although
5415 these ideas are illustrated with some simple examples in the OBJ
5416 programming language, they should also be taken as proposals for an
5417 Ada library system, for adding modules to Prolog, and as
5418 considerations for future language design efforts. OBJ is an
5419 ultra-high level programming language, based upon rewrite rules,
5420 that incorporates these ideas, and many others from modern
5421 programming methodology.
5422 }
5423}
5424
5425@inproceedings{c++:templates,
5426 author = {Bjarne Stroustrup},
5427 contributer = {gjditchfield@plg},
5428 title = {Parameterized Types for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5429 booktitle = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
5430 organization= {USENIX Association},
5431 year = 1988, pages = {1-18}
5432}
5433
5434@inproceedings{Boehm85,
5435 keywords = {second-order unification},
5436 contributer = {gjditchfield@plg},
5437 author = {Hans-J. Boehm},
5438 title = {Partial Polymorphic Type Inference is Undecidable},
5439 booktitle = {26th Annual Symposium on Foundations of Computer Science},
5440 year = 1985,
5441 pages = {339-345},
5442 organization= {IEEE Computer Society},
5443 publisher = {IEEE Computer Society Press},
5444 address = {1730 Massachusetts Avenue, N.W, Washington, D.C. 20036-1903},
5445 summary = {
5446 Given a base typed lambda calculus with function types, type
5447 abstractions, and a recursive expression \(\mbox{fix } x:t.e\),
5448 then type inference for the partially typed language
5449 \begin{eqnarray}
5450 \lambda x:\tau.e &\Rightarrow& \lambda x.e \\
5451 \mbox{fix } x:\tau.e &\Rightarrow& \mbox{fix } x.e \\
5452 e \tau &\Rightarrow& e ?
5453 \end{eqnarray}
5454 is undecidable.
5455 }
5456}
5457
5458@book{Pascal,
5459 keywords = {Pascal},
5460 contributer = {pabuhr@plg},
5461 author = {Kathleen Jensen and Niklaus Wirth},
5462 title = {{P}ascal User Manual and Report, ISO Pascal Standard},
5463 publisher = {Springer--Verlag},
5464 year = 1991,
5465 edition = {4th},
5466 note = {Revised by Andrew B. Mickel and James F. Miner}
5467}
5468
5469@book{Pascal:old,
5470 keywords = {Pascal},
5471 contributer = {pabuhr@plg},
5472 author = {Kathleen Jensen and Niklaus Wirth},
5473 title = {{P}ascal User Manual and Report},
5474 publisher = {Springer--Verlag},
5475 year = 1975,
5476 edition = {1st},
5477}
5478
5479@article{Turba85,
5480 keywords = {Pascal, exception handling, inheritance},
5481 contributer = {pabuhr@plg},
5482 author = {Thomas N. Turba},
5483 title = {The {P}ascal Exception Handling Proposal},
5484 journal = sigplan,
5485 volume = 20,
5486 number = 8,
5487 month = aug,
5488 year = 1985,
5489 pages = {93-98},
5490}
5491
5492@manual{Pascal/VS,
5493 keywords = {PL/I},
5494 contributer = {pabuhr@plg},
5495 key = {IBM},
5496 title = {{P}ascal/{VS} Language Reference Manual},
5497 organization= {International Business Machines},
5498 edition = {1st},
5499 year = 1981,
5500 note = {Manual SH20-6168-1},
5501}
5502
5503@misc{perf,
5504 contributer = {pabuhr@plg},
5505 key = {perf},
5506 author = {perf},
5507 howpublished= {\href{https://perf.wiki.kernel.org/index.php/Tutorial}{https://\-perf.wiki.kernel.org/\-index.php/\-Tutorial}},
5508}
5509
5510@misc{Verch12,
5511 contributer = {pabuhr@plg},
5512 author = {Shaun Verch},
5513 title = {Performance Analysis of 64-Bit Capriccio},
5514 month = may,
5515 year = 2012,
5516 howpublished= {\href{http://cs.brown.edu/research/pubs/theses/masters/2012/verch.pdf}{http://cs.brown.edu/\-research/\-pubs/\-theses/\-masters/\-2012/\-verch.pdf}},
5517 optnote = {Accessed: 2013-10-4}
5518}
5519
5520@article{Anderson90,
5521 keywords = {spin locks, back off, performance},
5522 contributer = {pabuhr@plg},
5523 author = {Thomas E. Anderson},
5524 title = {The Performance of Spin Lock Alternatives for Shared-Memory Multiprocessors},
5525 journal = ieeepds,
5526 month = jan,
5527 year = 1990,
5528 volume = 1,
5529 number = 1,
5530 pages = {6-16},
5531}
5532
5533@inproceedings{Conchon07,
5534 keywords = {persistent array, union-find},
5535 contributer = {a3moss@uwaterloo.ca},
5536 title = {A persistent union-find data structure},
5537 author = {Conchon, Sylvain and Filli{\^a}tre, Jean-Christophe},
5538 booktitle = {Proceedings of the 2007 workshop on Workshop on ML},
5539 pages = {37--46},
5540 year = {2007},
5541 organization= {ACM}
5542}
5543
5544@article{poly,
5545 keywords = {Poly, Standard ML, Russell, persistence},
5546 contributer = {gjditchfield@plg},
5547 author = {David C. J. Matthews},
5548 title = {Poly Manual},
5549 journal = sigplan,
5550 month = sep, year = 1985,
5551 volume = 20, number = 9, pages = {52-76}
5552}
5553
5554@techreport{Atkinson87b,
5555 keywords = {naming, persistence},
5556 contributer = {pabuhr@plg},
5557 author = {M. P. Atkinson and R. Morrison},
5558 title = {Polymorphic Names and Iterations},
5559 institution = {Universities of Glasgow and St. Andrews, Scotland},
5560 number = {PPRR-53-87},
5561 month = nov,
5562 year = 1987,
5563}
5564
5565@book{Harland,
5566 keywords = {},
5567 author = {David M. Harland},
5568 title = {Polymorphic Programming Languages: Design and Implementation},
5569 publisher = {Ellis Horwood},
5570 year = 1984,
5571 series = {Computers and their Applications},
5572 address = {Market Cross House, Cooper Street, Chichester, West Sussex, PO19 1EB, England},
5573 summary = {
5574 The principles of Procedural Abstraction, Data Type Completeness,
5575 Declaration Correspondence, and Orthogonality are ruthlessly applied
5576 to the design of a polymorphic language.
5577 }
5578}
5579
5580@unpublished{poa,
5581 keywords = {Force N, type inference, reusability, transcendance},
5582 contributer = {gjditchfield@plg},
5583 author = {G. V. Cormack and A. K. Wright},
5584 title = {Polymorphism, Overloading, and Abstraction},
5585 note = {personal communication}
5586}
5587
5588@inproceedings{forceone:impl,
5589 keywords = {Parametric polymorphism, ForceOne},
5590 contributer = {gjditchfield@plg},
5591 author = {G. V. Cormack and A. K. Wright},
5592 title = {Polymorphism in the Compiled Language {ForceOne}},
5593 booktitle = {Proceedings of the 20th Hawaii International Conference on Systems Sciences},
5594 month = jan,
5595 year = 1987,
5596 pages = {284-292},
5597}
5598
5599@incollection{POOL-T,
5600 keywords = {objects, concurrency},
5601 contributer = {pabuhr@plg},
5602 author = {Pierre America},
5603 title = {POOL-T: A Parallel Object-Oriented Language},
5604 booktitle = {Object-Oriented Concurrent Programming},
5605 publisher = {The MIT Press},
5606 year = 1987,
5607 pages = {199-220},
5608 editor = {Akinori Yonezawa and Mario Tokoro}
5609}
5610
5611@article{Hardgrave76,
5612 keywords = {positional, keyword, parameters, arguments},
5613 contributer = {pabuhr@plg},
5614 author = {W. T. Hardgrave},
5615 title = {Positional versus Keyword Parameter Communication in Programming Languages},
5616 journal = sigplan,
5617 volume = 11,
5618 number = 5,
5619 month = may,
5620 year = 1976,
5621 pages = {52-58},
5622}
5623
5624@inproceedings{Rafkind09,
5625 keywords = {accurate, C programming language, conservative, garbage collection, precise},
5626 contributer = {pabuhr@plg},
5627 author = {Rafkind, Jon and Wick, Adam and Regehr, John and Flatt, Matthew},
5628 title = {Precise Garbage Collection for C},
5629 booktitle = {Proceedings of the 2009 International Symposium on Memory Management},
5630 series = {ISMM '09},
5631 year = {2009},
5632 location = {Dublin, Ireland},
5633 pages = {39-48},
5634 publisher = {ACM},
5635 address = {New York, NY, USA},
5636}
5637
5638@article{Ada:preliminary,
5639 keywords = {Ada},
5640 contributer = {pabuhr@plg},
5641 author = {Jean D. Ichbiah and Bernd Krieg-Brueckner and Brian A. Wichmann
5642 and Henry F. Ledgard and Jean-Claude Heliard and Jean-Raymond Abrial
5643 and John G. P. Barnes and Olivier Roubine},
5644 title = {Preliminary {Ada} Reference Manual},
5645 journal = sigplan,
5646 volume = 14,
5647 number = 6,
5648 month = jun,
5649 year = 1979,
5650 note = {Part A},
5651}
5652
5653@techreport{Forsythe,
5654 author = {John C. Reynolds},
5655 title = {Preliminary Design of the Programming Language {Forsythe}},
5656 institution = {Carnegie Mellon University},
5657 number = {CMU-CS-88-159},
5658 month = jun,
5659 year = 1988,
5660}
5661
5662@article{PRESTO,
5663 keywords = {concurrency, threads},
5664 contributer = {dgharriss@plg},
5665 author = {B. N. Bershad and E. D. Lazowska and H. M. Levy},
5666 title = {{PRESTO}: A System for Object-oriented Parallel Programming},
5667 journal = spe,
5668 volume = 18,
5669 number = 8,
5670 month = aug,
5671 year = 1988,
5672 pages = {713-732}
5673}
5674
5675@book{Ben-Ari82,
5676 keywords = {concurrency, parallel, programming languages},
5677 contributer = {pabuhr@plg},
5678 author = {Mordechai Ben-Ari},
5679 title = {Principles of Concurrent Programming},
5680 publisher = {Prentice-Hall International},
5681 address = {Englewood Cliffs},
5682 year = 1982,
5683}
5684
5685@book{Tennent81,
5686 author = {R. D. Tennent},
5687 title = {Principles of Programming Languages},
5688 publisher = {Prentice-Hall International},
5689 address = {Englewood Cliffs},
5690 year = 1981,
5691 series = {Series in Computer Science}
5692}
5693
5694@article{Lister77,
5695 keywords = {monitors, nested monitor calls},
5696 contributer = {pabuhr@plg},
5697 author = {Andrew Lister},
5698 title = {The Problem of Nested Monitor Calls},
5699 journal = osr,
5700 volume = 11,
5701 number = 3,
5702 month = jul,
5703 year = 1977,
5704 pages = {5-7},
5705}
5706
5707@article{psa:persistence,
5708 keywords = {persistence, first-class procedures, closure, PS-Algol, Abstract Data Types},
5709 contributer = {gjditchfield@plg},
5710 author = {Malcolm P. Atkinson and Ronald Morrison},
5711 title = {Procedures as Persistent Data Objects},
5712 journal = toplas,
5713 volume = {7}, number = {4},
5714 pages = {539-559},
5715 month = oct, year = 1985,
5716 comment = {
5717 PS-Algol has ``structures'', accessible only through ``pntrs''.
5718 Pntrs can refer to any type of structure. Field references involve
5719 a run-time check. This, plus first-class procedures, can simulate
5720 abstract data types. Procedure variables operating on pntrs
5721 simulate ADT operations. A block defines a structure to implement
5722 the ADT, and assigns procedures to the variables. Functions
5723 returning structures containing procedures simulate multiple
5724 implementations and parameterized ADTs.
5725
5726 An outer procedure that returns a procedure that contains
5727 (non-local) references to the outer procedure's parameters
5728 implements partial evaluation.
5729
5730 Modules can be simulated like ADT's. The module itself is a
5731 structure instance that is placed in persistent storage, and the
5732 module is imported by fetching it from the persistent store.
5733 Multiple instances of modules are easy. Installation of new
5734 versions can be done by replacing the version in the database.
5735 }
5736}
5737
5738@article{Procol89,
5739 keywords = {active objects, object-oriented languages, object-based languages, explicit per-object protocol},
5740 contributer = {akgoel@plg},
5741 author = {Jan van den Bos and Chris Laffra},
5742 title = {PROCOL: A Parallel Object Language with Protocols},
5743 journal = sigplan,
5744 volume = 24,
5745 number = 10,
5746 month = oct,
5747 year = 1989,
5748 pages = {95-102},
5749 note = {Proceedings of the OOPSLA'89 Conference, Oct. 1--6, 1989, New Orleans, Lousiana},
5750 abstract = {},
5751}
5752
5753@inproceedings{Buhr98,
5754 keywords = {profiling, monitoring, visualization},
5755 contributer = {pabuhr@plg},
5756 author = {Peter A. Buhr and Robert Denda},
5757 title = {{$\mu$Profiler} : Profiling User-Level Threads in a Shared-Memory Programming Environment},
5758 booktitle = {Proc. of 2nd Inter. Symp. on Computing in Object-Oriented Parallel Environments},
5759 series = {Lecture Notes in Computer Science},
5760 publisher = {Springer-Verlag},
5761 volume = 1505,
5762 opteditor = {Dennis Caromel and Rodney R. Oldehoeft and Marydell Tholburn},
5763 address = {Santa Fe, New Mexico, U.S.A.},
5764 month = dec,
5765 year = 1998,
5766 pages = {159-166},
5767}
5768
5769@book{PowerPC,
5770 key = {PowerPC processor},
5771 title = {Programming Environments Manual for 32-Bit Implementations of the PowerPC ArchitectureARM Architecture},
5772 publisher = {Freescale Semiconductor},
5773 volume = {MPCFPE32B},
5774 edition = {Rev. 3},
5775 month = 9,
5776 year = 2005,
5777}
5778
5779@book{Butenhof97,
5780 keywords = {PThreads, concurrency},
5781 contributer = {pabuhr@plg},
5782 author = {David R. Butenhof},
5783 title = {Programming with {POSIX} Threads},
5784 publisher = {Addison-Wesley},
5785 address = {Boston},
5786 series = {Professional Computing},
5787 year = 1997,
5788}
5789
5790@book{SETL,
5791 keywords = {SETL},
5792 contributer = {pabuhr@plg},
5793 author = {J. T. Schwartz and R. B. K. Dewar and E. Dubinsky and E. Schonberg},
5794 title = {Programming with Sets: An Introduction to {SETL}},
5795 publisher = {Springer},
5796 address = {New York, NY, USA},
5797 year = 1986,
5798}
5799
5800@book{Genuys68,
5801 keywords = {contains Dijkstra's Cooperating Sequential Processes},
5802 contributer = {pabuhr@plg},
5803 editor = {F. Genuys},
5804 title = {Programming Languages},
5805 publisher = {Academic Press},
5806 address = {London, New York},
5807 year = 1968,
5808 note = {NATO Advanced Study Institute, Villard-de-Lans, 1966}
5809}
5810
5811@manual{ANSI99:C,
5812 keywords = {ANSI C 99},
5813 contributer = {pabuhr@plg},
5814 title = {Programming Languages -- {C}},
5815 organization= {International Standard ISO/IEC 9899:1999 (E)},
5816 publisher = {American National Standards Institute},
5817 address = {www.ansi.org},
5818 year = 1999,
5819}
5820
5821@manual{ANSI98:C++,
5822 keywords = {ANSI C++ 98},
5823 contributer = {pabuhr@plg},
5824 key = {C++98},
5825 title = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language ISO/IEC 14882:1998},
5826 edition = {1st},
5827 publisher = {International Standard Organization},
5828 address = {\href{https://www.iso.org/standard/25845.html}{https://\-www.iso.org/\-standard/\-25845.html}},
5829 year = 1998,
5830}
5831
5832@manual{C++14,
5833 keywords = {ISO/IEC C++ 14},
5834 contributer = {pabuhr@plg},
5835 key = {C++14},
5836 title = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language ISO/IEC 14882:2014},
5837 edition = {4th},
5838 publisher = {International Standard Organization},
5839 address = {\href{https://www.iso.org/standard/64029.html}{https://\-www.iso.org/\-standard/\-64029.html}},
5840 year = 2014,
5841}
5842
5843@manual{MS:VisualC++,
5844 keywords = {Microsoft Visual C++},
5845 contributer = {pabuhr@plg},
5846 title = {Microsoft Visual {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} .NET Language Reference},
5847 organization= {Microsoft Corporation},
5848 year = 2002,
5849 note = {Microsoft Press, Redmond, Washington, U.S.A.},
5850}
5851
5852@article{HasselBring00,
5853 keywords = {concurrency, prototyping},
5854 contributer = {pabuhr@plg},
5855 author = {Wilhelm Hasselbring},
5856 title = {Programming Languages and Systems for Prototyping Concurrent Applications},
5857 journal = acmcs,
5858 volume = 32,
5859 number = 1,
5860 month = mar,
5861 year = 2000,
5862 pages = {43-79},
5863}
5864
5865@article{LLgen,
5866 keywords = {ll(1), parser generator, separate compilation},
5867 contributer = {gjditchfield@plg},
5868 author = {Dick Grune and Ceriel J. J. Jacobs},
5869 title = {A Programmer-friendly LL(1) Parser Generator},
5870 journal = spe,
5871 month = jan, year = 1988,
5872 volume = 18, number = 1, pages = {29-33},
5873 comment = {
5874 LLgen generates C-language recursive-descent parsers. The input
5875 contains procedure-like rules with alternation and repetition
5876 constructs on the right, and (typed) parameters on the left.
5877 C actions are specified between items in the right side.
5878 Alternation and repetition (reduce and shift) conflicts can be
5879 resolved statically or at run time.
5880
5881 A grammar can be specified in several files. All files must be
5882 submitted to LLgen at once, but if the C file generated is no
5883 different from the old version, then the old version is not
5884 replaced and hence need not be recompiled, which saves lots of
5885 time.
5886
5887 When an incorrect token is found, the automatic error recovery
5888 algorithm discards tokens until an ``acceptable'' token is found;
5889 if the acceptable token is not correct, a correct one is inserted.
5890 }
5891}
5892
5893@techreport{russell,
5894 keywords = {Russell},
5895 contributer = {gjditchfield@plg},
5896 author = {H. Boehm and A. Demers and J. Donahue},
5897 title = {A Programmer's Introduction to Russell},
5898 institution = {Rice University},
5899 year = 1985,
5900 number = {85-16}
5901}
5902
5903@techreport{PDM89,
5904 keywords = {existential types, universal types},
5905 contributer = {gjditchfield@plg},
5906 author = {Benjamin Pierce and Scott Dietzen and Spiro Michaylov},
5907 title = {Programming in Higher-Order Typed Lambda Calculi},
5908 institution = {School of Computer Science, Carnegie Mellon University},
5909 year = 1989,
5910 address = {Pittsburg, PA 15213-3890},
5911 month = mar, number = {CMU-CS-89-111},
5912 abstract = {
5913 This tutorial presents a hierarchy of increasingly powerful
5914 languages, beginning with Church's simply typed
5915 \(\lambda\)-calculus (\(F_1\)) and the second-order polymorphic
5916 \(\lambda\)-calculus of Girard and Reynolds, and culminating in a
5917 fragment of Girard's \(\omega\)-order polymorphic
5918 \(\lambda\)-calculus (\(F_\omega\)). Our focus throughout is on
5919 the unusual style of programming that arises in these languages,
5920 where all functions are total and the primary control construct is
5921 iteration rather than general recursion.
5922 }
5923}
5924
5925@book{Modula-2,
5926 keywords = {modules, coroutines},
5927 contributer = {pabuhr},
5928 author = {Niklaus Wirth},
5929 title = {Programming in Modula-2},
5930 publisher = {Springer},
5931 address = {New York},
5932 year = 1988,
5933 edition = {4th},
5934 series = {Texts and Monographs in Computer Science},
5935}
5936
5937@manual{Ada,
5938 keywords = {Ada, packages, tasks, exceptions},
5939 contributer = {pabuhr@plg},
5940 title = {The Programming Language {Ada}: Reference Manual},
5941 author = {Ada},
5942 organization= {United States Department of Defense},
5943 edition = {{ANSI/MIL-STD-1815A-1983}},
5944 month = feb,
5945 year = 1983,
5946 note = {Springer, New York},
5947}
5948
5949@manual{ada:old,
5950 keywords = {Ada, packages, tasks, exceptions},
5951 contributer = {gjditchfield@plg},
5952 title = {The Programming Language {Ada}: Reference Manual},
5953 organization= {United States Department of Defense},
5954 publisher = {Springer},
5955 year = 1981
5956}
5957
5958@book{Ghezzi,
5959 keywords = {},
5960 author = {Carlo Ghezzi and Mehdi Jazayeri},
5961 title = {Programming Language Concepts},
5962 publisher = {Wiley},
5963 year = 1982
5964}
5965
5966@article{ConcurrentPascal,
5967 keywords = {Concurrent Pascal},
5968 contributer = {pabuhr@plg},
5969 author = {Per {Brinch Hansen}},
5970 title = {The Programming Language Concurrent Pascal},
5971 journal = ieeese,
5972 volume = 2,
5973 month = jun,
5974 year = 1975,
5975 pages = {199-206}
5976}
5977
5978@phdthesis{Buhr85:thesis,
5979 keywords = {},
5980 contributer = {pabuhr@plg},
5981 author = {P. A. Buhr},
5982 title = {A Programming System},
5983 school = {University of Manitoba},
5984 year = {1985}
5985}
5986
5987@techreport{pierce91,
5988 keywords = {typed lambda calculus},
5989 contributer = {gjditchfield@plg},
5990 author = {Benjamin C. Pierce},
5991 title = {Programming with Intersection Types, Union Types, and Polymorphism},
5992 institution = {Carnegie Mellon University},
5993 year = 1991,
5994 month = feb, number = "CMU-CS-91-106",
5995 annote = {
5996 Discusses a typed lambda calculus with
5997 \begin{itemize}
5998 \item
5999 Intersection types \(\tau = \tau_1\wedge\tau_2\) with \(\tau \le
6000 \tau_i\) for all \(i\).
6001 \item
6002 Union types \(\tau = \tau_1\vee\tau_2\) with \(\tau_i \le \tau\),
6003 and with implicit coercions from \(tau_i\) to \(\tau\). Only
6004 operations valid for both element types can be applied to the
6005 union; there are no projections. Union types are to variant
6006 records as set union is to disjoint set union.
6007 \item
6008 Function types and universal quantification, with subtyping rules.
6009 When functions and arguments intersections, the result of
6010 application is the intersection of all valid combinations.
6011 \item
6012 Distribution rules for combinations of types.
6013 \item
6014 "Union elimination": "case \(x = e\) of \(e'\)", where \(e\) is a
6015 union, has type \(\tau\) if \(e'\) has that type with \(x\) having
6016 every element type of the union.
6017 \item
6018 "Finitary quantification": "for \(t\) in \(\tau_1,\ldots,\tau_n.e\)"
6019 typechecks \(e\) with \(t\) bound to each choice, and intersects
6020 the results.
6021 \end{itemize}
6022
6023 Examples include: type of "natural" numbers, treated as a union of
6024 "zero" and "positive" types; default parameters, faked by using an
6025 argument that is an intersection of a data type and a function
6026 taking an explicit argument.
6027
6028 Unions can be mostly faked, according to Mitchell:
6029 \[\tau_1\vee\tau_2 \equiv
6030 \forall\tau.(\tau_1\on\tau)\wedge(\tau_2\on\tau)\]
6031 }
6032}
6033
6034@article{Moore75,
6035 keywords = {approximation methods, integrated circuits},
6036 contributer = {pabuhr@plg},
6037 author = {Gordon E. Moore},
6038 title = {Progress in Digital Integrated Electronics},
6039 journal = {Technical Digest, International Electron Devices Meeting, IEEE},
6040 year = 1975,
6041 pages = {11-13},
6042}
6043
6044@article{promises,
6045 keywords = {futures, Argus, call streams, rpc},
6046 contributer = {gjditchfield@plg},
6047 author = {Barbara Liskov and Liuba Shrira},
6048 title = {Promises: Linguistic Support for Efficient Asynchronous Procedure Calls in Distributed Systems},
6049 journal = sigplan,
6050 year = 1988,
6051 month = jul, volume = 23, number = 7, pages = {260-267},
6052 note = {Proceedings of the SIGPLAN '88 Conference on Programming Language
6053 Design and Implementation},
6054 abstract = {
6055 This paper deals with the integration of an efficient asynchronous
6056 remote procedure call mechanism into a programming language. It
6057 describes a new data type called a {\em promise} that was designed
6058 to support asynchronous calls. Promises allow a caller to run in
6059 parallel with a call and to pick up the results of the call,
6060 including any exceptions it raises, in a convenient and type-safe
6061 manner. The paper also discusses efficient composition of
6062 sequences of asynchronous calls to different locations in a
6063 network.
6064 }
6065}
6066
6067@article{Cook89,
6068 keywords = {},
6069 contributer = {gjditchfield@plg},
6070 author = {W. R. Cook},
6071 title = {A Proposal for Making {Eiffel} Type-safe},
6072 journal = {The Computer Journal},
6073 year = 1989,
6074 volume = 32, number = 4, pages = {305-311},
6075 abstract = {
6076
6077 }
6078}
6079
6080@inproceedings{Foxall79,
6081 keywords = {},
6082 contributer = {pabuhr@plg},
6083 author = {D. G. Foxall and M. L. Joliat and R. F. Kamel and J. J. Miceli},
6084 title = {{PROTEL}: A High Level Language for Telephony},
6085 booktitle = {Proceedings 3rd International Computer Software and Applications Conference},
6086 month = nov,
6087 year = 1979,
6088 pages = {193-197},
6089}
6090
6091@techreport{PS-Algol,
6092 keywords = {algol, persistence},
6093 contributer = {pabuhr@plg},
6094 key = {PS-Algol},
6095 title = {The {PS-Algol} Reference Manual, 4th Ed.},
6096 author = {},
6097 institution = {University of Glasgow and St. Andrews, Scotland},
6098 number = {PPRR 12},
6099 month = jun,
6100 year = 1987,
6101}
6102
6103@manual{Python,
6104 keywords = {Python},
6105 contributer = {pabuhr@plg},
6106 title = {Python Reference Manual, Release 2.5},
6107 author = {Guido van Rossum},
6108 organization= {Python Software Foundation},
6109 month = sep,
6110 year = 2006,
6111 note = {Fred L. Drake, Jr., editor},
6112}
6113
6114% Q
6115
6116@article{Grossman06,
6117 keywords = {Cyclone, existential types, polymorphism, type variables},
6118 contributer = {a3moss@plg},
6119 author = {Dan Grossman},
6120 title = {Quantified Types in an Imperative Language},
6121 journal = toplas,
6122 issue_date = {May 2006},
6123 volume = {28},
6124 number = {3},
6125 month = may,
6126 year = 2006,
6127 issn = {0164-0925},
6128 pages = {429-475},
6129 url = {http://doi.acm.org/10.1145/1133651.1133653},
6130 doi = {10.1145/1133651.1133653},
6131 acmid = {1133653},
6132 publisher = {ACM},
6133 address = {New York, NY, USA},
6134}
6135
6136@article{Nakaike15,
6137 keywords = {hardware transactional memory},
6138 contributer = {pabuhr@plg},
6139 author = {Nakaike, Takuya and Odaira, Rei and Gaudet, Matthew and Michael, Maged M. and Tomari, Hisanobu},
6140 title = {Quantitative Comparison of Hardware Transactional Memory for Blue Gene/Q, zEnterprise {EC12}, {I}ntel Core, and {POWER8}},
6141 journal = {SIGARCH Comput. Archit. News},
6142 volume = {43},
6143 number = {3},
6144 month = jun,
6145 year = {2015},
6146 pages = {144--157},
6147 publisher = {ACM},
6148 address = {New York, NY, USA},
6149}
6150
6151% R
6152
6153@article{Ada:rationale:preliminary,
6154 keywords = {Ada},
6155 contributer = {pabuhr@plg},
6156 author = {J. D. Ichbiah and J. C. Heliard and O. Roubine and
6157 J. G. P. Barnes and B. Krieg-Brueckner and B. A. Wichmann},
6158 title = {Rationale for the Design of the {ADA} Programming Language},
6159 journal = sigplan,
6160 volume = 14,
6161 number = 6,
6162 month = jun,
6163 year = 1979,
6164 note = {Part B},
6165}
6166
6167@book{Ada:rationale,
6168 keywords = {Ada},
6169 contributer = {pabuhr@plg},
6170 author = {Jean D. Ichbiah and John G. P. Barnes and Robert J. Firth and Mike Woodger},
6171 title = {Rationale for the Design of the {ADA} Programming Language},
6172 publisher = {Under Secretary of Defense, Research and Engineering},
6173 year = 1986,
6174 address = {Ada Joint Program Office, OUSDRE(R\&AT), The Pentagon, Washington, D. C., 20301, U.S.A.},
6175}
6176
6177@manual{Ada95,
6178 keywords = {Ada},
6179 contributer = {pabuhr@plg},
6180 title = {{A}da Reference Manual},
6181 edition = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
6182 organization= {Intermetrics, Inc.},
6183 month = dec,
6184 year = 1995,
6185 note = {Language and Standards Libraries}
6186}
6187
6188@manual{Ada12,
6189 keywords = {ISO/IEC Ada},
6190 contributer = {pabuhr@plg},
6191 author = {Ada12},
6192 title = {Programming languages -- {Ada} ISO/IEC 8652:2012},
6193 edition = {3rd},
6194 publisher = {International Standard Organization},
6195 address = {\href{https://www.iso.org/standard/61507.html}{https://\-www.iso.org/\-standard/\-61507.html}},
6196 year = 2012,
6197}
6198
6199@manual{Ada95:annotated,
6200 keywords = {Ada},
6201 contributer = {pabuhr@plg},
6202 title = {Annotated {A}da Reference Manual},
6203 edition = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
6204 organization = {Intermetrics, Inc.},
6205 month = dec,
6206 year = 1995,
6207 note = {Language and Standards Libraries}
6208}
6209
6210@book{JavaRT00,
6211 keywords = {real time, draft},
6212 contributer = {pabuhr@plg},
6213 author = {Greg Bollella and Ben Brosgol and Peter Dibble and Steve Furr and James Gosling and David Hardin and Mark Turnbull},
6214 title = {The Real-Time Specification for {J}ava},
6215 series = {The Real-Time for Java Expert Group, {\small\textsf{http://\-www.rtj.org}}},
6216 publisher = {Addison-Wesley},
6217 address = {Boston},
6218 year = 2000,
6219}
6220
6221@manual{JavaRT99,
6222 organization= {Real Time for Java Experts Group},
6223 address = {{\small\textsf{http://\-www.rtj.org}}},
6224 month = sep,
6225 year = 1999,
6226}
6227
6228@article{Ronsse03,
6229 keywords = {profiling, replay},
6230 contributer = {pabuhr@plg},
6231 author = {Michiel Ronsse and De Bosschere, Koen and Mark Christiaens and Jacques Chassin de Kergommeaux and Dieter Kranzlm\"{u}ller},
6232 title = {Record/Replay for Nondeterministic Program Executions},
6233 journal = cacm,
6234 month = sep,
6235 year = 2003,
6236 volume = 46,
6237 number = 9,
6238 pages = {62-67},
6239}
6240
6241@article{Robinson48,
6242 keywords = {recursion, Ackermann function},
6243 contributer = {pabuhr@plg},
6244 author = {Raphael Mitchel Robinson},
6245 title = {Recursion and Double Recursion},
6246 publisher = {American Mathematical Society},
6247 journal = {Bulletin of the American Mathematical Society},
6248 volume = 54,
6249 pages = {987-993},
6250 year = 1948,
6251}
6252
6253@article{Dijkstra:red,
6254 keywords = {ada},
6255 contributer = {gjditchfield@plg},
6256 author = {Edsger W. Dijkstra},
6257 title = {On the RED Language submitted to the DoD},
6258 journal = sigplan,
6259 year = 1978,
6260 month = oct,
6261 volume = 13,
6262 number = 10,
6263 pages = {27-32},
6264}
6265
6266@article{RemoteRendezvous,
6267 keywords = {rendezvous, concurrency},
6268 contributer = {pabuhr@plg},
6269 author = {N. D. Gammage and R. F. Kamel and L. M. Casey},
6270 title = {Remote Rendezvous},
6271 journal = spe,
6272 month = oct,
6273 year = 1987,
6274 volume = 17,
6275 number = 10,
6276 pages = {741-755}
6277}
6278
6279@mastersthesis{Schuster99,
6280 author = {Oliver Schuster},
6281 title = {Replay of Concurrent Shared-Memory Programs},
6282 school = {Universit\"at Mannheim},
6283 address = {Mannheim, Deutschland},
6284 year = 1999,
6285 month = apr,
6286 type = {Diplomarbeit},
6287 note = {\href{https://plg.uwaterloo.ca/~usystem/theses/SchusterThesis.pdf}{https://\-plg.uwaterloo.ca/\-$\sim$usystem/\-theses/\-SchusterThesis.pdf}},
6288}
6289
6290@article{Euclid,
6291 keywords = {Euclid},
6292 contributer = {pabuhr@plg},
6293 author = {B. W. Lampson and J. J. Horning and R. L. London and J. G. Mitchell and G. L. Popek},
6294 title = {Report on the Programming Language Euclid},
6295 journal = sigplan,
6296 volume = 12,
6297 number = 2,
6298 month = feb,
6299 year = 1977,
6300 pages = {1-79}
6301}
6302
6303@techreport{LOGLAN88,
6304 keywords = {LOGLAN},
6305 contributer = {pabuhr@plg},
6306 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},
6307 title = {Report on the Programming Language LOGLAN'88},
6308 institution = {Institute of Informatics, University of Warsaw},
6309 address = {Pkin 8th Floor, 00-901 Warsaw, Poland},
6310 number = {},
6311 month = dec,
6312 year = 1988,
6313}
6314
6315@mastersthesis{Schluntz17,
6316 keywords = {constructors, destructors, tuples},
6317 author = {Robert Schluntz},
6318 title = {Resource Management and Tuples in \textsf{C}$\mathbf{\forall}$},
6319 school = {School of Computer Science, University of Waterloo},
6320 year = 2017,
6321 optaddress = {Waterloo, Ontario, Canada, N2L 3G1},
6322 note = {\href{https://uwspace.uwaterloo.ca/handle/10012/11830}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-11830}},
6323}
6324
6325@article{FH91,
6326 keywords = {lcc},
6327 contributer = {gjditchfield@plg},
6328 author = {Christopher W. Fraser and David R. Hanson},
6329 title = {A Retargetable Compiler for {ANSI} {C}},
6330 journal = sigplan,
6331 year = 1991,
6332 month = oct, volume = 26, number = 10, pages = {29-43},
6333 abstract = {
6334 {\tt lcc} is a new retargetable compiler for ANSI C. Versions for
6335 the VAX, Motorola 68020, SPARC, and MIPS are in production use at
6336 Princeton University and at AT\&T Bell Laboratories. With a few
6337 exceptions, little about {\tt lcc} is unusual---it integrates
6338 several well engineered, existing techniques---but it is smaller
6339 and faster than most other C compilers, and it generates code of
6340 comparable quality. {\tt lcc}'s target-independent front end
6341 performs a few simple, but effective, optimizations that contribute
6342 to good code; examples include simulating register declarations and
6343 partitioning switch statements into dense tables. It also
6344 implements target-independent function tracing and expression-level
6345 profiling.
6346 }
6347}
6348
6349@article{Algol68revised,
6350 keywords = {},
6351 contributer = {gjditchfield@plg},
6352 author = {A. van Wijngaarden and B. J. Mailloux and J. E. L. Peck and
6353 C. H. A. Koster and M. Sintzoff and C. H. Lindsey and L. G. L. T.
6354 Meertens and R. G. Fisher},
6355 title = {Revised Report on the Algorithmic Language {ALGOL} 68},
6356 journal = sigplan,
6357 year = 1977,
6358 month = may,
6359 volume = 12,
6360 number = 5,
6361 pages = {1-70}
6362}
6363
6364@article{scheme,
6365 keywords = {},
6366 contributer = {gjditchfield@plg},
6367 author = {Jonathan Rees and William Clinger},
6368 title = {Revised$^3$ Report on the Algorithmic Language {S}cheme},
6369 journal = sigplan,
6370 year = 1986,
6371 month = dec,
6372 volume = 21,
6373 number = 12,
6374 pages = {37-79},
6375}
6376
6377@article{scheme5,
6378 keywords = {scheme},
6379 contributer = {pabuhr@plg},
6380 author = {H. Abelson and Adams, IV, N. I. and D. H. Bartley and G. Brooks and R. K. Dybvig and D. P. Friedman and
6381 R. Halstead and C. Hanson and C. T. Haynes and E. Kohlbecker and D. Oxley and K. M. Pitman and G. J. Rozas and
6382 G. L. Steele Jr. and G. J. Sussman and M. Wand and \emph{Ed. by} Richard Kelsey and William Clinger and Jonathan Rees},
6383 title = {Revised$^5$ Report on the Algorithmic Language {S}cheme},
6384 journal = sigplan,
6385 year = 1998,
6386 month = sep,
6387 volume = 33,
6388 number = 9,
6389 pages = {26-76},
6390}
6391
6392@manual{Rust,
6393 keywords = {Rust programming language},
6394 contributer = {pabuhr@plg},
6395 key = {Rust},
6396 title = {{R}ust Programming Language},
6397 optaddress = {Rust Project Developers},
6398 year = 2015,
6399 note = {\href{https://doc.rust-lang.org/reference.html}{https://\-doc.rust-lang\-.org/\-reference.html}},
6400}
6401
6402% S
6403
6404@manual{Scala,
6405 keywords = {Scala programming language},
6406 contributer = {pabuhr@plg},
6407 key = {Scala},
6408 title = {{S}cala Language Specification, Version 2.11},
6409 address = {\'{E}cole Polytechnique F\'{e}d\'{e}rale de Lausanne},
6410 year = 2016,
6411 note = {\href{http://www.scala-lang.org/files/archive/spec/2.11}{http://\-www.scala-lang.org/\-files/\-archive/\-spec/\-2.11}},
6412}
6413
6414@inproceedings{Michael04,
6415 keywords = {lock free, dynamic memory allocation},
6416 contributer = {pabuhr@plg},
6417 author = {Maged M. Michael},
6418 title = {Scalable Lock-free Dynamic Memory Allocation},
6419 booktitle = {PLDI '04: Proceedings of the ACM SIGPLAN 2004 Conference on Programming Language Design and Implementation},
6420 location = {Washington DC, USA},
6421 publisher = {ACM},
6422 address = {New York, NY, USA},
6423 volume = 39,
6424 year = 2004,
6425 month = jun,
6426 pages = {35-46},
6427}
6428
6429@article{Anderson92,
6430 keywords = {light-weight tasks},
6431 contributer = {pabuhr@plg},
6432 author = {Thomas E. Anderson and Brian N. Bershad and Edward D. Lazowska and Henry M. Levy},
6433 title = {Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism},
6434 journal = tocs,
6435 volume = 10,
6436 number = 1,
6437 month = feb,
6438 year = 1992,
6439 pages = {53-79},
6440}
6441
6442@manual{SELF,
6443 keywords = {programming language, obect-oriented, polymorphism},
6444 contributer = {pabuhr@plg},
6445 author = {Ole Agesen and Lars Bak and Craig Chambers and Bay-Wei Chang and Urs H{\o}lzle
6446 and John H. Maloney and Randall B. Smith and David Ungar and Mario Wolczko},
6447 title = {The {SELF} 3.0 Programmer's Reference Manual},
6448 organization= {Sun Microsystems, Inc., and Stanford University},
6449 year = 1993,
6450}
6451
6452@inproceedings{Cardelli84,
6453 keywords = {subtypes, recursive types, records, variants, object oriented},
6454 contributer = {gjditchfield@plg},
6455 author = {Luca Cardelli},
6456 title = {A Semantics of Multiple Inheritance},
6457 booktitle = {Semantics of Data Types},
6458 year = 1984,
6459 pages = {51-67},
6460 editor = {G. Kahn and D. B. MacQueen and G. D. Plotkin},
6461 publisher = {Springer},
6462 note = {Lecture Notes in Computer Science v. 173},
6463}
6464
6465@article{Baker78,
6466 keywords = {Algol display, FUNARG's, Lisp 1.5, deep binding, environment trees, multiprogramming, shallow binding},
6467 contributer = {a3moss@uwaterloo.ca},
6468 author = {Baker,Jr., Henry G.},
6469 title = {Shallow Binding in Lisp 1.5},
6470 journal = {Commun. ACM},
6471 issue_date = {July 1978},
6472 volume = 21,
6473 number = 7,
6474 month = jul,
6475 year = 1978,
6476 issn = {0001-0782},
6477 pages = {565--569},
6478 numpages = {5},
6479 url = {http://doi.acm.org/10.1145/359545.359566},
6480 doi = {10.1145/359545.359566},
6481 acmid = {359566},
6482 publisher = {ACM},
6483 address = {New York, NY, USA}
6484}
6485
6486@article{Baker91,
6487 keywords = {shallow binding, functional arrays},
6488 contributer = {a3moss@uwaterloo.ca},
6489 author = {Baker, Henry G.},
6490 title = {Shallow Binding Makes Functional Arrays Fast},
6491 journal = {SIGPLAN Not.},
6492 issue_date = {Aug. 1991},
6493 volume = 26,
6494 number = 8,
6495 month = aug,
6496 year = 1991,
6497 issn = {0362-1340},
6498 pages = {145--147},
6499 numpages = {3},
6500 url = {http://doi.acm.org/10.1145/122598.122614},
6501 doi = {10.1145/122598.122614},
6502 acmid = {122614},
6503 publisher = {ACM},
6504 address = {New York, NY, USA},
6505}
6506
6507@techreport{Adve95,
6508 keywords = {shared memory, consistency models},
6509 contributer = {pabuhr@plg},
6510 author = {Sarita V. Adve and Kourosh Gharachorloo},
6511 title = {Shared Memory Consistency Models: A Tutorial},
6512 institution = {Western Research Laboratory},
6513 address = {250 University Avenue, Palo Alto, California, 94301, U.S.A.},
6514 number = {7},
6515 month = sep,
6516 year = 1995,
6517 note = {\href{http://www.hpl.hp.com/techreports/Compaq-DEC/WRL-95-7.pdf}{http://www.hpl.hp.com/\-techreports/\-Compaq-DEC/\-WRL-95-7.pdf}, Reprinted in \cite{Adve95reprint}.},
6518}
6519
6520@article{Adve95reprint,
6521 keywords = {shared memory, consistency models},
6522 contributer = {pabuhr@plg},
6523 author = {Sarita V. Adve and Kourosh Gharachorloo},
6524 journal = {Computer},
6525 title = {Shared Memory Consistency Models: A Tutorial},
6526 month = dec,
6527 year = 1996,
6528 volume = 29,
6529 number = 12,
6530 pages = {66-76},
6531}
6532
6533@article{Nickolls08,
6534 author = {Nickolls, John and Buck, Ian and Garland, Michael and Skadron, Kevin},
6535 title = {Scalable Parallel Programming with CUDA},
6536 journal = {Queue},
6537 volume = {6},
6538 number = {2},
6539 month = mar,
6540 year = 2008,
6541 pages = {40-53},
6542 publisher = {ACM},
6543 address = {New York, NY, USA},
6544}
6545
6546@inproceedings{Leissa14,
6547 title = {{S}ierra: a {SIMD} extension for {C}++},
6548 author = {Lei{\ss}a, Roland and Haffner, Immanuel and Hack, Sebastian},
6549 booktitle = {Proceedings of the 2014 Workshop on Workshop on programming models for SIMD/Vector processing},
6550 pages = {17-24},
6551 year = {2014},
6552 organization= {ACM}
6553}
6554
6555@inproceedings{Howard76b,
6556 keywords = {monitors},
6557 contributer = {pabuhr@plg},
6558 author = {J. H. Howard},
6559 title = {Signaling in Monitors},
6560 booktitle = {Proceedings Second International Conference Software Engineering},
6561 address = {San Francisco, U.S.A},
6562 publisher = {IEEE Computer Society},
6563 month = oct,
6564 year = 1976,
6565 pages = {47-52}
6566}
6567
6568@techreport{Schemenauer01,
6569 keywords = {Phthon, generator, coroutine},
6570 contributer = {pabuhr@plg},
6571 author = {Neil Schemenauer and Tim Peters and Magnus Lie Hetland},
6572 title = {Simple Generators},
6573 month = may,
6574 year = 2001,
6575 note = {\href{http://www.python.org/peps/pep-0255.html}{http://\-www.python.org/\-peps/\-pep-0255.html}},
6576}
6577
6578@inproceedings{Michael96,
6579 keywords = {compare_and_swap, concurrent queue, lock-free, multiprogramming, non-blocking},
6580 contributer = {pabuhr@plg},
6581 author = {Maged M. Michael and Michael L. Scott},
6582 title = {Simple, Fast, and Practical Non-blocking and Blocking Concurrent Queue Algorithms},
6583 booktitle = {Proceedings of the Fifteenth Annual ACM Symposium on Principles of Distributed Computing},
6584 series = {PODC'96},
6585 year = 1996,
6586 location = {Philadelphia, Pennsylvania, USA},
6587 pages = {267--275},
6588 numpages = {9},
6589 publisher = {ACM},
6590 address = {New York, NY, USA},
6591}
6592
6593@article{Pennello80,
6594 contributer = {a3moss@uwaterloo.ca},
6595 author = {Pennello, Tom and DeRemer, Frank and Meyers, Richard},
6596 title = {A Simplified Operator Identification Scheme for {Ada}},
6597 journal = {SIGPLAN Notices},
6598 issue_date = {July-August 1980},
6599 volume = {15},
6600 number = {7 and 8},
6601 month = jul,
6602 year = {1980},
6603 issn = {0362-1340},
6604 pages = {82--87},
6605 numpages = {6},
6606 url = {http://doi.acm.org/10.1145/947680.947688},
6607 doi = {10.1145/947680.947688},
6608 publisher = {ACM},
6609 address = {New York, NY, USA},
6610}
6611
6612@inproceedings{Dice10,
6613 keywords = {hardware, synchronization, transactional memory},
6614 author = {Dave Dice and Yossi Lev and Virendra J. Marathe and Mark Moir and Dan Nussbaum and Marek Olszewski},
6615 title = {Simplifying Concurrent Algorithms by Exploiting Hardware Transactional Memory},
6616 booktitle = {Proceedings of the Twenty-second Annual ACM Symposium on Parallelism in Algorithms and Architectures},
6617 series = {SPAA'10},
6618 year = 2010,
6619 location = {Thira, Santorini, Greece},
6620 pages = {325-334},
6621 numpages = {10},
6622 publisher = {ACM},
6623 address = {New York, NY, USA},
6624}
6625
6626@article{PDM:overload,
6627 keywords = {compilation},
6628 contributer = {gjditchfield@plg},
6629 author = {Tom Pennello and Frank DeRemer and Richard Meyers},
6630 title = {A Simplified Operator Identification Scheme for {Ada}},
6631 journal = sigplan,
6632 year = 1980,
6633 month = {July--August},
6634 volume = 15,
6635 number = {7/8},
6636 pages = {82-87},
6637 comment = {
6638 The two-pass (bottom-up, top-down) overload resolution algorithm
6639 for Ada, with a proof that two passes suffice and a claim that two
6640 are necessary. See \cite{D:overload}.
6641 }
6642}
6643
6644@book{SimulaBegin,
6645 author = {Graham M. Birtwistle and Ole-Johan Dahl and Bj{\o}rn Myhrhaug and Kristen Nygaard},
6646 title = {{SIMULA} begin},
6647 publisher = {Studentlitteratur},
6648 year = {1980},
6649 address = {Lund, Sweden},
6650 edition = {2nd},
6651}
6652
6653@book{Simula67,
6654 author = {O-J Dahl and B. Myhrhaug and K. Nygaard},
6655 title = {Simula67 Common Base Language},
6656 month = oct,
6657 year = 1970,
6658 publisher = {Norwegian Com\-puting Center},
6659 address = {Oslo Norway},
6660}
6661
6662@book{smalltalk,
6663 keywords = {Smalltalk, abstract class, protocol},
6664 contributer = {gjditchfield@plg},
6665 author = {A. Goldberg and D. Robson},
6666 title = {Smalltalk-80: The Language and its Implementation},
6667 publisher = {Addison-Wesley},
6668 address = {Reading},
6669 year = 1983
6670}
6671
6672@inproceedings{Edelson92,
6673 keywords = {persistence, pointers},
6674 contributer = {pabuhr@plg},
6675 author = {Daniel R. Edelson},
6676 title = {Smart Pointers: They're Smart, but They're Not Pointers},
6677 booktitle = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Technical Conference Proceedings},
6678 organization= {USENIX Association},
6679 address = {Portland, Oregon, U.S.A.},
6680 month = aug,
6681 year = 1992,
6682 pages = {1-19},
6683}
6684
6685@book{SNOBOL,
6686 keywords = {SNOBOL4},
6687 contributer = {pabuhr@plg},
6688 author = {R. E. Griswold and J. F. Poage and I. P. Polonsky},
6689 title = {The SNOBOL4 Programming Language},
6690 edition = {2nd},
6691 publisher = {Prentice-Hall},
6692 address = {Englewood Cliffs},
6693 year = 1971,
6694}
6695
6696@article{Sutter05b,
6697 keywords = {concurrency},
6698 contributer = {pabuhr@plg},
6699 author = {Herb Sutter and James Larus},
6700 title = {Software and the Concurrency Revolution},
6701 journal = {Queue},
6702 year = 2005,
6703 month = sep,
6704 volume = 3,
6705 number = 7,
6706 pages = {54-62},
6707}
6708
6709@inproceedings{raytheon,
6710 keywords = {cobol},
6711 contributer = {gjditchfield@plg},
6712 author = {Robert G. Lanergan and Charles A. Grasso},
6713 title = {Software Engineering with Reusable Designs and Code},
6714 booktitle = {Workshop on Reusability in Programming},
6715 year = 1983,
6716 month = sep,
6717 pages = {224-234},
6718 organization= {{ITT} Programming},
6719 summary = {
6720 60\% of business application design and code are redundant.
6721 Three standard program plans are used. Reuse doubles productivity
6722 during development and greatly helps program comprehension during
6723 maintenance.
6724 }
6725}
6726
6727@article{Hecht86,
6728 keywords = {exception handling, robustness},
6729 contributer = {pabuhr@plg},
6730 author = {H. Hecht and M. Hecht},
6731 title = {Software Reliability in the Systems Context},
6732 journal = ieeese,
6733 year = 1986,
6734 volume = 12,
6735 number = 1,
6736 pages = {51-58},
6737}
6738
6739@inproceedings{Herlihy03,
6740 author = {Maurice Herlihy and Victor Luchangco and Mark Moir and William N. {Scherer III}},
6741 title = {Software Transactional Memory for Dynamic-sized Data Structures},
6742 booktitle = {Proceedings of the Twenty-second Annual Symposium on Principles of Distributed Computing},
6743 series = {PODC '03},
6744 year = {2003},
6745 location = {Boston, Massachusetts},
6746 pages = {92-101},
6747 numpages = {10},
6748 publisher = {ACM},
6749 address = {New York, NY, USA},
6750}
6751
6752@article{Dijkstra65a,
6753 keywords = {N-thread software-solution mutual exclusion},
6754 contributer = {pabuhr@plg},
6755 author = {Edsger W. Dijkstra},
6756 title = {Solution of a Problem in Concurrent Programming Control},
6757 journal = cacm,
6758 volume = 8,
6759 number = 9,
6760 month = sep,
6761 year = 1965,
6762 pages = {569},
6763 publisher = {ACM},
6764 address = {New York, NY, USA},
6765}
6766
6767@inproceedings{Chen05,
6768 keywords = {fixed-priority, preemption},
6769 contributer = {pabuhr@plg},
6770 author = {Jiongxiong Chen and Ashif Harji and Peter Buhr},
6771 title = {Solution Space for Fixed-Priority with Preemption Threshold},
6772 booktitle = {Proceedings of the 11th Real Time and Embedded Technology and Applications Symposium (RTAS'05)},
6773 organization= {IEEE},
6774 address = {San Francisco, CA, U.S.A},
6775 month = mar,
6776 year = 2005,
6777 pages = {385-394}
6778}
6779
6780@inproceedings{Tiemann88,
6781 keywords = {wrappers},
6782 contributer = {pabuhr@plg},
6783 author = {Michael D. Tiemann},
6784 title = {Solving the RPC problem in GNU {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
6785 booktitle = {Proceedings of the USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
6786 organization= {USENIX Association},
6787 address = {Denver, Colorado, U.S.A},
6788 month = oct,
6789 year = 1988,
6790 pages = {343-361}
6791}
6792
6793@article{Smith98,
6794 keywords = {Polymorphic C},
6795 contributor = {a3moss@uwaterloo.ca},
6796 title = {A sound polymorphic type system for a dialect of {C}},
6797 author = {Smith, Geoffrey and Volpano, Dennis},
6798 journal = {Science of computer programming},
6799 volume = 32,
6800 number = {1-3},
6801 pages = {49-72},
6802 year = {1998},
6803 publisher = {Elsevier}
6804}
6805
6806@book{Campbell74,
6807 keywords = {path expressions},
6808 contributer = {pabuhr@plg},
6809 author = {R. H. Campbell and A. N. Habermann},
6810 title = {The Specification of Process Synchronization by Path Expressions},
6811 publisher = {Springer},
6812 year = 1974,
6813 volume = 16,
6814 pages = {89-102},
6815 series = {Lecture Notes in Computer Science},
6816}
6817
6818@article{Bentley85,
6819 keywords = {CSP, concurrency},
6820 contributer = {pabuhr@plg},
6821 author = {J. Bentley},
6822 title = {A Spelling Checker},
6823 journal = cacm,
6824 month = may,
6825 year = 1985,
6826 volume = 28,
6827 number = 5,
6828 pages = {456-462},
6829}
6830
6831@manual{POSIX01,
6832 keywords = {POSIX, Standard},
6833 contributer = {pabuhr@plg},
6834 key = {POSIX},
6835 title = {1003.1 Standard for Information Technology -- Portable Operating System Interface (POSIX), System Interface, Issue 6},
6836 organization= {IEEE and The Open Group},
6837 year = 2001,
6838}
6839
6840@manual{POSIX08,
6841 keywords = {POSIX, Standard},
6842 contributer = {pabuhr@plg},
6843 key = {POSIX},
6844 title = {1003.1 Standard for Information Technology -- Portable Operating System Interface (POSIX), Base Specifications, Issue 7},
6845 organization= {IEEE and The Open Group},
6846 year = 2008,
6847}
6848
6849@inproceedings{ML:NJ,
6850 keywords = {continuations, ML},
6851 contributer = {pabuhr@plg},
6852 author = {A. Appel and D. MacQueen},
6853 title = {A Standard {ML} Compiler},
6854 booktitle = {Functional Programming Languages and Computer Architecture},
6855 publisher = {Springer},
6856 series = {Lecture Notes in Computer Science},
6857 volume = 274,
6858 year = 1987,
6859 pages = {301-324},
6860}
6861
6862@techreport{MLreport,
6863 keywords = {ML, polymorphism},
6864 contributer = {pabuhr@plg},
6865 author = {R. Milner},
6866 title = {The Standard {ML} Core Language},
6867 institution = {},
6868 number = {Polymorphism II.2},
6869 month = oct,
6870 year = 1985
6871}
6872
6873@inproceedings{Ghelli,
6874 keywords = {},
6875 contributer = {gjditchfield@plg},
6876 author = {Giorgio Ghelli},
6877 title = {A Static Type System for Message Passing},
6878 crossref = "OOPSLA91",
6879 pages = {129-145},
6880 summary = {
6881 A strong, statically checked type system for object oriented
6882 languages is defined by modelling methods as overloaded functions
6883 with a "self" parameter, with dynamic overload resolution. This
6884 allows covariant method redefinition. However, if equality is
6885 covariantly redefined for Point and ColoredPoint classes, and a
6886 ColoredPoint is compared to a Point, Point equality will be used,
6887 even if self is the colored point!
6888 }
6889}
6890
6891@article{Dijkstra68b,
6892 keywords = {semaphore, P/V},
6893 contributer = {pabuhr@plg},
6894 author = {E. W. Dijkstra},
6895 title = {The Structure of the ``{THE}''--Multiprogramming System},
6896 journal = cacm,
6897 month = may,
6898 year = 1968,
6899 volume = 11,
6900 number = 5,
6901 pages = {341-346}
6902}
6903
6904@misc{Sutter15,
6905 contributer = {pabuhr@plg},
6906 author = {Herb Sutter and Bjarne Stroustrup and Gabriel Dos Reis},
6907 title = {Structured bindings},
6908 issue_date = {2015-10-14},
6909 month = oct,
6910 year = 2015,
6911 pages = {1-6},
6912 numpages = {6},
6913 howpublished= {\href{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0144r0.pdf}{http://\-www.open-std.org/\-jtc1/\-sc22/\-wg21/\-docs/\-papers/\-2015/\-p0144r0.pdf}},
6914}
6915
6916@book{Holt78,
6917 keywords = {operating systems, concurrency},
6918 contributer = {pabuhr@plg},
6919 author = {R. C. Holt and G. S. Graham and E. D. Lazowska and M. A. Scott},
6920 title = {Structured Concurrent Programming with Operating System Applications},
6921 publisher = {Addison-Wesley},
6922 address = {Boston},
6923 year = 1978,
6924}
6925
6926@article{Stevens74,
6927 keywords = {coupling, cohesion},
6928 contributer = {pabuhr@plg},
6929 author = {W. P. Stevens and and G. J. Myers and L. L. Constantine},
6930 title = {Structured Design},
6931 journal = ibmsj,
6932 year = 1974,
6933 volume = 13,
6934 number = 2,
6935 pages = {115-139},
6936}
6937
6938@article{Hansen72b,
6939 keywords = {critical region},
6940 contributer = {pabuhr@plg},
6941 author = {Per {Brinch Hansen}},
6942 title = {Structured Multiprogramming},
6943 journal = cacm,
6944 volume = 15,
6945 number = 7,
6946 month = jul,
6947 year = 1972,
6948 pages = {574-578},
6949}
6950
6951@article{Knuth74,
6952 keywords = {structured programming, goto statement},
6953 contributer = {pabuhr@plg},
6954 author = {Donald E. Knuth},
6955 title = {Structured Programming with go to Statements},
6956 journal = acmcs,
6957 volume = 6,
6958 number = 4,
6959 month = dec,
6960 year = 1974,
6961 pages = {261-301},
6962 issn = {0360-0300},
6963 doi = {http://doi.acm.org/10.1145/356635.356640},
6964 publisher = {ACM},
6965 address = {New York, NY, USA},
6966}
6967
6968@article{Lang98,
6969 keywords = {real-time, exception handling},
6970 contributer = {pabuhr@plg},
6971 author = {Jun Lang and David B. Stewart},
6972 title = {A Study of the Applicability of Existing Exception-Handling Techniques to Component-Based Real-Time Software Technology},
6973 journal = toplas,
6974 month = mar,
6975 year = 1998,
6976 volume = 20,
6977 number = 2,
6978 pages = {274-301},
6979}
6980
6981@mastersthesis{Fortier89,
6982 keywords = {monitors},
6983 contributer = {pabuhr@plg},
6984 author = {Michel Fortier},
6985 title = {Study of Monitors},
6986 school = {Department of Computer Science, University of Waterloo},
6987 year = 1989,
6988 address = {Waterloo, Ontario, Canada, N2L 3G1},
6989}
6990
6991@techreport{AmadioCardelli,
6992 keywords = {},
6993 contributer = {gjditchfield@plg},
6994 author = {Roberto M. Amadio and Luca Cardelli},
6995 title = {Subtyping Recursive Types},
6996 institution = {Digital Equipment Corporation Systems Research Center},
6997 year = 1990,
6998 address = {130 Lytton Avenue, Palo Alto, California 94301},
6999 month = aug,
7000 number = 62,
7001 summary = {
7002 \[ (s \leq t \Rightarrow \alpha \leq \beta) \Rightarrow
7003 \mu s.\alpha leq \mu t.\beta \]
7004 \[ \alpha = C[\alpha] \and \beta = C[\beta] \and C contractive
7005 \Rightarrow \alpha = \beta \]
7006 where a type \(\alpha\) is contractive in the type variable \(t\)
7007 if either \(t\) does not occur free in \(\alpha\), or \(\alpha\)
7008 can be rewritten via unfolding as a type of the shape
7009 \(\alpha_1 \rightarrow \alpha_2\), and unfolding rewrites
7010 \(\mu t.\alpha\) as \([t\leftarrow\mu t.\alpha]\alpha\). An
7011 algorithm for finding type contexts \(C\) is given.
7012 }
7013}
7014
7015@techreport{Dijkstra80,
7016 keywords = {split binary semaphores, general to binary},
7017 contributer = {pabuhr@plg},
7018 author = {Edsger W. Dijkstra},
7019 title = {The Superfluity of the General Semaphore},
7020 institution = {Nuenen},
7021 address = {Netherlands},
7022 number = {EWD734},
7023 month = apr,
7024 year = 1980,
7025}
7026
7027@inproceedings{Burns81,
7028 keywords = {N-thread software-solution mutual exclusion},
7029 contributer = {pabuhr@plg},
7030 author = {James E. Burns},
7031 title = {Symmetry in Systems of Asynchronous Processes},
7032 booktitle = {22nd Annual Symposium on Foundations of Computer Science, Nashville, TN, USA},
7033 year = 1981,
7034 month = oct,
7035 organization= {IEEE Computer Society},
7036 address = {Los Angeles, CA, USA},
7037 pages = {169-174},
7038}
7039
7040@article{Coffman71,
7041 keywords = {deadlock},
7042 contributer = {pabuhr@plg},
7043 author = {E. G. {Coffman, Jr.} and M. J. Elphick and A. Shoshani},
7044 title = {System Deadlocks},
7045 journal = acmcs,
7046 volume = 3,
7047 number = 2,
7048 month = jun,
7049 year = 1971,
7050 pages = {67-78},
7051 publisher = {ACM Press},
7052 address = {New York, NY, USA},
7053 doi = {http://doi.acm.org/10.1145/356586.356588},
7054}
7055
7056@phdthesis{Holmes99,
7057 keywords = {synchronization, inheritance anomaly},
7058 contributer = {pabuhr@plg},
7059 author = {David Holmes},
7060 title = {Synchronisation Rings: Composable Synchronisation for Object-Oriented Systems},
7061 school = {Department of Computing, Macquarie University},
7062 month = oct,
7063 year = 1999,
7064 address = {Sydney, Australia},
7065}
7066
7067@book{Taubenfeld06,
7068 keywords = {concurrency, synchronization},
7069 author = {Gadi Taubenfeld},
7070 title = {Synchronization Algorithms and Concurrent Programming},
7071 publisher = {Pearson/Prentice-Hall},
7072 address = {Harlow, England},
7073 year = 2006,
7074}
7075
7076@article{Buhr92b,
7077 keywords = {concurrency, exception handling, interventions},
7078 contributer = {pabuhr@plg},
7079 author = {Peter A. Buhr and Hamish I. Macdonald and C. Robert Zarnke},
7080 title = {Synchronous and Asynchronous Handling of Abnormal Events in the $\mu${S}ystem},
7081 journal = spe,
7082 volume = 22,
7083 number = 9,
7084 month = sep,
7085 year = 1992,
7086 pages = {735-776},
7087}
7088
7089@inproceedings{Greenwald96,
7090 keywords = {compare and swap, hardware atomicity},
7091 contributer = {pabuhr@plg},
7092 author = {Michael Greenwald and David Cheriton},
7093 title = {The Synergy between Non-blocking Synchronization and Operating System Structure},
7094 booktitle = {Proceedings of the Second USENIX Symposium on Operating Systems Design and Implementation},
7095 organization= {USENIX Association},
7096 address = {Seattle, Washington, U.S.A.},
7097 month = oct,
7098 year = 1996,
7099 pages = {123-136},
7100}
7101
7102@inbook{SunLWP,
7103 keywords = {light-weight processes, threads},
7104 contributer = {pabuhr@plg},
7105 key = {Sun},
7106 title = {System Services Overview, Lightweight Processes},
7107 chapter = {6},
7108 pages = {71-111},
7109 publisher = {Sun Microsystems},
7110 month = may,
7111 year = 1988,
7112 note = {available as Part Number: 800-1753-10},
7113}
7114
7115@article{Randell75,
7116 contributer = {pabuhr@plg},
7117 author = {Brian Randell},
7118 title = {System Structure for Software Fault Tolerance},
7119 journal = ieeese,
7120 volume = {SE-1},
7121 number = 2,
7122 month = jun,
7123 year = 1975,
7124 pages = {220-232},
7125}
7126
7127@book{Modula-3,
7128 keywords = {language reference manual},
7129 contributer = {pabuhr@plg},
7130 author = {Andrew Birrell and Mark R. Brown and Luca Cardelli and Jim Donahue and Lucille Glassman and John Gutag and Jim Harning and Bill Kalsow and Roy Levin and Greg Nelson},
7131 title = {Systems Programming with Modula-3},
7132 publisher = {Prentice-Hall},
7133 address = {Englewood Cliffs},
7134 year = 1991,
7135 series = {Prentice-Hall Series in Innovative Technology}
7136}
7137
7138% T
7139
7140@article{Yeager91,
7141 keywords = {teaching, concurrency},
7142 contributer = {pabuhr@plg},
7143 author = {Dorian P. Yeager},
7144 title = {Teaching Concurrency in the Programming Languages Course},
7145 journal = {SIGCSE BULLETIN},
7146 volume = 23,
7147 number = 1,
7148 month = mar,
7149 year = 1991,
7150 pages = {155-161},
7151 note = {The Papers of the Twenty-Second SIGCSE Technical Symposium on Computer Science Education,
7152 March. 7--8, 1991, San Antonio, Texas, U.S.A.},
7153}
7154
7155@article{ml,
7156 keywords = {ML, polymorphism},
7157 contributer = {gjditchfield@plg},
7158 author = {Robin Milner},
7159 title = {A Theory of Type Polymorphism in Programming},
7160 journal = jcss,
7161 year = 1978,
7162 volume = 17, pages = {348-375}
7163}
7164
7165@book{Thoth,
7166 keywords = {messages, concurrency},
7167 contributer = {pabuhr@plg},
7168 author = {D. R. Cheriton},
7169 title = {The Thoth System: Multi-Process Structuring and Portability},
7170 publisher = {American Elsevier},
7171 year = 1982
7172}
7173
7174@article{Boehm05,
7175 keywords = {concurrency, C++},
7176 contributer = {pabuhr@plg},
7177 author = {Hans-J. Boehm},
7178 title = {Threads Cannot be Implemented as a Library},
7179 journal = sigplan,
7180 volume = 40,
7181 number = 6,
7182 month = jun,
7183 year = 2005,
7184 pages = {261-268},
7185}
7186
7187@misc{TIOBE,
7188 contributer = {pabuhr@plg},
7189 key = {TIOBE Index},
7190 author = {{TIOBE Index}},
7191 howpublished= {\href{http://www.tiobe.com/tiobe_index}{http://\-www.tiobe.com/\-tiobe\_index}},
7192 optnote = {Accessed: 2018-09},
7193}
7194
7195@misc{Bumbulis90,
7196 keywords = {parameter inference, ForceN},
7197 contributer = {gjditchfield@plg},
7198 author = {Peter Bumbulis},
7199 title = {Towards Making Signatures First-Class},
7200 howpublished= {personal communication},
7201 month = sep,
7202 year = 1990,
7203}
7204
7205@techreport{alphard:preempt,
7206 keywords = {},
7207 contributer = {gjditchfield@plg},
7208 author = {Mary Shaw and Wm. A. Wulf},
7209 title = {Toward Relaxing Assumptions in Languages and Their Implementations},
7210 institution = {Carnegie-Mellon University},
7211 year = 1980,
7212 month = jan,
7213 note = {Reprinted in \cite{alphard}.}
7214}
7215
7216@inproceedings{Reynolds74,
7217 keywords = {universal quantification, typed lambda calculus},
7218 contributer = {gjditchfield@plg},
7219 author = {John C. Reynolds},
7220 title = {Towards a Theory of Type Structure},
7221 booktitle = {Colloque sur la Programmation},
7222 year = 1974,
7223 pages = {408-423},
7224 editor = {B. Robinet},
7225 publisher = {Springer},
7226 note = {Lecture Notes in Computer Science, v. 19},
7227 abstract = {
7228
7229 }
7230}
7231
7232@incollection{Hoare72,
7233 keywords = {critical region, concurrency},
7234 contributer = {pabuhr@plg},
7235 author = {C. A. R. Hoare},
7236 title = {Towards a Theory of Parallel Programming},
7237 booktitle = {Operating Systems Techniques},
7238 editor = {C. A. R. Hoare and R. H. Perott},
7239 publisher = {Academic Press, New York},
7240 year = 1972,
7241 pages = {61-71},
7242}
7243
7244@inproceedings{Mitchell90,
7245 keywords = {polymorphism, lambda calculus, bounded quantification},
7246 contributer = {gjditchfield@plg},
7247 author = {John C. Mitchell},
7248 title = {Toward a Typed Foundation for Method Specialization and Inheritance},
7249 booktitle = {Conference Record of the Seventeenth Annual ACM Symposium
7250 on Principles of Programming Languages},
7251 year = 1990,
7252 month = jan, pages = {109-124},
7253 organization= {Association for Computing Machinery},
7254 abstract = {
7255 This paper disucsses the phenomenon of {\em method specialization}
7256 in object-oriented programming languages. A typed function
7257 calculus of objects and classes is presented, featuring method
7258 specialization when methods are added or redefined. The soundness
7259 of the typing rules (without subtyping) is suggested by a
7260 translation into a more traditional calculus with
7261 recursively-defined record types. However, semantic questions
7262 regarding the subtype relation on classes remain open.
7263 }
7264}
7265
7266@article{EL1,
7267 keywords = {polymorphism},
7268 contributer = {pabuhr@plg},
7269 author = {B. Wegbreit},
7270 title = {The Treatment of Data Types in {EL1}},
7271 journal = cacm,
7272 volume = 17,
7273 number = 5,
7274 month = may,
7275 year = 1974,
7276 pages = {251-264},
7277}
7278
7279@mastersthesis{Till89,
7280 keywords = {C, multiple return values, tuples},
7281 contributer = {pabuhr@plg},
7282 author = {David W. Till},
7283 title = {Tuples In Imperative Programming Languages},
7284 school = {Department of Computer Science, University of Waterloo},
7285 year = 1989,
7286 address = {Waterloo, Ontario, Canada, N2L 3G1},
7287}
7288
7289@article{turing:old,
7290 keywords = {verification, context conditions, faithful execution},
7291 contributer = {gjditchfield@plg},
7292 author = {R. C. Holt and J. R. Cordy},
7293 title = {The Turing Programming Language},
7294 journal = cacm,
7295 year = 1988,
7296 month = dec,
7297 volume = 31, number = 12, pages = {1410-1423}
7298}
7299
7300@book{Turing,
7301 keywords = {verification, context conditions, faithful execution},
7302 contributer = {pabuhr@plg},
7303 author = {R. C. Holt},
7304 title = {Turing Reference Manual},
7305 publisher = {Holt Software Associates Inc.},
7306 year = 1992,
7307 edition = {3rd},
7308}
7309
7310@techreport{Dijkstra79,
7311 keywords = {split binary semaphores},
7312 contributer = {pabuhr@plg},
7313 author = {Edsger W. Dijkstra},
7314 title = {A Tutorial on the Split Binary Semaphore},
7315 institution = {Nuenen},
7316 address = {Netherlands},
7317 number = {EWD703},
7318 month = mar,
7319 year = 1979,
7320}
7321
7322@book{pldesign,
7323 keywords = {},
7324 editor = {Anthony I. Wasserman},
7325 title = {Tutorial: Programming Language Design},
7326 publisher = {Computer Society Press},
7327 address = {Los Alamitos},
7328 year = 1980
7329}
7330
7331@misc{TraceCompass,
7332 contributer = {pabuhr@plg},
7333 key = {Trace Compass},
7334 author = {{T}race {C}ompass},
7335 howpublished= {\href{https://projects.eclipse.org/proposals/trace-compass}{https://\-projects.eclipse.org/\-proposals/\-trace-compass}},
7336}
7337
7338@article{Leroy00,
7339 keywords = {type-systems, exceptions},
7340 contributer = {pabuhr@plg},
7341 author = {Xavier Leroy and Fran\c{c}ois Pessaux},
7342 title = {Type-Based Analysis of Uncaught Exceptions},
7343 journal = toplas,
7344 month = mar,
7345 year = 2000,
7346 volume = 22,
7347 number = 2,
7348 pages = {340-377},
7349 comment = {
7350 Argues against declaring exceptions on routine definitions.
7351 },
7352}
7353
7354@article{Cormack90,
7355 keywords = {polymorphism},
7356 contributer = {pabuhr@plg},
7357 author = {G. V. Cormack and A. K. Wright},
7358 title = {Type-dependent Parameter Inference},
7359 journal = sigplan,
7360 volume = 25,
7361 number = 6,
7362 month = jun,
7363 publisher = {ACM},
7364 address = {New York, NY, USA},
7365 year = 1990,
7366 pages = {127-136},
7367 note = {Proceedings of the ACM Sigplan'90 Conference on Programming Language Design and Implementation
7368 June 20-22, 1990, White Plains, New York, U.S.A.},
7369}
7370
7371@article{concatenation,
7372 keywords = {record concatenation, isa},
7373 contributer = {gjditchfield@plg},
7374 author = {N. Wirth},
7375 title = {Type Extensions},
7376 journal = toplas,
7377 volume = {10},
7378 number = {2},
7379 pages = {204-214},
7380 month = apr, year = 1988,
7381 comment = {
7382 Extended record types add fields to their base record. Assignment
7383 truncations. Pointers can point at extended type instances. For
7384 polymorphism, call by value is assignment, and call by reference is
7385 pointer passing. Overloading isn't discussed. Type information
7386 can be recovered through an ``is'' type test or through type guards
7387 (casts). A version of the WITH statement could avoid repeated
7388 checking.
7389
7390 Private/public access to record fields can be provided by exporting
7391 a base type, and using a private extension. Statically allocated
7392 instances need a compiler hint specifying the maximum size of the
7393 private type.
7394
7395 Type checking is cheap (if the creation of pointer values is
7396 controlled). Types have type descriptors. Extension descriptors
7397 point at their direct base. Heap objects point at their
7398 descriptor, and reference parameters are accompanied by type
7399 descriptor parameters. ``v is t0'' loops along the chain of
7400 descriptors.
7401 }
7402}
7403
7404% U
7405
7406@book{uC++book,
7407 keywords = {control structure, concurrency, uC++},
7408 contributer = {pabuhr@plg},
7409 author = {Peter A. Buhr},
7410 title = {Understanding Control Flow: Concurrent Programming using $\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
7411 publisher = {Springer},
7412 address = {Switzerland},
7413 year = 2016,
7414}
7415
7416@article{Cardelli85,
7417 keywords = {polymorphism},
7418 contributer = {pabuhr@plg},
7419 author = {Luca Cardelli and Peter Wegner},
7420 title = {On Understanding Types, Data Abstractions, and Polymorphism},
7421 journal = acmcs,
7422 month = dec,
7423 year = 1985,
7424 volume = 17,
7425 number = 4,
7426 pages = {471-522},
7427}
7428
7429@inproceedings{Wilson92,
7430 keywords = {garbage collection survey},
7431 contributer = {pabuhr@plg},
7432 author = {Paul R. Wilson},
7433 title = {Uniprocessor Garbage Collection Techniques},
7434 booktitle = {Proceedings of the International Workshop on Memory Management},
7435 location = {St. Malo, France},
7436 publisher = {Springer},
7437 series = {Lecture Notes in Computer Science},
7438 volume = 637,
7439 month = sep,
7440 year = {1992},
7441 pages = {1-42},
7442}
7443
7444@inproceedings{Hewitt73,
7445 author = {Carl Hewitt and Peter Bishop and Richard Steiger},
7446 title = {A Universal Modular {ACTOR} Formalism for Artificial Intelligence},
7447 booktitle = {Proceedings of the 3rd International Joint Conference on Artificial Intelligence},
7448 address = {Standford, California, U.S.A.},
7449 pages = {235-245},
7450 month = aug,
7451 year = 1973,
7452}
7453
7454@article{Bourne78,
7455 keywords = {Shell},
7456 contributer = {pabuhr@plg},
7457 author = {S. R. Bourne},
7458 title = {The UNIX Shell},
7459 journal = {The Bell System Technical Journal},
7460 volume = {57, part 2},
7461 month = {July--August},
7462 year = 1978,
7463 pages = {1971-1990},
7464}
7465
7466@inproceedings{Krischer12,
7467 keywords = {exception, usability, asynchronous, assertion, injection, logging},
7468 contributer = {pabuhr@plg},
7469 author = {Roy Krischer and Peter A. Buhr},
7470 title = {Usability Challenges in Exception Handling},
7471 booktitle = {5th International Workshop on Exception Handling (WEH)},
7472 optorganization= {16th International Symposium on the Foundations of Software Engineering (FSE 16)},
7473 address = {Zurich, Switzerland},
7474 month = jun,
7475 year = 2012,
7476 pages = {7-13},
7477}
7478
7479@techreport{Harmony,
7480 keywords = {messages, concurrency},
7481 contributer = {pabuhr@plg},
7482 author = {W. Morven Gentleman},
7483 title = {Using the Harmony Operating System},
7484 institution = {National Research Council of Canada, Ottawa, Canada},
7485 number = {24685},
7486 month = may,
7487 year = 1985
7488}
7489
7490@article{delegation,
7491 keywords = {delegation, inheritance, actors},
7492 contributer = {gjditchfield@plg},
7493 author = {Henry Lieverman},
7494 title = {Using Prototypical Objects to Implement Shared Behavior in
7495 Object Oriented Systems},
7496 journal = sigplan,
7497 month = nov, year = 1986,
7498 volume = 21, number = 11, pages = {214-223}
7499}
7500
7501% V
7502
7503@article{V-Kernel,
7504 keywords = {messages, concurrency},
7505 contributer = {pabuhr@plg},
7506 author = {David R. Cheriton},
7507 title = {The {V} Distributed System},
7508 journal = cacm,
7509 month = mar,
7510 year = 1988,
7511 volume = 31,
7512 number = 3,
7513 pages = {314-333}
7514}
7515
7516@misc{Vala,
7517 keywords = {GObject, Vala},
7518 contributor = {a3moss@uwaterloo.ca},
7519 key = {Vala},
7520 organization= {The {GNOME} Project},
7521 title = {{V}ala Reference Manual},
7522 year = 2017,
7523 howpublished= {\url{https://wiki.gnome.org/Projects/Vala/Manual}},
7524 optnote = {Accessed: 2017-04}
7525}
7526
7527@inproceedings{Amdahl67,
7528 author = {Gene M. Amdahl},
7529 title = {Validity of the Single Processor Approach to Achieving Large Scale Computing Capabilities},
7530 booktitle = {Proceedings of the April 18-20, 1967, Spring Joint Computer Conference},
7531 series = {AFIPS '67 (Spring)},
7532 year = 1967,
7533 location = {Atlantic City, New Jersey},
7534 pages = {483--485},
7535 publisher = {ACM},
7536 address = {New York, NY, USA},
7537}
7538
7539@article{Mayer81,
7540 keywords = {},
7541 contributer = {pabuhr@plg},
7542 author = {A. J. W. Mayer},
7543 title = {Value Receiving Procedures},
7544 journal = sigplan,
7545 volume = 16,
7546 number = 11,
7547 month = nov,
7548 year = 1981,
7549 pages = {30-34},
7550}
7551
7552@article{Doran80,
7553 keywords = {concurrency, Dekker's Algorithm},
7554 contributer = {pabuhr@plg},
7555 author = {R. W. Doran and L. K. Thomas},
7556 title = {Variants of the Software Solution to Mutual Exclusion},
7557 journal = ipl,
7558 month = jul,
7559 year = 1980,
7560 volume = 10,
7561 number = {4/5},
7562 pages = {206-208},
7563}
7564
7565@book{VAX,
7566 keywords = {VAX, DEC},
7567 contributer = {pabuhr@plg},
7568 key = {VAX},
7569 title = {VAX-11 Architecture Reference Manual},
7570 publisher = {Digital Press},
7571 address = {Bedford},
7572 month = may,
7573 year = 1982,
7574}
7575
7576@book{Kenah88,
7577 author = {Lawrence J. Kenah and Ruth E. Goldenberg and Simon F. Bate},
7578 title = {{VAX/VMS} Internals and Data Structures Version 4.4},
7579 publisher = {Digital Press},
7580 address = {Bedford},
7581 year = 1988,
7582}
7583
7584@article{Hesselink13,
7585 keywords = {software solutions, N-thread, mutual exclusions},
7586 contributer = {pabuhr@plg},
7587 author = {Wim H. Hesselink},
7588 title = {Verifying a Simplification of Mutual Exclusion by {L}ycklama--{H}adzilacos},
7589 journal = {Acta Informatica},
7590 publisher = {Springer},
7591 address = {New York},
7592 year = {2013},
7593 volume = {50},
7594 number = {3},
7595 pages = {199-228},
7596}
7597
7598% W
7599
7600@article{Herlihy91,
7601 keywords = {linearization, wait-free synchronization},
7602 contributer = {pabuhr@plg},
7603 author = {Maurice Herlihy},
7604 title = {Wait-free Synchronization},
7605 journal = toplas,
7606 volume = {13},
7607 number = {1},
7608 month = jan,
7609 year = 1991,
7610 pages = {124--149},
7611 numpages = {26},
7612 publisher = {ACM},
7613 address = {New York, NY, USA},
7614}
7615
7616@inproceedings{vonBehren03,
7617 keywords = {threads, events, web server},
7618 contributer = {pabuhr@plg},
7619 author = {Rob von Behren and Jeremy Condit and Eric Brewer},
7620 title = {Why Events Are a Bad Idea (for high-concurrency servers)},
7621 booktitle = {HotOS IX: The 9th Workshop on Hot Topics in Operating Systems},
7622 publisher = {USENIX Association},
7623 address = {Lihue, Hawaii, U.S.A.},
7624 month = may,
7625 year = 2003,
7626 pages = {19-24},
7627}
7628
7629@techreport{Moss90,
7630 keywords = {Swizzling, database},
7631 contributer = {akgoel@plg},
7632 author = {J. Moss},
7633 title = {Working with Persistent Objects: To Swizzle or Not to Swizzle},
7634 institution = {CS Department, University of Massachusetts},
7635 address = {},
7636 number = {CS 90-38},
7637 month = may,
7638 year = 1990,
7639}
7640
7641@inproceedings{Str:oop,
7642 keywords = { },
7643 contributer = {pabuhr@plg},
7644 author = {Bjarne Stroustrup},
7645 title = {What is ``Object-Oriented Programming''?},
7646 booktitle = {Proceedings of the First European Conference on Object Oriented Programming},
7647 month = jun,
7648 year = 1987
7649}
7650
7651@misc{Stroustrup:overloading,
7652 keywords = {operator overloading},
7653 contributer = {pabuhr@plg},
7654 author = {Bjarne Stroustrup},
7655 title = {Why can't I overload dot, ::, sizeof, etc.?},
7656 month = oct,
7657 year = 2007,
7658 howpublished= {{\small\textsf{http://\-www.research.att.com/\-bs/\-bs\_faq2.html\-\#overload-dot}}},
7659}
7660
7661@techreport{Gray85,
7662 keywords = {fault-tolerant system},
7663 contributer = {pabuhr@plg},
7664 author = {Jim Gray},
7665 title = {Why Do Computers Stop and What Can Be Done About It?},
7666 institution = {Tandem Computers},
7667 number = {85.7 PN87614},
7668 month = jun,
7669 year = 1985,
7670 note = {\href{http://www.hpl.hp.com/techreports/tandem/TR-85.7.pdf}{http://www.hpl.hp.com/\-techreports/\-tandem/\-TR-85.7.pdf}},
7671}
7672
7673@article{Tarjan84,
7674 keywords = {union-find},
7675 contributer = {a3moss@uwaterloo.ca},
7676 author = {Tarjan, Robert E. and van Leeuwen, Jan},
7677 title = {Worst-case Analysis of Set Union Algorithms},
7678 journal = {J. ACM},
7679 issue_date = {April 1984},
7680 volume = 31,
7681 number = 2,
7682 month = mar,
7683 year = 1984,
7684 issn = {0004-5411},
7685 pages = {245--281},
7686 numpages = {37},
7687 url = {http://doi.acm.org/10.1145/62.2160},
7688 doi = {10.1145/62.2160},
7689 acmid = {2160},
7690 publisher = {ACM},
7691 address = {New York, NY, USA},
7692}
7693
7694% X
7695
7696% Y
7697
7698% Z
7699
7700% Cross-referenced entries:
7701
7702% O
7703
7704% The SIGPLAN Notices issue should be in a note field, but notes are
7705% inherited by all refering entries, instead of being held in the
7706% cross-referenced entry. Putting it in "publisher" is a kludge, but it
7707% works.
7708@proceedings{OOPSLA86,
7709 contributer = {gjditchfield@plg},
7710 title = {{OOPSLA} '86 Conference Proceedings},
7711 booktitle = {{OOPSLA} '86 Conference Proceedings},
7712 year = 1986,
7713 editor = {Norman Meyrowitz},
7714 publisher = sigplan,
7715 organization= {Association for Computing Machinery},
7716 address = {Portland, Oregon},
7717 month = sep,
7718}
7719
7720@proceedings{OOPSLA87,
7721 contributer = {gjditchfield@plg},
7722 title = {{OOPSLA} '87 Conference Proceedings},
7723 booktitle = {{OOPSLA} '87 Conference Proceedings},
7724 year = 1987,
7725 editor = {Norman Meyrowitz},
7726 publisher = sigplan,
7727 organization= {Association for Computing Machinery},
7728 address = {Orlando, Florida},
7729 month = oct,
7730}
7731
7732@proceedings{OOPSLA88,
7733 contributer = {gjditchfield@plg},
7734 title = {{OOPSLA} '88 Conference Proceedings},
7735 booktitle = {{OOPSLA} '88 Conference Proceedings},
7736 year = 1988,
7737 editor = {Norman Meyrowitz},
7738 publisher = sigplan,
7739 organization= {Association for Computing Machinery},
7740 address = {San Diego, California},
7741 month = sep,
7742}
7743
7744@proceedings{OOPSLA89,
7745 contributer = {gjditchfield@plg},
7746 title = {{OOPSLA} '89 Conference Proceedings},
7747 booktitle = {{OOPSLA} '89 Conference Proceedings},
7748 year = 1989,
7749 editor = {Norman Meyrowitz},
7750 publisher = sigplan,
7751 organization= {Association for Computing Machinery},
7752 address = {New Orleans, Louisiana},
7753 month = oct,
7754}
7755
7756@proceedings{OOPSLA90,
7757 contributer = {gjditchfield@plg},
7758 title = {{OOPSLA/ECOOP} '90 Conference Proceedings},
7759 booktitle = {{OOPSLA} '90 Conference Proceedings},
7760 year = 1990,
7761 editor = {Norman Meyrowitz},
7762 publisher = sigplan,
7763 organization= {Association for Computing Machinery},
7764 address = {Ottawa, Canada},
7765 month = oct,
7766}
7767
7768@proceedings{OOPSLA91,
7769 contributer = {gjditchfield@plg},
7770 title = {{OOPSLA} '91 Conference Proceedings},
7771 booktitle = {{OOPSLA} '91 Conference Proceedings},
7772 year = 1991,
7773 editor = {Andreas Paepcke},
7774 publisher = sigplan,
7775 organization= {Association for Computing Machinery},
7776 address = {Phoenix, Arizona},
7777 month = oct,
7778}
Note: See TracBrowser for help on using the repository browser.