source: doc/bibliography/pl.bib@ 1dda8de

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

add Swift05, formatting

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