source: doc/bibliography/pl.bib@ 69c37cc

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 69c37cc was ec92b48, checked in by Aaron Moss <a3moss@…>, 7 years ago

thesis: add comments on CFA formalization

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