48 |
Illicium A modular transpilation toolchain from Pharo to C
|
|
|
|
In: IWST19 — International Workshop on Smalltalk Technologies ; https://hal.archives-ouvertes.fr/hal-02297860 ; IWST19 — International Workshop on Smalltalk Technologies, Aug 2019, Köln, Germany (2019)
|
|
Abstract:
International audience ; The Pharo programming language runs on the OpenSmalltalk-VM. This Virtual Machine (VM) is mainly written in Slang, a subset of the Smalltalk language dedicated to VM development. Slang is transpiled to C using the Slang-to-C transpiler. The generated C is then compiled to produce the VM exe-cutable binary code. Slang is a powerful dialect for generating C because it benefits from the tools of the Smalltalk environment, including a simulator that runs and debugs the VM. However, the Slang-to-C transpiler is often too permissive. For example, the Slang-to-C transpiler generates invalid C code from some Smalltalk concepts it does not support. This makes the Slang code hard to debug as the errors are caught very late during the development process, which is worsen by the loss of the mapping between the generated C code and Slang. The Slang-to-C transpiler is also hard to extend or adapt to modify part of the translation process. In this paper we present Illicium, a new modular transpila-tion toolchain based on a subset of Pharo targeting C through AST transformations. This toolchain translates the Pharo AST into a C AST to generate C code. Using ASTs as source and target artifacts enables analysis, modification and validation at different levels during the translation process. The main translator is split into smaller and replaceable translators to increase modularity. Illicium also allows the possibility to introduce new translators and to chain them together, increasing reusability. To evaluate our approach, we show with a use case how to extend the transpilation process with a translation that requires changes not considered in the original C AST.
|
|
Keyword:
[INFO.INFO-PL]Computer Science [cs]/Programming Languages [cs.PL]; [INFO]Computer Science [cs]; C language; Pharo; Tools; Transpilation
|
|
URL: https://hal.archives-ouvertes.fr/hal-02297860/file/final_submission.pdf https://hal.archives-ouvertes.fr/hal-02297860/document https://hal.archives-ouvertes.fr/hal-02297860
|
|
BASE
|
|
Hide details
|
|
49 |
Combinations of Reusable Abstract Domains for a Multilingual Static Analyzer
|
|
|
|
In: Verified Software. Theories, Tools, and Experiments ; VSTTE 2019 : 11th Working Conference on Verified Software: Theories, Tools, and Experiments ; https://hal.sorbonne-universite.fr/hal-02890500 ; VSTTE 2019 : 11th Working Conference on Verified Software: Theories, Tools, and Experiments, Jul 2019, New York, United States. pp.1-18, ⟨10.1007/978-3-030-41600-3_1⟩ ; https://sri-csl.github.io/VSTTE19/ (2019)
|
|
BASE
|
|
Show details
|
|
50 |
Creation and Analysis of the Yugoslav Rock Song Lyrics Corpus from 1967 to 2003 ; Креирање и анализа корпуса текстова jугословенских рок песама од 1967-2003.
|
|
|
|
In: ISSN: 1450-9687 ; EISSN: 2217-9461 ; INFOtheca : Journal of Information and Library Science ; https://hal.archives-ouvertes.fr/hal-03091121 ; INFOtheca : Journal of Information and Library Science, Serbian Academic Library Association, 2019, 19 (1), pp.5-29. ⟨10.18485/infotheca.2019.19.1.1⟩ (2019)
|
|
BASE
|
|
Show details
|
|
51 |
Challenges in Debugging Bootstraps of Reflective Kernels
|
|
|
|
In: IWST19 - International workshop on Smalltalk Technologies ; https://hal.archives-ouvertes.fr/hal-02297710 ; IWST19 - International workshop on Smalltalk Technologies, Aug 2019, Cologne, Germany (2019)
|
|
BASE
|
|
Show details
|
|
52 |
Towards easy program migration using language virtualization
|
|
|
|
In: IWST19 - International Workshop on Smalltalk Technologies ; https://hal.archives-ouvertes.fr/hal-02297756 ; IWST19 - International Workshop on Smalltalk Technologies, Aug 2019, Cologne, Germany (2019)
|
|
BASE
|
|
Show details
|
|
53 |
Computing with relations, functions, and bindings ; Calculer avec des relations, des fonctions et des lieurs
|
|
|
|
In: https://hal.archives-ouvertes.fr/tel-02414237 ; Logic in Computer Science [cs.LO]. Institut Polytechnique de Paris, 2019. English. ⟨NNT : 2019IPPAX005⟩ (2019)
|
|
BASE
|
|
Show details
|
|
54 |
Designing Language-Agnostic Code Transformation Engines ; Construction de moteurs de transformation de code automatique agnostiques du langage
|
|
|
|
In: https://tel.archives-ouvertes.fr/tel-03356307 ; Programming Languages [cs.PL]. Université de Lille, 2019. English (2019)
|
|
BASE
|
|
Show details
|
|
58 |
Frightening Small Children and Disconcerting Grown-ups ; Frightening Small Children and Disconcerting Grown-ups: Concurrency in the Linux Kernel
|
|
|
|
In: ASPLOS2018 - 23rd ACM International Conference on Architectural Support for Programming Languages and Operating Systems ; https://hal.inria.fr/hal-01873636 ; ASPLOS2018 - 23rd ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Mar 2018, Williamsburg, VA, United States. ⟨10.1145/3173162.3177156⟩ (2018)
|
|
BASE
|
|
Show details
|
|
59 |
Merlin: a language server for OCaml (experience report)
|
|
|
|
In: ISSN: 2475-1421 ; Proceedings of the ACM on Programming Languages ; https://hal.inria.fr/hal-01929161 ; Proceedings of the ACM on Programming Languages, ACM, 2018, 2 (ICFP), pp.1 - 15. ⟨10.1145/3236798⟩ (2018)
|
|
BASE
|
|
Show details
|
|
60 |
Declarative Transformations in the Polyhedral Model ; Transformations Déclaratives dans le Modèle Polyédrique
|
|
|
|
In: https://hal.inria.fr/hal-01965599 ; [Research Report] RR-9243, Inria; ENS Paris - Ecole Normale Supérieure de Paris; ETH Zurich; TU Delft; IBM Zürich. 2018 (2018)
|
|
BASE
|
|
Show details
|
|
|
|