journal article·2023-03-13Open access

Transpilers: A Systematic Mapping Review of Their Usage in Research and Industry

Andrés Bastidas Fuertes, María Pérez, Jaime Meza Hormaza

Applied Sciences· Volume 13· Issue 6

Abstract

Transpilers refer to a special type of compilation that takes source code and translates it into target source code. This type of technique has been used for different types of implementations in scientific studies. A review of the research areas related to the use of transpilers allows the understanding of the direction in this branch of knowledge. The objective was to carry out an exhaustive and extended mapping of the usage and implementation of transpilers in research studies in the last 10 years. A systematic mapping review was carried out for answering the 5 research questions proposed. The PSALSAR method is used as a guide to the steps needed for the review. In total, from 1181 articles collected, 683 primary studies were selected, reviewed, and analyzed. Proposals from the industry were also analyzed. A new method for automatic data tabulation has been proposed for the mapping objective, using a relational database and SQL language. It was identified that the most common uses of transpilers are related to performance optimizations, parallel programming, embedded systems, compilers, testing, AI, graphics, and software development. In conclusion, it was possible to determine the extent and identification of research sub-areas and their impact on the usage of the transpilers. Future research could be considered about the usage of transpilers in transactional software, migration strategies for legacy systems, AI, math, multiplatform games and apps, automatic source code generation, and networking.
Source: crossref · Quality: baseline

Research context

OpenAlex topics: Advanced Malware Detection Techniques · Software Engineering Research · Cloud Computing and Resource Management

SciVX discovery tags are terminology-based. OpenAlex topics are source-provided classifications.

Affiliations

Facultad de Ingeniería en Sistemas, Escuela Politécnica Nacional, Quito 170525, Ecuador

Facultad de Ciencias Informáticas, Universidad Técnica de Manabí, Portoviejo 130105, Ecuador

Funding

Smartwork S.A. company

References (100+)

