Repository navigation
TODO for beta #3806
Copy link
Copy link
Open
Labels
tracking issuetracking issuetracking issue
Description
In order to reach beta quality, we need to implement the following items:
- compile at least 10 codes without any workaround (except the items listed in "after beta" below):
- legacy minpack
- 60% of SciPy (common blocks and other old features are needed for the rest, we'll tackle after beta)
- modern minpack
- fastGPT
- dftatom
- stdlib with small workarounds (due to the issues above)
- lapack Compile Lapack #1232
- SNAP compiling SNAP #3951 @kmr-srbh, @assem2002
- prima Compiling PRIMA #4397
- fpm: Compiling fpm #6840
- Other codes to choose from:
Code to be Compiled
Projects to be compiled using LFortran compiler - Progress : Refactor string and string array (LLVM backend) #6892 @assem2002
- Strings TODO #8129
- Linking failure of main program, subroutine, and module combination with implicit-typing and implicit-interface #6512 (global procedures) @Pranavchiku
- robust deallocation (ASR: idea: add explicit nodes to free non-primitive types #3770)
- most OOP features
- Idea: generate ASR.asdl, asr_verify.cpp and doc/src/asr/ from the same source #7006
- Change array descriptor to be inlined #7316
- ASR: Add "deterministic" and "side-effect-free" flags to Function lcompilers/lpython#1266
- Use ClassToStruct cast consistently #9950
- Make any warning configurable #10605
- Add a Debug time check for Vec indexing #7833
- Bounds Checking #8306
- LLVM: get rid of all calls to CreateGEP, replace with CreateGEP2; Replace CreateLoad->CreateLoad2 #7836
- Submodules cleanup : Calling type-bound procedure declared via module and implemented in submodule is causing
code generation error#7270 - Refactor all compiler options #7937
- Note about intent(out) arguments, enforce in verify #8005
- Implement opaque pointers for LLVM 17 #4210
- All instrinsic functions working (compile time, runtime): @HarshitaKalani, @parth121101
- Realloc LHS TODO #7069
-
--fastworking in all cases: - Enable LLVM optimizations for
--fastwith LLVM >= 17 #6480 - Enabling the simplifier pass by default: @czgdp1807
- Design for array expressions #5201
- Ensure no expression ballooning happens
- Ensure no runtime performance degradation for 3rd party codes
- Stacktraces on Ubuntu take a long time #4236
- robust compile time computation (An example for compile time evaluation #3203): @Pranavchiku, @nikabot
- Change the ASR representation of ArrayConstant #3581: @Pranavchiku
- Compiling to WASM via LLVM (few demos, easy to use): @Shaikh-Ubaid
- Test the emscripten-based LLVM backend at the CI (use nodejs to ensure passing data/arrays from JavaScript to Fortran/WASM works) LLVM_WASM: Test emscripten generated
wasmin integration_tests #3954 - separate compilation (generate intermediate object files, link everything at the end), add robust first class support for
.ofiles for all backends: LLVM, WASM, WASM/x64, etc., in all cases (all ASR); to allow good interoperability with other toolchains (so that the user can link this into libraries or codes together with other code) Separate compilation TODO #7163 separate compilationIssues or PRs related to separate compilation @Pranavchiku - Add checks for dangling pointers in Debug mode
After we reach beta, we will tackle the following:
- Performance (LLVM already gives us a very good starting point, but to eventually achieve maximum performance that the hardware allows, we need to implement our own optimization ASR->ASR passes for vectorization, inlining, partitioning, etc. and adjust our LLVM backend and its passes)
- Everything working in interactive mode and Jupyter notebook (@Vipul-Cariappa)
- coarrays
- parallel loops:
- OpenMP: OpenMP support in AST and ASR #3777: @Pranavchiku
- GPU offloading to NVIDIA (NVIDIA GPU support #4497), AMD (Offload do concurrent to AMD GPUs #4535) and other GPUs
- Using NPUs and other custom hardware from many vendors
- submodules
- full generics support (interface based)
- quadruple precision: Quadruple (and higher) precision design #3468
- good support for lists, dicts and other LPython data structures which we'll support as Fortran extensions (@advikkabra)
- good error messages for all invalid code
- Debug time checks (bounds checks, pointer checks, integer overflow, etc.):
- Runtime errors improvements #7838
- Fix
ptr_loads: ASR idea: explicit pointer vs value #4245 - other features to consider: Potential features #165
- common block and other F77 features that should not be used in new codes (but we have to support to compile old codes)
- Compilation performance:
- Other backends:
- WASM
- C/C++
- NVPTX LLVM backend NVIDIA GPU support #4497
- SIMD backend #2293
- Add MLIR backend #4319
Also discussed at https://lfortran.zulipchat.com/#narrow/stream/197339-general/topic/TODO.20for.20Beta.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
tracking issuetracking issuetracking issue
Activity
thoth291 commentedon Sep 25, 2024
I think that it would be better not to wait for everything to be done to make it work with Jupyter kernel. I can see how it can be useful to have a testing repo with Binder and Colab integration. That would help anyone to test recent version and report back issues if any discovered.
certik commentedon Sep 25, 2024
@thoth291 the Jupyter kernel already works. The above issue is to focus on ironic all bugs there, which we should do after we can compile standalone codes (i.e., after beta). If you discover a bug in the kernel, go ahead and report it, we fix them as we have time.
krystophny commentedon Dec 12, 2025