source: doc/bibliography/pl.bib@ 71a12390

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

thesis: address comment about MaxSAT

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