Skip to content

ASR refactoring #1303

Open
Open
@certik

Description

There are several long standing issues with ASR that need refactoring. We will track of all of them here:

High Priority

Medium

  • How to compile ML code using ASR #3642
  • C interop improvements to the C++ backend #533
  • Redesigning strings #2257
  • Handle invalid code (both syntax errors and semantic errors) with dedicated ASR nodes, so that almost any code can produce an ASR, for language server purposes.
  • passing arrays to functions, check dimensions at runtime
  • possibly unifying expr/stmt, or creating "ExprStatement" to represent expressions as statements (in Python and interactive Fortran)
  • Implement Lambda functions, as expressions, possibly unify with Function (Implement Lambda function #1580)
  • ASR hardening
    • harden verify (catch all errors)
    • ASR testing: do randomized exhaustive tests (catch all verify and all backends errors)
    • Figure out a subset of ASR that is complete and add optional ASR passes to lower to this subset; this will enable writing new backends very easily, and together with exhaustive testing we can ensure that these passes + small backend is completely and without bugs, which will harden everything. For performance reasons, our production backends like LLVM should handle a lot more things directly, but we can at least guarantee that the subset works well and is without bugs.

Later

For LLVM backend issues see: #1302

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions