packages feed

Cabal revisions of fir-0.1.0.0

Hackage metadata revisions edit the .cabal file after upload; each diff below is one revision.

revision 1
-cabal-version:  3.0-name:           fir-version:        0.1.0.0-synopsis:       An EDSL that compiles to SPIR-V for graphics programming on the GPU in Haskell.-category:       Graphics-author:         Sam Derbyshire-maintainer:     sam.derbyshire@gmail.com-license:        BSD-3-Clause-homepage:       https://gitlab.com/sheaf/fir-bug-reports:    https://gitlab.com/sheaf/fir/-/issues-build-type:     Simple-tested-with:    GHC == 9.14.1-extra-doc-files:-    CHANGELOG.md-    img/FIR_logo.svg-extra-source-files:-    test/Tests/**/*.hs-    test/Tests/**/*.golden-description:--  <<img/FIR_logo.svg>>--  [__FIR__](https://gitlab.com/sheaf/fir) is an EDSL-  for writing GPU shader code in Haskell, compiled to __@SPIR-V@__.-  Requires GHC >= 8.10.--  With this library, shader programs can be written using @do@ notation.-  Such programs are then transformed into abstract syntax trees (ASTs),-  before being compiled to @SPIR-V@ assembly.--  In effect, this replaces @GLSL@ as a shader language.-  This means the Haskell type-system and type-checker are put to use-  in verifying programs at compile-time.-  Functional idioms, such as functor and applicative operations, are also supported.--  See the [fir-examples](https://gitlab.com/sheaf/fir/tree/0.1/fir-examples)-  project subdirectory for fleshed out examples,-  including using the @vulkan@ package for rendering.--  The exposed modules are:--  ["FIR"]-      Re-exports the main functionality of the library: writing and compiling programs.---  ["FIR.Syntax.Labels"]-      Optional imperative-like syntax using /OverloadedLabels/.---  ["Math.Linear"]-      Vectors, matrices, and operations on them, as used by this library.---  ["Math.Quaternion"]-      Quaternions and their action by conjugation in 3 dimensions, useful for 3D cameras.----  Important types used by this library:--  [@Code a@]--      Code for a pure value of type @a@, represented internally as an abstract syntax tree.-      See "FIR.AST".--      Overloaded functions are provided that automatically create and combine terms of this type.-      For instance, @3 + 5 :: Code Float@ gets desugared to @PrimOp FAdd ( Lit 3.0 ) ( Lit 5.0 )@.--  [@Program i j a@]--      A monadic expression, starting in state @i@ and ending in state @j@.-      This state is used to keep track of information at the type level,-      allowing for type errors to be thrown on invalid operations-      (e.g. writing to a read-only variable, image sampling outside a fragment shader, etc).--      A value of type @Program i j (Code a)@ can be thought of as stateful GPU code-      producing a value of type @a@.--      Internally represented using the codensity transformation of McBride-style indexed monads, see "Control.Monad.Indexed".--  [@Module defs@]--      Code for a program that can be compiled to a @SPIR-V@ module.--      @defs@ is a type-level list of shader inputs/ouputs (uniforms, varyings, etc),-      top-level functions, and entry points.--      See "FIR.Module" for the definition, and the [example shaders](https://gitlab.com/sheaf/fir/tree/0.1/fir-examples/readme.md#overview)-      for common usage patterns.---  Values of all three of these types can be displayed graphically as trees using @showAST@/@drawAST@,-  which can be useful for debugging.--  See the [project readme](https://gitlab.com/sheaf/fir/tree/0.1/readme.md) for further information,-  as well as the ["getting started" guide](https://gitlab.com/sheaf/fir/tree/0.1/getting_started.md),-  which includes instructions concerning installation and usage of the library, and of useful tools-  such as the @SPIR-V@ tools provided by the [Vulkan SDK](https://www.lunarg.com/vulkan-sdk/).--source-repository head-  type:     git-  location: https://gitlab.com/sheaf/fir.git-  branch:   0.1--flag internals--  manual: True-  default: False-  description: This flag exposes all internal modules that by default are-               inaccessible. It's mostly only useful for library developers to-               use the internals of FIR rather than end users writing shader-               programs.--flag sop--  manual: True-  default: False-  description: This flag exposes a module with Syntactic instances for generics-sop.---common common--  build-depends:-        base-          >= 4.14     && < 4.23-      , bytestring-          >= 0.10.9.0 && < 0.13-      , directory-          ^>= 1.3.3.0--common test--  build-depends:-        filepath-           >= 1.4.2.1 && < 1.6-      , process-          ^>= 1.6.3.0-      , text-           >= 1.2.3.1 && < 2.2--library--    import:-        common--    hs-source-dirs:-        src--    exposed-modules:-        FIR-      , FIR.Syntax.DebugPrintf-      , FIR.Syntax.Labels-      , Math.Linear-      , Math.Quaternion--    if flag(sop)-        exposed-modules:-            , FIR.Generics--    if flag(internals)-        exposed-modules:-          , CodeGen.Application-          , CodeGen.Applicative-          , CodeGen.Array-          , CodeGen.Atomics-          , CodeGen.Binary-          , CodeGen.CFG-          , CodeGen.CodeGen-          , CodeGen.Composite-          , CodeGen.Debug-          , CodeGen.Functions-          , CodeGen.IDs-          , CodeGen.Images-          , CodeGen.Instruction-          , CodeGen.Monad-          , CodeGen.Optics-          , CodeGen.Phi-          , CodeGen.Pointers-          , CodeGen.PrimOps-          , CodeGen.RayTracing-          , CodeGen.State-          , Control.Arrow.Strength-          , Control.Monad.Indexed-          , Control.Type.Optic-          , Data.Binary.Class.Put-          , Data.Constraint.All-          , Data.Containers.Traversals-          , Data.Finite.With-          , Data.Function.Variadic-          , Data.Product-          , Data.Type.Error-          , Data.Type.Known-          , Data.Type.LazyEquality-          , Data.Type.List-          , Data.Type.Map-          , Data.Type.Maybe-          , Data.Type.Nat-          , Data.Type.POrd-          , Data.Type.Snoc-          , Data.Type.String-          , Deriving.Base-          , FIR.AST-          , FIR.AST.ControlFlow-          , FIR.AST.Display-          , FIR.AST.Images-          , FIR.AST.Type-          , FIR.AST.Effs-          , FIR.AST.Exts-          , FIR.AST.Optics-          , FIR.AST.Prim-          , FIR.Binding-          , FIR.Builtin-          , FIR.Definition-          , FIR.Layout-          , FIR.Module-          , FIR.Pipeline-          , FIR.Prelude-          , FIR.Prim.Array-          , FIR.Prim.Image-          , FIR.Prim.RayTracing-          , FIR.Prim.Atomic-          , FIR.Prim.Struct-          , FIR.Prim.Types-          , FIR.Prim.Op-          , FIR.ProgramState-          , FIR.Syntax.AST-          , FIR.Syntax.Complex-          , FIR.Syntax.IfThenElse-          , FIR.Syntax.Images-          , FIR.Syntax.Optics-          , FIR.Syntax.Option-          , FIR.Syntax.Program-          , FIR.Syntax.RayTracing-          , FIR.Syntax.Swizzle-          , FIR.Syntax.Synonyms-          , FIR.Validation.Ambiguity-          , FIR.Validation.Arrayness-          , FIR.Validation.Bindings-          , FIR.Validation.Bounds-          , FIR.Validation.CFG-          , FIR.Validation.Definitions-          , FIR.Validation.ExecutionModes-          , FIR.Validation.Formats-          , FIR.Validation.Images-          , FIR.Validation.Interface-          , FIR.Validation.Layout-          , FIR.Validation.Pipeline-          , FIR.Validation.RayTracing-          , FIR.Temp-          , Instances.TH.Lift-          , Math.Algebra.Class-          , Math.Algebra.GradedSemigroup-          , Math.Logic.Bits-          , Math.Logic.Class-          , SPIRV.Builtin-          , SPIRV.Capability-          , SPIRV.Control-          , SPIRV.Decoration-          , SPIRV.ExecutionMode-          , SPIRV.Extension-          , SPIRV.Groups-          , SPIRV.Image-          , SPIRV.Layout-          , SPIRV.Operation-          , SPIRV.PrimOp-          , SPIRV.PrimTy-          , SPIRV.Requirements-          , SPIRV.ScalarTy-          , SPIRV.Stage-          , SPIRV.Storage-          , SPIRV.Synchronisation-          , SPIRV.Version-    else-        other-modules:-            CodeGen.Application-          , CodeGen.Applicative-          , CodeGen.Array-          , CodeGen.Atomics-          , CodeGen.Binary-          , CodeGen.CFG-          , CodeGen.CodeGen-          , CodeGen.Composite-          , CodeGen.Debug-          , CodeGen.Functions-          , CodeGen.IDs-          , CodeGen.Images-          , CodeGen.Instruction-          , CodeGen.Monad-          , CodeGen.Optics-          , CodeGen.Phi-          , CodeGen.Pointers-          , CodeGen.PrimOps-          , CodeGen.RayTracing-          , CodeGen.State-          , Control.Arrow.Strength-          , Control.Monad.Indexed-          , Control.Type.Optic-          , Data.Binary.Class.Put-          , Data.Constraint.All-          , Data.Containers.Traversals-          , Data.Finite.With-          , Data.Function.Variadic-          , Data.Product-          , Data.Type.Error-          , Data.Type.Known-          , Data.Type.LazyEquality-          , Data.Type.List-          , Data.Type.Map-          , Data.Type.Maybe-          , Data.Type.Nat-          , Data.Type.POrd-          , Data.Type.Snoc-          , Data.Type.String-          , Deriving.Base-          , FIR.AST-          , FIR.AST.ControlFlow-          , FIR.AST.Display-          , FIR.AST.Images-          , FIR.AST.Type-          , FIR.AST.Effs-          , FIR.AST.Exts-          , FIR.AST.Optics-          , FIR.AST.Prim-          , FIR.Binding-          , FIR.Builtin-          , FIR.Definition-          , FIR.Layout-          , FIR.Module-          , FIR.Pipeline-          , FIR.Prelude-          , FIR.Prim.Array-          , FIR.Prim.Image-          , FIR.Prim.RayTracing-          , FIR.Prim.Atomic-          , FIR.Prim.Struct-          , FIR.Prim.Types-          , FIR.Prim.Op-          , FIR.ProgramState-          , FIR.Syntax.AST-          , FIR.Syntax.Complex-          , FIR.Syntax.IfThenElse-          , FIR.Syntax.Images-          , FIR.Syntax.Optics-          , FIR.Syntax.Option-          , FIR.Syntax.Program-          , FIR.Syntax.RayTracing-          , FIR.Syntax.Swizzle-          , FIR.Syntax.Synonyms-          , FIR.Validation.Ambiguity-          , FIR.Validation.Arrayness-          , FIR.Validation.Bindings-          , FIR.Validation.Bounds-          , FIR.Validation.CFG-          , FIR.Validation.Definitions-          , FIR.Validation.ExecutionModes-          , FIR.Validation.Formats-          , FIR.Validation.Images-          , FIR.Validation.Interface-          , FIR.Validation.Layout-          , FIR.Validation.Pipeline-          , FIR.Validation.RayTracing-          , FIR.Temp-          , Instances.TH.Lift-          , Math.Algebra.Class-          , Math.Algebra.GradedSemigroup-          , Math.Logic.Bits-          , Math.Logic.Class-          , SPIRV.Builtin-          , SPIRV.Capability-          , SPIRV.Control-          , SPIRV.Decoration-          , SPIRV.ExecutionMode-          , SPIRV.Extension-          , SPIRV.Groups-          , SPIRV.Image-          , SPIRV.Layout-          , SPIRV.Operation-          , SPIRV.PrimOp-          , SPIRV.PrimTy-          , SPIRV.Requirements-          , SPIRV.ScalarTy-          , SPIRV.Stage-          , SPIRV.Storage-          , SPIRV.Synchronisation-          , SPIRV.Version---    build-depends:-        atomic-file-ops-          ^>= 0.3.0.0-      , binary-          >= 0.8.7.0  && < 0.11-      , containers-          >= 0.6.2.1  && < 0.9-      , distributive-          ^>= 0.6-      , finite-typelits-          >= 0.1.4.2  && < 0.3-      , generic-monoid-          ^>= 0.1.0.0-      , ghc-typelits-knownnat-          ^>= 0.8.2-      , ghc-typelits-natnormalise-          ^>= 0.9.0-      , half-          ^>= 0.3-      , lens-          >= 4.18     && < 5.4-      , mtl-          >= 2.2.2    && < 2.4-      , split-          >= 0.2.3.3  && < 0.3-      , template-haskell-          >= 2.15     && < 2.25-      , text-short-          >= 0.1.4    && < 0.2-      , transformers-          >= 0.5.6.2  && < 0.7-      , tree-view-          ^>= 0.5-      , typelits-witnesses-          >= 0.2.3    && < 0.5-      , variant-          ^>= 1.0.1-      , vector-          >= 0.12.0.3 && < 0.14-      , vector-sized-          >= 1.4.0.0  && < 1.7--    if flag(sop)-        build-depends:-          , generics-sop-              >= 0.4 && < 0.5.2-          , sop-core-              >= 0.4 && < 0.5.1--    default-language:-        Haskell2010--    default-extensions:-        NoStarIsType--    ghc-options:-        -Wall-        -Wcompat-        -fno-warn-orphans-        -fno-warn-unticked-promoted-constructors-        -fno-warn-unused-do-bind-        -fwarn-missing-local-signatures-        -fwarn-incomplete-uni-patterns-        -fwarn-missing-deriving-strategies--    if impl(ghc >= 9.14)-      ghc-options:-        -Wno-pattern-namespace-specifier--test-suite fir-tests--    import: common, test--    type:-      detailed-0.9--    hs-source-dirs:-      test--    test-module:-      CabalTests--    other-modules:-        Test-      , Tests-      , Folders--    build-depends:-        fir-      , Cabal-          >= 3.0.0.0 && < 3.17--    default-language:-        Haskell2010+cabal-version:  3.0
+name:           fir
+version:        0.1.0.0
+x-revision: 1
+synopsis:       An EDSL that compiles to SPIR-V for graphics programming on the GPU in Haskell.
+category:       Graphics
+author:         Sam Derbyshire
+maintainer:     sam.derbyshire@gmail.com
+license:        BSD-3-Clause
+homepage:       https://gitlab.com/sheaf/fir
+bug-reports:    https://gitlab.com/sheaf/fir/-/issues
+build-type:     Simple
+tested-with:    GHC == 9.14.1
+extra-doc-files:
+    CHANGELOG.md
+    img/FIR_logo.svg
+extra-source-files:
+    test/Tests/**/*.hs
+    test/Tests/**/*.golden
+description:
+
+  <<https://gitlab.com/sheaf/fir/-/raw/v0.1.0.0/img/FIR_logo.svg>>
+
+  [__FIR__](https://gitlab.com/sheaf/fir) is an EDSL
+  for writing GPU shader code in Haskell, compiled to __@SPIR-V@__.
+  Requires GHC >= 8.10.
+
+  With this library, shader programs can be written using @do@ notation.
+  Such programs are then transformed into abstract syntax trees (ASTs),
+  before being compiled to @SPIR-V@ assembly.
+
+  In effect, this replaces @GLSL@ as a shader language.
+  This means the Haskell type-system and type-checker are put to use
+  in verifying programs at compile-time.
+  Functional idioms, such as functor and applicative operations, are also supported.
+
+  See the [fir-examples](https://gitlab.com/sheaf/fir/tree/0.1/fir-examples)
+  project subdirectory for fleshed out examples,
+  including using the @vulkan@ package for rendering.
+
+  The exposed modules are:
+
+  ["FIR"]
+      Re-exports the main functionality of the library: writing and compiling programs.
+
+
+  ["FIR.Syntax.Labels"]
+      Optional imperative-like syntax using /OverloadedLabels/.
+
+
+  ["Math.Linear"]
+      Vectors, matrices, and operations on them, as used by this library.
+
+
+  ["Math.Quaternion"]
+      Quaternions and their action by conjugation in 3 dimensions, useful for 3D cameras.
+
+
+
+  Important types used by this library:
+
+  [@Code a@]
+
+      Code for a pure value of type @a@, represented internally as an abstract syntax tree.
+      See "FIR.AST".
+
+      Overloaded functions are provided that automatically create and combine terms of this type.
+      For instance, @3 + 5 :: Code Float@ gets desugared to @PrimOp FAdd ( Lit 3.0 ) ( Lit 5.0 )@.
+
+  [@Program i j a@]
+
+      A monadic expression, starting in state @i@ and ending in state @j@.
+      This state is used to keep track of information at the type level,
+      allowing for type errors to be thrown on invalid operations
+      (e.g. writing to a read-only variable, image sampling outside a fragment shader, etc).
+
+      A value of type @Program i j (Code a)@ can be thought of as stateful GPU code
+      producing a value of type @a@.
+
+      Internally represented using the codensity transformation of McBride-style indexed monads, see "Control.Monad.Indexed".
+
+  [@Module defs@]
+
+      Code for a program that can be compiled to a @SPIR-V@ module.
+
+      @defs@ is a type-level list of shader inputs/ouputs (uniforms, varyings, etc),
+      top-level functions, and entry points.
+
+      See "FIR.Module" for the definition, and the [example shaders](https://gitlab.com/sheaf/fir/tree/0.1/fir-examples/readme.md#overview)
+      for common usage patterns.
+
+
+  Values of all three of these types can be displayed graphically as trees using @showAST@/@drawAST@,
+  which can be useful for debugging.
+
+  See the [project readme](https://gitlab.com/sheaf/fir/tree/0.1/readme.md) for further information,
+  as well as the ["getting started" guide](https://gitlab.com/sheaf/fir/tree/0.1/getting_started.md),
+  which includes instructions concerning installation and usage of the library, and of useful tools
+  such as the @SPIR-V@ tools provided by the [Vulkan SDK](https://www.lunarg.com/vulkan-sdk/).
+
+source-repository head
+  type:     git
+  location: https://gitlab.com/sheaf/fir.git
+  branch:   0.1
+
+flag internals
+
+  manual: True
+  default: False
+  description: This flag exposes all internal modules that by default are
+               inaccessible. It's mostly only useful for library developers to
+               use the internals of FIR rather than end users writing shader
+               programs.
+
+flag sop
+
+  manual: True
+  default: False
+  description: This flag exposes a module with Syntactic instances for generics-sop.
+
+
+common common
+
+  build-depends:
+        base
+          >= 4.14     && < 4.23
+      , bytestring
+          >= 0.10.9.0 && < 0.13
+      , directory
+          ^>= 1.3.3.0
+
+common test
+
+  build-depends:
+        filepath
+           >= 1.4.2.1 && < 1.6
+      , process
+          ^>= 1.6.3.0
+      , text
+           >= 1.2.3.1 && < 2.2
+
+library
+
+    import:
+        common
+
+    hs-source-dirs:
+        src
+
+    exposed-modules:
+        FIR
+      , FIR.Syntax.DebugPrintf
+      , FIR.Syntax.Labels
+      , Math.Linear
+      , Math.Quaternion
+
+    if flag(sop)
+        exposed-modules:
+            , FIR.Generics
+
+    if flag(internals)
+        exposed-modules:
+          , CodeGen.Application
+          , CodeGen.Applicative
+          , CodeGen.Array
+          , CodeGen.Atomics
+          , CodeGen.Binary
+          , CodeGen.CFG
+          , CodeGen.CodeGen
+          , CodeGen.Composite
+          , CodeGen.Debug
+          , CodeGen.Functions
+          , CodeGen.IDs
+          , CodeGen.Images
+          , CodeGen.Instruction
+          , CodeGen.Monad
+          , CodeGen.Optics
+          , CodeGen.Phi
+          , CodeGen.Pointers
+          , CodeGen.PrimOps
+          , CodeGen.RayTracing
+          , CodeGen.State
+          , Control.Arrow.Strength
+          , Control.Monad.Indexed
+          , Control.Type.Optic
+          , Data.Binary.Class.Put
+          , Data.Constraint.All
+          , Data.Containers.Traversals
+          , Data.Finite.With
+          , Data.Function.Variadic
+          , Data.Product
+          , Data.Type.Error
+          , Data.Type.Known
+          , Data.Type.LazyEquality
+          , Data.Type.List
+          , Data.Type.Map
+          , Data.Type.Maybe
+          , Data.Type.Nat
+          , Data.Type.POrd
+          , Data.Type.Snoc
+          , Data.Type.String
+          , Deriving.Base
+          , FIR.AST
+          , FIR.AST.ControlFlow
+          , FIR.AST.Display
+          , FIR.AST.Images
+          , FIR.AST.Type
+          , FIR.AST.Effs
+          , FIR.AST.Exts
+          , FIR.AST.Optics
+          , FIR.AST.Prim
+          , FIR.Binding
+          , FIR.Builtin
+          , FIR.Definition
+          , FIR.Layout
+          , FIR.Module
+          , FIR.Pipeline
+          , FIR.Prelude
+          , FIR.Prim.Array
+          , FIR.Prim.Image
+          , FIR.Prim.RayTracing
+          , FIR.Prim.Atomic
+          , FIR.Prim.Struct
+          , FIR.Prim.Types
+          , FIR.Prim.Op
+          , FIR.ProgramState
+          , FIR.Syntax.AST
+          , FIR.Syntax.Complex
+          , FIR.Syntax.IfThenElse
+          , FIR.Syntax.Images
+          , FIR.Syntax.Optics
+          , FIR.Syntax.Option
+          , FIR.Syntax.Program
+          , FIR.Syntax.RayTracing
+          , FIR.Syntax.Swizzle
+          , FIR.Syntax.Synonyms
+          , FIR.Validation.Ambiguity
+          , FIR.Validation.Arrayness
+          , FIR.Validation.Bindings
+          , FIR.Validation.Bounds
+          , FIR.Validation.CFG
+          , FIR.Validation.Definitions
+          , FIR.Validation.ExecutionModes
+          , FIR.Validation.Formats
+          , FIR.Validation.Images
+          , FIR.Validation.Interface
+          , FIR.Validation.Layout
+          , FIR.Validation.Pipeline
+          , FIR.Validation.RayTracing
+          , FIR.Temp
+          , Instances.TH.Lift
+          , Math.Algebra.Class
+          , Math.Algebra.GradedSemigroup
+          , Math.Logic.Bits
+          , Math.Logic.Class
+          , SPIRV.Builtin
+          , SPIRV.Capability
+          , SPIRV.Control
+          , SPIRV.Decoration
+          , SPIRV.ExecutionMode
+          , SPIRV.Extension
+          , SPIRV.Groups
+          , SPIRV.Image
+          , SPIRV.Layout
+          , SPIRV.Operation
+          , SPIRV.PrimOp
+          , SPIRV.PrimTy
+          , SPIRV.Requirements
+          , SPIRV.ScalarTy
+          , SPIRV.Stage
+          , SPIRV.Storage
+          , SPIRV.Synchronisation
+          , SPIRV.Version
+    else
+        other-modules:
+            CodeGen.Application
+          , CodeGen.Applicative
+          , CodeGen.Array
+          , CodeGen.Atomics
+          , CodeGen.Binary
+          , CodeGen.CFG
+          , CodeGen.CodeGen
+          , CodeGen.Composite
+          , CodeGen.Debug
+          , CodeGen.Functions
+          , CodeGen.IDs
+          , CodeGen.Images
+          , CodeGen.Instruction
+          , CodeGen.Monad
+          , CodeGen.Optics
+          , CodeGen.Phi
+          , CodeGen.Pointers
+          , CodeGen.PrimOps
+          , CodeGen.RayTracing
+          , CodeGen.State
+          , Control.Arrow.Strength
+          , Control.Monad.Indexed
+          , Control.Type.Optic
+          , Data.Binary.Class.Put
+          , Data.Constraint.All
+          , Data.Containers.Traversals
+          , Data.Finite.With
+          , Data.Function.Variadic
+          , Data.Product
+          , Data.Type.Error
+          , Data.Type.Known
+          , Data.Type.LazyEquality
+          , Data.Type.List
+          , Data.Type.Map
+          , Data.Type.Maybe
+          , Data.Type.Nat
+          , Data.Type.POrd
+          , Data.Type.Snoc
+          , Data.Type.String
+          , Deriving.Base
+          , FIR.AST
+          , FIR.AST.ControlFlow
+          , FIR.AST.Display
+          , FIR.AST.Images
+          , FIR.AST.Type
+          , FIR.AST.Effs
+          , FIR.AST.Exts
+          , FIR.AST.Optics
+          , FIR.AST.Prim
+          , FIR.Binding
+          , FIR.Builtin
+          , FIR.Definition
+          , FIR.Layout
+          , FIR.Module
+          , FIR.Pipeline
+          , FIR.Prelude
+          , FIR.Prim.Array
+          , FIR.Prim.Image
+          , FIR.Prim.RayTracing
+          , FIR.Prim.Atomic
+          , FIR.Prim.Struct
+          , FIR.Prim.Types
+          , FIR.Prim.Op
+          , FIR.ProgramState
+          , FIR.Syntax.AST
+          , FIR.Syntax.Complex
+          , FIR.Syntax.IfThenElse
+          , FIR.Syntax.Images
+          , FIR.Syntax.Optics
+          , FIR.Syntax.Option
+          , FIR.Syntax.Program
+          , FIR.Syntax.RayTracing
+          , FIR.Syntax.Swizzle
+          , FIR.Syntax.Synonyms
+          , FIR.Validation.Ambiguity
+          , FIR.Validation.Arrayness
+          , FIR.Validation.Bindings
+          , FIR.Validation.Bounds
+          , FIR.Validation.CFG
+          , FIR.Validation.Definitions
+          , FIR.Validation.ExecutionModes
+          , FIR.Validation.Formats
+          , FIR.Validation.Images
+          , FIR.Validation.Interface
+          , FIR.Validation.Layout
+          , FIR.Validation.Pipeline
+          , FIR.Validation.RayTracing
+          , FIR.Temp
+          , Instances.TH.Lift
+          , Math.Algebra.Class
+          , Math.Algebra.GradedSemigroup
+          , Math.Logic.Bits
+          , Math.Logic.Class
+          , SPIRV.Builtin
+          , SPIRV.Capability
+          , SPIRV.Control
+          , SPIRV.Decoration
+          , SPIRV.ExecutionMode
+          , SPIRV.Extension
+          , SPIRV.Groups
+          , SPIRV.Image
+          , SPIRV.Layout
+          , SPIRV.Operation
+          , SPIRV.PrimOp
+          , SPIRV.PrimTy
+          , SPIRV.Requirements
+          , SPIRV.ScalarTy
+          , SPIRV.Stage
+          , SPIRV.Storage
+          , SPIRV.Synchronisation
+          , SPIRV.Version
+
+
+    build-depends:
+        atomic-file-ops
+          ^>= 0.3.0.0
+      , binary
+          >= 0.8.7.0  && < 0.11
+      , containers
+          >= 0.6.2.1  && < 0.9
+      , distributive
+          ^>= 0.6
+      , finite-typelits
+          >= 0.1.4.2  && < 0.3
+      , generic-monoid
+          ^>= 0.1.0.0
+      , ghc-typelits-knownnat
+          ^>= 0.8.2
+      , ghc-typelits-natnormalise
+          ^>= 0.9.0
+      , half
+          ^>= 0.3
+      , lens
+          >= 4.18     && < 5.4
+      , mtl
+          >= 2.2.2    && < 2.4
+      , split
+          >= 0.2.3.3  && < 0.3
+      , template-haskell
+          >= 2.15     && < 2.25
+      , text-short
+          >= 0.1.4    && < 0.2
+      , transformers
+          >= 0.5.6.2  && < 0.7
+      , tree-view
+          ^>= 0.5
+      , typelits-witnesses
+          >= 0.2.3    && < 0.5
+      , variant
+          ^>= 1.0.1
+      , vector
+          >= 0.12.0.3 && < 0.14
+      , vector-sized
+          >= 1.4.0.0  && < 1.7
+
+    if flag(sop)
+        build-depends:
+          , generics-sop
+              >= 0.4 && < 0.5.2
+          , sop-core
+              >= 0.4 && < 0.5.1
+
+    default-language:
+        Haskell2010
+
+    default-extensions:
+        NoStarIsType
+
+    ghc-options:
+        -Wall
+        -Wcompat
+        -fno-warn-orphans
+        -fno-warn-unticked-promoted-constructors
+        -fno-warn-unused-do-bind
+        -fwarn-missing-local-signatures
+        -fwarn-incomplete-uni-patterns
+        -fwarn-missing-deriving-strategies
+
+    if impl(ghc >= 9.14)
+      ghc-options:
+        -Wno-pattern-namespace-specifier
+
+test-suite fir-tests
+
+    import: common, test
+
+    type:
+      detailed-0.9
+
+    hs-source-dirs:
+      test
+
+    test-module:
+      CabalTests
+
+    other-modules:
+        Test
+      , Tests
+      , Folders
+
+    build-depends:
+        fir
+      , Cabal
+          >= 3.0.0.0 && < 3.17
+
+    default-language:
+        Haskell2010