GSOC 2022 - LFortran - Implementing Generics Final report - Oshanath Rajawasam Mentors : Ondřej Čertík, Gagandeep Singh Overview This project was about implementing generics for LFortran. This project was implemented parallelly to the same project on LPython, so a lot of the same code is reused. The LPython counterpart was developed by Luthfan Lubis and it has progressed further than this project. Reason for the Project Functions and subroutines in Fortran have specific parameter types and return types associated with them. Since LFortran, at its core, is the same as Fortran, this is also the case for LFortran. This can be problematic when the application demands template-like structures. For example, when implementing a function to add 2 numbers, with current tools available, we would have to implement the same function for all data types it is intended to be used. But with templates, we can define the function once, and use it with any data type we w...
2022-07-01-progress report 3 This week I met with Ondrej Certik online because the project was too complex for me to start working on directly. He showed me how to fix the parser to parse template syntax and he himself fixed it and created a merge request ( https://gitlab.com/lfortran/lfortran/-/merge_requests/1803/ ) which is the long running generics branch. This week I will be working on the conversion between AST and ASR and try to generate the ASR from the template AST.
2022-07-29-progress report 7 I enhanced the ASR generation from last week. Now ASR have both "TemplatedFunctions" as well as "TemplatedSubroutines". The TypeParameters of Templates are now populated. Visiting Function in the symbol_table_visitor now results in either Functions, if there are no TypeParameters used, or TemplatedFunctions if one, some or all TypeParameters of the surrounding Template are used. The TypeParameters of TemplatedFunctions and TemplatedSubroutines are also populated with only the TypeParameters that those functions and subroutines use. I met with Ondrej and he created this pull request that is a combination of my first two PRs, which contain ASR generation. Then I rebased the 3rd PR on top of the one Ondrej created. Finally I started working on instantiation of templated. Particularly the parsing and AST generation of instantiation. I read through this document to get an idea of required syntax for templates. The actua...
Comments
Post a Comment