source: doc/bibliography/pl.bib@ 5a801444

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

thesis: fix C layout citation

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