Show source-provided references
1. Hirzel, M., and Klaeren, H. (2016, January 21). Code Coverage for Any Kind of Test in Any Kind of Transcompiled Cross-platform Applications. Proceedings of the 2nd International Workshop on User Interface Test Automation, Saarbrucken, Germany.10.1145/2945404.2945405 ↗
2. Chaber, P., and Lawrynczuk, M. (2016, January 7–9). Effectiveness of PID and DMC control algorithms automatic code generation for microcontrollers: Application to a thermal process. Proceedings of the 2016 3rd Conference on Control and Fault-Tolerant Systems (SysTol), Barcelona, Spain.10.1109/SYSTOL.2016.7739817 ↗
3. Intel (2023, January 05). MCS-86 Assembly Language Converter Operating Instructions for ISIS-II Users. Technical Report. Available online: http://www.bitsavers.org/pdf/intel/ISIS_II/9800642A_MCS-86_Assembly_Language_Converter_Operating_Instructions_for_ISIS-II_Users_Mar79.pdf.
4. Research, D. (2023, January 05). XLT86 8080 to 8086 Assembly Language Translator, User’s Guide. Technical Report. Available online: http://www.s100computers.com/Software%20Folder/Assembler%20Collection/Digital%20Research%20XLT86%20Manual.pdf.
5. Baxter, I., Pidgeon, C., and Mehlich, M. (2004, January 28). DMS/spl reg/: Program transformations for practical scalable software evolution. Proceedings of the 26th International Conference on Software Engineering, Edinburgh, UK.
6. Marcelino, M., and Leitão, A.M. (2022, January 21–22). Transpiling Python to Julia using PyJL. Proceedings of the The 15th European Lisp Symposium (ELS’22), Porto, Portugal.
7. Ling, M., Yu, Y., Wu, H., Wang, Y., Cordy, J.R., and Hassan, A.E. (2022, January 22–27). In Rust We Trust—A Transpiler from Unsafe C to Safer Rust. Proceedings of the 44th ACM/IEEE International Conference on Software Engineering: Companion, ICSE-Companion 2022, Pittsburgh, PA, USA.10.1109/ICSE-Companion55297.2022.9793767 ↗
8. Leopoldseder, D., Stadler, L., Wimmer, C., and Mössenböck, H. (2015, January 27). Java-to-JavaScript Translation via Structured Control Flow Reconstruction of Compiler IR. Proceedings of the 11th Symposium on Dynamic Languages, Pittsburgh, PA, USA.10.1145/2816707.2816715 ↗
9. Automatic scoping of task clauses for the OpenMP tasking model10.1007/s11227-014-1326-3 ↗
10. Code refactoring techniques for reducing energy consumption in embedded computing environment10.1007/s10586-016-0691-5 ↗
11. Jones, R. Understanding TypeScript. Proceedings of the ECOOP 2014—Object-Oriented Programming.10.1007/978-3-662-44202-9 ↗
12. A typology of reviews: An analysis of 14 review types and associated methodologies10.1111/j.1471-1842.2009.00848.x ↗
13. A Survey of Performance Tuning Techniques and Tools for Parallel Applications10.1109/ACCESS.2022.3147846 ↗
14. Evolution of Artificial Intelligence Programming Languages—A Systematic Literature Review10.3844/jcssp.2021.1157.1171 ↗
15. Systematic mapping study of architectural trends in Latin America
16. Bastidas, A.F., and Pérez, M. (2017, January 16–20). Transpiler-based architecture for multi-platform web applications. Proceedings of the 2017 IEEE Second Ecuador Technical Chapters Meeting (ETCM), Salinas, Ecuador.
17. Bastidas, F.A., and Perez, M. (2018). Proceedings of the 3rd IEEE Ecuador Technical Chapters Meeting, Cuenca, Ecuador, 15–19 October 2018, Institute of Electrical and Electronics Engineers Inc.
18. Jagode, H., Anzt, H., Ltaief, H., and Luszczek, P. Negative Perceptions About the Applicability of Source-to-Source Compilers in HPC: A Literature Review. Proceedings of the High Performance Computing.
19. Using meta-heuristics and machine learning for software optimization of parallel computing systems: A systematic literature review10.1007/s00607-018-0614-9 ↗
20. Son, L., Pritam, N., Khari, M., Kumar, R., Phuong, P., and Thong, P. (2019). Empirical Study of Software Defect Prediction: A Systematic Mapping. Symmetry, 11.10.3390/sym11020212 ↗
21. An extensive evaluation of search-based software testing: A review10.1007/s00500-017-2906-y ↗
22. Proliferation of Opportunistic Routing: A Systematic Review10.1109/ACCESS.2021.3136927 ↗
23. Sugandh, U., Khari, M., and Nigam, S. (2022). Handbook of Green Computing and Blockchain Technologies, CRC Press.
24. Method for conducting systematic literature review and meta-analysis for environmental science research10.1016/j.mex.2019.100777 ↗
25. Petticrew, M., and Roberts, H. (2008). Systematic Reviews in the Social Sciences: A Practical Guide, John Wiley & Sons.
26. Which Academic Search Systems are Suitable for Systematic Reviews or Meta-Analyses? Evaluating Retrieval Qualities of Google Scholar, PubMed and 26 other Resources [OPEN ACCESS]10.1002/jrsm.1378 ↗
27. Wei, X., Yu, C.H., Zhang, P., Chen, Y., Wang, Y., Hu, H., Liang, Y., and Cong, J. (2017, January 18–22). Automated Systolic Array Architecture Synthesis for High Throughput CNN Inference on FPGAs. Proceedings of the 54th Annual Design Automation Conference 2017, Austin, TX, USA.10.1145/3061639.3062207 ↗
28. Polyhedral parallel code generation for CUDA10.1145/2400682.2400713 ↗
29. Consumer perceptions of information helpfulness and determinants of purchase intention in online consumer reviews of services10.1016/j.im.2018.04.010 ↗
30. Bouajjani, A., Derevenetc, E., and Meyer, R. (2013). Programming Languages and Systems, Springer.
31. Vitousek, M.M., Kent, A.M., Siek, J.G., and Baker, J. (2014, January 20–24). Design and evaluation of gradual typing for python. Proceedings of the 10th ACM Symposium on Dynamic languages–DLS’14, Portland, ON, USA.10.1145/2661088.2661101 ↗
32. Winterstein, F., Bayliss, S., and Constantinides, G.A. (2013, January 9–11). High-level synthesis of dynamic data structures: A case study using Vivado HLS. Proceedings of the 2013 International Conference on Field-Programmable Technology (FPT), Kyoto, Japan.10.1109/FPT.2013.6718388 ↗
33. HIPAcc: A Domain-Specific Language and Compiler for Image Processing10.1109/TPDS.2015.2394802 ↗
34. Smells in software test code: A survey of knowledge in industry and academia10.1016/j.jss.2017.12.013 ↗
35. Robust optimization to secure urban bulk water supply against extreme drought and uncertain climate change10.1016/j.envsoft.2015.02.021 ↗
36. Magni, A., Dubach, C., and O’Boyle, M.F.P. (2013, January 17–21). A large-scale cross-architecture evaluation of thread-coarsening. Proceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis, Denver CO, USA.10.1145/2503210.2503268 ↗
37. Chen, G., Wu, B., Li, D., and Shen, X. (2014, January 13–17). PORPLE: An Extensible Optimizer for Portable Data Placement on GPU. Proceedings of the 2014 47th Annual IEEE/ACM International Symposium on Microarchitecture, Cambridge, UK.10.1109/MICRO.2014.20 ↗
38. Kofler, K., Grasso, I., Cosenza, B., and Fahringer, T. (2013, January 10–14). An automatic input-sensitive approach for heterogeneous task partitioning. Proceedings of the 27th International ACM Conference on International Conference on Supercomputing, Eugene, ON, USA.10.1145/2464996.2465007 ↗
39. Weighted Superposition Attraction (WSA): A swarm intelligence algorithm for optimization problems – Part 1: Unconstrained optimization10.1016/j.asoc.2015.10.036 ↗
40. Towards a Compiler for Reals10.1145/3014426 ↗
41. Opening the Duke electronic health record to apps: Implementing SMART on FHIR10.1016/j.ijmedinf.2016.12.005 ↗
42. Performance-driven instrumentation and mapping strategies using the LARA aspect-oriented programming approach10.1002/spe.2301 ↗
43. The Cetus Source-to-Source Compiler Infrastructure: Overview and Evaluation10.1007/s10766-012-0211-z ↗
44. Clava: C/C++ source-to-source compilation using LARA10.1016/j.softx.2020.100565 ↗
45. Cross-Compiling Android Applications to iOS and Windows Phone 710.1007/s11036-012-0374-2 ↗
46. Palkowski, M., and Bielecki, W. (2017). Information Systems Architecture and Technology: Proceedings of 38th International Conference on Information Systems Architecture and Technology—ISAT 2017, Springer International Publishing.
47. Palkowski, M., and Bielecki, W. (2015). Advances in Intelligent Systems and Computing, Springer International Publishing.
48. Pinto, P., Carvalho, T., Bispo, J., and Cardoso, J.M.P. (2017, January 3–7). LARA as a language-independent aspect-oriented programming approach. Proceedings of the Symposium on Applied Computing, Marrakech, Morocco.10.1145/3019612.3019749 ↗
49. Polyhedral Bubble Insertion: A Method to Improve Nested Loop Pipelining for High-Level Synthesis10.1109/TCAD.2012.2228270 ↗
50. Source-to-Source Parallelization Compilers for Scientific Shared-Memory Multi-core and Accelerated Multiprocessing: Analysis, Pitfalls, Enhancement and Potential10.1007/s10766-019-00640-3 ↗
51. Balogh, G., Mudalige, G., Reguly, I., Antao, S., and Bertolli, C. (2018, January 12). OP2-Clang: A Source-to-Source Translator Using Clang/LLVM LibTooling. Proceedings of the 2018 IEEE/ACM 5th Workshop on the LLVM Compiler Infrastructure in HPC (LLVM-HPC), Dallas, TX, USA.10.1109/LLVM-HPC.2018.8639205 ↗
52. Belwal, M., and Sudarshan, T.S.B. (2017, January 5–6). Source-to-source translation: Impact on the performance of high level synthesis. Proceedings of the 2017 International Conference on Computing, Communication and Automation (ICCCA), Greater Noida, India.10.1109/CCAA.2017.8229944 ↗
53. Wang, Z., Plyakhin, Y., Sun, C., Zhang, Z., Jiang, Z., Huang, A., and Wang, H. (2022, January 10–12). A source-to-source CUDA to SYCL code migration tool: Intel® DPC++ Compatibility Tool. Proceedings of the International Workshop on OpenCL, Kingdom, UK.10.1145/3529538.3529562 ↗
54. Paper: Togpu: Automatic Source Transformation from C++ to CUDA using Clang/LLVM10.2352/ISSN.2470-1173.2016.1.VDA-487 ↗
55. Kalms, L., Hebbeler, T., and Göhringer, D. (2018, January 23). Automatic OpenCL Code Generation from LLVM-IR using Polyhedral Optimization. Proceedings of the Proceedings of the 9th Workshop and 7th Workshop on Parallel Programming and RunTime Management Techniques for Manycore Architectures and Design Tools and Architectures for Multicore Embedded Computing Platforms—PARMA-DITAM’18, Manchester, UK.10.1145/3183767.3183779 ↗
56. Slany, W. (2014, January 20–24). Pocket code. Proceedings of the Companion Publication of the 2014 ACM SIGPLAN Conference on Systems, Programming, and Applications: Software for Humanity—SPLASH’14, Portland, ON, USA.10.1145/2660252.2664662 ↗
57. Modernizing the NEURON Simulator for Sustainability, Portability, and Performance10.3389/fninf.2022.884046 ↗
58. Static code transformations for thread-dense memory accesses in GPU computing10.1002/cpe.5512 ↗
59. Qiao, B., Reiche, O., Hannig, F., and Teich, J. (2018, January 28–30). Automatic Kernel Fusion for Image Processing DSLs. Proceedings of the 21st International Workshop on Software and Compilers for Embedded Systems, Sankt Goar, Germany.10.1145/3207719.3207723 ↗
60. Ivanenko, P.A., Doroshenko, A.Y., and Zhereb, K.A. (2014). Information and Communication Technologies in Education, Research, and Industrial Applications, Springer International Publishing.
61. On the Impact of Affine Loop Transformations in Qubit Allocation10.1145/3465409 ↗
62. Rivera, J., Franchetti, F., and Puschel, M. (March, January 27). An Interval Compiler for Sound Floating-Point Computations. Proceedings of the 2021 IEEE/ACM International Symposium on Code Generation and Optimization (CGO), Seoul, Republic of Korea.10.1109/CGO51591.2021.9370307 ↗
63. Christmann, D., Braun, T., and Gotzhein, R. (2013). Lecture Notes in Computer Science, Springer.
64. Rocha, R.C.O., Góes, L.F.W., and Pereira, F.M.Q. (2016). Programming Languages, Springer International Publishing.
65. Duenha, L., Guedes, M., Almeida, H., Boy, M., and Azevedo, R. (2014, January 14–17). MPSoCBench: A toolset for MPSoC system level evaluation. Proceedings of the 2014 International Conference on Embedded Computer Systems: Architectures, Modeling, and Simulation (SAMOS XIV), Agios Konstantinos, Greece.10.1109/SAMOS.2014.6893208 ↗
66. Supporting Unified Shader Specialization by Co-opting C++ Features10.1145/3543866 ↗
67. Majeti, D., and Sarkar, V. (2015, January 25–29). Heterogeneous Habanero-C (H2C): A Portable Programming Model for Heterogeneous Processors. Proceedings of the 2015 IEEE International Parallel and Distributed Processing Symposium Workshop, Hyderabad, India.10.1109/IPDPSW.2015.81 ↗
68. Nunnari, F., and Heloir, A. (2018). Lecture Notes in Computer Science, Springer International Publishing.
69. Ramos, P.P., and Leitão, A.M. (2014, January 14–17). Reaching Python from Racket. Proceedings of the ILC 2014 on 8th International Lisp Conference, Montreal, QC, Canada.10.1145/2635648.2635660 ↗
70. Schneider, L., and Schultes, D. (2022, January 17–24). Evaluating swift-to-kotlin and kotlin-to-swift transpilers. Proceedings of the 9th IEEE/ACM International Conference on Mobile Software Engineering and Systems. ACM, Pittsburgh, PA, USA.10.1145/3524613.3527811 ↗
71. Zaytsev, Y.V., and Morrison, A. (2014). CyNEST: A maintainable Cython-based interface for the NEST simulator. Front. Neuroinformatics, 8.10.3389/fninf.2014.00023 ↗
72. Pointer life cycle types for lock-free data structures with memory reclamation10.1145/3371136 ↗
73. Bispo, J., Reis, L., and Cardoso, J.M.P. (2015, January 13–17). C and OpenCL generation from MATLAB. Proceedings of the 30th Annual ACM Symposium on Applied Computing, Salamanca, Spain.10.1145/2695664.2695911 ↗
74. TrABin: Trustworthy analyses of binaries10.1016/j.scico.2019.01.001 ↗
75. Polyhedral-Based Compilation Framework for In-Memory Neural Network Accelerators
76. Che, S., Meng, J., and Skadron, K. (2014, January 19–23). Dymaxion++: A Directive-Based API to Optimize Data Layout and Memory Mapping for Heterogeneous Systems. Proceedings of the 2014 IEEE International Parallel Distributed Processing Symposium Workshops, Phoenix, AZ, USA.10.1109/IPDPSW.2014.104 ↗
77. A scheduler for SCADA-based multi-source fusion systems10.1016/j.inffus.2020.05.007 ↗
78. Optimal Qubit Assignment and Routing via Integer Programming10.1145/3544563 ↗
79. Arabnejad, H., Bispo, J., Barbosa, J.G., and Cardoso, J.M. (2018, January 11–13). An OpenMP Based Parallelization Compiler for C Applications. Proceedings of the 2018 IEEE Intl Conf on Parallel & Distributed Processing with Applications, Ubiquitous Computing & Communications, Big Data & Cloud Computing, Social Computing & Networking, Sustainable Computing & Communications (ISPA/IUCC/BDCloud/SocialCom/SustainCom) (ISPA/IUCC/BDCloud/SocialCom/SustainCom), Melbourne, VIC, Australia.10.1109/BDCloud.2018.00135 ↗
80. Klein, T., Bruckner, S., Gröller, M.E., Hadwiger, M., and Rautek, P. (2016, January 19–21). Towards Interactive Visual Exploration of Parallel Programs using a Domain-Specific Language. Proceedings of the 4th International Workshop on OpenCL, Vienna, Austria.10.1145/2909437.2909459 ↗
81. Wahib, M., and Maruyama, N. (2015, January 15–19). Automated GPU Kernel Transformations in Large-Scale Production Stencil Applications. Proceedings of the 24th International Symposium on High-Performance Parallel and Distributed Computing, Portland, ON, USA.10.1145/2749246.2749255 ↗
82. Shirako, J., Hayashi, A., Paul, S.R., Tumanov, A., and Sarkar, V. (2022). Euro-Par 2022: Parallel Processing, Springer International Publishing.
83. Khandan, H. (2014, January 23–25). Introducing A-Cell for Scalable and Portable SIMD Programming. Proceedings of the 2014 IEEE 8th International Symposium on Embedded Multicore/Manycore SoCs, Aizu-Wakamatsu, Japan.10.1109/MCSoC.2014.51 ↗
84. Chaber, P., and Ławryńczuk, M. (2017). Advances in Intelligent Systems and Computing, Springer International Publishing.
85. Xu, S., and Gregg, D. (2015, January 20–22). Exploiting Hyper-Loop Parallelism in Vectorization to Improve Memory Performance on CUDA GPGPU. Proceedings of the 2015 IEEE Trustcom/BigDataSE/ISPA, Helsinki, Finland.10.1109/Trustcom.2015.612 ↗
86. Ahmed, W., Khan, M., Khan, A.A., Mehmood, R., Algarni, A., Albeshri, A., and Katib, I. (2018). Lecture Notes of the Institute for Computer Sciences, Social Informatics and Telecommunications Engineering, Springer International Publishing.
87. Khan, M., Priyanka, N., Ahmed, W., Radhika, N., Pavithra, M., and Parimala, K. (2014, January 11–13). Understanding source-to-source transformations for frequent porting of applications on changing cloud architectures. Proceedings of the 2014 International Conference on Parallel, Distributed and Grid Computing, Solan, India.10.1109/PDGC.2014.7030769 ↗
88. Hoshino, T., Maruyama, N., and Matsuoka, S. (2016, January 12–14). A Directive-Based Data Layout Abstraction for Performance Portability of OpenACC Applications. Proceedings of the 2016 IEEE 18th International Conference on High Performance Computing and Communications & IEEE 14th International Conference on Smart City & IEEE 2nd International Conference on Data Science and Systems (HPCC/SmartCity/DSS), Sydney, NSW, Australia.10.1109/HPCC-SmartCity-DSS.2016.0161 ↗
89. Flynn, P., Yi, X., and Yan, Y. (2022, January 2–6). Exploring source-to-source compiler transformation of OpenMP SIMD constructs for Intel AVX and Arm SVE vector architectures. Proceedings of the Thirteenth International Workshop on Programming Models and Applications for Multicores and Manycores, Seoul, Republic of Korea.10.1145/3528425.3529100 ↗
90. Towards a simple and safe Objective Caml compiling framework for the synchronous language SIGNAL10.1007/s11704-017-6485-y ↗
91. Ferry, C., Yuki, T., Derrien, S., and Rajopadhye, S. (2022). Increasing FPGA Accelerators Memory Bandwidth with a Burst-Friendly Memory Layout. IEEE Trans. Comput.-Aided Des. Integr. Circuits Syst., 1.10.1109/TCAD.2022.3201494 ↗
92. Automatic translation of assembly shellcodes to printable byte codes10.1556/606.2018.13.1.1 ↗
93. Sathre, P., Helal, A.E., and Feng, W.-C. (2018, January 3–5). A Composable Workflow for Productive Heterogeneous Computing on FPGAs via Whole-Program Analysis and Transformation. Proceedings of the 2018 International Conference on ReConFigurable Computing and FPGAs (ReConFig), Cancun, Mexico.10.1109/RECONFIG.2018.8641694 ↗
94. Verified tensor-program optimization via high-level scheduling rewrites10.1145/3527332 ↗
95. Kokkinis, A., Ferikoglou, A., Danopoulos, D., Masouros, D., and Siozios, K. (2021). Lecture Notes in Computer Science, Springer International Publishing.
96. GSWO: A programming model for GPU-enabled parallelization of sliding window operations in image processing10.1016/j.image.2016.05.003 ↗
97. Saied, M., Gustedt, J., and Muller, G. (2016, January 19–22). Automatic Code Generation for Iterative Multi-dimensional Stencil Computations. Proceedings of the 2016 IEEE 23rd International Conference on High Performance Computing (HiPC), Hyderabad, India.10.1109/HiPC.2016.040 ↗
98. Bodei, C., Degano, P., Focardi, R., Galletta, L., and Tempesta, M. (2018). Lecture Notes in Computer Science, Springer International Publishing.
99. Gent, K., and Hsiao, M.S. (2013, January 18–21). Functional Test Generation at the RTL Using Swarm Intelligence and Bounded Model Checking. Proceedings of the 2013 22nd Asian Test Symposium, Yilan, Taiwan.10.1109/ATS.2013.51 ↗
100. Knodtel, J., Schwabe, W., Lieske, T., Reichenbach, M., and Fey, D. (2018, January 2–4). A Novel Methodology for Evaluating the Energy Consumption of IP Blocks in System-Level Designs. Proceedings of the 2018 28th International Symposium on Power and Timing Modeling, Optimization and Simulation (PATMOS), Platja d’Aro, Spain.10.1109/PATMOS.2018.8464149 ↗