Implementing a Language for Distributed Systems: Choices and Experiences with Type Level and Macro Programming in Scala
Multitier programming languages reduce the complexity of developing distributed systems by developing the distributed system in a single coherent code base. The compiler or the runtime separate the code for the components of the distributed system, enabling abstraction over low level implementation...
Uloženo v:
| Vydáno v: | arXiv.org |
|---|---|
| Hlavní autoři: | , |
| Médium: | Paper |
| Jazyk: | angličtina |
| Vydáno: |
Ithaca
Cornell University Library, arXiv.org
14.02.2020
|
| Témata: | |
| ISSN: | 2331-8422 |
| On-line přístup: | Získat plný text |
| Tagy: |
Přidat tag
Žádné tagy, Buďte první, kdo vytvoří štítek k tomuto záznamu!
|
| Abstract | Multitier programming languages reduce the complexity of developing distributed systems by developing the distributed system in a single coherent code base. The compiler or the runtime separate the code for the components of the distributed system, enabling abstraction over low level implementation details such as data representation, serialization and network protocols. Our ScalaLoci language allows developers to declare the different components and their architectural relation at the type level, allowing static reasoning about about distribution and remote communication and guaranteeing static type safety across components. The compiler splits the multitier program into the component-specific code and automatically generates the communication boilerplate. Communication between components can be modeled by declaratively specifying data flows between components using reactive programming. In this paper, we report on the implementation of our design and our experience with embedding our language features into Scala as a host language. We show how a combination of Scala's advanced type level programming and its macro system can be used to enrich the language with new abstractions. We comment on the challenges we encountered and the solutions we developed for our current implementation and outline suggestions for an improved macro system to support the such use cases of embedding of domain-specific abstractions. |
|---|---|
| AbstractList | Multitier programming languages reduce the complexity of developing distributed systems by developing the distributed system in a single coherent code base. The compiler or the runtime separate the code for the components of the distributed system, enabling abstraction over low level implementation details such as data representation, serialization and network protocols. Our ScalaLoci language allows developers to declare the different components and their architectural relation at the type level, allowing static reasoning about about distribution and remote communication and guaranteeing static type safety across components. The compiler splits the multitier program into the component-specific code and automatically generates the communication boilerplate. Communication between components can be modeled by declaratively specifying data flows between components using reactive programming. In this paper, we report on the implementation of our design and our experience with embedding our language features into Scala as a host language. We show how a combination of Scala's advanced type level programming and its macro system can be used to enrich the language with new abstractions. We comment on the challenges we encountered and the solutions we developed for our current implementation and outline suggestions for an improved macro system to support the such use cases of embedding of domain-specific abstractions. |
| Author | Weisenburger, Pascal Salvaneschi, Guido |
| Author_xml | – sequence: 1 givenname: Pascal surname: Weisenburger fullname: Weisenburger, Pascal – sequence: 2 givenname: Guido surname: Salvaneschi fullname: Salvaneschi, Guido |
| BookMark | eNotjV1LwzAUhoMoOOd-gHcBrzeTk6bNvJM5P6CisN2Ps_a0y2jTmrT7-Pdu6tXLywPPc8MuXeOIsTspJpHRWjygP9jdBISAiYiliS7YAJSSYxMBXLNRCFtxYnECWqsB27_XbUU1uc66kiNP0ZU9lsSLxvNnGzpv131HOV8cQ0d1eOSzTWMzChxdzueHlrwld_5722348tgST2lH1S__wMw3_Ms3pce6Phes44sMK7xlVwVWgUb_O2TLl_ly9jZOP1_fZ0_pGDXIcYKwzmBaJFTkMtYZABHkGSUEQiaxJkCTG5HpKE8wLgCUMagyQVhMhVSJGrL7P23rm--eQrfaNr13p-IKlI6VibSW6gdx5GBt |
| ContentType | Paper |
| Copyright | 2020. This work is published under http://arxiv.org/licenses/nonexclusive-distrib/1.0/ (the “License”). Notwithstanding the ProQuest Terms and Conditions, you may use this content in accordance with the terms of the License. |
| Copyright_xml | – notice: 2020. This work is published under http://arxiv.org/licenses/nonexclusive-distrib/1.0/ (the “License”). Notwithstanding the ProQuest Terms and Conditions, you may use this content in accordance with the terms of the License. |
| DBID | 8FE 8FG ABJCF ABUWG AFKRA AZQEC BENPR BGLVJ CCPQU DWQXO HCIFZ L6V M7S PHGZM PHGZT PIMPY PKEHL PQEST PQGLB PQQKQ PQUKI PRINS PTHSS |
| DOI | 10.48550/arxiv.2002.06184 |
| DatabaseName | ProQuest SciTech Collection ProQuest Technology Collection ProQuest Materials Science & Engineering ProQuest Central (Alumni) ProQuest Central UK/Ireland ProQuest Central Essentials AUTh Library subscriptions: ProQuest Central Technology collection ProQuest One Community College ProQuest Central Korea SciTech Premium Collection ProQuest Engineering Collection Engineering Database ProQuest Central Premium ProQuest One Academic Publicly Available Content Database ProQuest One Academic Middle East (New) ProQuest One Academic Eastern Edition (DO NOT USE) ProQuest One Applied & Life Sciences ProQuest One Academic (retired) ProQuest One Academic UKI Edition ProQuest Central China Engineering collection |
| DatabaseTitle | Publicly Available Content Database Engineering Database Technology Collection ProQuest One Academic Middle East (New) ProQuest Central Essentials ProQuest One Academic Eastern Edition ProQuest Central (Alumni Edition) SciTech Premium Collection ProQuest One Community College ProQuest Technology Collection ProQuest SciTech Collection ProQuest Central China ProQuest Central ProQuest One Applied & Life Sciences ProQuest Engineering Collection ProQuest One Academic UKI Edition ProQuest Central Korea Materials Science & Engineering Collection ProQuest Central (New) ProQuest One Academic ProQuest One Academic (New) Engineering Collection |
| DatabaseTitleList | Publicly Available Content Database |
| Database_xml | – sequence: 1 dbid: PIMPY name: Publicly Available Content Database url: http://search.proquest.com/publiccontent sourceTypes: Aggregation Database |
| DeliveryMethod | fulltext_linktorsrc |
| Discipline | Physics |
| EISSN | 2331-8422 |
| Genre | Working Paper/Pre-Print |
| GroupedDBID | 8FE 8FG ABJCF ABUWG AFKRA ALMA_UNASSIGNED_HOLDINGS AZQEC BENPR BGLVJ CCPQU DWQXO FRJ HCIFZ L6V M7S M~E PHGZM PHGZT PIMPY PKEHL PQEST PQGLB PQQKQ PQUKI PRINS PTHSS |
| ID | FETCH-LOGICAL-a521-7a2bc29f7efd165c22ee2dce7e201765e2a8d80c54d7a6f22388a3c0eaf901373 |
| IEDL.DBID | BENPR |
| IngestDate | Mon Jun 30 09:25:45 EDT 2025 |
| IsDoiOpenAccess | true |
| IsOpenAccess | true |
| IsPeerReviewed | false |
| IsScholarly | false |
| Language | English |
| LinkModel | DirectLink |
| MergedId | FETCHMERGED-LOGICAL-a521-7a2bc29f7efd165c22ee2dce7e201765e2a8d80c54d7a6f22388a3c0eaf901373 |
| Notes | SourceType-Working Papers-1 ObjectType-Working Paper/Pre-Print-1 content type line 50 |
| OpenAccessLink | https://www.proquest.com/docview/2356384551?pq-origsite=%requestingapplication% |
| PQID | 2356384551 |
| PQPubID | 2050157 |
| ParticipantIDs | proquest_journals_2356384551 |
| PublicationCentury | 2000 |
| PublicationDate | 20200214 |
| PublicationDateYYYYMMDD | 2020-02-14 |
| PublicationDate_xml | – month: 02 year: 2020 text: 20200214 day: 14 |
| PublicationDecade | 2020 |
| PublicationPlace | Ithaca |
| PublicationPlace_xml | – name: Ithaca |
| PublicationTitle | arXiv.org |
| PublicationYear | 2020 |
| Publisher | Cornell University Library, arXiv.org |
| Publisher_xml | – name: Cornell University Library, arXiv.org |
| SSID | ssj0002672553 |
| Score | 1.7137152 |
| SecondaryResourceType | preprint |
| Snippet | Multitier programming languages reduce the complexity of developing distributed systems by developing the distributed system in a single coherent code base.... |
| SourceID | proquest |
| SourceType | Aggregation Database |
| SubjectTerms | Communication Compilers Computer networks Embedded systems Embedding Language Programming languages Protocol (computers) |
| Title | Implementing a Language for Distributed Systems: Choices and Experiences with Type Level and Macro Programming in Scala |
| URI | https://www.proquest.com/docview/2356384551 |
| hasFullText | 1 |
| inHoldings | 1 |
| isFullTextHit | |
| isPrint | |
| link | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwpV3PT8IwGG0UNPHk7_gDSQ9eK6N0a-fFRMRoAmQRDngiXdspBwduiP75fi1FDiZePK5d0qXt3vf168t7CF2mnKY0TRlRQaQJa1JJIOhRIjPGMtjVkNI6df0u7_fFaBQnvuBWelrlChMdUOupsjXyBm2FsFUYBPib2TuxrlH2dtVbaGyiqlUqYxVUve30k6efKguNOOTMreV1phPvasjia7Jw3ISrwLqd_AJhF1nud__7TXuomsiZKfbRhskP0LZjdKryEH063V9HBspfsMRdX5jEkKXiOyuXa52ujMZes_wat1-nFjWwzDVeKyCX2JZqsT2v4q5lGLn-ngQAx8mS3PVmR5jkeADrLY_Q8L4zbD8Q77JAJIRuwiVNFY0zbjLdjEJFqTFUK8MNpAY8Cg2VQotAhUxzGWWQTQghWyowMoutXGHrGFXyaW5OENYAngAg8I6KGWVRyg2XwkCbCLWQ-hTVVtM49n9KOV7P4dnf3edoh9qzrjVjYTVUmRcf5gJtqcV8UhZ1v_B1y90cwFPy2EuevwEyqLxR |
| linkProvider | ProQuest |
| linkToHtml | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMw1V1LT8JAEJ4gaPTkO77dgx6rsGy7i4nxABIIhZDIAU9ku7tVDhakPn-U_9HZpcjBxBsHr92mzXYm883Mfv0G4CziNKJRxDxVDLTHSlR6CHrUkzFjMXo1prROXT_knY7o9yvdHHzN_oWxtMpZTHSBWo-U7ZFf0rKPrsIQ4G_Gz56dGmVPV2cjNKZu0TKf71iypdfNGtr3nNL6ba_a8LKpAp5EqPK4pJGilZibWJcCX1FqDNXKcINQyAPfUCm0KCqfaS6DGNFTCFlWRSPjipXnK-Njl6DA0NdFHgrdZrt7_9PUoQHHFL08PT11WmGXcvIxfHNUiIuiHa7yK-Y7IKuv_7NPsIFbl2Mz2YScSbZgxfFVVboN707V2FGdkgciSZi1XQnm4KRmxYDtHC-jSabIfkWqjyMbE4lMNJnrO6fENqKJrcZJaPlTbr0tEZ5Id0pde7JvGCbkDr1Z7kBvEVvdhXwySsweEI3QgOER71EVRlkQccOlMHhN-FpIvQ9HM6sNsjiQDuYmO_h7-RRWG712OAibndYhrFFb1duxM-wI8i-TV3MMy-rtZZhOTjKfIzBYsIm_AYI3FiU |
| openUrl | ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Implementing+a+Language+for+Distributed+Systems%3A+Choices+and+Experiences+with+Type+Level+and+Macro+Programming+in+Scala&rft.jtitle=arXiv.org&rft.au=Weisenburger%2C+Pascal&rft.au=Salvaneschi%2C+Guido&rft.date=2020-02-14&rft.pub=Cornell+University+Library%2C+arXiv.org&rft.eissn=2331-8422&rft_id=info:doi/10.48550%2Farxiv.2002.06184 |