This week was a little step forward to our goal — FPM compiled 90% with LFortran. With persistent effort, workarounds, and small upstream fixes, most core modules are now compiling successfully. Only a few components remain, blocked by tricky frontend bugs which I will be fixing.
I continued to use the same process: isolating issues, producing MREs, and submitting bug reports or fixes. Several more test cases were extracted and contributed as issues. This helped maintain clarity about blockers, while I started fixing older issues as well.
Work done this week:
-
Compiled most of FPM to ASR:
- FPM is now 90% compiled using LFortran.
- Worked around operator overloading and external enum symbol issues to enable more modules to compile.
- Once this frontend issues get fixed I will have to fix LLVM backend Issues.
-
Important MREs created this week:
- Issue 7929: Handle class procedure operator overloading where operator definition is in parent type
- Issue 7882: Handle keyword arguments in type bound functions
- Issue 7962: enum which is indirectly imported from module present in other file is not found in serialization
-
Important Fixes and Pull Requests:
- PR #7914: Don't expose private functions of module and handle scope of private. Previously LFortran was also importing private members from module which was causing conflicts in name of function.
- PR #7930: Get correct operator overloading function for extended types. Previously LFortran was not resolving operator overloaded function which was defined in base class. So I resolved it by searching in every parent type.
- PR #7942: Consider external procedures and type bound procedures both for checking op overloading. Previously LFortran was not searching for operator overloading function in type symbol if there is any external interface declared for that operator. I resolved it by inspecting all operator overloading options available and then decide using its signature.
Overall, around 20 hours were spent this week toward debugging and compiling FPM. With 90% compilation achieved, the remaining issues are clearer and fewer.
Special thanks to Ondřej Čertík and Pranav Goswami for their continuous help with reviews, clarifications, and guidance. Thanks to LFortran team members for helping when needed.
Plan for next week:
- Complete full FPM compilation with LFortran using workarounds where needed.
- Fix or document final blocking issues with new MREs.