Erlang WorkshopPub Date : 2007-10-05DOI: 10.1145/1292520.1292533
C. Santoro
{"title":"An erlang framework for autonomous mobile robots","authors":"C. Santoro","doi":"10.1145/1292520.1292533","DOIUrl":"https://doi.org/10.1145/1292520.1292533","url":null,"abstract":"This paper presents an Erlang-based framework, developed by the authors, for the realisation of software systems for autonomous mobile robots.\u0000 On the basis of the analysis of the main problems arising in the design and implementation of such a kind of robots, a software infrastructure has been derived, organised in a set of layers, each one composed by some modules. This layered architecture is employed to separate hardware interfacing problems from control loops and high-level strategy tasks; such an organisation allows also a developer to concentrate only on the specific problem to be dealt with, and to immediately identify the module or layer to be involved for the realisation of a specific functionality. The proposed structure also favours reuse and rapid refactoring, since the replacement of a piece of hardware or a change in a functionality requires only few changes on a specific module, leaving the remaining system untouched.\u0000 The overall software architecture is described in the paper, as well as the functionality of the various modules composing it; the advantages introduced by the framework are also highlighted, while some examples and a case study are used to show its effectiveness.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"65 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-10-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122536076","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Erlang WorkshopPub Date : 2007-10-05DOI: 10.1145/1292520.1292529
Q. Guo, J. Derrick
{"title":"Verification of timed erlang/OTP components using the process algebra μcrl","authors":"Q. Guo, J. Derrick","doi":"10.1145/1292520.1292529","DOIUrl":"https://doi.org/10.1145/1292520.1292529","url":null,"abstract":"Recent work has looked at how Erlang programs could be model-checked via translation into the process algebra μCRL. Rules for translating Erlang programs and OTP components into μCRL have been defined and investigated. However, in the existing work, no rule is defined for the translation of timeout events into μCRL. This could degrade the usability of the existing work as in some real applications, timeout events play a significant role in the system development. In this paper, by extending the existing work, we investigate the verification of timed Erlang/OTP components in μCRL. By using an explicit tick action in the μCRL specification, a discrete-time timing model is defined to support the translation of timed Erlang functions into μCRL. Two small examples are presented, which demonstrates the applications of the proposed approach.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"27 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-10-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125648594","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Erlang WorkshopPub Date : 2007-10-05DOI: 10.1145/1292520.1292522
Ulf T. Wiger
{"title":"Extended process registry for erlang","authors":"Ulf T. Wiger","doi":"10.1145/1292520.1292522","DOIUrl":"https://doi.org/10.1145/1292520.1292522","url":null,"abstract":"The built-in process registry has proven to be an extremely useful feature of the Erlang language. It makes it easy to provide named services, which can be reached without knowing the process identifier of the serving process.\u0000 However, the current registry also has limitations: names can only be atoms (unstructured), processes can register under at most one name, and it offers no means of efficient search and iteration.\u0000 In Ericsson's IMS Gateway products, a recurring task was to maintain mapping tables in order to locate call handling processes based on different properties. A common pattern, a form of index table, was identified, and resulted in the development of an extended process registry.\u0000 It was not immediately obvious that this would be worthwhile, or even efficient enough to be useful. But as implementation progressed, designers found more and more uses for the extended process registry, which resulted in significant reduction of code volume and a more homogeneous implementation. It also provided a powerful means of debugging systems with many tens of thousand processes.\u0000 This paper describes the extended process registry, critiques it, and proposes a new implementation that offers more symmetry, better performance and support for a global namespace.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"93 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-10-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132168630","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Erlang WorkshopPub Date : 2007-10-05DOI: 10.1145/1292520.1292528
Hans Svensson, Lars-Åke Fredlund
{"title":"A more accurate semantics for distributed erlang","authors":"Hans Svensson, Lars-Åke Fredlund","doi":"10.1145/1292520.1292528","DOIUrl":"https://doi.org/10.1145/1292520.1292528","url":null,"abstract":"In order to formally reason about distributed Erlang systems, it is necessary to have a formal semantics. In a previous paper we have proposed such a semantics for distributed Erlang. However, recent work with a model checker for Erlang revealed that the previous attempt wasnot good enough. In this paper we present a more accurate semantics for distributed Erlang. The more accurate semantics includes several modifications and additions to the semantics for distributed Erlang proposed by Claessen and Svensson in 2005, which in turn is an extension to Fredlund's formal single-node semantics for Erlang. Themost distinct addition to the previous semantics is the possibility to correctly model disconnected nodes.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-10-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131118473","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Erlang WorkshopPub Date : 2007-10-05DOI: 10.1145/1292520.1292525
V. Nicosia
{"title":"Towards hard real-time erlang","authors":"V. Nicosia","doi":"10.1145/1292520.1292525","DOIUrl":"https://doi.org/10.1145/1292520.1292525","url":null,"abstract":"In the last decades faster and more powerful computers made possible to seriously take into account high-level and functional programming languages also for non-academic projects. Haskell, Erlang, O'CAML have been effectively exploited in many application fields, demonstrating how high-level languages can help in writing efficient, readable and almost bug-free code, rapidly stealing the prominent position gained in many fields by OO languages such as Java and C++. One of the fields where low-level imperative languages are still preferred to functional programming is that of hard real-time applications, since usually programmers (and managers) think that high-level languages are really not able to cope with the complex and critical requirements of real-time.\u0000 In this paper we propose an implementation of a hard real-time scheduler entirely written in Erlang, and perfectly integrated with the Erlang BEAM emulator. Performance analysis show that the proposed solution is effective, precise and efficient, while remaining really simple to use as expected by Erlang programmers.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"31 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-10-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134147654","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Erlang WorkshopPub Date : 2007-10-05DOI: 10.1145/1292520.1292534
F. Huch
{"title":"Learning programming with erlang","authors":"F. Huch","doi":"10.1145/1292520.1292534","DOIUrl":"https://doi.org/10.1145/1292520.1292534","url":null,"abstract":"This paper presents an interactive framework for pupils to learn the basic concepts of programming by means of the functional programming language Erlang. Beside the idea of the framework we also sketch the different learning targets and exercises to deepen programming skills.\u0000 The framework was successfully utilized in a programming course for pupils in their last three school years.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"96 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-10-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116990185","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Erlang WorkshopPub Date : 2007-10-05DOI: 10.1145/1292520.1292523
Miguel Jimenez, Tobias Lindahl, Konstantinos Sagonas
{"title":"A language for specifying type contracts in erlang and its interaction with success typings","authors":"Miguel Jimenez, Tobias Lindahl, Konstantinos Sagonas","doi":"10.1145/1292520.1292523","DOIUrl":"https://doi.org/10.1145/1292520.1292523","url":null,"abstract":"We propose a small extension of the Erlang language that allows programmers to specify contracts with type information at the level of individual functions. Such contracts are optional and they document the intended uses of functions. Contracts allow automatic documentation tools such as Edoc to generate better documentation and defect detection tools such as Dialyzer to detect more type clashes. Since the Erlang/OTP system already contains components which perform automatic type inference of success typings, we also describe how contracts interact with success typings and can often provide some key information to the inference process.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"14 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-10-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114764580","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Erlang WorkshopPub Date : 2007-10-05DOI: 10.1145/1292520.1292532
Oscar Hellström
{"title":"Optimising TCP/IP connectivity","authors":"Oscar Hellström","doi":"10.1145/1292520.1292532","DOIUrl":"https://doi.org/10.1145/1292520.1292532","url":null,"abstract":"With the increased use of network enabled applications and server hosted software systems, scalability with respect to network connectivity is becoming an increasingly important subject. The programming language Erlang has previously been shown to be a suitable choice for creating highly available, scalable and robust telecoms systems. In this exploratory study we want to investigate how to optimise an Erlang system for maximum TCP/IP connectivity in terms of operating system, tuning of the operating system TCP stack and tuning of the Erlang Runtime System. The study shows how a series of benchmarks are used to evaluate the impact of these factors and how to evaluate the best settings for deploying and configuring an Erlang application. We conclude that the choice of operating system and the use of kernel poll both have a major impact on the scalability of the benchmarked systems.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"37 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-10-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127715361","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Erlang WorkshopPub Date : 2007-10-05DOI: 10.1145/1292520.1292524
L. Lövei, Zoltán Horváth, T. Kozsik, Roland Király
{"title":"Introducing records by refactoring","authors":"L. Lövei, Zoltán Horváth, T. Kozsik, Roland Király","doi":"10.1145/1292520.1292524","DOIUrl":"https://doi.org/10.1145/1292520.1292524","url":null,"abstract":"This paper focuses on introducing a new transformation to our existing model for refactoring Erlang programs. The goal of the transformation is to introduce a new abstraction level in data representation by substituting a group ofrelated data with a record. Using records enhances the legibility of the source code, makes further development easier, and makes programming less error-prone by providing better possibilities for both compilation time and runtime checks. There is a strong industrial demand for such a transformation in refactoring legacy code.\u0000 Erlang is a dynamically typed language, and many of its semantical rules are also dynamic. Therefore the main challenge in this research is to ensure the safety of statically performed refactoring steps.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"29 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-10-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122144862","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Erlang WorkshopPub Date : 2006-09-16DOI: 10.1145/1159789.1159796
R. Lenglet, S. Chiba
{"title":"Dryverl: a flexible Erlang/C binding compiler","authors":"R. Lenglet, S. Chiba","doi":"10.1145/1159789.1159796","DOIUrl":"https://doi.org/10.1145/1159789.1159796","url":null,"abstract":"This article introduces Dryverl, an Erlang/C binding code generator. Dryverl aims at becoming the most abstract, open and efficient tool for implementing any Erlang/C bindings, as either C port drivers, C port programs, or C nodes. The most original feature of Dryverl is to provide users with open Erlang/C bindings, similar to distributed bindings in open distributed processing systems, to allow specifying programmatically the data transformations that must often be performed in Erlang/C bindings. Implementation details are hidden to developers, and implementation differences between port drivers, port programs, and nodes are abstracted by Dryverl, and Dryverl aims at generating the most efficient implementations possible for every target mechanism.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"21 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2006-09-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125530665","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}