No abstract available.
Proceeding Downloads
Optimizing Parser Combinators
Parser combinators are a popular approach to parsing. Parser combinators follow the structure of an underlying grammar, are modular, well-structured, easy to maintain, and can recognize a large variety of languages including context-sensitive ones. ...
CommunityExplorer: A Framework for Visualizing Collaboration Networks
Understanding the network of collaborations, identifying the key players, potential future collaborators, and trends in the field are very important to carry out a project successfully. In this paper, we present CommunityExplorer, a visualization ...
smalltalkCI: A Continuous Integration Framework for Smalltalk Projects
Continuous integration (CI) is a programming practice that reduces the risk of project failure by integrating code changes multiple times a day. This has always been important to the Smalltalk community, so custom integration infrastructures are ...
ViennaTalk and Assertch: Building Lightweight Formal Methods Environments on Pharo 4
It is possible to make Integrated Development Environments supporting formal methods that can be as flexible as the support for dynamic programming languages. This paper contributes with a demonstration employing different support environments for the ...
When QualityAssistant Meets Pharo: Enforced Code Critiques Motivate More Valuable Rules
Static analysis tools can aid in software quality assessment, but are rarely used by software developers. Poor usage of quality analysis tools not only means missed opportunities for the quality of software systems, but also results in little feedback, ...
Inferring Types by Mining Class Usage Frequency from Inline Caches
Dynamically typed languages allow developers to write more expressive source code, but their lack of static information about types of variables increases the complexity of a program. Static type information about types of variables facilitates program ...
The Object Repository: Pulling Objects out of the Ecosystem
In this paper we propose the idea of constructing an Object Repository -- a repository of code snippets that, when executed, produce an instance of some class. Such a repository may be useful for several software engineering tasks like augmenting ...
Dynamically Composing Collection Operations through Collection Promises
Filtering, mapping, and iterating collections are frequent operations. It is known that composing a number of these operations may create intermediate collections causing an additional and unnecessary overhead. To reduce the number of intermediate ...
Pragmas: Literal Messages as Powerful Method Annotations
Often tools need to be extended at runtime depending on the availability of certain features. Simple registration mechanisms can handle such a situation: It often boils down to represent an action and describe such action with some metadata. However, ad-...
Mocks, Proxies, and Transpilation as Development Strategies for Web Development
With the advent of HTML 5, we can now develop rich web apps that rival classical standalone apps. This richness together with the portability of web technologies, turned HTML 5 into a viable (and in the case of mobile - essential) solution to develop ...
Clustering technique for conceptual clusters
Clustering aims to classify elements into groups called classes or clusters. Clustering is used in reverse-engineering to help to understand legacy software. It is also a technic used in re-engineering to propose gatherings of software entities to ...
Prototyping Software Product Lines analysis with Pharo
Software Product Lines (SPLs) are an emerging software engineering paradigm that aims to optimize software development costs and time to market trough systematic development of reusable of core assets. At the heart of SPL engineering is variability ...
Lub: a DSL for Dynamic Context Oriented Programming
Embedded, interactive or reactive systems have to face unexpected events coming from their environment. Taking this kind of event into account at design time raises the challenging issue of the dynamic behavior adaptation at runtime. In this paper, we ...
The OpenPonk modeling platform
In this paper we present OpenPonk: a free, open-source, simple to use platform for developing tools for conceptual modeling: diagramming, DSLs, and algorithms operating on the models and diagrams, such as automatic layouting, model transformations, ...
Dynamic Round-Trip Engineering in the context of FOMDD
In the context of Feature-Oriented Model-Driven Development, round-trip engineering remains challenging because of the one-to-many relationship that exists between a source model and its implementation parts. In this paper, we present CrossFabrik, an ...
Phorms: Pattern Combinator Library for Pharo
Pattern matching is a common mechanism to provide analysis and transformation of data structures. Such an approach basically checks whether the containing elements of a data structure are constituents of a pattern, described by the developer. This paper ...
Test Selection with Moose In Industry: Impact of Granularity
Automatic testing constitutes an important part of everyday development practice. Worldline, a major IT company, is creating more and more tests to ensure the good behaviour of its applications and gain in efficiency and quality. But running all these ...
A promising approach for debugging remote promises
Promises are synchronization constructs that hide the complexity of process synchronisation from the developer by providing a placeholder for the result of a potentially incomplete computation performed in a concurrent process.
Promises evaluated by ...
Chromatic and Harmonic Scales for Intuitive Sonographic Compositions
Historically, sonographic representations of sounds are based on two types of scales: linear or logarithmic (Xenakis, 1971; Roads, 1995; Lesbros, 1995, 1996; Xiaoying, 2008). These two kinds of scales introduce beats between sounds produced by adjacent ...
Explicit Composition Constructs in DSLs: The case of the epidemiological language KENDRICK
Domain Specific Languages (DSL) are designed to be syntactically and semantically easier to use than general-purpose languages performing the same task. This is generally achieved by tailoring programming notions and constructs to the domain tasks at ...
How to Build a High-Performance VM for Squeak/Smalltalk in Your Spare Time: An Experience Report of Using the RPython Toolchain
In this paper we present our experience in letting students develop RSqueak/VM, a fast virtual machine for executing Squeak/Smalltalk, over the course of multiple introductory VM courses and projects. Our experience indicates that the way RSqueak/VM is ...
A low Overhead Per Object Write Barrier for the Cog VM
In several Smalltalk implementations, a program can mark any object as read-only (unfortunately incorrectly some-times miscalled immutable). Such read-only objects cannot be mutated unless the program explicitly revert them to a writable state. This ...
Lowcode: Extending Pharo with C Types to Improve Performance
The highly dynamic nature of Smalltalk provides a high degree of flexibility, but at the expense of performance. On the other hand, static system programming languages such as C are really fast, but less flexible and harder to use than Smalltalk. Our ...
Power and Energy Code Profiling in Pharo
Modeling energy consumption is a major concern when designing software systems such as a cloud service or for a mobile device (e.g., smartphone, laptop). Unfortunately, we have little knowledge on how decisions taken by a programmer may impact the ...
Pillar: A Versatile and Extensible Lightweight Markup Language
There is a plethora of languages to write documentation and documents. From extremely powerful and complex such as LATEX to extremely simple such as Markdown. In this technical article we present Pillar a versatile and extensible lightweight markup ...
Index Terms
- Proceedings of the 11th edition of the International Workshop on Smalltalk Technologies
Recommendations
Acceptance Rates
Year | Submitted | Accepted | Rate |
---|---|---|---|
IWST'16 | 27 | 25 | 93% |
Overall | 27 | 25 | 93% |