Erlang WorkshopPub Date : 2004-09-22DOI: 10.1145/1022471.1022475
Richard Carlsson, Björn Gustavsson, Patrik Nyblom
{"title":"Erlang's exception handling revisited","authors":"Richard Carlsson, Björn Gustavsson, Patrik Nyblom","doi":"10.1145/1022471.1022475","DOIUrl":"https://doi.org/10.1145/1022471.1022475","url":null,"abstract":"This paper describes the new exception handling in the ERLANG programming language, to be introduced in the forthcoming Release 10 of the Erlang/OTP system. We give a comprehensive description of the behaviour of exceptions in modern-day ERLANG, present a theoretical model of the semantics of exceptions, and use this to derive the new try-construct.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"67 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-09-22","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121062318","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 : 2004-09-22DOI: 10.1145/1022471.1022472
J. Armstrong
{"title":"EX11: a GUI in a concurrent functional language","authors":"J. Armstrong","doi":"10.1145/1022471.1022472","DOIUrl":"https://doi.org/10.1145/1022471.1022472","url":null,"abstract":"In this paper, I describe how GUIs can be made from collections of communicating parallel processes. The paper describes EX11 which is an Erlang binding to the X protocol. I describe the X windows programming model and show how X protocol messages can be naturally mapped onto Erlang messages. The code to perfom this mapping makes extensive use of the Erlang bit syntax and as such provides a good example of the use of the bit syntax to implement a reasonably complex protocol. I give code examples which make use of the EX11 widget library and show how the widget library itself is implemented.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"12 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-09-22","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129360211","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 : 2004-09-22DOI: 10.1145/1022471.1022480
Jay Nelson
{"title":"Structured programming using processes","authors":"Jay Nelson","doi":"10.1145/1022471.1022480","DOIUrl":"https://doi.org/10.1145/1022471.1022480","url":null,"abstract":"Structured Programming techniques are applied to a personal accounting software application implemented in erlang as a demonstration of the utility of processes as design constructs. Techniques for enforcing strong encapsulation, partitioning for fault isolation and data flow instrumentation, reusing code, abstracting and adapting interfaces, simulating inputs, managing and distributing resources and creating complex application behavior are described. The concept of inductive decomposition is introduced as a method for modularizing code based on the dynamic behavior of the system over time, rather than the static structure of a program. This approach leads to code subsumption, behavior abstraction, automated testing, dynamic data versioning and dynamic code revision all of which contribute to more reliable, fault-tolerant software.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"30 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-09-22","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125026934","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 : 2004-09-22DOI: 10.1145/1022471.1022477
Torbjrn Trnkvist
{"title":"An implementation of the SMB protocol in erlang","authors":"Torbjrn Trnkvist","doi":"10.1145/1022471.1022477","DOIUrl":"https://doi.org/10.1145/1022471.1022477","url":null,"abstract":"This paper describes the implementation of a subset of the SMB protocol in Erlang. We discuss the motivation for this work and its outcome, and compare the performance and memory consumption of our implementation with Samba.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-09-22","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126151219","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 : 2004-09-22DOI: 10.1145/1022471.1022476
E. Marcote, D. Iglesia, C. Escudero
{"title":"An external short message entity for gambling services","authors":"E. Marcote, D. Iglesia, C. Escudero","doi":"10.1145/1022471.1022476","DOIUrl":"https://doi.org/10.1145/1022471.1022476","url":null,"abstract":"This paper introduces a new platform designed for mobile gambling services. The special characteristics of these services lead us to developed a multiservice platform that easily brought mobility to applications and services not designed for that.This system was designed to work over SMS, allowing automation of the tedious work of programming reliable SMS-based interfaces. The new system automatically generates user front-ends for a wide variety of services based on forms. As we will see in the paper, the interfaces are defined by means of the novel W3C XForms standard.The resulting platform was designed to be highly efficient, reliable and fault tolerant. Choosing Erlang/OTP as the development environment was a key factor to acquire these goals.As part of the project an open source Erlang SMPP implementation was developed, key features of this library, named OSERL, are also described in this paper.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"111 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-09-22","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121508253","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 : 2004-09-22DOI: 10.1145/1022471.1022474
M. Cronqvist
{"title":"Troubleshooting a large erlang system","authors":"M. Cronqvist","doi":"10.1145/1022471.1022474","DOIUrl":"https://doi.org/10.1145/1022471.1022474","url":null,"abstract":"In this paper, we discuss some experiences from a large, industrial software project using a functional programming language. In particular, we will focus on programming errors.The software studied is the AXD 301 (a multi-service switch from Ericsson AB [1]) control system. It is implemented in a functional language Erlang [2 ]. We will discuss ho this affects programmer productivity.There are now well over 1,000 AXD 301's deployed. Even though a properly handled AXD 301 is quite reliable, there exists a great deal of knowledge about problems that do occur in production code. We will analyze what kinds of programming errors cause these problems, and suggest some methods for preventing and, when that fails, finding the errors. We will also describe some tools that has been specifically developed to aid in debugging.One (perceived) problem with using a interpreted, functional language is execution speed. In practice, we have found that the overhead of running in an emulator is not dramatic, and that it is often more than compensated for by the advantages. The expressiveness of the language and the absence of low-level bugs means that programmers have more time to spend on tuning the code. And since the emulator has good support for tracing, one can perform very advanced profiling, thus making the code intrinsically more effective. We will discuss a profiling tool developed for that purpose.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"70 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-09-22","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126091452","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 : 2004-09-22DOI: 10.1145/1022471.1022473
Martin Logan
{"title":"Monitoring and state transparency of distributed systems","authors":"Martin Logan","doi":"10.1145/1022471.1022473","DOIUrl":"https://doi.org/10.1145/1022471.1022473","url":null,"abstract":"This paper presents the System Status suite of applications. These applications are used to provide a simple, uniform, and low developer cost system for exporting and tracking the state of OTP applications and services over a distributed server farm network architecture. The terms, simple, and low developer cost, will be elaborated on later in the paper. The system is intended to provide no formalized management framework it is specifically a state/status export and monitoring infrastructure.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"127 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-09-22","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125271824","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 : 2004-09-22DOI: 10.1145/1022471.1022479
Manfred Widera
{"title":"Flow graphs for testing sequential erlang programs","authors":"Manfred Widera","doi":"10.1145/1022471.1022479","DOIUrl":"https://doi.org/10.1145/1022471.1022479","url":null,"abstract":"Testing of software components during development is a heavily used approach to detect programming errors and to evaluate the quality of software. Systematic approaches to software testing get a more and more increasing impact on software development processes. For imperative programs there are several approaches to measure the appropriateness of a set of test cases for a program part under testing. Some of them are source code directed and are given as coverage criteria on flow graphs.This paper gives a definition of flow graphs for Erlang programs and describes a tool for generating such flow graphs. It provides a first step towards the transfer of advanced source code directed testing methods to functional programming.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-09-22","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130707188","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 : 2004-09-22DOI: 10.1145/1022471.1022478
D. Luna, M. Pettersson, Konstantinos Sagonas
{"title":"HiPE on AMD64","authors":"D. Luna, M. Pettersson, Konstantinos Sagonas","doi":"10.1145/1022471.1022478","DOIUrl":"https://doi.org/10.1145/1022471.1022478","url":null,"abstract":"Erlang is a concurrent functional language designed for developing large-scale, distributed, fault-tolerant systems. The primary implementation of the language is the Erlang/OTP system from Ericsson. Even though Erlang/OTP is by default based on a virtual machine interpreter, it nowadays also includes the HiPE (High Performance Erlang) native code compiler as a fully integrated component. This paper describes the recently developed port of HiPE to the AMD64 architecture. We discuss technical issues that had to be addressed when developing the port, decisions we took and why, and report on the speedups (compared with BEAM) which HiPE/AMD64 achieves across a range of Erlang programs and how these compare with speedups for the more mature SPARC and x86 back-ends.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"43 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-09-22","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122225755","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 : 2004-09-22DOI: 10.1145/1022471.1022481
C. Varela, C. Abalde, Laura M. Castro, J. Gulías
{"title":"On modelling agent systems with erlang","authors":"C. Varela, C. Abalde, Laura M. Castro, J. Gulías","doi":"10.1145/1022471.1022481","DOIUrl":"https://doi.org/10.1145/1022471.1022481","url":null,"abstract":"Multi-agent systems are a kind of concurrent distributed systems. In this work, some guidelines on how to create multi-agent systems using Erlang are presented. The modelled system supports cooperation among agents by plan exchange, reconfiguration and has a certain fault-tolerance. The distributed and concurrent functional programming Erlang, together with OTP platform, allows the creation of high-availability and fault-tolerant concurrent and distributed systems, and it seems to be an interesting framework for implementing multi-agent systems.","PeriodicalId":140676,"journal":{"name":"Erlang Workshop","volume":"56 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-09-22","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131661526","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}