Erlang WorkshopPub Date : 2003-08-29DOI: 10.1145/940880.940885
Richard Carlsson
{"title":"Parameterized modules in Erlang","authors":"Richard Carlsson","doi":"10.1145/940880.940885","DOIUrl":"https://doi.org/10.1145/940880.940885","url":null,"abstract":"This paper describes how the Erlang programming language could be extended with parameterized modules, in a way that is compatible with existing code. This provides a powerful way of creating callbacks, that avoids the limitations involved with function closures, and extends current programming practices in a systematic way that also eliminates a common source of errors. The usage of parameterized modules is similar to Object-Oriented programming, and is naturally complemented by the currently underused feature of behaviours (interface declarations), which are also explained in detail.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"58 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2003-08-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125776414","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 : 2003-08-29DOI: 10.1145/940880.940882
J. Blom, B. Jonsson
{"title":"Automated test generation for industrial Erlang applications","authors":"J. Blom, B. Jonsson","doi":"10.1145/940880.940882","DOIUrl":"https://doi.org/10.1145/940880.940882","url":null,"abstract":"We present an implemented technique for generating test cases from state machine specifications. The work is motivated by a need for testing of protocols and services developed by the company Mobile Arts. We have developed a syntax for description of state machines extended with data variables. From such state machines, test cases are generated by symbolic execution. The test cases are symbolically represented; concrete test cases are generated by instantiation of data parameters.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"9 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2003-08-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130079698","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 : 2003-08-29DOI: 10.1145/940880.940886
Konstantinos Sagonas, M. Pettersson, Richard Carlsson, Per Gustafsson, Tobias Lindahl
{"title":"All you wanted to know about the HiPE compiler: (but might have been afraid to ask)","authors":"Konstantinos Sagonas, M. Pettersson, Richard Carlsson, Per Gustafsson, Tobias Lindahl","doi":"10.1145/940880.940886","DOIUrl":"https://doi.org/10.1145/940880.940886","url":null,"abstract":"We present a user-oriented description of features and characteristics of the High Performance ERLANG (HiPE) native code compiler, which nowadays is part of Erlang/OTP. In particular, we describe components and recent additions to the compiler that improve its performance and extend its functionality. In addition, we attempt to give some recommendations on how users can get the best out of HiPE's performance.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"4 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2003-08-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116227453","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 : 2003-08-29DOI: 10.1145/940880.940881
J. Nyström, P. Trinder, D. King
{"title":"Evaluating distributed functional languages for telecommunications software","authors":"J. Nyström, P. Trinder, D. King","doi":"10.1145/940880.940881","DOIUrl":"https://doi.org/10.1145/940880.940881","url":null,"abstract":"The distributed telecommunications sector not only requires minimal time to market, but also software that is reliable, available, maintainable and scalable. High level programming languages have the potential to reduce development time and improve maintainability due to their compact code size. Moreover reliability is improved by safe type systems and relatively easy verification.This paper outlines plans and initial results from a joint project between Motorola and Heriot-Watt University that aims to evaluate the suitability of distributed functional languages for constructing telecommunications software. The evaluation will use the ERLANG and Glasgow distributed Haskell(GdH) languages, and be based on the construction of several typical applications. The evaluation will focus on reliability issues like ease of verification, availability issues like fault-tolerance or resilience, as well as whether the languages deliver the required functionalities, like real-time capabilities. The impact of specific languages techniques will also be assessed, including type system, strictness, validation and distributed coordination. The ERLANG and GdH implementations of the applications will be compared with existing C++/CORBA and Java/JINI implementations.The first application, a Dispatch Call Controller(DCC), has been constructed in ERLANG and measured on a Beowulf cluster. We find that the DCC scales, achieving a relative speedup of 14.5 on 16 processors. The DCC is resilient, achieving 105% throughput at 200% load and 56% throughput at 9000% load on 16 processors. The DCC is fault-tolerant, remaining available despite any one process or processor failure. The DCC has dynamic adaptability, remaining available as processors are added or removed.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"87 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2003-08-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124994509","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 : 2003-08-29DOI: 10.1145/940880.940883
J. J. S. Penas, C. Ramiro
{"title":"Extending the VoDKA architecture to improve resource modelling","authors":"J. J. S. Penas, C. Ramiro","doi":"10.1145/940880.940883","DOIUrl":"https://doi.org/10.1145/940880.940883","url":null,"abstract":"VoDKA is a Video-on-Demand server developed using Erlang/OTP. In this paper, the evolution of the core architecture of the system, designed for improving resource modelling, is described. After explaining the main goals of the project, the steps taken towards an optimal architecture are explained. Finally, a new architecture is proposed, solving all the problems and limitations in the previous ones. Special attention is paid to the use of design patterns, implementation behaviours, and reusable software components.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"60 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2003-08-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131928998","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 : 2003-08-29DOI: 10.1145/940880.940888
S. Nyström
{"title":"A soft-typing system for Erlang","authors":"S. Nyström","doi":"10.1145/940880.940888","DOIUrl":"https://doi.org/10.1145/940880.940888","url":null,"abstract":"This paper presents a soft-typing system for the programming language Erlang. The system is based on two concepts; a (forward) data flow analysis that determines upper approximations of the possible values of expressions and other constructs, and a specification language that allows the programmer to specify the interface of a module. We examine the programming language Erlang and point to various aspects of the language that make it hard to type. We present experimental result of applying the soft-typing system to some previously written programs.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"15 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2003-08-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132541450","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 : 2003-08-29DOI: 10.1145/940880.940887
S. Fritchie
{"title":"A study of Erlang ETS table implementations and performance","authors":"S. Fritchie","doi":"10.1145/940880.940887","DOIUrl":"https://doi.org/10.1145/940880.940887","url":null,"abstract":"The viability of implementing an in-memory database, Erlang ETS, using a relatively-new data structure, called a Judy array, was studied by comparing the performance of ETS tables based on four data structures: AVL balanced binary trees, B-trees, resizable linear hash tables, and Judy arrays. The benchmarks used workloads of sequentially- and randomly-ordered keys at table populations from 700 keys to 54 million keys.Benchmark results show that ETS table insertion, lookup, and update operations on Judy-based tables are significantly faster than all other table types for tables that exceed CPU data cache size (70,000 keys or more). The relative speed of Judy-based tables improves as table populations grow to 54 million keys and memory usage approaches 3GB. Term deletion and table traversal operations by Judy-based tables are slower than the linear hash table-based type, but the additional cost of the deletion operation is smaller than the combined savings of the other operations.Resizing a hash table to 232 buckets, managed by a Judy array, creates the most consistent performance improvements and uses only about 6% more memory than a regular hash table. Other applications could benefit substantially by this application of Judy arrays.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2003-08-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130490180","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 : 2002-10-07DOI: 10.1145/592849.592856
T. Arts, J. J. S. Penas
{"title":"Global scheduler properties derived from local restrictions","authors":"T. Arts, J. J. S. Penas","doi":"10.1145/592849.592856","DOIUrl":"https://doi.org/10.1145/592849.592856","url":null,"abstract":"The VoDka server is a video-on-demand system for a Spanish cable company. We look at the distributed scheduler of this system. This scheduler enables that whenever a user agent is asking for a certain movie, this request is transferred through the system and a set of possible play-back qualities is returned to the agent. In case of a non-empty set, the agent selects one and the movie is streamed to the user.The storage subsystem of the server is composed by a hierarchy of different storage systems, i.e. disks, CD players or tapes. These devices all have restrictions of which the process controlling the device is aware of. A second layer of processes controls a set of devices in one machine and has restrictions, for example, the bandwidth of its connection. A third layer may be further out in the network and serve as a cache to store more popular movies.Every process in the scheduler of the system has a function determining local restrictions, given the configuration and present state of the system. We have built a tool to construct complete models of several configurations. With techniques from the area of formal methods (in particular model checking) these models are used to determine global properties of the system, such as the maximum number of a certain class of movies that can be served in parallel.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"11 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-10-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115319161","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 : 2002-10-07DOI: 10.1145/592849.592855
Michael Bruening, Hal Snyder, Martin Logan
{"title":"OTP in server farms","authors":"Michael Bruening, Hal Snyder, Martin Logan","doi":"10.1145/592849.592855","DOIUrl":"https://doi.org/10.1145/592849.592855","url":null,"abstract":"Ericsson's OTP (Open Telecom Platform) offers a number of attractive features if you want to provide a variety of information services on a network with high availability, scalability, and extensibility. However, the major uses of OTP have been in closed, relay-rack systems, rather than in clusters of general-purpose servers. We describe issues we encountered while bringing up applications on OTP in the latter environment at a computer telephony company.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"54 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-10-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128337841","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 : 2002-10-07DOI: 10.1145/592849.592857
Erik Stenman, Konstantinos Sagonas
{"title":"On reducing interprocess communication overhead in concurrent programs","authors":"Erik Stenman, Konstantinos Sagonas","doi":"10.1145/592849.592857","DOIUrl":"https://doi.org/10.1145/592849.592857","url":null,"abstract":"We present several different ideas for increasing the performance of highly concurrent programs in general and Erlang programs in particular. These ideas range from simple implementation tricks that reduce communication latency to more thorough code rewrites guided by inlining across process boundaries. We also briefly discuss the impact of different heap architectures on interprocess communication in general and on our proposed optimizations in particular.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"34 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-10-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128873672","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}