McArdle, Brendan · ResearchSpace (University of Auckland) · 2018
The implementation of a statistical computing system is described, consisting of a language, an optimising compiler, a virtual machine, and its run-time environment. The language is dynamically typed with lexical scope, first-class functions, and optional type declarations. The compiler operates on a high-level intermediate representation in static single assignment form, and applies several optimisations from the literature. The virtual machine is a directly threaded interpreter with specialised arithmetic instructions for unboxed scalar values. The run-time support library supplies automatic memory management of vectors, arrays and closures.
Cited by 0
Kluka, Peter Milan · Brno University of Technology Digital Library (Brno University of Technology) · 2024
This graduation thesis is devoted to a detailed analysis of vulnerabilities in freely distributed open-source programs. The thesis includes a description of different types of vulnerabilities that are often associated with software attacks. Static and dynamic code testing are examined in detail, as well as the tools used to detect vulnerabilities in source code. The thesis includes the development of three lab exercises, including detailed tutorials that demonstrate the consequences of incorrect implementations. The lab tasks focus on buffer overflow, path/directory traversal, and buffer over-read vulnerabilities. Every lab task includes a demonstration of the flawed code that was responsible for the vulnerability, as well as demonstration of the patched code that was used to fix the vulnerability. These tasks provide practical examples that illustrate the risks associated with inappropriate software design and implementation and demonstrate the importance of effective security techniques in software development.
Cited by 0Open access
United States. Public Health Service. Division of Chronic Diseases. · The Journal of the Abraham Lincoln Association
Cited by 0Open access
Milan Lustig · SSRN Electronic Journal · 2024
Cited by 0Open access
Michael Ballantyne, Mitch Gamburg, Jason Hemann · Proceedings of the ACM on Programming Languages · 2024
Implementations of domain-specific languages should offer both extensibility and performance optimizations. With the new syntax-spec metalanguage in Racket, programmers can easily create DSL implementations that are both automatically macro-extensible and subject to conventional compiler optimizations. This pearl illustrates this approach through a new implementation of miniKanren, a widely used relational programming DSL. The miniKanren community has explored, in separate implementations, optimization techniques and a wide range of extensions. We demonstrate how our new miniKanren implementation with syntax-spec reconciles these features in a single implementation that comes with both an optimizing compiler and an extension mechanism. Furthermore, programmers using the new implementation benefit from the same seamless integration between Racket and miniKanren as in existing shallow embeddings.
Cited by 3Open access
Cristiano Calcagno, Queen Mary London, Walid Taha et al. · 2001
Inspired by the successes of program generation, partial evaluation, and runtime code generation, multi-stage languages were developed as a uniform, high-level, and principled view of staging. Our current goal is to demonstrate the utility of these languages in a practical implementation. As a rst step this paper presents MetaOCaml, a type-safe, multi-stage language, built as an extension to OCaml's bytecode compiler. Future-stage computations are represented as source programs. This makes it possible to ensure typesafety, produce better dynamically compiled code, and apply crucial runtime source-to-source transformations such as tag elimination. We have used MetaOCaml to measure performance for a set of small staged programs. The gains are consistent with those of partial evaluation and runtime code generation, and support the claim that multi-stage languages are well-suited for building staged interpreters, even when the runtime compilation times are taken into account.
Cited by 0
Paul van der Walt, Charles Consel, Émilie Balland · Software Practice and Experience · 2016
Summary Programming frameworks are an accepted fixture in the object‐oriented world, motivated by the need for code reuse, developer guidance and restriction. A new trend is emerging where frameworks require domain experts to provide declarations using a domain‐specific language, influencing the structure and behaviour of the resulting application. These mechanisms address concerns such as user privacy. Although many popular open platforms such as Android are based on declaration‐driven frameworks, current implementations provide ad hoc and narrow solutions to concerns raised by their openness to non‐certified developers. Most widely used frameworks fail to address serious privacy leaks and provide the user with little insight into application behaviour. To address these shortcomings, we show that declaration‐driven frameworks can limit privacy leaks, as well as guide developers, independently from the underlying programming paradigm. To do so, we identify concepts that underlie declaration‐driven frameworks and apply them systematically to an object‐oriented language, Java and a dynamic functional language, Racket. The resulting programming framework generators are used to develop a prototype mobile application, illustrating how we mitigate a common class of privacy leaks. Finally, we explore the possible design choices and propose development principles for developing domain‐specific language compilers to produce frameworks, applicable across a spectrum of programming paradigms. Copyright © 2016 John Wiley & Sons, Ltd.
Cited by 3
Cristiano Calcagno, et al. · 2002
Cited by 0
G. Andrés Cisneros · 1991
String-processing languages have typically been implemented as interpreters, macro generators or program generators. Convert, a language whose main appeal is the ease with which string transformations may be expressed as sets of pattern-matching and substitution rules, was developed initially as an interpreter under a symbol manipulation version of REC. This paper describes the implementation of a machine-code compiler of Convert for the Motorola MC680x0 family of microprocessors. The execution speed of programs produced with this compiler compares favorably with that of equivalent programs written in other string-processing languages.
Cited by 0
Fortress Press eBooks · 2023
Cited by 0
Stéphane Letz, Yann Orlarey, Dominique Fober · 2018
\beginabstract This paper demonstrates how FAUST, a functional programming language for sound synthesis and audio processing, can be used to develop efficient audio code for the Web. After a brief overview of the language, its compiler and the architecture system allowing to deploy the same program as a variety of targets, the generation of WebAssembly code and the deployment of specialized WebAudio nodes will be explained. Several use cases will be presented. Extensive benchmarks to compare the performance of native and WebAssembly versions of the same set of DSP have be done and will be commented. \endabstract
Cited by 8Open access
Tilman Schäfer · 2002
Cited by 4
Sch?fer, Tilman · Trinity's Access to Research Output (TARA) (Trinity College Dublin) · 2002
Software engineering in a distributed, heterogeneous environment is faced with a number of challenges. With distribution comes the need for synchronisation, transactions, and fault-tolerance while support for different operating systems also has to be taken into account. The distributed and dynamic nature of applications in such an environment also imposes special requirements in terms of adaptability : components being added to or removed from the system may require applications to adapt themselves to the changed environment. Development should moreover not be restricted to one particular programming language.
Cited by 0Open access
CLEMENTE, GIORGIO, CONGIU, SERGIO, MORO, MICHELE · Research Padua Archive (University of Padua) · 1983
PASCAL precompiler for high level concurrent programming of MODIAC based Systems. The paper describes the PPL programming environment and the language elements.
Cited by 0
Jason Aaron Yang, Syaeful Anas Aklani · Computer Based Information System Journal · 2023
Web frameworks are essential for web developers, allowing them to build web applications more efficiently and effectively. This research paper compared two web frameworks with different programming language implementations: interpreted programming language and compiled programming language. PHP/Laravel was chosen as the representative interpreted programming language, and Go/Gin was chosen as the representative compiled programming language, because they were the most popular based on their star counts on GitHub. Based on a research paper by the University of Minho, Go was nearly 10 times faster than PHP in terms of execution time. Despite this, PHP is still the most commonly used web technology among the top 1 million websites. The results of a series of tests comparing the two showed that Gin was over 86 times faster than Laravel in terms of requests per second and time per request. The choice of which web framework to use will depend on the specific needs and goals of the project. However, if performance is the only criterion, then Gin is a better choice than Laravel.
Cited by 0Open access
Mason, Henry J. Monck · 1839
Cited by 0
Georgii Ekserdzhian · Digital Repository (National Repository of Grey Literature) · 2021
In this thesis, I discuss my implementation of a memory-safe language called G and its performance. I compare it to other popular object-oriented languages like C# and C++. I try to prove that memory safety features have only a small effect on the performance of most programs. 1
Cited by 0
Mason, Henry Joseph Monck, 1778-1858. · The Journal of the Abraham Lincoln Association
Cited by 0Open access
Stefan Pees, Andreas Hoffmann, H. Meyr · ACM Transactions on Design Automation of Electronic Systems · 2000
Fast processor simulators are needed for the software development of embedded processors, for HW/SW cosimulation systems, and for profiling and design of application-specific processors. Such fast simulators can be generated based on the machine description language LISA. Using this language to model processor architectures enables the generation of compiled simulators on various abstraction levels, assemblers, and compiler back ends. The article discusses the requirements of software development tools on processor models and presents the approach based on the LISA language. Furthermore, the implementation of a retargetable environment consisting of compiled simulator, debugger, and assembler is presented. Measurements for a verified, cycle-based LISA model of the TI TMS320C62× DSP show that that this approach achieves between 37× and 170× higher simulation speed compared to a commercial simulator using a standard technique and the same accuracy level.
Cited by 42Open access
Korea. Sōtokufu. · The Journal of the Abraham Lincoln Association
Cited by 0Open access