-
-
Notifications
You must be signed in to change notification settings - Fork 202
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
- 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
- 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
- Add a Debug time check for Vec indexing #7833
- LLVM: get rid of all calls to CreateGEP, replace with CreateGEP2 #7836
- Enable bounds checking, add tests #7891
- Refactor and fix
--realloc-lhs
(make it only work for arrays, scalars always reallocate) #7706 - 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
-
--fast
working in all cases: - Enable LLVM optimizations for
--fast
with 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
wasm
in integration_tests #3954 - separate compilation (generate intermediate object files, link everything at the end), add robust first class support for
.o
files 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
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
- 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)
- 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.
zaikunzhang, HarshitaKalani, ubaidsk, kmr-srbh and Vipul-Cariappazaikunzhang, Pranavchiku, anutosh491, HarshitaKalani and kmr-srbh
Metadata
Metadata
Assignees
Labels
tracking issuetracking issuetracking issue