Distribueret Dart
Oversat titel
Distributed Dart
Forfattere
Mikkelsen, Brian Astrup ; Bang, Jacob
Semester
4. semester
Uddannelse
Udgivelsesår
2013
Afleveret
2013-06-12
Antal sider
82
Abstract
Dette speciale bygger på et forudgående studie og undersøger, om distribueret programmering i Dart kan understøttes via et bibliotek skrevet udelukkende i Dart. Distribueret programmering betyder her, at dele af et program kan køre på flere processer eller maskiner. Specialet stiller tre spørgsmål: Kan man overhovedet udvikle et bibliotek, der understøtter distribueret programmering i Dart? Kan man genbruge de samme regler (semantik) for samtidighed, som Dart allerede bruger? Og hvilke begrænsninger opstår der, når disse regler påtvinges et bibliotek til distribueret brug? En vigtig forudsætning er, at løsningen skal være ren Dart uden ændringer i den underliggende virtuelle maskine. Specialet genintroducerer centrale elementer i Dart fra det tidligere studie og analyserer de største praktiske udfordringer: hvordan man kan injicere kode i en anden Dart-instans, hvordan man opdager kildekodeafhængigheder, hvordan man distribuerer kildekode, og hvordan instanser kommunikerer med hinanden. (I Dart omtales sådanne uafhængige instanser ofte som “isoler”.) Implementeringen beskrives i rapporten. Selvom biblioteket endnu ikke er funktionsdygtigt, konkluderes det, at det i princippet er muligt at understøtte distribueret programmering med et bibliotek – og at det kan gøres ved at genbruge Darts samtidighedssemantik. En væsentlig begrænsning er dog, at man ikke pålideligt kan afgøre, om et isolat er i live eller ej, hvilket er mere problematisk i et netværksmiljø end på en lokal maskine.
This master’s thesis builds on earlier work and examines whether distributed programming in Dart can be supported through a library written entirely in Dart. Here, distributed programming means running parts of a program across multiple processes or machines. The thesis asks three questions: Is it feasible to build a library that supports distributed programming in Dart? Can the same rules (semantics) used for Dart’s existing concurrency be reused? And what limitations arise when those semantics are imposed on a library for distributed use? A key constraint is that the solution must be pure Dart, with no changes to the underlying virtual machine. The thesis revisits key elements of the Dart language from the prior study and analyzes the main practical challenges: how to inject code into another Dart instance, how to detect source code dependencies, how to distribute source code, and how to enable communication between instances. (In Dart, such independent instances are often referred to as “isolates.”) The implementation effort is described. Although the library is not yet in a working state, the thesis concludes that it is, in principle, possible to support distributed programming with a library and to do so by reusing Dart’s concurrency semantics. A notable limitation is the inability to reliably tell whether an isolate is alive or dead, which is more problematic in a networked setting than on a single machine.
[Dette resumé er genereret ved hjælp af AI]
Emneord
