packages feed

hydra-haskell 0.17.3 → 0.17.4

raw patch · 3 files changed

+53/−12 lines, 3 filesdep ~hydra-kernel

Dependency ranges changed: hydra-kernel

Files

CHANGELOG.md view
@@ -15,6 +15,46 @@  --- +## [0.17.3] - 2026-08-01++Point release on the 0.17.x line, focused on **release-artifact integrity**. The 0.17.2 release shipped+two defects that every existing check missed because they validated only the generated `dist/` tree, never+the packaged artifact: the `hydra-build` sdist shipped 3 of 8 modules, and the published Java `hydra-kernel`+jar was a whole [#417](https://github.com/CategoricalData/hydra/issues/417) rename behind. This release adds+an artifact-level publish-completeness gate that inspects the actual uploaded archive, closing that class of+defect across all five registries.++### Highlights++- **Artifact-content completeness gate** ([#621](https://github.com/CategoricalData/hydra/issues/621)):+  every publish path (Hackage sdist, Maven-Java jar, Maven-Scala jar, PyPI wheel, npm tarball) now inspects+  the *packaged* archive and hard-fails if any module a package's manifest declares is missing. The gate also+  asserts the post-#417 class names are present in the Java kernel jar.++### Bug fixes++- **PyPI wheels dropped non-`hydra.*` roots** ([#621](https://github.com/CategoricalData/hydra/issues/621)):+  the wheel packaging hardcoded `packages = ["src/main/python/hydra"]`, silently omitting `hydra-pg`'s+  `com.gdblab.*` and `openGql.*` modules. The generator now ships every emitted top-level root.++### Improvements++- **CI guard for dist-tree completeness** ([#524](https://github.com/CategoricalData/hydra/issues/524)):+  asserts every manifest `mainModules` namespace is emitted into `dist/haskell`, catching the 0.17.2+  `hydra-build` truncation at the tree level (the artifact gate is the packaged-archive counterpart).+- **Manifest generation extracted** into `Hydra.ManifestGeneration`, and the structurally-unneeded #607+  sed shims dropped ([#622](https://github.com/CategoricalData/hydra/issues/622)).+- **Release-verification signing fix** ([#441](https://github.com/CategoricalData/hydra/issues/441)):+  sign the reproducible uncompressed `.tar` and verify the `.asc` against the GitHub Release asset.+- **Java CI signing gate** ([#591](https://github.com/CategoricalData/hydra/issues/591)): `publishToMavenLocal`+  skips gpg signing when no key is present.++### Internal++- Version bump to 0.17.3; `hostVersion` advanced to 0.17.2 and the temporary #417 Java/Python local-host+  shims removed now that 0.17.2 is published on the registries+  ([#417](https://github.com/CategoricalData/hydra/issues/417)).+ ## [0.17.2] - 2026-07-28  Point release on the 0.17.x line. Themes: promotion of the generator's routing and manifest
hydra-haskell.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           hydra-haskell-version:        0.17.3+version:        0.17.4 synopsis:       Hydra's Haskell coder: emit Haskell source from Hydra modules description:    Hydra is an implementation of the LambdaGraph data model, which takes advantage of an isomorphism between labeled hypergraphs and typed lambda calculus: in Hydra, "graphs are programs, and programs are graphs". This package is Hydra's Haskell coder: it translates Hydra modules into Haskell source. The top-level entry point is moduleToHaskell (and moduleToHaskellModule for the structured AST). It builds on hydra-kernel. category:       Data@@ -44,6 +44,6 @@   build-depends:       base >=4.19.0 && <4.22     , containers >=0.6.7 && <0.8-    , hydra-kernel ==0.17.3+    , hydra-kernel ==0.17.4     , scientific >=0.3.7 && <0.4   default-language: Haskell2010
src/main/haskell/Hydra/Haskell/Coder.hs view
@@ -95,17 +95,18 @@ constantForTypeName tname = Strings.concat2 "_" (Names.localNameOf tname)  -- | Construct a Haskell module from a Hydra module and its definitions-constructModule :: Util.ModuleNames Syntax.ModuleName -> Packaging.Module -> [Packaging.Definition] -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Module-constructModule namespaces mod defs cx g =+constructModule :: S.Set String -> Util.ModuleNames Syntax.ModuleName -> Packaging.Module -> [Packaging.Definition] -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Module+constructModule overlaySubs namespaces mod defs cx g =        let hRaw = \namespace -> Packaging.unModuleName namespace           h =                   \namespace ->                     let raw = Packaging.unModuleName namespace                         parts = Strings.splitOn "." raw-                    in (Logic.ifElse (Logic.and (Equality.equal (Lists.length parts) 3) (Equality.equal (Lists.take 2 parts) [+                        sub = Strings.join "." (Lists.drop 2 parts)+                    in (Logic.ifElse (Logic.and (Logic.and (Equality.equal (Lists.length parts) 3) (Equality.equal (Lists.take 2 parts) [                       "hydra",-                      "lib"])) (Strings.concat2 "hydra.overlay.haskell.lib." (Strings.join "." (Lists.drop 2 parts))) raw)+                      "lib"])) (Sets.member sub overlaySubs)) (Strings.concat2 "hydra.overlay.haskell.lib." sub) raw)           createDeclarations =                   \def -> case def of                     Packaging.DefinitionType v0 ->@@ -584,17 +585,17 @@ keyHaskellVar = Core.Name "haskellVar"  -- | Convert a Hydra module to Haskell source code as a filepath-to-content map-moduleToHaskell :: Packaging.Module -> [Packaging.Definition] -> t0 -> Graph.Graph -> Either Errors.Error (M.Map String String)-moduleToHaskell mod defs cx g =-    Eithers.bind (moduleToHaskellModule mod defs cx g) (\hsmod ->+moduleToHaskell :: S.Set String -> Packaging.Module -> [Packaging.Definition] -> t0 -> Graph.Graph -> Either Errors.Error (M.Map String String)+moduleToHaskell overlaySubs mod defs cx g =+    Eithers.bind (moduleToHaskellModule overlaySubs mod defs cx g) (\hsmod ->       let s = Serialization.printExpr (Serialization.parenthesize (Serde.moduleToExpr hsmod))           filepath = Names.moduleNameToFilePath Util.CaseConventionPascal (File.FileExtension "hs") (Packaging.moduleName mod)       in (Right (Maps.singleton filepath s)))  -- | Convert a Hydra module and definitions to a Haskell module AST-moduleToHaskellModule :: Packaging.Module -> [Packaging.Definition] -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Module-moduleToHaskellModule mod defs cx g =-    Eithers.bind (Utils.namespacesForModule mod cx g) (\namespaces -> constructModule namespaces mod defs cx g)+moduleToHaskellModule :: S.Set String -> Packaging.Module -> [Packaging.Definition] -> t0 -> Graph.Graph -> Either Errors.Error Syntax.Module+moduleToHaskellModule overlaySubs mod defs cx g =+    Eithers.bind (Utils.namespacesForModule mod cx g) (\namespaces -> constructModule overlaySubs namespaces mod defs cx g)  -- | Generate Haskell declarations for type and field name constants nameDecls :: Util.ModuleNames Syntax.ModuleName -> Core.Name -> Core.Type -> [Syntax.Declaration]