packages feed

hhlo-0.2.0.0: hhlo.cabal

cabal-version:      3.0
name:               hhlo
version:            0.2.0.0
synopsis:           Haskell Frontend for StableHLO — type-safe ML inference on CPU and GPU
description:
    HHLO is a Haskell library and runtime for building, compiling, and executing
    machine-learning programs targeting StableHLO, the portable intermediate
    representation of the OpenXLA ecosystem.
    .
    Instead of replicating JAX's Python-based tracing infrastructure, HHLO
    generates StableHLO MLIR text directly from Haskell and compiles it to
    CPU or GPU via the PJRT plugin interface.
    .
    Key features:
    .
    * Type-safe EDSL with phantom-shape tensors (e.g. @Tensor '[2,3] 'F32@)
    * 50+ ops: matmul, conv2d, softmax, batch-norm, control flow, and more
    * CPU execution via PJRT CPU plugin
    * GPU execution via PJRT CUDA plugin with device enumeration
    * Multi-GPU concurrent inference scaling
    * No LLVM/MLIR build dependency — emits text and lets PJRT parse it
    .
    See the README for setup instructions and examples.
homepage:           https://github.com/overshiki/hhlo
bug-reports:        https://github.com/overshiki/hhlo/issues
license:            MIT
license-file:       LICENSE
copyright:          (c) 2026 overshiki
author:             overshiki
maintainer:         le.niu@hotmail.com
category:           AI, Machine Learning, Compilers
build-type:         Simple
tested-with:        GHC == 9.6.7
extra-source-files:
    cbits/pjrt_shim.h
    cbits/pjrt_c_api.h

extra-doc-files:
    README.md
    CHANGELOG.md
    doc/*.md

source-repository head
    type:     git
    location: https://github.com/overshiki/hhlo.git

flag examples
    description: Build the example executables
    default:     False
    manual:      True

common warnings
    ghc-options: -Wall -Wcompat -optl-lstdc++

library
    import:           warnings
    exposed-modules:
        HHLO.Prelude
        HHLO.Core.Types
        HHLO.IR.AST
        HHLO.IR.Builder
        HHLO.IR.Pretty
        HHLO.EDSL.Ops
        HHLO.Runtime.PJRT.FFI
        HHLO.Runtime.PJRT.Types
        HHLO.Runtime.PJRT.Error
        HHLO.Runtime.PJRT.Plugin
        HHLO.Runtime.Device
        HHLO.Runtime.Compile
        HHLO.Runtime.Execute
        HHLO.Runtime.Async
        HHLO.Runtime.Buffer
    build-depends:
        base          >= 4.18.2 && < 5,
        text          >= 2.0   && < 2.2,
        bytestring    >= 0.12  && < 0.13,
        vector        >= 0.13  && < 0.14,
        containers    >= 0.6   && < 0.8,
        transformers  >= 0.6   && < 0.7,
        mtl           >= 2.3   && < 2.4,
        async         >= 2.2   && < 2.3
    hs-source-dirs:   src
    default-language: GHC2021
    include-dirs:     cbits
    c-sources:        cbits/pjrt_shim.c
    extra-libraries:  dl

executable hhlo-demo
    import:           warnings
    main-is:          Main.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   app
    default-language: GHC2021

executable example-add
    import:           warnings
    main-is:          01-add.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-matmul
    import:           warnings
    main-is:          02-matmul.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-chain-ops
    import:           warnings
    main-is:          03-chain-ops.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-async
    import:           warnings
    main-is:          04-async.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-mlp
    import:           warnings
    main-is:          05-mlp.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-mlp-batched
    import:           warnings
    main-is:          06-mlp-batched.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-tuple
    import:           warnings
    main-is:          07-tuple.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-reduce
    import:           warnings
    main-is:          08-reduce.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-softmax
    import:           warnings
    main-is:          09-softmax.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-conv2d
    import:           warnings
    main-is:          10-conv2d.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-batch-norm
    import:           warnings
    main-is:          11-batch-norm.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-while
    import:           warnings
    main-is:          12-while.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-conditional
    import:           warnings
    main-is:          13-conditional.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-gather
    import:           warnings
    main-is:          14-gather.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-scatter
    import:           warnings
    main-is:          15-scatter.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-slice
    import:           warnings
    main-is:          16-slice.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-pad
    import:           warnings
    main-is:          17-pad.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-dynamic-slice
    import:           warnings
    main-is:          18-dynamic-slice.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-sort
    import:           warnings
    main-is:          19-sort.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-select
    import:           warnings
    main-is:          20-select.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-map
    import:           warnings
    main-is:          21-map.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-new-ops-smoke-test
    import:           warnings
    main-is:          22-new-ops-smoke-test.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-resnet
    import:           warnings
    main-is:          23-resnet.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-alexnet
    import:           warnings
    main-is:          24-alexnet.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-transformer
    import:           warnings
    main-is:          25-transformer.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-unet
    import:           warnings
    main-is:          26-unet.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-gpu-add
    import:           warnings
    main-is:          27-gpu-add.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-gpu-matmul-bench
    import:           warnings
    main-is:          28-gpu-matmul-bench.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2,
        time          >= 1.12  && < 1.15
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-multi-gpu-inference
    import:           warnings
    main-is:          29-multi-gpu-inference.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2,
        time          >= 1.12  && < 1.15
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

test-suite hhlo-test
    import:           warnings
    type:             exitcode-stdio-1.0
    main-is:          Main.hs
    other-modules:
        Test.IR.Pretty
        Test.IR.Builder
        Test.EDSL.Ops
        Test.Runtime.EndToEnd
        Test.Runtime.EndToEndArithmetic
        Test.Runtime.EndToEndShape
        Test.Runtime.EndToEndMatmul
        Test.Runtime.EndToEndNN
        Test.Runtime.EndToEndReductions
        Test.Runtime.EndToEndDataMovement
        Test.Runtime.EndToEndMultiValue
        Test.Runtime.Buffer
        Test.Runtime.Async
        Test.Runtime.Errors
        Test.Utils
        Test.Runtime.EndToEndGPU
        Test.Runtime.BufferGPU
        Test.Runtime.AsyncGPU
        Test.Runtime.MultiGPU
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        text          >= 2.0   && < 2.2,
        bytestring    >= 0.12  && < 0.13,
        vector        >= 0.13  && < 0.14,
        tasty         >= 1.5   && < 1.6,
        tasty-hunit   >= 0.10  && < 0.11
    hs-source-dirs:   test
    default-language: GHC2021
    extra-libraries:  dl stdc++

executable example-rng-uniform
    import:           warnings
    main-is:          30-rng-uniform.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-rng-normal
    import:           warnings
    main-is:          31-rng-normal.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-rng-bit-generator
    import:           warnings
    main-is:          32-rng-bit-generator.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False

executable example-multi-value-loop
    import:           warnings
    main-is:          33-multi-value-loop.hs
    build-depends:
        base          >= 4.18.2 && < 5,
        hhlo,
        vector        >= 0.13  && < 0.14,
        text          >= 2.0   && < 2.2
    hs-source-dirs:   examples
    default-language: GHC2021
    if !flag(examples)
        buildable: False