source: doc/bibliography/pl.bib@ eeb0767

ADT aaron-thesis arm-eh ast-experimental cleanup-dtors deferred_resn enum forall-pointer-decay jacob/cs343-translation jenkins-sandbox new-ast new-ast-unique-expr no_list persistent-indexer pthread-emulation qualifiedEnum stuck-waitfor-destruct
Last change on this file since eeb0767 was eeb0767, checked in by Aaron Moss <a3moss@…>, 8 years ago

Add discussion of variants of environment data structures to thesis

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