futhark-0.25.32: An optimising compiler for a functional, array-oriented language.

# futhark-0.25.32: An optimising compiler for a functional, array-oriented language.

Futhark is a small programming language designed to be compiled to efficient parallel code. It is a statically typed, data-parallel, and purely functional array language in the ML family, and comes with a heavily optimising ahead-of-time compiler that presently generates GPU code via CUDA and OpenCL, although the language itself is hardware-agnostic.

For more information, see the website at https://futhark-lang.org

For introductionary information about hacking on the Futhark compiler, see the hacking guide. Regarding the internal design of the compiler, the following modules make good starting points:

- Futhark contains a basic architectural overview of the compiler.
- Futhark.IR.Syntax explains the basic design of the intermediate representation (IR).
- Futhark.Construct explains how to write code that manipulates and creates AST fragments.

Modules

futhark-0.25.32

- Futhark
  Submodules
  - AD
    Submodules
    - Futhark.AD.DerivativesTests
  - Analysis
    Submodules
    - Futhark.Analysis.AlgSimplifyTests
    - PrimExp
      Submodules
      - Futhark.Analysis.PrimExp.TableTests
  - Futhark.BenchTests
  - IR
    Submodules
    - Futhark.IR.GPUTests
    - Futhark.IR.MCTests
    - Mem
      Submodules
      - Futhark.IR.Mem.IntervalTests
      - IxFun
        Submodules
        - Futhark.IR.Mem.IxFun.Alg
      - Futhark.IR.Mem.IxFunTests
      - Futhark.IR.Mem.IxFunWrapper
    - Prop
      Submodules
      - Futhark.IR.Prop.RearrangeTests
      - Futhark.IR.Prop.ReshapeTests
    - Futhark.IR.PropTests
    - Syntax
      Submodules
      - Futhark.IR.Syntax.CoreTests
    - Futhark.IR.SyntaxTests
  - Internalise
    Submodules
    - Futhark.Internalise.TypesValuesTests
  - Optimise
    Submodules
    - ArrayLayout
      Submodules
      - Futhark.Optimise.ArrayLayout.AnalyseTests
      - Futhark.Optimise.ArrayLayout.LayoutTests
    - Futhark.Optimise.ArrayLayoutTests
    - MemoryBlockMerging
      Submodules
      - Futhark.Optimise.MemoryBlockMerging.GreedyColoringTests
  - Pkg
    Submodules
    - Futhark.Pkg.SolveTests
  - Futhark.ProfileTests
- Language
  Submodules
  - Futhark
    Submodules
    - Language.Futhark.CoreTests
    - Language.Futhark.ParserBenchmarks
    - Language.Futhark.PrettyTests
    - Language.Futhark.PrimitiveTests
    - Language.Futhark.SemanticTests
    - Language.Futhark.SyntaxTests
    - TypeChecker
      Submodules
      - Language.Futhark.TypeChecker.TypesTests
    - Language.Futhark.TypeCheckerTests