A Component Language for Pointer-Free Concurrent Programming and Its Application to Simulation

Total Page:16

File Type:pdf, Size:1020Kb

A Component Language for Pointer-Free Concurrent Programming and Its Application to Simulation Diss ETH No. 17480 A Component Language for Pointer-Free Concurrent Programming and its Application to Simulation A dissertation submitted to ETH Zurich for the degree of Doctor of Sciences presented by Luc Blaser MSc. ETH in Computer Science, ETH Zurich born 3 October 1979 citizen of Luxembourg accepted on the recommendation of Prof. Dr. J. Gutknecht, examiner Prof. Dr. K. Nagel, co-examiner 2007 Abstract Today's programming languages are still noticeably under­ developed for the construction of well-structured concur­ rent software systems. They typically impose many unnec­ essary and unacceptable restrictions and inconsistencies due to a multiplicity of different counterproductive con­ cepts. In particular, pointers generally counteract structured and hierarchical program relations at runtime, while the support of concurrency remains largely neglected as a second-class feature in current programming languages. To improve this adverse situation, we have developed a new programming language, which directly integrates a general component notion. Components are only managed by three fundamental relations: (1) hierarchical com­ position without use of explicit pointers, (2) symmetric connections with a dual concept of offered and required interfaces and, (3) communication-based interactions. As a result of these concepts, the new language enables general hierarchical encapsulation, client-individual statefull com­ munications, inherent and race-free concurrency, sym­ metric polymorphism separated from code reuse, as well as hierarchical lifetime dependencies of the components. The programming language has been implemented with a runtime system that comprises a small kernel. It facilitates high-performance concurrency, clearly surpass­ ing existing systems in the scalability and efficiency of parallel processes. For this purpose, the system features innovative concepts such as light-weighted processes with fine-granular stacks and low-cost software-based preemp­ tion, safe memory management without need of automatic garbage collection. In order to offer a proof of concepts and demonstrate the practical suitability, we have applied the new program­ ming language to an archetypical kind of application: simulation. At the example of a traffic simulation, we can 2 demonstrate that the new language enables a more natural mapping to the program, with the potential to be distrib­ uted. At the same time, our language offers a substantially higher perfonnance compared to other sequential or con­ current simulation systems. More concretely, vehicles are modelled in this case study as self-active instances that all drive autonomously and concurrently in a virtual time. In particular, the component structures also support the flexi­ ble and accurate representation of dynamic hierarchical compositions with vehicle transports. With regard to the realistic traffic simulation of Greater Zurich, our simulation runs faster by a factor of three than a traditional simulation system. 3 Kurzfassung Was die Konstmktion strukturierter nebenHiufiger Software betrifft, sind heutige Programmiersprachen noch erheblich unterentwickeit. Aufgrund der Vieizahl unterschiedlicher und oft unntitzer Konzepte unterliegen die Sprachen meist vielen unnotigen Einschrankungen und Inkonsistenzen. Die Verwendung von Zeigern (Pointers) erschwert im All­ gemeinen die Beschreibung klar strukturierter und hierar­ chischer Programmbeziehungen zur Laufzeit. Ferner bieten heutige Programmiersprachen nur unzureichende Unter­ sttitzung fur Parallelitat, da NebenHiufigkeit Iediglich mit schwerfalligen Zusatzkonzepten ermoglicht wird. Um diese Schwachpunkte zu beseitigen, haben wir eine neue Programmiersprache entwickeit. Diese Programmier­ sprache basiert auf dem aligemeinen Begriff der Kompo­ nente. Die Verwaitung von Komponenten ist durch drei grundiegende Beziehungen gekennzeichnet. (1) Hierarchi­ sche Komposition ohne explizite Verwendung von Zeigern, (2) symmetrische Verkntipfung mit einem dualen Konzept von angebotenen und eiforderten Schnittstellen, (3) Inter­ aktion durch Kommunikation. Durch die Verwendung die­ ser Konzepte ergeben sich verschiedene vorteilhafte Mog­ lichkeiten. Dazu gehoren die allgemeine hierarchische Ein­ kapselung, separate zustandsbehaftete Kommunikation zwischen Komponenten, inharente NebenHiufigkeit unter Ausschluss so genannter Races, symmetrischer PoIy­ morphismus getrennt von der Code-Wiederverwendung, sowie hierarchische Existenzabhangigkeiten unter den Komponenten. Zur Programmiersprache wurde ein Laufzeitsystem implementiert. Dieses System, welches tiber einen eigenen Kern verfugt, macht besonders Ieistungsstarke Ausfuhrung von nebenlaufigen Programmen moglich. Im Vergleich zu 4 anderen Systemen weist das neue Laufzeitsystem eine deutlich hahere Skalierbarkeit und eine wesentlich schnel­ lere Ausfuhrungsgeschwindigkeit fur parallele Prozesse auf. Zu diesem Zweck wurden beim Bau des Systems wei­ tere innovative Konzepte verfolgt. Dazu zahlen unter ande­ rem der Einsatz von Leichtgewichtsprozesse mit beliebig kleinen Stacks und kosteneffiziente, softwarebasierte Pre­ emption sowie eine sichere dynamische Speicherver­ waltung ohne Bedarf eines Garbage-Collectors. Zur Demonstration der praktischen Einsetzbarkeit der Konzepte haben wir die neue Programmiersprache fur eine archetypische Art der Anwendung eingesetzt, nfunlich zur Simulation: Anhand des Beispiels einer Verkehrssimulation hat sich gezeigt, dass die neue Programmiersprache eine natiirlichere Abbildung des Realittitsmodells zum Pro­ gramm ermaglicht. Damit geht ein erhebliches Potenzial zur Verteilbarkeit einher. Zusatzlich erzielen wir eine sub­ stanziell hahere Ausfiihrungsgeschwindigkeit als andere sequenzielle und nebenHiufige Simulaticmssysteme. In die­ ser Fallstudie werden die Fahrzeuge als selbstaktive Kom­ ponenten dargestellt, so dass sie aIle autonom und parallel in einer virtuellen Zeit fahren. Insbesondere erlauben es die Komponentenstrukturen, dynamische hierarchische Kom­ positionen fiir die Fahrzeugverladung realitatsnah und fle­ xibel zu modellieren. Eine realistische Verkehrssimulation vom GroBraum Zurich wird mit unserer Simulation urn Faktor drei schneller ausgefiihrt alsmit einem traditionellen Simulationssystem. 5 Acknowledgments I am very grateful to several people who supported me during this work and helped me to complete this disserta­ tion. First of all, I would like to sincerely thank Prof. Dr. Jurg Gutknecht for giving me the opportunity to follow and realise my ideas within this doctoral thesis. I am indebted to his continuous support, helpful advice, constructive feedback and kind encouragement throughout my work. I also greatly appreciate the comfortable work environment that was offered to me as well as the freedom given regarding my working practice. I am also very grateful to Prof. Dr. Kai Nagel who kindly accepted to be the co-supervisor of this dissertation and gave me valuable feedback, support and encour­ agement during my thesis and especially during the case study on traffic simulation. It was a rewarding experience to apply my programming language in this research field. My sincere thanks also go to my colleagues at the ETH Zurich, namely Dr. Felix Friedrich, Dr. Svend Knudsen, Daniel Keller, Roman Mitin, Sven Stauber, Thomas Kagi, Ulrike Glavitsch-Eggler, Dr. Thomas Frey, Dr. Emil Zeller, Dr. Stefan Muller, Dr. Simon Schubiger-Benz, Andre Fischer, Raphael Guntensperger, Mazda Mortasavi, Michael Szediwy, Florian Negele, Alexey Morozov, Dr. Dennis Majoe, Karel Skoupy and many others. It was an absolute pleasure to work together with them. We had a lot of interesting discussions and chats about research and other topics, not only during the numerous coffee breaks. I greatly appreciate the feedback on my work that I received from my colleagues. During my visit to the TU Berlin and the subsequent e­ mails which followed, I received valuable advice and feed­ back from Martin Rieser, David Strippgen and Gunnar 6 Flotterod. I am very appreciative of their help, whether it was in explaining the details of traffic simulation techniques, providing the simulation data, and discussing interesting ideas for my work. I would like to also express my gratitude to Ruth Hidalgo, who helped me with various administrative questions and complex issues that were often difficult to resolve. I am also grateful for the administrative support from Hanni Sommer and Franziska Mader. In addition, the Swiss Federal Department of the Envi­ ronment, Transport, Energy and Communications (UVEK) kindly granted permission to use the data for the traffic simulation. Furthermore, I am particularly thankful to Dr. Felix Friedrich, Dr. Svend Knudsen and Nadja Beeli who proof­ read and scrutinised my dissertation before I submitted it to my supervisors. Roman Mitin also read the dissertation and provided valuable comments and suggestions for improve­ ment. Lastly (but of no less importance), I would like to thank Nadja Beeli, my family and all my colleagues for their constant encouragement and support. Luc Blaser Zurich, September 2007 7 Contents Chapter 1 Introduction 13 1.1 Motivation 13 1.2 Contributions 15 1.3 Outline 16 Chapter 2 State of the Art 17 2.1 Object-Orientation 17 2.1.1 References 18 2.1.2 Methods 19 2.1.3 Inheritance 20 2.1.4 Concurrency 22 2.1.5 Existing Solution Approaches 23 2.1.5.1 Object Encapsulation Models 23 2.1.5.2 Object Lifetime Control 27 2.1.5.3 Concurrency Improvement 29 2.1.5.4 Inheritance Altematives 32 2.2 Other Existing Programming Paradigms
Recommended publications
  • Liste Von Programmiersprachen
    www.sf-ag.com Liste von Programmiersprachen A (1) A (21) AMOS BASIC (2) A# (22) AMPL (3) A+ (23) Angel Script (4) ABAP (24) ANSYS Parametric Design Language (5) Action (25) APL (6) Action Script (26) App Inventor (7) Action Oberon (27) Applied Type System (8) ACUCOBOL (28) Apple Script (9) Ada (29) Arden-Syntax (10) ADbasic (30) ARLA (11) Adenine (31) ASIC (12) Agilent VEE (32) Atlas Transformatikon Language (13) AIMMS (33) Autocoder (14) Aldor (34) Auto Hotkey (15) Alef (35) Autolt (16) Aleph (36) AutoLISP (17) ALGOL (ALGOL 60, ALGOL W, ALGOL 68) (37) Automatically Programmed Tools (APT) (18) Alice (38) Avenue (19) AML (39) awk (awk, gawk, mawk, nawk) (20) Amiga BASIC B (1) B (9) Bean Shell (2) B-0 (10) Befunge (3) BANCStar (11) Beta (Programmiersprache) (4) BASIC, siehe auch Liste der BASIC-Dialekte (12) BLISS (Programmiersprache) (5) Basic Calculator (13) Blitz Basic (6) Batch (14) Boo (7) Bash (15) Brainfuck, Branfuck2D (8) Basic Combined Programming Language (BCPL) Stichworte: Hochsprachenliste Letzte Änderung: 27.07.2016 / TS C:\Users\Goose\Downloads\Softwareentwicklung\Hochsprachenliste.doc Seite 1 von 7 www.sf-ag.com C (1) C (20) Cluster (2) C++ (21) Co-array Fortran (3) C-- (22) COBOL (4) C# (23) Cobra (5) C/AL (24) Coffee Script (6) Caml, siehe Objective CAML (25) COMAL (7) Ceylon (26) Cω (8) C for graphics (27) COMIT (9) Chef (28) Common Lisp (10) CHILL (29) Component Pascal (11) Chuck (Programmiersprache) (30) Comskee (12) CL (31) CONZEPT 16 (13) Clarion (32) CPL (14) Clean (33) CURL (15) Clipper (34) Curry (16) CLIPS (35)
    [Show full text]
  • The Zonnon Project: a .NET Language and Compiler Experiment
    The Zonnon Project: A .NET Language and Compiler Experiment Jürg Gutknecht Vladimir Romanov Eugene Zueff Swiss Fed Inst of Technology Moscow State University Swiss Fed Inst of Technology (ETH) Computer Science Department (ETH) Zürich, Switzerland Moscow, Russia Zürich, Switzerland [email protected] [email protected] [email protected] ABSTRACT Zonnon is a new programming language that combines the style and the virtues of the Pascal family with a number of novel programming concepts and constructs. It covers a wide range of programming models from algorithms and data structures to interoperating active objects in a distributed system. In contrast to popular object-oriented languages, Zonnon propagates a symmetric compositional inheritance model. In this paper, we first give a brief overview of the language and then focus on the implementation of the compiler and builder on top of .NET, with a particular emphasis on the use of the MS Common Compiler Infrastructure (CCI). The Zonnon compiler is an interesting showcase for the .NET interoperability platform because it implements a non-trivial but still “natural” mapping from the language’s intrinsic object model to the underlying CLR. Keywords Oberon, Zonnon, Compiler, Common Compiler Infrastructure (CCI), Integration. 1. INTRODUCTION: THE BRIEF CCI and b) to experiment with evolutionary language HISTORY OF THE PROJECT concepts. The notion of active object was taken from the Active Oberon language [Gut01]. In addition, two This is a technical paper presenting and describing new concurrency mechanisms have been added: an the current state of the Zonnon project. Zonnon is an accompanying communication mechanism based on evolution of the Pascal, Modula, Oberon language syntax-oriented protocols , borrowed from the Active line [Wir88].
    [Show full text]
  • Kotlin Coroutines Deep Dive Into Bytecode #Whoami
    Kotlin Coroutines Deep Dive into Bytecode #whoami ● Kotlin compiler engineer @ JetBrains ● Mostly working on JVM back-end ● Responsible for (almost) all bugs in coroutines code Agenda I will talk about ● State machines ● Continuations ● Suspend and resume I won’t talk about ● Structured concurrency and cancellation ● async vs launch vs withContext ● and other library related stuff Agenda I will talk about Beware, there will be code. A lot of code. ● State machines ● Continuations ● Suspend and resume I won’t talk about ● Structured concurrency and cancellation ● async vs launch vs withContext ● and other library related stuff Why coroutines ● No dependency on a particular implementation of Futures or other such rich library; ● Cover equally the "async/await" use case and "generator blocks"; ● Make it possible to utilize Kotlin coroutines as wrappers for different existing asynchronous APIs (such as Java NIO, different implementations of Futures, etc). via coroutines KEEP Getting Lazy With Kotlin Pythagorean Triples fun printPythagoreanTriples() { for (i in 1 until 100) { for (j in 1 until i) { for (k in i until 100) { if (i * i + j * j < k * k) { break } if (i * i + j * j == k * k) { println("$i^2 + $j^2 == $k^2") } } } } } Pythagorean Triples fun printPythagoreanTriples() { for (i in 1 until 100) { for (j in 1 until i) { for (k in i until 100) { if (i * i + j * j < k * k) { break } if (i * i + j * j == k * k) { println("$i^2 + $j^2 == $k^2") } } } } } Pythagorean Triples fun printPythagoreanTriples() { for (i in 1 until 100) { for (j
    [Show full text]
  • Introduction to .NET, C#, and Visual Studio
    Introduction to .NET, C#, and Visual Studio C# Programming January 8 Part I Administrivia Administrivia • When: Wednesdays 10–11am (and a few Mondays as needed) • Where: Moore 100B • This lab has Windows machines, but feel free to bring laptops • Office Hours: to be announced • Course webpage: http://www.seas.upenn.edu/~cse39905 Course Structure • No quizzes, no exams • Roughly 6 projects • Roughly 2 weeks per project • The final project will be slightly longer and more open-ended • Projects will be due at midnight on the night of the deadline • All assignments should be submitted through the Blackboard Digital Dropbox • Late policy: 15% off each day, up to 3 days late Final Project • Your chance to choose your own project • Brainstorming and planning will begin after spring break • Top projects will be entered into the Xtreme.NET Challenge – hopefully there will be 20 top projects :-) • First prize: Xbox 360! • Judges will include someone from Microsoft recruiting, maybe someone from the C# team • More details to come at http://www.seas.upenn.edu/~cse39905/xtreme Part II What is .NET? The Microsoft .NET Framework • .NET is a development platform that launched in 2000 • Goals include language independence, language integration, web services • Technologies to promote rapid development of secure, connected applications • .NET components include: • Languages (C#, VB, Visual C++, Visual J#, ...) • Common Language Runtime (CLR) • Framework Class Library (FCL) Common Language Runtime • A single runtime environment to execute programs written in any .NET language • Includes a virtual machine • Activates objects, manages memory, performs security checks, collects garbage • To run on the CLR, a language must adhere to a Common Language Specification (CLS) • A language must also build upon base types specified in the Common Type System (CTS) Languages • Language compilers translate source into Microsoft Intermediate Language (MSIL).
    [Show full text]
  • Contention in Structured Concurrency: Provably Efficient Dynamic Non-Zero Indicators for Nested Parallelism
    Contention in Structured Concurrency: Provably Efficient Dynamic Non-Zero Indicators for Nested Parallelism Umut A. Acar1;2 Naama Ben-David 1 Mike Rainey 2 January 16, 2017 CMU-CS-16-133 School of Computer Science Carnegie Mellon University Pittsburgh, PA 15213 A short version of this work appears in the proceedings of the 22nd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming 2017 (PPoPP '17). 1Carnegie Mellon University, Pittsburgh, PA 2Inria-Paris Keywords: concurrent data structures, non-blocking data structures, contention, nested parallelism, dependency counters Abstract Over the past two decades, many concurrent data structures have been designed and im- plemented. Nearly all such work analyzes concurrent data structures empirically, omit- ting asymptotic bounds on their efficiency, partly because of the complexity of the analysis needed, and partly because of the difficulty of obtaining relevant asymptotic bounds: when the analysis takes into account important practical factors, such as contention, it is difficult or even impossible to prove desirable bounds. In this paper, we show that considering structured concurrency or relaxed concurrency mod- els can enable establishing strong bounds, also for contention. To this end, we first present a dynamic relaxed counter data structure that indicates the non-zero status of the counter. Our data structure extends a recently proposed data structure, called SNZI, allowing our structure to grow dynamically in response to the increasing degree of concurrency in the system. Using the dynamic SNZI data structure, we then present a concurrent data structure for series-parallel directed acyclic graphs (sp-dags), a key data structure widely used in the implementation of modern parallel programming languages.
    [Show full text]
  • Oolong: a Concurrent Object Calculus for Extensibility and Reuse
    OOlong: A Concurrent Object Calculus for Extensibility and Reuse Elias Castegren Tobias Wrigstad KTH Royal Institute of Technology Uppsala University Kista, Sweden Uppsala, Sweden [email protected] [email protected] ABSTRACT This avoids tying the language to a specific model of class We present OOlong, an object calculus with interface in- inheritance (e.g., Java's), while still maintaining an object- heritance, structured concurrency and locks. The goal of oriented style of programming. Concurrency is modeled in a the calculus is extensibility and reuse. The semantics are finish/async style, and synchronisation is handled via locks. therefore available in a version for LATEX typesetting (written The semantics are provided both on paper and in a mecha- in Ott), a mechanised version for doing rigorous proofs in nised version written in Coq. The paper version of OOlong Coq, and a prototype interpreter (written in OCaml) for is defined in Ott [25], and all typing rules in this paper are typechecking an running OOlong programs. generated from this definition. To make it easy for other researchers to build on OOlong, we are making the sources of both versions of the semantics publicly available. We also CCS Concepts provide a prototype interpreter written in OCaml. •Theory of computation ! Operational semantics; Concur- rency; Interactive proof systems; •Software and its engineer- With the goal of extensibility and re-usability, we make the ing ! Object oriented languages; Concurrent programming following contributions: structures; Interpreters; • We define the formal semantics of OOlong, motivate the choice of features, and prove type soundness (Sections Keywords 2{5). Object Calculi; Semantics; Mechanisation; Concurrency • We provide a mechanised version of the full semantics and soundness proof, written in Coq (Section 6).
    [Show full text]
  • Towards Mathix / Math-X, a Computer Algebra Language That Can Create Its Own Operating System, and That Is Amazingly User- Friendly and Secure
    Towards Mathix / Math-x, a computer algebra language that can create its own operating system, and that is amazingly user- friendly and secure Thomas Colignatus, August 19 2009, some clarifications August 23 2009 http://www.dataweb.nl/~cool Summary Given the current supply and demand for computer languages and systems, there is a clear window of opportunity for the software community to collaborate and create Mathix and Math-x. The base would be Oberon, which itself derives from Algol / Pascal / Modula and which is better designed than Unix / Linux, and which now has the system Bluebottle / A2 at http://bluebottle.ethz.ch. Mathix is defined as Oberon/A2 extended with a suitable computer algebra language (say, CAL). Math-x is defined as Minix ported to Oberon/A2 (via Cyclone) and extended with that CAL. Mathix and Math-x thus can create their own OS. Mathix and Math-x are flexible in that they contain both a strongly typed dialect relevant for OS creation (current Oberon) and a more flexible dialect relevant for the human user (CAL, to be created). The dialects have much syntax in common but the CAL allows more flexibility. The CAL is internally translated into Oberon/A2 which allows compilation as well. 2 2009-08-23-Math-x.nb Note This paper is best understood in the context of my book Elegance with Substance on mathematics education - see http://www.dataweb.nl/~cool/Papers/Math/Index.html. My book advises that each national parliament investigates the stagnation in doing mathematics on the computer in school. This paper suggests how the software community might anticipate on common sense conclusions and start working on improvement.
    [Show full text]
  • Infinite Loop Syntax Support for a Pascal-Family Language
    Infinite loop syntax support for a Pascal-family language http://coderesearchlabs.com/articles/ILP.pdf Code Research Laboratories www.coderesearchlabs.com Javier Santo Domingo [email protected] Buenos Aires, Argentina started - April 9th, 2010 published - July 9th, 2010 last revision - May 4th, 2011 copyright is held by the author all trademarks and logos are the property of their respective owners 1. Introduction Infinite loops are a basic logic flow need that is supported by conventional processors and virtual machines (see table A), but there is always a valid solution to avoid them in High Level Languages. In any case, the discussion if it is or not a good practice will never end. There is no code (operative system, service daemon, command line, real-time system, message loop, etc) that can not avoid an infinite loop, that's a fact: you can always write loops with an exit condition. Besides that, and nowadays that code readability is very important (and that goto has been totally removed from good practices), there are many developers that prefer to implement an infinite loop and break it's execution in the middle [1], or that coding a program "designed to never stop" come to solutions with an infinite loop. x86's assembly ARM's assembly .NET's ilasm Java's bytecode Llvm's assembly label: label label: label: Loop: ; something ; something // something ; something ; something jmp label B label br label goto label br label %Loop Infinite Loops (unconditional jumps/branches) in Some Low/Mid Level Of Abstraction Languages table A 2. Different Kind of Loops Usually, how you order the logic for the solution you are writing determines where you will be testing the exit condition for a loop: at the top or at the bottom [2].
    [Show full text]
  • Systematic Use of Models of Concurrency in Executable Domain-Specific Modeling Languages Florent Latombe
    Systematic use of Models of Concurrency in eXecutable Domain-Specific Modeling Languages Florent Latombe To cite this version: Florent Latombe. Systematic use of Models of Concurrency in eXecutable Domain-Specific Modeling Languages. Software Engineering [cs.SE]. Université de Toulouse - Institut National Polytechnique de Toulouse (INPT), 2016. English. tel-01369451 HAL Id: tel-01369451 https://hal.inria.fr/tel-01369451 Submitted on 21 Sep 2016 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. THÈSETHÈSE En vue de l’obtention du DOCTORAT DE L’UNIVERSITÉ DE TOULOUSE Délivré par : l’Institut National Polytechnique de Toulouse (INP Toulouse) Présentée et soutenue le 13/07/2016 par : Florent LATOMBE Systematic use of Models of Concurrency in eXecutable Domain-Specific Modeling Languages JURY Richard PAIGE Professor Rapporteur Antonio VALLECILLO Professor Rapporteur Frédéric BOULANGER Professeur des Universités Examinateur Julien DE ANTONI Maître de Conférences Examinateur Benoît COMBEMALE Maître de Conférences Invité Xavier CRÉGUT Maître de Conférences Encadrant Marc PANTEL Maître de Conférences Encadrant École doctorale et spécialité : MITT : Domaine STIC : Sureté de logiciel et calcul de haute performance Unité de Recherche : IRIT : Institut de Recherche en Informatique de Toulouse (UMR 5505) Directeur(s) de Thèse : Marc PANTEL, Xavier CRÉGUT et Yamine AÏT-AMEUR Rapporteurs : Richard PAIGE et Antonio VALLECILLO All that is gold does not glier, Not all those flho flander are lost; e old that is strong does not flither, Deep roots are not reached by the frost.
    [Show full text]
  • The State of Fibers for the JVM Why All Your JVM Coroutines Are Cool, but Broken, and Project Loom Is Gonna Fix That! Lightweigh
    The State of Fibers for the JVM Lightweight Threads Virtual and ... Why all your JVM coroutines are cool, but broken, (Kilim threads, Quasar fibers, Kotlin coroutines, etc.) and Project Loom is gonna fix that! Volkan Yazıcı https://vlkan.com 2019-12-10 @yazicivo 2018-08-25 2018-03-08 Agenda 1) Motivation 2) History 3) Continuations 4) Processes, threads, and fibers 5) Project Loom 6) Structured concurrency 7) Scoped variables Motivation: I/O Quoting from Gor Nishanov's 2016 "LLVM Coroutines: Bringing resumable functions to LLVM" talk. Without I/O, you don’t exist! ● println() ● file access ● network socket access ● database access ● etc. In 1958, ... Quoting from Gor Nishanov's 2016 "LLVM Coroutines: Bringing resumable functions to LLVM" talk. The legend of Melvin Conway Quoting from Gor Nishanov's 2016 "LLVM Coroutines: Bringing resumable functions to LLVM" talk. Subroutine ⊂ Coroutine Coroutine Subroutine A Subroutine B Subroutine A Coroutine C “Coroutines” – Melvin Conway, 1958 … … B start C start call B “Generalization of subroutine” – Donald Knuth, 1968 call C end suspend subroutines coroutines B start resume C allocate frame, allocate frame, suspend call call B pass params pass params free frame, free frame, return resume C return result return result end end suspend No Yes … resume No Yes … Quoting from Gor Nishanov's 2016 "LLVM Coroutines: Bringing resumable functions to LLVM" talk. Where did all the coroutines go? Algol-60 … introduced code blocks and the begin and end pairs for delimiting them. ALGOL 60 was the first language implementing nested function definitions with lexical scope. – Wikipedia “ALGOL 60” Quoting from Gor Nishanov's 2016 "LLVM Coroutines: Bringing resumable functions to LLVM" talk.
    [Show full text]
  • Доповідь Використання Платформи Microsoft .NET Та Мови C# Для
    Ⱦɨɩɨɜɿɞɶ ȼɢɤɨɪɢɫɬɚɧɧɹɩɥɚɬɮɨɪɦɢ Microsoft .NET ɬɚɦɨɜɢ C# ɞɥɹ ɧɚɜɱɚɧɧɹɩɪɨɝɪɚɦɭɜɚɧɧɹɜɫɟɪɟɞɧɿɯɡɚɝɚɥɶɧɨɨɫɜɿɬɧɿɯ ɧɚɜɱɚɥɶɧɢɯɡɚɤɥɚɞɚɯ ɒɟɜɱɭɤɉɟɬɪɨȽɟɨɪɝɿɣɨɜɢɱ, ɚɫɩɿɪɚɧɬȱɧɫɬɢɬɭɬɭɿɧɮɨɪɦɚɰɿɣɧɢɯɬɟɯɧɨɥɨɝɿɣɬɚ ɡɚɫɨɛɿɜɧɚɜɱɚɧɧɹȺɤɚɞɟɦɿʀɩɟɞɚɝɨɝɿɱɧɢɯɧɚɭɤɍɤɪɚʀɧɢ Ƚɚɥɭɡɶ ɪɨɡɪɨɛɤɢ ɩɪɨɝɪɚɦɧɨɝɨ ɡɚɛɟɡɩɟɱɟɧɧɹ ɽ ɜɢɡɧɚɱɚɥɶɧɨɸ ɞɥɹ ɪɨɡɜɢɬɤɭ ɿɧɮɨɪɦɚɰɿɣɧɨɝɨ ɫɭɫɩɿɥɶɫɬɜɚ. ɉɪɨɝɪɚɦɭɜɚɧɧɹ ɰɟ ɧɟ ɥɢɲɟɜɢɪɨɛɧɢɰɬɜɨɬɚɧɚɭɤɚɚɣ, ɜɹɤɿɣɫɶɦɿɪɿ, ɫɤɥɚɞɨɜɚɤɭɥɶɬɭɪɢ, ɨɫɜɿɬɢ ɿ ɧɚɜɿɬɶ ɪɿɡɧɨɜɢɞ ɦɢɫɬɟɰɬɜɚ. ȼɚɠɥɢɜɚ ɪɨɥɶ ɜ ɩɿɞɝɨɬɨɜɰɿ ɦɚɣɛɭɬɧɿɯ ɩɪɨɝɪɚɦɿɫɬɿɜ ɧɚɥɟɠɢɬɶ ɫɟɪɟɞɧɿɦ ɡɚɝɚɥɶɧɨɨɫɜɿɬɧɿɦ ɡɚɤɥɚɞɚɦ. ȼɫɭɩɟɪɟɱ ɬɨɦɭ, ɳɨ ɩɪɨɝɪɚɦɭɜɚɧɧɹ ɰɟ ɨɞɢɧ ɡ ɧɚɣɛɿɥɶɲ ɡɚɬɪɟɛɭɜɚɧɢɯ ɜɢɞɿɜ ɥɸɞɫɶɤɨʀ ɞɿɹɥɶɧɨɫɬɿ ɬɚ ɨɞɧɚ ɡ ɧɚɣɰɿɤɚɜɿɲɢɯ ɮɨɪɦ ɬɜɨɪɱɨɫɬɿ ɜ ɨɫɬɚɧɧɿ ɪɨɤɢ ɧɟ ɫɩɨɫɬɟɪɿɝɚɽɬɶɫɹ ɩɿɞɜɢɳɟɧɧɹ ɡɚɰɿɤɚɜɥɟɧɨɫɬɿɞɿɬɟɣɩɪɨɝɪɚɦɭɜɚɧɧɹɦ. ȼɿɪɨɝɿɞɧɨ, ɳɨɨɪɝɚɧɿɡɚɰɿɹɬɚ ɦɟɬɨɞɢɱɧɟ ɡɚɛɟɡɩɟɱɟɧɧɹ ɜɢɜɱɟɧɧɹ ɩɪɨɝɪɚɦɭɜɚɧɧɹ ɫɭɬɬɽɜɨ ɜɿɞɫɬɚɽ ɜɿɞɜɢɦɨɝɱɚɫɭ. Ɋɨɡɜɢɬɨɤ ɨɛɱɢɫɥɸɜɚɥɶɧɨʀ ɬɟɯɧɿɤɢ ɰɟ ɬɚɤɨɠ ɪɨɡɜɢɬɨɤ ɩɪɨɝɪɚɦɧɨɝɨɡɚɛɟɡɩɟɱɟɧɧɹɚɨɬɠɟɿɩɪɨɝɪɚɦɭɜɚɧɧɹ. ɉɨɪɹɞɡ ɫɬɚɧɨɜɥɟɧɧɹɦ ɦɟɬɨɞɿɜ ɩɪɨɝɪɚɦɭɜɚɧɧɹ: ɚɥɝɨɪɢɬɦɿɱɧɟ, ɫɬɪɭɤɬɭɪɧɟ, ɨɛ¶ɽɤɬɧɨɨɪɿɽɧɬɨɜɚɧɟ ɪɨɡɜɢɜɚɸɬɶɫɹ ɿ ɬɟɯɧɨɥɨɝɿʀ ɬɪɚɧɫɥɹɰɿʀ ɤɨɦɩ¶ɸɬɟɪɧɢɯɩɪɨɝɪɚɦ. ɉɟɪɲɿɨɛɱɢɫɥɸɜɚɥɶɧɿɦɚɲɢɧɢɤɟɪɭɜɚɥɢɫɹ ɩɪɨɝɪɚɦɚɦɢ ɪɨɡɪɨɛɥɟɧɢɦɢ ɬɚ ɜɜɟɞɟɧɢɦɢ ɥɸɞɢɧɨɸ ɜ ɦɚɲɢɧɧɢɯ ɤɨɞɚɯ. ɇɚɛɿɪɬɚɤɢɯɤɨɞɿɜɬɚɦɨɜɚɛɟɡɩɨɫɟɪɟɞɧɶɨʀɪɨɛɨɬɢɡɧɢɦɢ - ɚɫɟɦɛɥɟɪ, ɫɩɟɰɢɮɿɱɧɿ ɞɥɹ ɤɨɠɧɨʀ ɧɨɜɨʀ ɚɩɚɪɚɬɧɨʀ ɦɨɞɟɥɿ ɤɨɦɩ¶ɸɬɟɪɿɜ. Ɍɨɛɬɨɩɪɨɝɪɚɦ, ɧɚɜɿɬɶɞɥɹɜɢɪɿɲɟɧɧɹɨɞɧɿɽʀɿɬɿɽʀɠ ɡɚɞɚɱɿ ɞɨɜɨɞɢɥɨɫɶ ɩɢɫɚɬɢ ɫɬɿɥɶɤɢ, ɫɤɿɥɶɤɢ ɛɭɥɨ ɪɿɡɧɢɯ ɦɨɞɟɥɟɣ ɤɨɦɩ¶ɸɬɟɪɿɜ. ɉɨɹɜɚ ɦɨɜ ɩɪɨɝɪɚɦɭɜɚɧɧɹ ɬɚ ʀɯ ɤɨɦɩɿɥɹɬɨɪɿɜ ɞɨɡɜɨɥɢɥɚ, ɲɥɹɯɨɦ ɭɞɨɫɤɨɧɚɥɟɧɧɹ ɤɨɦɩɿɥɹɬɨɪɚ, ɚɞɚɩɬɭɜɚɬɢ ɜɢɤɨɪɢɫɬɚɧɧɹ ɪɨɡɪɨɛɥɟɧɢɯ ɩɪɨɝɪɚɦ
    [Show full text]
  • Project Zonnon: the Language, the Compiler, the Environment
    Project Zonnon: The Language, The Compiler, The Environment Eugene Zouev Bergen Language Design Laboratory Bergen University May 19, 2010 Outline Project History Zonnon Language Zonnon Compiler CCI & Zonnon Compilation Model Integration into Visual Studio Zonnon Builder Link, Conclusion, Acknowledgements 2 Project History 1999, Oberon.NET Projects 7 & 7+ launched by Microsoft Research 2001, Active Oberon ETH Zürich; the notion of active object 2004, Active C# ETH Zürich; communication mechanism based on syntax-oriented protocols 2004-2006, Zonnon 3 Zonnon Highlights A member of the family of Pascal,Modula-2, Oberon: compact, easy to learn and use Supports modularity (with importing units and exporting unit members) Supports object-oriented approach based on definition/implementation paradigm and refinement of definitions Supports concurrency based on the notion of active objects and syntax-based communication protocols 4 Zonnon Program Architecture 1 Module Definition Object Implementation 5 Zonnon Program Architecture 1 Module Definition System managed object: - encapsulates resources Unified unit of abstraction: - implements definitions - represents abstract interface - aggregates implementations - refines another definition Object Implementation Program managed actor/resource: - def.implementation of a definition - implements definitions - standalone aggregation unit - aggregates implementations - specifies concurrent behaviour 5 Zonnon Program Architecture 2 Definition D1 Definition D11 (refines D1) Implementation D11 (default for
    [Show full text]