source: doc/bibliography/pl.bib@ f441c88

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
Last change on this file since f441c88 was 57b0b1f, checked in by Aaron Moss <a3moss@…>, 7 years ago

Described persistent union-find in thesis

  • Property mode set to 100644
File size: 242.8 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@inproceedings{Conchon07,
5442 keywords = {persistent array, union-find},
5443 contributer = {a3moss@uwaterloo.ca},
5444 title={A persistent union-find data structure},
5445 author={Conchon, Sylvain and Filli{\^a}tre, Jean-Christophe},
5446 booktitle={Proceedings of the 2007 workshop on Workshop on ML},
5447 pages={37--46},
5448 year={2007},
5449 organization={ACM}
5450}
5451
5452@article{poly,
5453 keywords = {Poly, Standard ML, Russell, persistence},
5454 contributer = {gjditchfield@plg},
5455 author = {David C. J. Matthews},
5456 title = {Poly Manual},
5457 journal = sigplan,
5458 month = sep, year = 1985,
5459 volume = 20, number = 9, pages = {52-76}
5460}
5461
5462@techreport{Atkinson87b,
5463 keywords = {naming, persistence},
5464 contributer = {pabuhr@plg},
5465 author = {M. P. Atkinson and R. Morrison},
5466 title = {Polymorphic Names and Iterations},
5467 institution = {Universities of Glasgow and St. Andrews, Scotland},
5468 number = {PPRR-53-87},
5469 month = nov,
5470 year = 1987,
5471}
5472
5473@book{Harland,
5474 keywords = {},
5475 author = {David M. Harland},
5476 title = {Polymorphic Programming Languages: Design and Implementation},
5477 publisher = {Ellis Horwood},
5478 year = 1984,
5479 series = {Computers and their Applications},
5480 address = {Market Cross House, Cooper Street, Chichester, West Sussex, PO19 1EB, England},
5481 summary = {
5482 The principles of Procedural Abstraction, Data Type Completeness,
5483 Declaration Correspondence, and Orthogonality are ruthlessly applied
5484 to the design of a polymorphic language.
5485 }
5486}
5487
5488@unpublished{poa,
5489 keywords = {Force N, type inference, reusability, transcendance},
5490 contributer = {gjditchfield@plg},
5491 author = {G. V. Cormack and A. K. Wright},
5492 title = {Polymorphism, Overloading, and Abstraction},
5493 note = {personal communication}
5494}
5495
5496@inproceedings{forceone:impl,
5497 keywords = {Parametric polymorphism, ForceOne},
5498 contributer = {gjditchfield@plg},
5499 author = {G. V. Cormack and A. K. Wright},
5500 title = {Polymorphism in the Compiled Language {ForceOne}},
5501 booktitle = {Proceedings of the 20th Hawaii International Conference on Systems Sciences},
5502 month = jan,
5503 year = 1987,
5504 pages = {284-292},
5505}
5506
5507@incollection{POOL-T,
5508 keywords = {objects, concurrency},
5509 contributer = {pabuhr@plg},
5510 author = {Pierre America},
5511 title = {POOL-T: A Parallel Object-Oriented Language},
5512 booktitle = {Object-Oriented Concurrent Programming},
5513 publisher = {The MIT Press},
5514 year = 1987,
5515 pages = {199-220},
5516 editor = {Akinori Yonezawa and Mario Tokoro}
5517}
5518
5519@article{Hardgrave76,
5520 keywords = {positional, keyword, parameters, arguments},
5521 contributer = {pabuhr@plg},
5522 author = {W. T. Hardgrave},
5523 title = {Positional versus Keyword Parameter Communication in Programming Languages},
5524 journal = sigplan,
5525 volume = 11,
5526 number = 5,
5527 month = may,
5528 year = 1976,
5529 pages = {52-58},
5530}
5531
5532@inproceedings{Rafkind09,
5533 keywords = {accurate, C programming language, conservative, garbage collection, precise},
5534 contributer = {pabuhr@plg},
5535 author = {Rafkind, Jon and Wick, Adam and Regehr, John and Flatt, Matthew},
5536 title = {Precise Garbage Collection for C},
5537 booktitle = {Proceedings of the 2009 International Symposium on Memory Management},
5538 series = {ISMM '09},
5539 year = {2009},
5540 location = {Dublin, Ireland},
5541 pages = {39-48},
5542 publisher = {ACM},
5543 address = {New York, NY, USA},
5544}
5545
5546@article{Ada:preliminary,
5547 keywords = {Ada},
5548 contributer = {pabuhr@plg},
5549 author = {Jean D. Ichbiah and Bernd Krieg-Brueckner and Brian A. Wichmann
5550 and Henry F. Ledgard and Jean-Claude Heliard and Jean-Raymond Abrial
5551 and John G. P. Barnes and Olivier Roubine},
5552 title = {Preliminary {Ada} Reference Manual},
5553 journal = sigplan,
5554 volume = 14,
5555 number = 6,
5556 month = jun,
5557 year = 1979,
5558 note = {Part A},
5559}
5560
5561@techreport{Forsythe,
5562 author = {John C. Reynolds},
5563 title = {Preliminary Design of the Programming Language {Forsythe}},
5564 institution = {Carnegie Mellon University},
5565 number = {CMU-CS-88-159},
5566 month = jun,
5567 year = 1988,
5568}
5569
5570@article{PRESTO,
5571 keywords = {concurrency, threads},
5572 contributer = {dgharriss@plg},
5573 author = {B. N. Bershad and E. D. Lazowska and H. M. Levy},
5574 title = {{PRESTO}: A System for Object-oriented Parallel Programming},
5575 journal = spe,
5576 volume = 18,
5577 number = 8,
5578 month = aug,
5579 year = 1988,
5580 pages = {713-732}
5581}
5582
5583@book{Ben-Ari82,
5584 keywords = {concurrency, parallel, programming languages},
5585 contributer = {pabuhr@plg},
5586 author = {Mordechai Ben-Ari},
5587 title = {Principles of Concurrent Programming},
5588 publisher = {Prentice-Hall International},
5589 address = {Englewood Cliffs},
5590 year = 1982,
5591}
5592
5593@book{Tennent81,
5594 author = {R. D. Tennent},
5595 title = {Principles of Programming Languages},
5596 publisher = {Prentice-Hall International},
5597 address = {Englewood Cliffs},
5598 year = 1981,
5599 series = {Series in Computer Science}
5600}
5601
5602@article{Lister77,
5603 keywords = {monitors, nested monitor calls},
5604 contributer = {pabuhr@plg},
5605 author = {Andrew Lister},
5606 title = {The Problem of Nested Monitor Calls},
5607 journal = osr,
5608 volume = 11,
5609 number = 3,
5610 month = jul,
5611 year = 1977,
5612 pages = {5-7},
5613}
5614
5615@article{psa:persistence,
5616 keywords = {persistence, first-class procedures, closure, PS-Algol, Abstract Data Types},
5617 contributer = {gjditchfield@plg},
5618 author = {Malcolm P. Atkinson and Ronald Morrison},
5619 title = {Procedures as Persistent Data Objects},
5620 journal = toplas,
5621 volume = {7}, number = {4},
5622 pages = {539-559},
5623 month = oct, year = 1985,
5624 comment = {
5625 PS-Algol has ``structures'', accessible only through ``pntrs''.
5626 Pntrs can refer to any type of structure. Field references involve
5627 a run-time check. This, plus first-class procedures, can simulate
5628 abstract data types. Procedure variables operating on pntrs
5629 simulate ADT operations. A block defines a structure to implement
5630 the ADT, and assigns procedures to the variables. Functions
5631 returning structures containing procedures simulate multiple
5632 implementations and parameterized ADTs.
5633
5634 An outer procedure that returns a procedure that contains
5635 (non-local) references to the outer procedure's parameters
5636 implements partial evaluation.
5637
5638 Modules can be simulated like ADT's. The module itself is a
5639 structure instance that is placed in persistent storage, and the
5640 module is imported by fetching it from the persistent store.
5641 Multiple instances of modules are easy. Installation of new
5642 versions can be done by replacing the version in the database.
5643 }
5644}
5645
5646@article{Procol89,
5647 keywords = {active objects, object-oriented languages, object-based languages, explicit per-object protocol},
5648 contributer = {akgoel@plg},
5649 author = {Jan van den Bos and Chris Laffra},
5650 title = {PROCOL: A Parallel Object Language with Protocols},
5651 journal = sigplan,
5652 volume = 24,
5653 number = 10,
5654 month = oct,
5655 year = 1989,
5656 pages = {95-102},
5657 note = {Proceedings of the OOPSLA'89 Conference, Oct. 1--6, 1989, New Orleans, Lousiana},
5658 abstract = {},
5659}
5660
5661@inproceedings{Buhr98,
5662 keywords = {profiling, monitoring, visualization},
5663 contributer = {pabuhr@plg},
5664 author = {Peter A. Buhr and Robert Denda},
5665 title = {{$\mu$Profiler} : Profiling User-Level Threads in a Shared-Memory Programming Environment},
5666 booktitle = {Proceedings of the Second International Symposium on Computing in Object-Oriented Parallel Environments (ISCOPE'98)},
5667 series = {Lecture Notes in Computer Science},
5668 publisher = {Springer-Verlag},
5669 volume = 1505,
5670 opteditor = {Dennis Caromel and Rodney R. Oldehoeft and Marydell Tholburn},
5671 address = {Santa Fe, New Mexico, U.S.A.},
5672 month = dec,
5673 year = 1998,
5674 pages = {159-166},
5675}
5676
5677@book{PowerPC,
5678 key = {PowerPC processor},
5679 title = {Programming Environments Manual for 32-Bit Implementations of the PowerPC ArchitectureARM Architecture},
5680 publisher = {Freescale Semiconductor},
5681 volume = {MPCFPE32B},
5682 edition = {Rev. 3},
5683 month = 9,
5684 year = 2005,
5685}
5686
5687@book{Butenhof97,
5688 keywords = {PThreads, concurrency},
5689 contributer = {pabuhr@plg},
5690 author = {David R. Butenhof},
5691 title = {Programming with {POSIX} Threads},
5692 publisher = {Addison-Wesley},
5693 address = {Boston},
5694 series = {Professional Computing},
5695 year = 1997,
5696}
5697
5698@book{SETL,
5699 keywords = {SETL},
5700 contributer = {pabuhr@plg},
5701 author = {J. T. Schwartz and R. B. K. Dewar and E. Dubinsky and E. Schonberg},
5702 title = {Programming with Sets: An Introduction to {SETL}},
5703 publisher = {Springer},
5704 address = {New York, NY, USA},
5705 year = 1986,
5706}
5707
5708@book{Genuys68,
5709 keywords = {contains Dijkstra's Cooperating Sequential Processes},
5710 contributer = {pabuhr@plg},
5711 editor = {F. Genuys},
5712 title = {Programming Languages},
5713 publisher = {Academic Press},
5714 address = {London, New York},
5715 year = 1968,
5716 note = {NATO Advanced Study Institute, Villard-de-Lans, 1966}
5717}
5718
5719@manual{ANSI99:C,
5720 keywords = {ANSI C 99},
5721 contributer = {pabuhr@plg},
5722 title = {Programming Languages -- {C}},
5723 organization= {International Standard ISO/IEC 9899:1999 (E)},
5724 publisher = {American National Standards Institute},
5725 address = {www.ansi.org},
5726 year = 1999,
5727}
5728
5729@manual{ANSI98:C++,
5730 keywords = {ANSI C++ 98},
5731 contributer = {pabuhr@plg},
5732 key = {C++98},
5733 title = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language ISO/IEC 14882:1998},
5734 edition = {1st},
5735 publisher = {International Standard Organization},
5736 address = {\href{https://www.iso.org/standard/25845.html}{https://\-www.iso.org/\-standard/\-25845.html}},
5737 year = 1998,
5738}
5739
5740@manual{C++14,
5741 keywords = {ISO/IEC C++ 14},
5742 contributer = {pabuhr@plg},
5743 key = {C++14},
5744 title = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language ISO/IEC 14882:2014},
5745 edition = {4th},
5746 publisher = {International Standard Organization},
5747 address = {\href{https://www.iso.org/standard/64029.html}{https://\-www.iso.org/\-standard/\-64029.html}},
5748 year = 2014,
5749}
5750
5751@manual{MS:VisualC++,
5752 keywords = {Microsoft Visual C++},
5753 contributer = {pabuhr@plg},
5754 title = {Microsoft Visual {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} .NET Language Reference},
5755 organization= {Microsoft Corporation},
5756 year = 2002,
5757 note = {Microsoft Press, Redmond, Washington, U.S.A.},
5758}
5759
5760@article{HasselBring00,
5761 keywords = {concurrency, prototyping},
5762 contributer = {pabuhr@plg},
5763 author = {Wilhelm Hasselbring},
5764 title = {Programming Languages and Systems for Prototyping Concurrent Applications},
5765 journal = acmcs,
5766 volume = 32,
5767 number = 1,
5768 month = mar,
5769 year = 2000,
5770 pages = {43-79},
5771}
5772
5773@article{LLgen,
5774 keywords = {ll(1), parser generator, separate compilation},
5775 contributer = {gjditchfield@plg},
5776 author = {Dick Grune and Ceriel J. J. Jacobs},
5777 title = {A Programmer-friendly LL(1) Parser Generator},
5778 journal = spe,
5779 month = jan, year = 1988,
5780 volume = 18, number = 1, pages = {29-33},
5781 comment = {
5782 LLgen generates C-language recursive-descent parsers. The input
5783 contains procedure-like rules with alternation and repetition
5784 constructs on the right, and (typed) parameters on the left.
5785 C actions are specified between items in the right side.
5786 Alternation and repetition (reduce and shift) conflicts can be
5787 resolved statically or at run time.
5788
5789 A grammar can be specified in several files. All files must be
5790 submitted to LLgen at once, but if the C file generated is no
5791 different from the old version, then the old version is not
5792 replaced and hence need not be recompiled, which saves lots of
5793 time.
5794
5795 When an incorrect token is found, the automatic error recovery
5796 algorithm discards tokens until an ``acceptable'' token is found;
5797 if the acceptable token is not correct, a correct one is inserted.
5798 }
5799}
5800
5801@techreport{russell,
5802 keywords = {Russell},
5803 contributer = {gjditchfield@plg},
5804 author = {H. Boehm and A. Demers and J. Donahue},
5805 title = {A Programmer's Introduction to Russell},
5806 institution = {Rice University},
5807 year = 1985,
5808 number = {85-16}
5809}
5810
5811@techreport{PDM89,
5812 keywords = {existential types, universal types},
5813 contributer = {gjditchfield@plg},
5814 author = {Benjamin Pierce and Scott Dietzen and Spiro Michaylov},
5815 title = {Programming in Higher-Order Typed Lambda Calculi},
5816 institution = {School of Computer Science, Carnegie Mellon University},
5817 year = 1989,
5818 address = {Pittsburg, PA 15213-3890},
5819 month = mar, number = {CMU-CS-89-111},
5820 abstract = {
5821 This tutorial presents a hierarchy of increasingly powerful
5822 languages, beginning with Church's simply typed
5823 \(\lambda\)-calculus (\(F_1\)) and the second-order polymorphic
5824 \(\lambda\)-calculus of Girard and Reynolds, and culminating in a
5825 fragment of Girard's \(\omega\)-order polymorphic
5826 \(\lambda\)-calculus (\(F_\omega\)). Our focus throughout is on
5827 the unusual style of programming that arises in these languages,
5828 where all functions are total and the primary control construct is
5829 iteration rather than general recursion.
5830 }
5831}
5832
5833@book{Modula-2,
5834 keywords = {modules, coroutines},
5835 contributer = {pabuhr},
5836 author = {Niklaus Wirth},
5837 title = {Programming in Modula-2},
5838 publisher = {Springer},
5839 address = {New York},
5840 year = 1988,
5841 edition = {4th},
5842 series = {Texts and Monographs in Computer Science},
5843}
5844
5845@manual{Ada,
5846 keywords = {Ada, packages, tasks, exceptions},
5847 contributer = {pabuhr@plg},
5848 title = {The Programming Language {Ada}: Reference Manual},
5849 author = {Ada},
5850 organization= {United States Department of Defense},
5851 edition = {{ANSI/MIL-STD-1815A-1983}},
5852 month = feb,
5853 year = 1983,
5854 note = {Springer, New York},
5855}
5856
5857@manual{ada:old,
5858 keywords = {Ada, packages, tasks, exceptions},
5859 contributer = {gjditchfield@plg},
5860 title = {The Programming Language {Ada}: Reference Manual},
5861 organization= {United States Department of Defense},
5862 publisher = {Springer},
5863 year = 1981
5864}
5865
5866@book{Ghezzi,
5867 keywords = {},
5868 author = {Carlo Ghezzi and Mehdi Jazayeri},
5869 title = {Programming Language Concepts},
5870 publisher = {Wiley},
5871 year = 1982
5872}
5873
5874@article{ConcurrentPascal,
5875 keywords = {Concurrent Pascal},
5876 contributer = {pabuhr@plg},
5877 author = {Per {Brinch Hansen}},
5878 title = {The Programming Language Concurrent Pascal},
5879 journal = ieeese,
5880 volume = 2,
5881 month = jun,
5882 year = 1975,
5883 pages = {199-206}
5884}
5885
5886@phdthesis{Buhr85:thesis,
5887 keywords = {},
5888 contributer = {pabuhr@plg},
5889 author = {P. A. Buhr},
5890 title = {A Programming System},
5891 school = {University of Manitoba},
5892 year = {1985}
5893}
5894
5895@techreport{pierce91,
5896 keywords = {typed lambda calculus},
5897 contributer = {gjditchfield@plg},
5898 author = {Benjamin C. Pierce},
5899 title = {Programming with Intersection Types, Union Types, and Polymorphism},
5900 institution = {Carnegie Mellon University},
5901 year = 1991,
5902 month = feb, number = "CMU-CS-91-106",
5903 annote = {
5904 Discusses a typed lambda calculus with
5905 \begin{itemize}
5906 \item
5907 Intersection types \(\tau = \tau_1\wedge\tau_2\) with \(\tau \le
5908 \tau_i\) for all \(i\).
5909 \item
5910 Union types \(\tau = \tau_1\vee\tau_2\) with \(\tau_i \le \tau\),
5911 and with implicit coercions from \(tau_i\) to \(\tau\). Only
5912 operations valid for both element types can be applied to the
5913 union; there are no projections. Union types are to variant
5914 records as set union is to disjoint set union.
5915 \item
5916 Function types and universal quantification, with subtyping rules.
5917 When functions and arguments intersections, the result of
5918 application is the intersection of all valid combinations.
5919 \item
5920 Distribution rules for combinations of types.
5921 \item
5922 "Union elimination": "case \(x = e\) of \(e'\)", where \(e\) is a
5923 union, has type \(\tau\) if \(e'\) has that type with \(x\) having
5924 every element type of the union.
5925 \item
5926 "Finitary quantification": "for \(t\) in \(\tau_1,\ldots,\tau_n.e\)"
5927 typechecks \(e\) with \(t\) bound to each choice, and intersects
5928 the results.
5929 \end{itemize}
5930
5931 Examples include: type of "natural" numbers, treated as a union of
5932 "zero" and "positive" types; default parameters, faked by using an
5933 argument that is an intersection of a data type and a function
5934 taking an explicit argument.
5935
5936 Unions can be mostly faked, according to Mitchell:
5937 \[\tau_1\vee\tau_2 \equiv
5938 \forall\tau.(\tau_1\on\tau)\wedge(\tau_2\on\tau)\]
5939 }
5940}
5941
5942@article{Moore75,
5943 keywords = {approximation methods, integrated circuits},
5944 contributer = {pabuhr@plg},
5945 author = {Gordon E. Moore},
5946 title = {Progress in Digital Integrated Electronics},
5947 journal = {Technical Digest, International Electron Devices Meeting, IEEE},
5948 year = 1975,
5949 pages = {11-13},
5950}
5951
5952@article{promises,
5953 keywords = {futures, Argus, call streams, rpc},
5954 contributer = {gjditchfield@plg},
5955 author = {Barbara Liskov and Liuba Shrira},
5956 title = {Promises: Linguistic Support for Efficient Asynchronous Procedure Calls in Distributed Systems},
5957 journal = sigplan,
5958 year = 1988,
5959 month = jul, volume = 23, number = 7, pages = {260-267},
5960 note = {Proceedings of the SIGPLAN '88 Conference on Programming Language
5961 Design and Implementation},
5962 abstract = {
5963 This paper deals with the integration of an efficient asynchronous
5964 remote procedure call mechanism into a programming language. It
5965 describes a new data type called a {\em promise} that was designed
5966 to support asynchronous calls. Promises allow a caller to run in
5967 parallel with a call and to pick up the results of the call,
5968 including any exceptions it raises, in a convenient and type-safe
5969 manner. The paper also discusses efficient composition of
5970 sequences of asynchronous calls to different locations in a
5971 network.
5972 }
5973}
5974
5975@article{Cook89,
5976 keywords = {},
5977 contributer = {gjditchfield@plg},
5978 author = {W. R. Cook},
5979 title = {A Proposal for Making {Eiffel} Type-safe},
5980 journal = {The Computer Journal},
5981 year = 1989,
5982 volume = 32, number = 4, pages = {305-311},
5983 abstract = {
5984
5985 }
5986}
5987
5988@inproceedings{Foxall79,
5989 keywords = {},
5990 contributer = {pabuhr@plg},
5991 author = {D. G. Foxall and M. L. Joliat and R. F. Kamel and J. J. Miceli},
5992 title = {{PROTEL}: A High Level Language for Telephony},
5993 booktitle = {Proceedings 3rd International Computer Software and Applications Conference},
5994 month = nov,
5995 year = 1979,
5996 pages = {193-197},
5997}
5998
5999@techreport{PS-Algol,
6000 keywords = {algol, persistence},
6001 contributer = {pabuhr@plg},
6002 key = {PS-Algol},
6003 title = {The {PS-Algol} Reference Manual, 4th Ed.},
6004 author = {},
6005 institution = {University of Glasgow and St. Andrews, Scotland},
6006 number = {PPRR 12},
6007 month = jun,
6008 year = 1987,
6009}
6010
6011@manual{Python,
6012 keywords = {Python},
6013 contributer = {pabuhr@plg},
6014 title = {Python Reference Manual, Release 2.5},
6015 author = {Guido van Rossum},
6016 organization= {Python Software Foundation},
6017 month = sep,
6018 year = 2006,
6019 note = {Fred L. Drake, Jr., editor},
6020}
6021
6022% Q
6023
6024@article{Grossman06,
6025 keywords = {Cyclone, existential types, polymorphism, type variables},
6026 contributer = {a3moss@plg},
6027 author = {Dan Grossman},
6028 title = {Quantified Types in an Imperative Language},
6029 journal = toplas,
6030 issue_date = {May 2006},
6031 volume = {28},
6032 number = {3},
6033 month = may,
6034 year = 2006,
6035 issn = {0164-0925},
6036 pages = {429-475},
6037 url = {http://doi.acm.org.proxy.lib.uwaterloo.ca/10.1145/1133651.1133653},
6038 doi = {10.1145/1133651.1133653},
6039 acmid = {1133653},
6040 publisher = {ACM},
6041 address = {New York, NY, USA},
6042}
6043
6044@article{Nakaike15,
6045 keywords = {hardware transactional memory},
6046 contributer = {pabuhr@plg},
6047 author = {Nakaike, Takuya and Odaira, Rei and Gaudet, Matthew and Michael, Maged M. and Tomari, Hisanobu},
6048 title = {Quantitative Comparison of Hardware Transactional Memory for Blue Gene/Q, zEnterprise {EC12}, {I}ntel Core, and {POWER8}},
6049 journal = {SIGARCH Comput. Archit. News},
6050 volume = {43},
6051 number = {3},
6052 month = jun,
6053 year = {2015},
6054 pages = {144--157},
6055 publisher = {ACM},
6056 address = {New York, NY, USA},
6057}
6058
6059% R
6060
6061@article{Ada:rationale:preliminary,
6062 keywords = {Ada},
6063 contributer = {pabuhr@plg},
6064 author = {J. D. Ichbiah and J. C. Heliard and O. Roubine and
6065 J. G. P. Barnes and B. Krieg-Brueckner and B. A. Wichmann},
6066 title = {Rationale for the Design of the {ADA} Programming Language},
6067 journal = sigplan,
6068 volume = 14,
6069 number = 6,
6070 month = jun,
6071 year = 1979,
6072 note = {Part B},
6073}
6074
6075@book{Ada:rationale,
6076 keywords = {Ada},
6077 contributer = {pabuhr@plg},
6078 author = {Jean D. Ichbiah and John G. P. Barnes and Robert J. Firth and Mike Woodger},
6079 title = {Rationale for the Design of the {ADA} Programming Language},
6080 publisher = {Under Secretary of Defense, Research and Engineering},
6081 year = 1986,
6082 address = {Ada Joint Program Office, OUSDRE(R\&AT), The Pentagon, Washington, D. C., 20301, U.S.A.},
6083}
6084
6085@manual{Ada95,
6086 keywords = {Ada},
6087 contributer = {pabuhr@plg},
6088 title = {{A}da Reference Manual},
6089 edition = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
6090 organization= {Intermetrics, Inc.},
6091 month = dec,
6092 year = 1995,
6093 note = {Language and Standards Libraries}
6094}
6095
6096@manual{Ada12,
6097 keywords = {ISO/IEC Ada},
6098 contributer = {pabuhr@plg},
6099 author = {Ada12},
6100 title = {Programming languages -- {Ada} ISO/IEC 8652:2012},
6101 edition = {3rd},
6102 publisher = {International Standard Organization},
6103 address = {\href{https://www.iso.org/standard/61507.html}{https://\-www.iso.org/\-standard/\-61507.html}},
6104 year = 2012,
6105}
6106
6107@manual{Ada95:annotated,
6108 keywords = {Ada},
6109 contributer = {pabuhr@plg},
6110 title = {Annotated {A}da Reference Manual},
6111 edition = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
6112 organization = {Intermetrics, Inc.},
6113 month = dec,
6114 year = 1995,
6115 note = {Language and Standards Libraries}
6116}
6117
6118@book{JavaRT00,
6119 keywords = {real time, draft},
6120 contributer = {pabuhr@plg},
6121 author = {Greg Bollella and Ben Brosgol and Peter Dibble and Steve Furr and James Gosling and David Hardin and Mark Turnbull},
6122 title = {The Real-Time Specification for {J}ava},
6123 series = {The Real-Time for Java Expert Group, {\small\textsf{http://\-www.rtj.org}}},
6124 publisher = {Addison-Wesley},
6125 address = {Boston},
6126 year = 2000,
6127}
6128
6129@manual{JavaRT99,
6130 organization= {Real Time for Java Experts Group},
6131 address = {{\small\textsf{http://\-www.rtj.org}}},
6132 month = sep,
6133 year = 1999,
6134}
6135
6136@article{Ronsse03,
6137 keywords = {profiling, replay},
6138 contributer = {pabuhr@plg},
6139 author = {Michiel Ronsse and De Bosschere, Koen and Mark Christiaens and Jacques Chassin de Kergommeaux and Dieter Kranzlm\"{u}ller},
6140 title = {Record/Replay for Nondeterministic Program Executions},
6141 journal = cacm,
6142 month = sep,
6143 year = 2003,
6144 volume = 46,
6145 number = 9,
6146 pages = {62-67},
6147}
6148
6149@article{Robinson48,
6150 keywords = {recursion, Ackermann function},
6151 contributer = {pabuhr@plg},
6152 author = {Raphael Mitchel Robinson},
6153 title = {Recursion and Double Recursion},
6154 publisher = {American Mathematical Society},
6155 journal = {Bulletin of the American Mathematical Society},
6156 volume = 54,
6157 pages = {987-993},
6158 year = 1948,
6159}
6160
6161@article{Dijkstra:red,
6162 keywords = {ada},
6163 contributer = {gjditchfield@plg},
6164 author = {Edsger W. Dijkstra},
6165 title = {On the RED Language submitted to the DoD},
6166 journal = sigplan,
6167 year = 1978,
6168 month = oct,
6169 volume = 13,
6170 number = 10,
6171 pages = {27-32},
6172}
6173
6174@article{RemoteRendezvous,
6175 keywords = {rendezvous, concurrency},
6176 contributer = {pabuhr@plg},
6177 author = {N. D. Gammage and R. F. Kamel and L. M. Casey},
6178 title = {Remote Rendezvous},
6179 journal = spe,
6180 month = oct,
6181 year = 1987,
6182 volume = 17,
6183 number = 10,
6184 pages = {741-755}
6185}
6186
6187@mastersthesis{Schuster99,
6188 author = {Oliver Schuster},
6189 title = {Replay of Concurrent Shared-Memory Programs},
6190 school = {Universit\"at Mannheim},
6191 address = {Mannheim, Deutschland},
6192 year = 1999,
6193 month = apr,
6194 type = {Diplomarbeit},
6195 note = {\href{https://plg.uwaterloo.ca/~usystem/theses/SchusterThesis.pdf}{https://\-plg.uwaterloo.ca/\-$\sim$usystem/\-theses/\-SchusterThesis.pdf}},
6196}
6197
6198@article{Euclid,
6199 keywords = {Euclid},
6200 contributer = {pabuhr@plg},
6201 author = {B. W. Lampson and J. J. Horning and R. L. London and J. G. Mitchell and G. L. Popek},
6202 title = {Report on the Programming Language Euclid},
6203 journal = sigplan,
6204 volume = 12,
6205 number = 2,
6206 month = feb,
6207 year = 1977,
6208 pages = {1-79}
6209}
6210
6211@techreport{LOGLAN88,
6212 keywords = {LOGLAN},
6213 contributer = {pabuhr@plg},
6214 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},
6215 title = {Report on the Programming Language LOGLAN'88},
6216 institution = {Institute of Informatics, University of Warsaw},
6217 address = {Pkin 8th Floor, 00-901 Warsaw, Poland},
6218 number = {},
6219 month = dec,
6220 year = 1988,
6221}
6222
6223@mastersthesis{Schluntz17,
6224 keywords = {constructors, destructors, tuples},
6225 author = {Robert Schluntz},
6226 title = {Resource Management and Tuples in \textsf{C}$\mathbf{\forall}$},
6227 school = {School of Computer Science, University of Waterloo},
6228 year = 2017,
6229 optaddress = {Waterloo, Ontario, Canada, N2L 3G1},
6230 note = {\href{https://uwspace.uwaterloo.ca/handle/10012/11830}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-11830}},
6231}
6232
6233@article{FH91,
6234 keywords = {lcc},
6235 contributer = {gjditchfield@plg},
6236 author = {Christopher W. Fraser and David R. Hanson},
6237 title = {A Retargetable Compiler for {ANSI} {C}},
6238 journal = sigplan,
6239 year = 1991,
6240 month = oct, volume = 26, number = 10, pages = {29-43},
6241 abstract = {
6242 {\tt lcc} is a new retargetable compiler for ANSI C. Versions for
6243 the VAX, Motorola 68020, SPARC, and MIPS are in production use at
6244 Princeton University and at AT\&T Bell Laboratories. With a few
6245 exceptions, little about {\tt lcc} is unusual---it integrates
6246 several well engineered, existing techniques---but it is smaller
6247 and faster than most other C compilers, and it generates code of
6248 comparable quality. {\tt lcc}'s target-independent front end
6249 performs a few simple, but effective, optimizations that contribute
6250 to good code; examples include simulating register declarations and
6251 partitioning switch statements into dense tables. It also
6252 implements target-independent function tracing and expression-level
6253 profiling.
6254 }
6255}
6256
6257@article{Algol68revised,
6258 keywords = {},
6259 contributer = {gjditchfield@plg},
6260 author = {A. van Wijngaarden and B. J. Mailloux and J. E. L. Peck and
6261 C. H. A. Koster and M. Sintzoff and C. H. Lindsey and L. G. L. T.
6262 Meertens and R. G. Fisher},
6263 title = {Revised Report on the Algorithmic Language {ALGOL} 68},
6264 journal = sigplan,
6265 year = 1977,
6266 month = may,
6267 volume = 12,
6268 number = 5,
6269 pages = {1-70}
6270}
6271
6272@article{scheme,
6273 keywords = {},
6274 contributer = {gjditchfield@plg},
6275 author = {Jonathan Rees and William Clinger},
6276 title = {Revised$^3$ Report on the Algorithmic Language {S}cheme},
6277 journal = sigplan,
6278 year = 1986,
6279 month = dec,
6280 volume = 21,
6281 number = 12,
6282 pages = {37-79},
6283}
6284
6285@article{scheme5,
6286 keywords = {scheme},
6287 contributer = {pabuhr@plg},
6288 author = {H. Abelson and Adams, IV, N. I. and D. H. Bartley and G. Brooks and R. K. Dybvig and D. P. Friedman and
6289 R. Halstead and C. Hanson and C. T. Haynes and E. Kohlbecker and D. Oxley and K. M. Pitman and G. J. Rozas and
6290 G. L. Steele Jr. and G. J. Sussman and M. Wand and \emph{Ed. by} Richard Kelsey and William Clinger and Jonathan Rees},
6291 title = {Revised$^5$ Report on the Algorithmic Language {S}cheme},
6292 journal = sigplan,
6293 year = 1998,
6294 month = sep,
6295 volume = 33,
6296 number = 9,
6297 pages = {26-76},
6298}
6299
6300@manual{Rust,
6301 keywords = {Rust programming language},
6302 contributer = {pabuhr@plg},
6303 key = {Rust},
6304 title = {The {R}ust Programming Language},
6305 address = {The Rust Project Developers},
6306 year = 2015,
6307 note = {\href{https://doc.rust-lang.org/reference.html}{https://\-doc.rust-lang\-.org/\-reference.html}},
6308}
6309
6310% S
6311
6312@manual{Scala,
6313 keywords = {Scala programming language},
6314 contributer = {pabuhr@plg},
6315 key = {Scala},
6316 title = {{S}cala Language Specification, Version 2.11},
6317 address = {\'{E}cole Polytechnique F\'{e}d\'{e}rale de Lausanne},
6318 year = 2016,
6319 note = {\href{http://www.scala-lang.org/files/archive/spec/2.11}{http://\-www.scala-lang.org/\-files/\-archive/\-spec/\-2.11}},
6320}
6321
6322@inproceedings{Michael04,
6323 keywords = {lock free, dynamic memory allocation},
6324 contributer = {pabuhr@plg},
6325 author = {Maged M. Michael},
6326 title = {Scalable Lock-free Dynamic Memory Allocation},
6327 booktitle = {PLDI '04: Proceedings of the ACM SIGPLAN 2004 Conference on Programming Language Design and Implementation},
6328 location = {Washington DC, USA},
6329 publisher = {ACM},
6330 address = {New York, NY, USA},
6331 volume = 39,
6332 year = 2004,
6333 month = jun,
6334 pages = {35-46},
6335}
6336
6337@article{Anderson92,
6338 keywords = {light-weight tasks},
6339 contributer = {pabuhr@plg},
6340 author = {Thomas E. Anderson and Brian N. Bershad and Edward D. Lazowska and Henry M. Levy},
6341 title = {Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism},
6342 journal = tocs,
6343 volume = 10,
6344 number = 1,
6345 month = feb,
6346 year = 1992,
6347 pages = {53-79},
6348}
6349
6350@manual{SELF,
6351 keywords = {programming language, obect-oriented, polymorphism},
6352 contributer = {pabuhr@plg},
6353 author = {Ole Agesen and Lars Bak and Craig Chambers and Bay-Wei Chang and Urs H{\o}lzle
6354 and John H. Maloney and Randall B. Smith and David Ungar and Mario Wolczko},
6355 title = {The {SELF} 3.0 Programmer's Reference Manual},
6356 organization= {Sun Microsystems, Inc., and Stanford University},
6357 year = 1993,
6358}
6359
6360@inproceedings{Cardelli84,
6361 keywords = {subtypes, recursive types, records, variants, object oriented},
6362 contributer = {gjditchfield@plg},
6363 author = {Luca Cardelli},
6364 title = {A Semantics of Multiple Inheritance},
6365 booktitle = {Semantics of Data Types},
6366 year = 1984,
6367 pages = {51-67},
6368 editor = {G. Kahn and D. B. MacQueen and G. D. Plotkin},
6369 publisher = {Springer},
6370 note = {Lecture Notes in Computer Science v. 173},
6371}
6372
6373@article{Baker78,
6374 keywords = {Algol display, FUNARG's, Lisp 1.5, deep binding, environment trees, multiprogramming, shallow binding},
6375 contributer = {a3moss@uwaterloo.ca},
6376 author = {Baker,Jr., Henry G.},
6377 title = {Shallow Binding in Lisp 1.5},
6378 journal = {Commun. ACM},
6379 issue_date = {July 1978},
6380 volume = {21},
6381 number = {7},
6382 month = jul,
6383 year = {1978},
6384 issn = {0001-0782},
6385 pages = {565--569},
6386 numpages = {5},
6387 url = {http://doi.acm.org.proxy.lib.uwaterloo.ca/10.1145/359545.359566},
6388 doi = {10.1145/359545.359566},
6389 acmid = {359566},
6390 publisher = {ACM},
6391 address = {New York, NY, USA}
6392}
6393
6394@article{Baker91,
6395 keywords = {shallow binding, functional arrays},
6396 contributer = {a3moss@uwaterloo.ca},
6397 author = {Baker, Henry G.},
6398 title = {Shallow Binding Makes Functional Arrays Fast},
6399 journal = {SIGPLAN Not.},
6400 issue_date = {Aug. 1991},
6401 volume = {26},
6402 number = {8},
6403 month = aug,
6404 year = {1991},
6405 issn = {0362-1340},
6406 pages = {145--147},
6407 numpages = {3},
6408 url = {http://doi.acm.org.proxy.lib.uwaterloo.ca/10.1145/122598.122614},
6409 doi = {10.1145/122598.122614},
6410 acmid = {122614},
6411 publisher = {ACM},
6412 address = {New York, NY, USA},
6413}
6414
6415@techreport{Adve95,
6416 keywords = {shared memory, consistency models},
6417 contributer = {pabuhr@plg},
6418 author = {Sarita V. Adve and Kourosh Gharachorloo},
6419 title = {Shared Memory Consistency Models: A Tutorial},
6420 institution = {Western Research Laboratory},
6421 address = {250 University Avenue, Palo Alto, California, 94301, U.S.A.},
6422 number = {7},
6423 month = sep,
6424 year = 1995,
6425 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}.},
6426}
6427
6428@article{Adve95reprint,
6429 keywords = {shared memory, consistency models},
6430 contributer = {pabuhr@plg},
6431 author = {Sarita V. Adve and Kourosh Gharachorloo},
6432 journal = {Computer},
6433 title = {Shared Memory Consistency Models: A Tutorial},
6434 month = dec,
6435 year = 1996,
6436 volume = 29,
6437 number = 12,
6438 pages = {66-76},
6439}
6440
6441@article{Nickolls08,
6442 author = {Nickolls, John and Buck, Ian and Garland, Michael and Skadron, Kevin},
6443 title = {Scalable Parallel Programming with CUDA},
6444 journal = {Queue},
6445 volume = {6},
6446 number = {2},
6447 month = mar,
6448 year = 2008,
6449 pages = {40-53},
6450 publisher = {ACM},
6451 address = {New York, NY, USA},
6452}
6453
6454@inproceedings{Leissa14,
6455 title = {{S}ierra: a {SIMD} extension for {C}++},
6456 author = {Lei{\ss}a, Roland and Haffner, Immanuel and Hack, Sebastian},
6457 booktitle = {Proceedings of the 2014 Workshop on Workshop on programming models for SIMD/Vector processing},
6458 pages = {17-24},
6459 year = {2014},
6460 organization= {ACM}
6461}
6462
6463@inproceedings{Howard76b,
6464 keywords = {monitors},
6465 contributer = {pabuhr@plg},
6466 author = {J. H. Howard},
6467 title = {Signaling in Monitors},
6468 booktitle = {Proceedings Second International Conference Software Engineering},
6469 address = {San Francisco, U.S.A},
6470 publisher = {IEEE Computer Society},
6471 month = oct,
6472 year = 1976,
6473 pages = {47-52}
6474}
6475
6476@techreport{Schemenauer01,
6477 keywords = {Phthon, generator, coroutine},
6478 contributer = {pabuhr@plg},
6479 author = {Neil Schemenauer and Tim Peters and Magnus Lie Hetland},
6480 title = {Simple Generators},
6481 month = may,
6482 year = 2001,
6483 note = {\href{http://www.python.org/peps/pep-0255.html}{http://\-www.python.org/\-peps/\-pep-0255.html}},
6484}
6485
6486@inproceedings{Michael96,
6487 keywords = {compare_and_swap, concurrent queue, lock-free, multiprogramming, non-blocking},
6488 contributer = {pabuhr@plg},
6489 author = {Maged M. Michael and Michael L. Scott},
6490 title = {Simple, Fast, and Practical Non-blocking and Blocking Concurrent Queue Algorithms},
6491 booktitle = {Proceedings of the Fifteenth Annual ACM Symposium on Principles of Distributed Computing},
6492 series = {PODC'96},
6493 year = 1996,
6494 location = {Philadelphia, Pennsylvania, USA},
6495 pages = {267--275},
6496 numpages = {9},
6497 publisher = {ACM},
6498 address = {New York, NY, USA},
6499}
6500
6501@article{Pennello80,
6502 contributer = {a3moss@uwaterloo.ca},
6503 author = {Pennello, Tom and DeRemer, Frank and Meyers, Richard},
6504 title = {A Simplified Operator Identification Scheme for {Ada}},
6505 journal = {SIGPLAN Notices},
6506 issue_date = {July-August 1980},
6507 volume = {15},
6508 number = {7 and 8},
6509 month = jul,
6510 year = {1980},
6511 issn = {0362-1340},
6512 pages = {82--87},
6513 numpages = {6},
6514 url = {http://doi.acm.org/10.1145/947680.947688},
6515 doi = {10.1145/947680.947688},
6516 publisher = {ACM},
6517 address = {New York, NY, USA},
6518}
6519
6520@inproceedings{Dice10,
6521 keywords = {hardware, synchronization, transactional memory},
6522 author = {Dave Dice and Yossi Lev and Virendra J. Marathe and Mark Moir and Dan Nussbaum and Marek Olszewski},
6523 title = {Simplifying Concurrent Algorithms by Exploiting Hardware Transactional Memory},
6524 booktitle = {Proceedings of the Twenty-second Annual ACM Symposium on Parallelism in Algorithms and Architectures},
6525 series = {SPAA'10},
6526 year = 2010,
6527 location = {Thira, Santorini, Greece},
6528 pages = {325-334},
6529 numpages = {10},
6530 publisher = {ACM},
6531 address = {New York, NY, USA},
6532}
6533
6534@article{PDM:overload,
6535 keywords = {compilation},
6536 contributer = {gjditchfield@plg},
6537 author = {Tom Pennello and Frank DeRemer and Richard Meyers},
6538 title = {A Simplified Operator Identification Scheme for {Ada}},
6539 journal = sigplan,
6540 year = 1980,
6541 month = {July--August},
6542 volume = 15,
6543 number = {7/8},
6544 pages = {82-87},
6545 comment = {
6546 The two-pass (bottom-up, top-down) overload resolution algorithm
6547 for Ada, with a proof that two passes suffice and a claim that two
6548 are necessary. See \cite{D:overload}.
6549 }
6550}
6551
6552@book{SimulaBegin,
6553 author = {Graham M. Birtwistle and Ole-Johan Dahl and Bj{\o}rn Myhrhaug and Kristen Nygaard},
6554 title = {{SIMULA} begin},
6555 publisher = {Studentlitteratur},
6556 year = {1980},
6557 address = {Lund, Sweden},
6558 edition = {2nd},
6559}
6560
6561@book{Simula67,
6562 author = {O-J Dahl and B. Myhrhaug and K. Nygaard},
6563 title = {Simula67 Common Base Language},
6564 month = oct,
6565 year = 1970,
6566 publisher = {Norwegian Com\-puting Center},
6567 address = {Oslo Norway},
6568}
6569
6570@book{smalltalk,
6571 keywords = {Smalltalk, abstract class, protocol},
6572 contributer = {gjditchfield@plg},
6573 author = {A. Goldberg and D. Robson},
6574 title = {Smalltalk-80: The Language and its Implementation},
6575 publisher = {Addison-Wesley},
6576 address = {Reading},
6577 year = 1983
6578}
6579
6580@inproceedings{Edelson92,
6581 keywords = {persistence, pointers},
6582 contributer = {pabuhr@plg},
6583 author = {Daniel R. Edelson},
6584 title = {Smart Pointers: They're Smart, but They're Not Pointers},
6585 booktitle = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Technical Conference Proceedings},
6586 organization= {USENIX Association},
6587 address = {Portland, Oregon, U.S.A.},
6588 month = aug,
6589 year = 1992,
6590 pages = {1-19},
6591}
6592
6593@book{SNOBOL,
6594 keywords = {SNOBOL4},
6595 contributer = {pabuhr@plg},
6596 author = {R. E. Griswold and J. F. Poage and I. P. Polonsky},
6597 title = {The SNOBOL4 Programming Language},
6598 edition = {2nd},
6599 publisher = {Prentice-Hall},
6600 address = {Englewood Cliffs},
6601 year = 1971,
6602}
6603
6604@article{Sutter05b,
6605 keywords = {concurrency},
6606 contributer = {pabuhr@plg},
6607 author = {Herb Sutter and James Larus},
6608 title = {Software and the Concurrency Revolution},
6609 journal = {Queue},
6610 year = 2005,
6611 month = sep,
6612 volume = 3,
6613 number = 7,
6614 pages = {54-62},
6615}
6616
6617@inproceedings{raytheon,
6618 keywords = {cobol},
6619 contributer = {gjditchfield@plg},
6620 author = {Robert G. Lanergan and Charles A. Grasso},
6621 title = {Software Engineering with Reusable Designs and Code},
6622 booktitle = {Workshop on Reusability in Programming},
6623 year = 1983,
6624 month = sep,
6625 pages = {224-234},
6626 organization= {{ITT} Programming},
6627 summary = {
6628 60\% of business application design and code are redundant.
6629 Three standard program plans are used. Reuse doubles productivity
6630 during development and greatly helps program comprehension during
6631 maintenance.
6632 }
6633}
6634
6635@article{Hecht86,
6636 keywords = {exception handling, robustness},
6637 contributer = {pabuhr@plg},
6638 author = {H. Hecht and M. Hecht},
6639 title = {Software Reliability in the Systems Context},
6640 journal = ieeese,
6641 year = 1986,
6642 volume = 12,
6643 number = 1,
6644 pages = {51-58},
6645}
6646
6647@inproceedings{Herlihy03,
6648 author = {Maurice Herlihy and Victor Luchangco and Mark Moir and William N. {Scherer III}},
6649 title = {Software Transactional Memory for Dynamic-sized Data Structures},
6650 booktitle = {Proceedings of the Twenty-second Annual Symposium on Principles of Distributed Computing},
6651 series = {PODC '03},
6652 year = {2003},
6653 location = {Boston, Massachusetts},
6654 pages = {92-101},
6655 numpages = {10},
6656 publisher = {ACM},
6657 address = {New York, NY, USA},
6658}
6659
6660@article{Dijkstra65a,
6661 keywords = {N-thread software-solution mutual exclusion},
6662 contributer = {pabuhr@plg},
6663 author = {Edsger W. Dijkstra},
6664 title = {Solution of a Problem in Concurrent Programming Control},
6665 journal = cacm,
6666 volume = 8,
6667 number = 9,
6668 month = sep,
6669 year = 1965,
6670 pages = {569},
6671 publisher = {ACM},
6672 address = {New York, NY, USA},
6673}
6674
6675@inproceedings{Chen05,
6676 keywords = {fixed-priority, preemption},
6677 contributer = {pabuhr@plg},
6678 author = {Jiongxiong Chen and Ashif Harji and Peter Buhr},
6679 title = {Solution Space for Fixed-Priority with Preemption Threshold},
6680 booktitle = {Proceedings of the 11th Real Time and Embedded Technology and Applications Symposium (RTAS'05)},
6681 organization= {IEEE},
6682 address = {San Francisco, CA, U.S.A},
6683 month = mar,
6684 year = 2005,
6685 pages = {385-394}
6686}
6687
6688@inproceedings{Tiemann88,
6689 keywords = {wrappers},
6690 contributer = {pabuhr@plg},
6691 author = {Michael D. Tiemann},
6692 title = {Solving the RPC problem in GNU {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
6693 booktitle = {Proceedings of the USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
6694 organization= {USENIX Association},
6695 address = {Denver, Colorado, U.S.A},
6696 month = oct,
6697 year = 1988,
6698 pages = {343-361}
6699}
6700
6701@article{Smith98,
6702 keywords = {Polymorphic C},
6703 contributor = {a3moss@uwaterloo.ca},
6704 title = {A sound polymorphic type system for a dialect of {C}},
6705 author = {Smith, Geoffrey and Volpano, Dennis},
6706 journal = {Science of computer programming},
6707 volume = 32,
6708 number = {1-3},
6709 pages = {49-72},
6710 year = {1998},
6711 publisher = {Elsevier}
6712}
6713
6714@book{Campbell74,
6715 keywords = {path expressions},
6716 contributer = {pabuhr@plg},
6717 author = {R. H. Campbell and A. N. Habermann},
6718 title = {The Specification of Process Synchronization by Path Expressions},
6719 publisher = {Springer},
6720 year = 1974,
6721 volume = 16,
6722 pages = {89-102},
6723 series = {Lecture Notes in Computer Science},
6724}
6725
6726@article{Bentley85,
6727 keywords = {CSP, concurrency},
6728 contributer = {pabuhr@plg},
6729 author = {J. Bentley},
6730 title = {A Spelling Checker},
6731 journal = cacm,
6732 month = may,
6733 year = 1985,
6734 volume = 28,
6735 number = 5,
6736 pages = {456-462},
6737}
6738
6739@manual{POSIX01,
6740 keywords = {POSIX, Standard},
6741 contributer = {pabuhr@plg},
6742 key = {POSIX},
6743 title = {1003.1 Standard for Information Technology -- Portable Operating System Interface (POSIX), System Interface, Issue 6},
6744 organization= {IEEE and The Open Group},
6745 year = 2001,
6746}
6747
6748@manual{POSIX08,
6749 keywords = {POSIX, Standard},
6750 contributer = {pabuhr@plg},
6751 key = {POSIX},
6752 title = {1003.1 Standard for Information Technology -- Portable Operating System Interface (POSIX), Base Specifications, Issue 7},
6753 organization= {IEEE and The Open Group},
6754 year = 2008,
6755}
6756
6757@inproceedings{ML:NJ,
6758 keywords = {continuations, ML},
6759 contributer = {pabuhr@plg},
6760 author = {A. Appel and D. MacQueen},
6761 title = {A Standard {ML} Compiler},
6762 booktitle = {Functional Programming Languages and Computer Architecture},
6763 publisher = {Springer},
6764 series = {Lecture Notes in Computer Science},
6765 volume = 274,
6766 year = 1987,
6767 pages = {301-324},
6768}
6769
6770@techreport{MLreport,
6771 keywords = {ML, polymorphism},
6772 contributer = {pabuhr@plg},
6773 author = {R. Milner},
6774 title = {The Standard {ML} Core Language},
6775 institution = {},
6776 number = {Polymorphism II.2},
6777 month = oct,
6778 year = 1985
6779}
6780
6781@inproceedings{Ghelli,
6782 keywords = {},
6783 contributer = {gjditchfield@plg},
6784 author = {Giorgio Ghelli},
6785 title = {A Static Type System for Message Passing},
6786 crossref = "OOPSLA91",
6787 pages = {129-145},
6788 summary = {
6789 A strong, statically checked type system for object oriented
6790 languages is defined by modelling methods as overloaded functions
6791 with a "self" parameter, with dynamic overload resolution. This
6792 allows covariant method redefinition. However, if equality is
6793 covariantly redefined for Point and ColoredPoint classes, and a
6794 ColoredPoint is compared to a Point, Point equality will be used,
6795 even if self is the colored point!
6796 }
6797}
6798
6799@article{Dijkstra68b,
6800 keywords = {semaphore, P/V},
6801 contributer = {pabuhr@plg},
6802 author = {E. W. Dijkstra},
6803 title = {The Structure of the ``{THE}''--Multiprogramming System},
6804 journal = cacm,
6805 month = may,
6806 year = 1968,
6807 volume = 11,
6808 number = 5,
6809 pages = {341-346}
6810}
6811
6812@misc{Sutter15,
6813 contributer = {pabuhr@plg},
6814 author = {Herb Sutter and Bjarne Stroustrup and Gabriel Dos Reis},
6815 title = {Structured bindings},
6816 issue_date = {2015-10-14},
6817 month = oct,
6818 year = 2015,
6819 pages = {1-6},
6820 numpages = {6},
6821 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}},
6822}
6823
6824@book{Holt78,
6825 keywords = {operating systems, concurrency},
6826 contributer = {pabuhr@plg},
6827 author = {R. C. Holt and G. S. Graham and E. D. Lazowska and M. A. Scott},
6828 title = {Structured Concurrent Programming with Operating System Applications},
6829 publisher = {Addison-Wesley},
6830 address = {Boston},
6831 year = 1978,
6832}
6833
6834@article{Stevens74,
6835 keywords = {coupling, cohesion},
6836 contributer = {pabuhr@plg},
6837 author = {W. P. Stevens and and G. J. Myers and L. L. Constantine},
6838 title = {Structured Design},
6839 journal = ibmsj,
6840 year = 1974,
6841 volume = 13,
6842 number = 2,
6843 pages = {115-139},
6844}
6845
6846@article{Hansen72b,
6847 keywords = {critical region},
6848 contributer = {pabuhr@plg},
6849 author = {Per {Brinch Hansen}},
6850 title = {Structured Multiprogramming},
6851 journal = cacm,
6852 volume = 15,
6853 number = 7,
6854 month = jul,
6855 year = 1972,
6856 pages = {574-578},
6857}
6858
6859@article{Knuth74,
6860 keywords = {structured programming, goto statement},
6861 contributer = {pabuhr@plg},
6862 author = {Donald E. Knuth},
6863 title = {Structured Programming with go to Statements},
6864 journal = acmcs,
6865 volume = 6,
6866 number = 4,
6867 month = dec,
6868 year = 1974,
6869 pages = {261-301},
6870 issn = {0360-0300},
6871 doi = {http://doi.acm.org/10.1145/356635.356640},
6872 publisher = {ACM},
6873 address = {New York, NY, USA},
6874}
6875
6876@article{Lang98,
6877 keywords = {real-time, exception handling},
6878 contributer = {pabuhr@plg},
6879 author = {Jun Lang and David B. Stewart},
6880 title = {A Study of the Applicability of Existing Exception-Handling Techniques to Component-Based Real-Time Software Technology},
6881 journal = toplas,
6882 month = mar,
6883 year = 1998,
6884 volume = 20,
6885 number = 2,
6886 pages = {274-301},
6887}
6888
6889@mastersthesis{Fortier89,
6890 keywords = {monitors},
6891 contributer = {pabuhr@plg},
6892 author = {Michel Fortier},
6893 title = {Study of Monitors},
6894 school = {Department of Computer Science, University of Waterloo},
6895 year = 1989,
6896 address = {Waterloo, Ontario, Canada, N2L 3G1},
6897}
6898
6899@techreport{AmadioCardelli,
6900 keywords = {},
6901 contributer = {gjditchfield@plg},
6902 author = {Roberto M. Amadio and Luca Cardelli},
6903 title = {Subtyping Recursive Types},
6904 institution = {Digital Equipment Corporation Systems Research Center},
6905 year = 1990,
6906 address = {130 Lytton Avenue, Palo Alto, California 94301},
6907 month = aug,
6908 number = 62,
6909 summary = {
6910 \[ (s \leq t \Rightarrow \alpha \leq \beta) \Rightarrow
6911 \mu s.\alpha leq \mu t.\beta \]
6912 \[ \alpha = C[\alpha] \and \beta = C[\beta] \and C contractive
6913 \Rightarrow \alpha = \beta \]
6914 where a type \(\alpha\) is contractive in the type variable \(t\)
6915 if either \(t\) does not occur free in \(\alpha\), or \(\alpha\)
6916 can be rewritten via unfolding as a type of the shape
6917 \(\alpha_1 \rightarrow \alpha_2\), and unfolding rewrites
6918 \(\mu t.\alpha\) as \([t\leftarrow\mu t.\alpha]\alpha\). An
6919 algorithm for finding type contexts \(C\) is given.
6920 }
6921}
6922
6923@techreport{Dijkstra80,
6924 keywords = {split binary semaphores, general to binary},
6925 contributer = {pabuhr@plg},
6926 author = {Edsger W. Dijkstra},
6927 title = {The Superfluity of the General Semaphore},
6928 institution = {Nuenen},
6929 address = {Netherlands},
6930 number = {EWD734},
6931 month = apr,
6932 year = 1980,
6933}
6934
6935@inproceedings{Burns81,
6936 keywords = {N-thread software-solution mutual exclusion},
6937 contributer = {pabuhr@plg},
6938 author = {James E. Burns},
6939 title = {Symmetry in Systems of Asynchronous Processes},
6940 booktitle = {22nd Annual Symposium on Foundations of Computer Science, Nashville, TN, USA},
6941 year = 1981,
6942 month = oct,
6943 organization= {IEEE Computer Society},
6944 address = {Los Angeles, CA, USA},
6945 pages = {169-174},
6946}
6947
6948@article{Coffman71,
6949 keywords = {deadlock},
6950 contributer = {pabuhr@plg},
6951 author = {E. G. {Coffman, Jr.} and M. J. Elphick and A. Shoshani},
6952 title = {System Deadlocks},
6953 journal = acmcs,
6954 volume = 3,
6955 number = 2,
6956 month = jun,
6957 year = 1971,
6958 pages = {67-78},
6959 publisher = {ACM Press},
6960 address = {New York, NY, USA},
6961 doi = {http://doi.acm.org/10.1145/356586.356588},
6962}
6963
6964@phdthesis{Holmes99,
6965 keywords = {synchronization, inheritance anomaly},
6966 contributer = {pabuhr@plg},
6967 author = {David Holmes},
6968 title = {Synchronisation Rings: Composable Synchronisation for Object-Oriented Systems},
6969 school = {Department of Computing, Macquarie University},
6970 month = oct,
6971 year = 1999,
6972 address = {Sydney, Australia},
6973}
6974
6975@book{Taubenfeld06,
6976 keywords = {concurrency, synchronization},
6977 author = {Gadi Taubenfeld},
6978 title = {Synchronization Algorithms and Concurrent Programming},
6979 publisher = {Pearson/Prentice-Hall},
6980 address = {Harlow, England},
6981 year = 2006,
6982}
6983
6984@article{Buhr92b,
6985 keywords = {concurrency, exception handling, interventions},
6986 contributer = {pabuhr@plg},
6987 author = {Peter A. Buhr and Hamish I. Macdonald and C. Robert Zarnke},
6988 title = {Synchronous and Asynchronous Handling of Abnormal Events in the $\mu${S}ystem},
6989 journal = spe,
6990 volume = 22,
6991 number = 9,
6992 month = sep,
6993 year = 1992,
6994 pages = {735-776},
6995}
6996
6997@inproceedings{Greenwald96,
6998 keywords = {compare and swap, hardware atomicity},
6999 contributer = {pabuhr@plg},
7000 author = {Michael Greenwald and David Cheriton},
7001 title = {The Synergy between Non-blocking Synchronization and Operating System Structure},
7002 booktitle = {Proceedings of the Second USENIX Symposium on Operating Systems Design and Implementation},
7003 organization= {USENIX Association},
7004 address = {Seattle, Washington, U.S.A.},
7005 month = oct,
7006 year = 1996,
7007 pages = {123-136},
7008}
7009
7010@inbook{SunLWP,
7011 keywords = {light-weight processes, threads},
7012 contributer = {pabuhr@plg},
7013 key = {Sun},
7014 title = {System Services Overview, Lightweight Processes},
7015 chapter = {6},
7016 pages = {71-111},
7017 publisher = {Sun Microsystems},
7018 month = may,
7019 year = 1988,
7020 note = {available as Part Number: 800-1753-10},
7021}
7022
7023@article{Randell75,
7024 contributer = {pabuhr@plg},
7025 author = {Brian Randell},
7026 title = {System Structure for Software Fault Tolerance},
7027 journal = ieeese,
7028 volume = {SE-1},
7029 number = 2,
7030 month = jun,
7031 year = 1975,
7032 pages = {220-232},
7033}
7034
7035@book{Modula-3,
7036 keywords = {language reference manual},
7037 contributer = {pabuhr@plg},
7038 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},
7039 title = {Systems Programming with Modula-3},
7040 publisher = {Prentice-Hall},
7041 address = {Englewood Cliffs},
7042 year = 1991,
7043 series = {Prentice-Hall Series in Innovative Technology}
7044}
7045
7046% T
7047
7048@article{Yeager91,
7049 keywords = {teaching, concurrency},
7050 contributer = {pabuhr@plg},
7051 author = {Dorian P. Yeager},
7052 title = {Teaching Concurrency in the Programming Languages Course},
7053 journal = {SIGCSE BULLETIN},
7054 volume = 23,
7055 number = 1,
7056 month = mar,
7057 year = 1991,
7058 pages = {155-161},
7059 note = {The Papers of the Twenty-Second SIGCSE Technical Symposium on Computer Science Education,
7060 March. 7--8, 1991, San Antonio, Texas, U.S.A.},
7061}
7062
7063@article{ml,
7064 keywords = {ML, polymorphism},
7065 contributer = {gjditchfield@plg},
7066 author = {Robin Milner},
7067 title = {A Theory of Type Polymorphism in Programming},
7068 journal = jcss,
7069 year = 1978,
7070 volume = 17, pages = {348-375}
7071}
7072
7073@book{Thoth,
7074 keywords = {messages, concurrency},
7075 contributer = {pabuhr@plg},
7076 author = {D. R. Cheriton},
7077 title = {The Thoth System: Multi-Process Structuring and Portability},
7078 publisher = {American Elsevier},
7079 year = 1982
7080}
7081
7082@article{Boehm05,
7083 keywords = {concurrency, C++},
7084 contributer = {pabuhr@plg},
7085 author = {Hans-J. Boehm},
7086 title = {Threads Cannot be Implemented as a Library},
7087 journal = sigplan,
7088 volume = 40,
7089 number = 6,
7090 month = jun,
7091 year = 2005,
7092 pages = {261-268},
7093}
7094
7095@misc{TIOBE,
7096 contributer = {pabuhr@plg},
7097 key = {TIOBE Index},
7098 author = {{TIOBE Index}},
7099 howpublished= {\href{http://www.tiobe.com/tiobe_index}{http://\-www.tiobe.com/\-tiobe\_index}},
7100 optnote = {Accessed: 2018-09},
7101}
7102
7103@misc{Bumbulis90,
7104 keywords = {parameter inference, ForceN},
7105 contributer = {gjditchfield@plg},
7106 author = {Peter Bumbulis},
7107 title = {Towards Making Signatures First-Class},
7108 howpublished= {personal communication},
7109 month = sep,
7110 year = 1990,
7111}
7112
7113@techreport{alphard:preempt,
7114 keywords = {},
7115 contributer = {gjditchfield@plg},
7116 author = {Mary Shaw and Wm. A. Wulf},
7117 title = {Toward Relaxing Assumptions in Languages and Their Implementations},
7118 institution = {Carnegie-Mellon University},
7119 year = 1980,
7120 month = jan,
7121 note = {Reprinted in \cite{alphard}.}
7122}
7123
7124@inproceedings{Reynolds74,
7125 keywords = {universal quantification, typed lambda calculus},
7126 contributer = {gjditchfield@plg},
7127 author = {John C. Reynolds},
7128 title = {Towards a Theory of Type Structure},
7129 booktitle = {Colloque sur la Programmation},
7130 year = 1974,
7131 pages = {408-423},
7132 editor = {B. Robinet},
7133 publisher = {Springer},
7134 note = {Lecture Notes in Computer Science, v. 19},
7135 abstract = {
7136
7137 }
7138}
7139
7140@incollection{Hoare72,
7141 keywords = {critical region, concurrency},
7142 contributer = {pabuhr@plg},
7143 author = {C. A. R. Hoare},
7144 title = {Towards a Theory of Parallel Programming},
7145 booktitle = {Operating Systems Techniques},
7146 editor = {C. A. R. Hoare and R. H. Perott},
7147 publisher = {Academic Press, New York},
7148 year = 1972,
7149 pages = {61-71},
7150}
7151
7152@inproceedings{Mitchell90,
7153 keywords = {polymorphism, lambda calculus, bounded quantification},
7154 contributer = {gjditchfield@plg},
7155 author = {John C. Mitchell},
7156 title = {Toward a Typed Foundation for Method Specialization and Inheritance},
7157 booktitle = {Conference Record of the Seventeenth Annual ACM Symposium
7158 on Principles of Programming Languages},
7159 year = 1990,
7160 month = jan, pages = {109-124},
7161 organization= {Association for Computing Machinery},
7162 abstract = {
7163 This paper disucsses the phenomenon of {\em method specialization}
7164 in object-oriented programming languages. A typed function
7165 calculus of objects and classes is presented, featuring method
7166 specialization when methods are added or redefined. The soundness
7167 of the typing rules (without subtyping) is suggested by a
7168 translation into a more traditional calculus with
7169 recursively-defined record types. However, semantic questions
7170 regarding the subtype relation on classes remain open.
7171 }
7172}
7173
7174@article{EL1,
7175 keywords = {polymorphism},
7176 contributer = {pabuhr@plg},
7177 author = {B. Wegbreit},
7178 title = {The Treatment of Data Types in {EL1}},
7179 journal = cacm,
7180 volume = 17,
7181 number = 5,
7182 month = may,
7183 year = 1974,
7184 pages = {251-264},
7185}
7186
7187@mastersthesis{Till89,
7188 keywords = {C, multiple return values, tuples},
7189 contributer = {pabuhr@plg},
7190 author = {David W. Till},
7191 title = {Tuples In Imperative Programming Languages},
7192 school = {Department of Computer Science, University of Waterloo},
7193 year = 1989,
7194 address = {Waterloo, Ontario, Canada, N2L 3G1},
7195}
7196
7197@article{turing:old,
7198 keywords = {verification, context conditions, faithful execution},
7199 contributer = {gjditchfield@plg},
7200 author = {R. C. Holt and J. R. Cordy},
7201 title = {The Turing Programming Language},
7202 journal = cacm,
7203 year = 1988,
7204 month = dec,
7205 volume = 31, number = 12, pages = {1410-1423}
7206}
7207
7208@book{Turing,
7209 keywords = {verification, context conditions, faithful execution},
7210 contributer = {pabuhr@plg},
7211 author = {R. C. Holt},
7212 title = {Turing Reference Manual},
7213 publisher = {Holt Software Associates Inc.},
7214 year = 1992,
7215 edition = {3rd},
7216}
7217
7218@techreport{Dijkstra79,
7219 keywords = {split binary semaphores},
7220 contributer = {pabuhr@plg},
7221 author = {Edsger W. Dijkstra},
7222 title = {A Tutorial on the Split Binary Semaphore},
7223 institution = {Nuenen},
7224 address = {Netherlands},
7225 number = {EWD703},
7226 month = mar,
7227 year = 1979,
7228}
7229
7230@book{pldesign,
7231 keywords = {},
7232 editor = {Anthony I. Wasserman},
7233 title = {Tutorial: Programming Language Design},
7234 publisher = {Computer Society Press},
7235 address = {Los Alamitos},
7236 year = 1980
7237}
7238
7239@misc{TraceCompass,
7240 contributer = {pabuhr@plg},
7241 key = {Trace Compass},
7242 author = {{T}race {C}ompass},
7243 howpublished= {\href{https://projects.eclipse.org/proposals/trace-compass}{https://\-projects.eclipse.org/\-proposals/\-trace-compass}},
7244}
7245
7246@article{Leroy00,
7247 keywords = {type-systems, exceptions},
7248 contributer = {pabuhr@plg},
7249 author = {Xavier Leroy and Fran\c{c}ois Pessaux},
7250 title = {Type-Based Analysis of Uncaught Exceptions},
7251 journal = toplas,
7252 month = mar,
7253 year = 2000,
7254 volume = 22,
7255 number = 2,
7256 pages = {340-377},
7257 comment = {
7258 Argues against declaring exceptions on routine definitions.
7259 },
7260}
7261
7262@article{Cormack90,
7263 keywords = {polymorphism},
7264 contributer = {pabuhr@plg},
7265 author = {G. V. Cormack and A. K. Wright},
7266 title = {Type-dependent Parameter Inference},
7267 journal = sigplan,
7268 volume = 25,
7269 number = 6,
7270 month = jun,
7271 publisher = {ACM},
7272 address = {New York, NY, USA},
7273 year = 1990,
7274 pages = {127-136},
7275 note = {Proceedings of the ACM Sigplan'90 Conference on Programming Language Design and Implementation
7276 June 20-22, 1990, White Plains, New York, U.S.A.},
7277}
7278
7279@article{concatenation,
7280 keywords = {record concatenation, isa},
7281 contributer = {gjditchfield@plg},
7282 author = {N. Wirth},
7283 title = {Type Extensions},
7284 journal = toplas,
7285 volume = {10},
7286 number = {2},
7287 pages = {204-214},
7288 month = apr, year = 1988,
7289 comment = {
7290 Extended record types add fields to their base record. Assignment
7291 truncations. Pointers can point at extended type instances. For
7292 polymorphism, call by value is assignment, and call by reference is
7293 pointer passing. Overloading isn't discussed. Type information
7294 can be recovered through an ``is'' type test or through type guards
7295 (casts). A version of the WITH statement could avoid repeated
7296 checking.
7297
7298 Private/public access to record fields can be provided by exporting
7299 a base type, and using a private extension. Statically allocated
7300 instances need a compiler hint specifying the maximum size of the
7301 private type.
7302
7303 Type checking is cheap (if the creation of pointer values is
7304 controlled). Types have type descriptors. Extension descriptors
7305 point at their direct base. Heap objects point at their
7306 descriptor, and reference parameters are accompanied by type
7307 descriptor parameters. ``v is t0'' loops along the chain of
7308 descriptors.
7309 }
7310}
7311
7312% U
7313
7314@book{uC++book,
7315 keywords = {control structure, concurrency, uC++},
7316 contributer = {pabuhr@plg},
7317 author = {Peter A. Buhr},
7318 title = {Understanding Control Flow: Concurrent Programming using $\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
7319 publisher = {Springer},
7320 address = {Switzerland},
7321 year = 2016,
7322}
7323
7324@article{Cardelli85,
7325 keywords = {polymorphism},
7326 contributer = {pabuhr@plg},
7327 author = {Luca Cardelli and Peter Wegner},
7328 title = {On Understanding Types, Data Abstractions, and Polymorphism},
7329 journal = acmcs,
7330 month = dec,
7331 year = 1985,
7332 volume = 17,
7333 number = 4,
7334 pages = {471-522},
7335}
7336
7337@inproceedings{Wilson92,
7338 keywords = {garbage collection survey},
7339 contributer = {pabuhr@plg},
7340 author = {Paul R. Wilson},
7341 title = {Uniprocessor Garbage Collection Techniques},
7342 booktitle = {Proceedings of the International Workshop on Memory Management},
7343 location = {St. Malo, France},
7344 publisher = {Springer},
7345 series = {Lecture Notes in Computer Science},
7346 volume = 637,
7347 month = sep,
7348 year = {1992},
7349 pages = {1-42},
7350}
7351
7352@inproceedings{Hewitt73,
7353 author = {Carl Hewitt and Peter Bishop and Richard Steiger},
7354 title = {A Universal Modular {ACTOR} Formalism for Artificial Intelligence},
7355 booktitle = {Proceedings of the 3rd International Joint Conference on Artificial Intelligence},
7356 address = {Standford, California, U.S.A.},
7357 pages = {235-245},
7358 month = aug,
7359 year = 1973,
7360}
7361
7362@article{Bourne78,
7363 keywords = {Shell},
7364 contributer = {pabuhr@plg},
7365 author = {S. R. Bourne},
7366 title = {The UNIX Shell},
7367 journal = {The Bell System Technical Journal},
7368 volume = {57, part 2},
7369 month = {July--August},
7370 year = 1978,
7371 pages = {1971-1990},
7372}
7373
7374@inproceedings{Krischer12,
7375 keywords = {exception, usability, asynchronous, assertion, injection, logging},
7376 contributer = {pabuhr@plg},
7377 author = {Roy Krischer and Peter A. Buhr},
7378 title = {Usability Challenges in Exception Handling},
7379 booktitle = {5th International Workshop on Exception Handling (WEH)},
7380 optorganization= {16th International Symposium on the Foundations of Software Engineering (FSE 16)},
7381 address = {Zurich, Switzerland},
7382 month = jun,
7383 year = 2012,
7384 pages = {7-13},
7385}
7386
7387@techreport{Harmony,
7388 keywords = {messages, concurrency},
7389 contributer = {pabuhr@plg},
7390 author = {W. Morven Gentleman},
7391 title = {Using the Harmony Operating System},
7392 institution = {National Research Council of Canada, Ottawa, Canada},
7393 number = {24685},
7394 month = may,
7395 year = 1985
7396}
7397
7398@article{delegation,
7399 keywords = {delegation, inheritance, actors},
7400 contributer = {gjditchfield@plg},
7401 author = {Henry Lieverman},
7402 title = {Using Prototypical Objects to Implement Shared Behavior in
7403 Object Oriented Systems},
7404 journal = sigplan,
7405 month = nov, year = 1986,
7406 volume = 21, number = 11, pages = {214-223}
7407}
7408
7409% V
7410
7411@article{V-Kernel,
7412 keywords = {messages, concurrency},
7413 contributer = {pabuhr@plg},
7414 author = {David R. Cheriton},
7415 title = {The {V} Distributed System},
7416 journal = cacm,
7417 month = mar,
7418 year = 1988,
7419 volume = 31,
7420 number = 3,
7421 pages = {314-333}
7422}
7423
7424@misc{Vala,
7425 keywords = {GObject, Vala},
7426 contributor = {a3moss@uwaterloo.ca},
7427 key = {Vala},
7428 organization= {The {GNOME} Project},
7429 title = {{V}ala Reference Manual},
7430 year = 2017,
7431 howpublished= {\url{https://wiki.gnome.org/Projects/Vala/Manual}},
7432 optnote = {Accessed: 2017-04}
7433}
7434
7435@inproceedings{Amdahl67,
7436 author = {Gene M. Amdahl},
7437 title = {Validity of the Single Processor Approach to Achieving Large Scale Computing Capabilities},
7438 booktitle = {Proceedings of the April 18-20, 1967, Spring Joint Computer Conference},
7439 series = {AFIPS '67 (Spring)},
7440 year = 1967,
7441 location = {Atlantic City, New Jersey},
7442 pages = {483--485},
7443 publisher = {ACM},
7444 address = {New York, NY, USA},
7445}
7446
7447@article{Mayer81,
7448 keywords = {},
7449 contributer = {pabuhr@plg},
7450 author = {A. J. W. Mayer},
7451 title = {Value Receiving Procedures},
7452 journal = sigplan,
7453 volume = 16,
7454 number = 11,
7455 month = nov,
7456 year = 1981,
7457 pages = {30-34},
7458}
7459
7460@article{Doran80,
7461 keywords = {concurrency, Dekker's Algorithm},
7462 contributer = {pabuhr@plg},
7463 author = {R. W. Doran and L. K. Thomas},
7464 title = {Variants of the Software Solution to Mutual Exclusion},
7465 journal = ipl,
7466 month = jul,
7467 year = 1980,
7468 volume = 10,
7469 number = {4/5},
7470 pages = {206-208},
7471}
7472
7473@book{VAX,
7474 keywords = {VAX, DEC},
7475 contributer = {pabuhr@plg},
7476 key = {VAX},
7477 title = {VAX-11 Architecture Reference Manual},
7478 publisher = {Digital Press},
7479 address = {Bedford},
7480 month = may,
7481 year = 1982,
7482}
7483
7484@book{Kenah88,
7485 author = {Lawrence J. Kenah and Ruth E. Goldenberg and Simon F. Bate},
7486 title = {{VAX/VMS} Internals and Data Structures Version 4.4},
7487 publisher = {Digital Press},
7488 address = {Bedford},
7489 year = 1988,
7490}
7491
7492@article{Hesselink13,
7493 keywords = {software solutions, N-thread, mutual exclusions},
7494 contributer = {pabuhr@plg},
7495 author = {Wim H. Hesselink},
7496 title = {Verifying a Simplification of Mutual Exclusion by {L}ycklama--{H}adzilacos},
7497 journal = {Acta Informatica},
7498 publisher = {Springer},
7499 address = {New York},
7500 year = {2013},
7501 volume = {50},
7502 number = {3},
7503 pages = {199-228},
7504}
7505
7506% W
7507
7508@article{Herlihy91,
7509 keywords = {linearization, wait-free synchronization},
7510 contributer = {pabuhr@plg},
7511 author = {Maurice Herlihy},
7512 title = {Wait-free Synchronization},
7513 journal = toplas,
7514 volume = {13},
7515 number = {1},
7516 month = jan,
7517 year = 1991,
7518 pages = {124--149},
7519 numpages = {26},
7520 publisher = {ACM},
7521 address = {New York, NY, USA},
7522}
7523
7524@inproceedings{vonBehren03,
7525 keywords = {threads, events, web server},
7526 contributer = {pabuhr@plg},
7527 author = {Rob von Behren and Jeremy Condit and Eric Brewer},
7528 title = {Why Events Are a Bad Idea (for high-concurrency servers)},
7529 booktitle = {HotOS IX: The 9th Workshop on Hot Topics in Operating Systems},
7530 publisher = {USENIX Association},
7531 address = {Lihue, Hawaii, U.S.A.},
7532 month = may,
7533 year = 2003,
7534 pages = {19-24},
7535}
7536
7537@techreport{Moss90,
7538 keywords = {Swizzling, database},
7539 contributer = {akgoel@plg},
7540 author = {J. Moss},
7541 title = {Working with Persistent Objects: To Swizzle or Not to Swizzle},
7542 institution = {CS Department, University of Massachusetts},
7543 address = {},
7544 number = {CS 90-38},
7545 month = may,
7546 year = 1990,
7547}
7548
7549@inproceedings{Str:oop,
7550 keywords = { },
7551 contributer = {pabuhr@plg},
7552 author = {Bjarne Stroustrup},
7553 title = {What is ``Object-Oriented Programming''?},
7554 booktitle = {Proceedings of the First European Conference on Object Oriented Programming},
7555 month = jun,
7556 year = 1987
7557}
7558
7559@misc{Stroustrup:overloading,
7560 keywords = {operator overloading},
7561 contributer = {pabuhr@plg},
7562 author = {Bjarne Stroustrup},
7563 title = {Why can't I overload dot, ::, sizeof, etc.?},
7564 month = oct,
7565 year = 2007,
7566 howpublished= {{\small\textsf{http://\-www.research.att.com/\-bs/\-bs\_faq2.html\-\#overload-dot}}},
7567}
7568
7569@techreport{Gray85,
7570 keywords = {fault-tolerant system},
7571 contributer = {pabuhr@plg},
7572 author = {Jim Gray},
7573 title = {Why Do Computers Stop and What Can Be Done About It?},
7574 institution = {Tandem Computers},
7575 number = {85.7 PN87614},
7576 month = jun,
7577 year = 1985,
7578 note = {\href{http://www.hpl.hp.com/techreports/tandem/TR-85.7.pdf}{http://www.hpl.hp.com/\-techreports/\-tandem/\-TR-85.7.pdf}},
7579}
7580
7581@article{Tarjan84,
7582 keywords = {union-find},
7583 contributer = {a3moss@uwaterloo.ca},
7584 author = {Tarjan, Robert E. and van Leeuwen, Jan},
7585 title = {Worst-case Analysis of Set Union Algorithms},
7586 journal = {J. ACM},
7587 issue_date = {April 1984},
7588 volume = {31},
7589 number = {2},
7590 month = mar,
7591 year = {1984},
7592 issn = {0004-5411},
7593 pages = {245--281},
7594 numpages = {37},
7595 url = {http://doi.acm.org/10.1145/62.2160},
7596 doi = {10.1145/62.2160},
7597 acmid = {2160},
7598 publisher = {ACM},
7599 address = {New York, NY, USA},
7600}
7601
7602% X
7603
7604% Y
7605
7606% Z
7607
7608% Cross-referenced entries:
7609
7610% O
7611
7612% The SIGPLAN Notices issue should be in a note field, but notes are
7613% inherited by all refering entries, instead of being held in the
7614% cross-referenced entry. Putting it in "publisher" is a kludge, but it
7615% works.
7616@proceedings{OOPSLA86,
7617 contributer = {gjditchfield@plg},
7618 title = {{OOPSLA} '86 Conference Proceedings},
7619 booktitle = {{OOPSLA} '86 Conference Proceedings},
7620 year = 1986,
7621 editor = {Norman Meyrowitz},
7622 publisher = sigplan,
7623 organization= {Association for Computing Machinery},
7624 address = {Portland, Oregon},
7625 month = sep,
7626}
7627
7628@proceedings{OOPSLA87,
7629 contributer = {gjditchfield@plg},
7630 title = {{OOPSLA} '87 Conference Proceedings},
7631 booktitle = {{OOPSLA} '87 Conference Proceedings},
7632 year = 1987,
7633 editor = {Norman Meyrowitz},
7634 publisher = sigplan,
7635 organization= {Association for Computing Machinery},
7636 address = {Orlando, Florida},
7637 month = oct,
7638}
7639
7640@proceedings{OOPSLA88,
7641 contributer = {gjditchfield@plg},
7642 title = {{OOPSLA} '88 Conference Proceedings},
7643 booktitle = {{OOPSLA} '88 Conference Proceedings},
7644 year = 1988,
7645 editor = {Norman Meyrowitz},
7646 publisher = sigplan,
7647 organization= {Association for Computing Machinery},
7648 address = {San Diego, California},
7649 month = sep,
7650}
7651
7652@proceedings{OOPSLA89,
7653 contributer = {gjditchfield@plg},
7654 title = {{OOPSLA} '89 Conference Proceedings},
7655 booktitle = {{OOPSLA} '89 Conference Proceedings},
7656 year = 1989,
7657 editor = {Norman Meyrowitz},
7658 publisher = sigplan,
7659 organization= {Association for Computing Machinery},
7660 address = {New Orleans, Louisiana},
7661 month = oct,
7662}
7663
7664@proceedings{OOPSLA90,
7665 contributer = {gjditchfield@plg},
7666 title = {{OOPSLA/ECOOP} '90 Conference Proceedings},
7667 booktitle = {{OOPSLA} '90 Conference Proceedings},
7668 year = 1990,
7669 editor = {Norman Meyrowitz},
7670 publisher = sigplan,
7671 organization= {Association for Computing Machinery},
7672 address = {Ottawa, Canada},
7673 month = oct,
7674}
7675
7676@proceedings{OOPSLA91,
7677 contributer = {gjditchfield@plg},
7678 title = {{OOPSLA} '91 Conference Proceedings},
7679 booktitle = {{OOPSLA} '91 Conference Proceedings},
7680 year = 1991,
7681 editor = {Andreas Paepcke},
7682 publisher = sigplan,
7683 organization= {Association for Computing Machinery},
7684 address = {Phoenix, Arizona},
7685 month = oct,
7686}
Note: See TracBrowser for help on using the repository browser.