source: doc/bibliography/pl.bib@ 65a7050

ADT aaron-thesis arm-eh ast-experimental cleanup-dtors enum forall-pointer-decay jacob/cs343-translation jenkins-sandbox new-ast new-ast-unique-expr persistent-indexer pthread-emulation qualifiedEnum
Last change on this file since 65a7050 was 65a7050, checked in by Peter A. Buhr <pabuhr@…>, 7 years ago

add more citations

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