packages feed

hydra-jvm 0.17.7 → 0.18.0

raw patch · 4 files changed

+181/−32 lines, 4 filesdep ~hydra-kernelPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: hydra-kernel

API changes (from Hackage documentation)

+ Hydra.Jvm.Dsl.Serde: escapeJavaChar :: TypedTerm Int -> TypedTerm String
+ Hydra.Jvm.Dsl.Serde: escapeJavaString :: TypedTerm String -> TypedTerm String
+ Hydra.Jvm.Dsl.Serde: hexDigit :: TypedTerm Int -> TypedTerm Int
+ Hydra.Jvm.Dsl.Serde: javaUnicodeEscape :: TypedTerm Int -> TypedTerm String
+ Hydra.Jvm.Dsl.Serde: padHex4 :: TypedTerm Int -> TypedTerm String

Files

CHANGELOG.md view
@@ -15,6 +15,86 @@  --- +## [0.18.0] - 2026-09-29++Module-naming systematization release: every kernel and package module moves onto a uniform+`hydra.core.*` / `hydra.<pkg>.*` grammar, completing the package ⊃ module ⊃ definition containment+tower. The rename touches every module, definition, and cross-host reference in the codebase; this+release exists primarily to ship it as its own coordinated batch. Also lands the translingual regex+primitive pipeline and several silent-correctness fixes in the coder layer.++### Highlights++- **Module-name grammar systematization** ([#729](https://github.com/CategoricalData/hydra/issues/729)):+  every `hydra.*` module renamed onto a uniform package-derived prefix — kernel modules move to+  `hydra.core.*`, package modules to `hydra.<pkg>.*` — closing the long-standing inconsistency where+  a package name had no structural relationship to the module names it contained. The rename spans+  every host (Haskell, Java, Python, Scala, TypeScript, all four Lisp dialects) and required fixing+  stale namespace references, overlay-directory paths, and `hostOverrides` shims across every driver+  and bootstrap script that had hardcoded the old grammar. Further consolidation (a structurally+  enforced package↔prefix law) is tracked for 0.18.1. The kernel package itself is still published as+  `hydra-kernel` (its modules are under `hydra.core.*`); the `hydra-core` package rename #729 called for+  is under review because that name is taken on PyPI and npm+  ([#770](https://github.com/CategoricalData/hydra/issues/770)).+- **Translingual regex primitives** ([#603](https://github.com/CategoricalData/hydra/issues/603)):+  `hydra.lib.regex` primitives (`find`, `findAll`, `matches`, `replace`, `replaceAll`, `split`) now run+  every pattern through the shared `hydra.regex` parse/print pipeline instead of handing raw pattern+  strings to each host's native engine, so a pattern means the same thing on every host. Includes a+  host-independent conformance suite and a leftmost-longest alternation fix in the PCRE/POSIX printers.+- **Silent-corruption fixes across the coder layer**+  ([#744](https://github.com/CategoricalData/hydra/issues/744),+  [#765](https://github.com/CategoricalData/hydra/issues/765),+  [#649](https://github.com/CategoricalData/hydra/issues/649)): fixed data-corrupting bugs in the+  JSON-Schema/Avro/GraphQL/GraphSON/Protobuf coders (extended integer widths, map-key handling), the+  kernel's encode/decode generators (reversed type-parameter order on 2+-param polymorphic types), and+  the Python coder (silently dropping a module's types when types and terms share a file path).+- **Self-hosted specification docs** ([#723](https://github.com/CategoricalData/hydra/issues/723)):+  the module-reference pages under `docs/specification/` are now generated directly from the kernel+  (`bin/regenerate-spec.sh`) via a new metadata-only doc coder, rather than hand-maintained.++### New features++- **[#603](https://github.com/CategoricalData/hydra/issues/603)** host-independent regex conformance+  suite covering the minimal-core grammar (literals, classes, quantifiers, alternation, anchors,+  grouping) across all 9 hosts.+- **[#723](https://github.com/CategoricalData/hydra/issues/723)** `hydra.markdown` type module and+  `generateModuleDoc`, the metadata-only doc coder backing the self-generated spec pages.+- **[#382](https://github.com/CategoricalData/hydra/issues/382)** the Rust coder is split out of+  `hydra-ext` into its own first-class `hydra-rust` package.++### Bug fixes++- **[#744](https://github.com/CategoricalData/hydra/issues/744)** silent data corruption in+  JSON-Schema/Avro/GraphQL/GraphSON/Protobuf coders for extended integer widths and map-key handling.+- **[#765](https://github.com/CategoricalData/hydra/issues/765)** kernel encode/decode generators+  emitted reversed type-parameter order for 2+-param polymorphic types.+- **[#649](https://github.com/CategoricalData/hydra/issues/649)** Python coder silently dropped a+  module's types when types and terms targeted the same output file path.+- **[#572](https://github.com/CategoricalData/hydra/issues/572)** TypeScript kernel-JSON test+  bridge's compact-form decode heuristic mishandled nullary union arms.+- **[#761](https://github.com/CategoricalData/hydra/issues/761)** cold-seed generation ignored+  `hostOverrides.java=local`, silently pulling the published Java host jar instead.+- **[#736](https://github.com/CategoricalData/hydra/issues/736)** Java build now pins JDK 11 via a+  Gradle toolchain block, instead of depending on ambient `JAVA_HOME`.++### Improvements++- **[#327](https://github.com/CategoricalData/hydra/issues/327)** new `hydra.diff` schema-diff type+  module; `Term.Inject` comparison is now by variant name.+- **[#573](https://github.com/CategoricalData/hydra/issues/573)** per-registry publish sets (Hackage,+  Maven, PyPI, npm) are now derived from the package registry itself instead of 13 hand-maintained+  lists — closes a recurring class of silent release-time drift.+- **[#735](https://github.com/CategoricalData/hydra/issues/735)** cross-host decimal-scale test+  filtering now driven by a translingual `scaleDistinct` capability tag instead of hand-copied+  per-host skip lists.++### Documentation++- **[#655](https://github.com/CategoricalData/hydra/issues/655)** documented the overlay-emission+  "implementation wins" decision for bare primitive references (`docs/overlays.md`).++---+ ## [0.17.7] - 2026-09-14  Correctness-hardening point release on the 0.17.x line, consolidating the 0.17.6 breaking batch. It
hydra-jvm.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           hydra-jvm-version:        0.17.7+version:        0.18.0 synopsis:       Shared JVM support for Hydra's Java, Scala, and Clojure coders 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". Common JVM support for Hydra (shared by hydra-java, hydra-scala, hydra-clojure) category:       Data@@ -27,6 +27,7 @@  library   exposed-modules:+      Hydra.Jvm.Dsl.Serde       Hydra.Jvm.Serde   other-modules:       Paths_hydra_jvm@@ -34,6 +35,6 @@       src/main/haskell   build-depends:       base >=4.19.0 && <4.22-    , hydra-kernel ==0.17.7+    , hydra-kernel ==0.18.0     , scientific >=0.3.7 && <0.4   default-language: Haskell2010
+ src/main/haskell/Hydra/Jvm/Dsl/Serde.hs view
@@ -0,0 +1,68 @@+-- Note: this is an automatically generated file. Do not edit.++-- | DSL functions for hydra.jvm.serde++module Hydra.Jvm.Dsl.Serde where++import qualified Hydra.Core.Ast as Ast+import qualified Hydra.Core.Classes as Classes+import qualified Hydra.Core.Coders as Coders+import qualified Hydra.Core.Error.Checking as Checking+import qualified Hydra.Core.Error.Model as ErrorModel+import qualified Hydra.Core.Error.Packaging as ErrorPackaging+import qualified Hydra.Core.Errors as Errors+import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Json.Model as JsonModel+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Parsing as Parsing+import qualified Hydra.Core.Paths as Paths+import qualified Hydra.Core.Query as Query+import qualified Hydra.Core.Relational as Relational+import qualified Hydra.Core.Tabular as Tabular+import qualified Hydra.Core.Testing as Testing+import qualified Hydra.Core.Topology as Topology+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Core.Typing as Typing+import qualified Hydra.Core.Util as Util+import qualified Hydra.Core.Validation as Validation+import qualified Hydra.Core.Variants as Variants+import qualified Hydra.Jvm.Serde as Serde+import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)+import qualified Data.Scientific as Sci+import Data.Void++-- | DSL reference to hydra.jvm.serde.escapeJavaChar+escapeJavaChar :: Typed.TypedTerm Int -> Typed.TypedTerm String+escapeJavaChar arg0 =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.jvm.serde.escapeJavaChar")),+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))++-- | DSL reference to hydra.jvm.serde.escapeJavaString+escapeJavaString :: Typed.TypedTerm String -> Typed.TypedTerm String+escapeJavaString arg0 =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.jvm.serde.escapeJavaString")),+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))++-- | DSL reference to hydra.jvm.serde.hexDigit+hexDigit :: Typed.TypedTerm Int -> Typed.TypedTerm Int+hexDigit arg0 =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.jvm.serde.hexDigit")),+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))++-- | DSL reference to hydra.jvm.serde.javaUnicodeEscape+javaUnicodeEscape :: Typed.TypedTerm Int -> Typed.TypedTerm String+javaUnicodeEscape arg0 =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.jvm.serde.javaUnicodeEscape")),+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))++-- | DSL reference to hydra.jvm.serde.padHex4+padHex4 :: Typed.TypedTerm Int -> Typed.TypedTerm String+padHex4 arg0 =+    Typed.TypedTerm (Model.TermApplication (Model.Application {+      Model.applicationFunction = (Model.TermVariable (Model.Name "hydra.jvm.serde.padHex4")),+      Model.applicationArgument = (Typed.unTypedTerm arg0)}))
src/main/haskell/Hydra/Jvm/Serde.hs view
@@ -4,36 +4,36 @@  module Hydra.Jvm.Serde where -import qualified Hydra.Ast as Ast-import qualified Hydra.Classes as Classes-import qualified Hydra.Coders as Coders-import qualified Hydra.Core as Core-import qualified Hydra.Error.Checking as Checking-import qualified Hydra.Error.Core as ErrorCore-import qualified Hydra.Error.Packaging as ErrorPackaging-import qualified Hydra.Errors as Errors-import qualified Hydra.Graph as Graph-import qualified Hydra.Json.Model as Model-import qualified Hydra.Overlay.Haskell.Lib.Equality as Equality-import qualified Hydra.Overlay.Haskell.Lib.Lists as Lists-import qualified Hydra.Overlay.Haskell.Lib.Logic as Logic-import qualified Hydra.Overlay.Haskell.Lib.Math as Math-import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals-import qualified Hydra.Overlay.Haskell.Lib.Ordering as Ordering-import qualified Hydra.Overlay.Haskell.Lib.Strings as Strings-import qualified Hydra.Packaging as Packaging-import qualified Hydra.Parsing as Parsing-import qualified Hydra.Paths as Paths-import qualified Hydra.Query as Query-import qualified Hydra.Relational as Relational-import qualified Hydra.Tabular as Tabular-import qualified Hydra.Testing as Testing-import qualified Hydra.Topology as Topology-import qualified Hydra.Typed as Typed-import qualified Hydra.Typing as Typing-import qualified Hydra.Util as Util-import qualified Hydra.Validation as Validation-import qualified Hydra.Variants as Variants+import qualified Hydra.Core.Ast as Ast+import qualified Hydra.Core.Classes as Classes+import qualified Hydra.Core.Coders as Coders+import qualified Hydra.Core.Error.Checking as Checking+import qualified Hydra.Core.Error.Model as ErrorModel+import qualified Hydra.Core.Error.Packaging as ErrorPackaging+import qualified Hydra.Core.Errors as Errors+import qualified Hydra.Core.Graph as Graph+import qualified Hydra.Core.Json.Model as JsonModel+import qualified Hydra.Core.Overlay.Haskell.Lib.Equality as Equality+import qualified Hydra.Core.Overlay.Haskell.Lib.Lists as Lists+import qualified Hydra.Core.Overlay.Haskell.Lib.Logic as Logic+import qualified Hydra.Core.Overlay.Haskell.Lib.Math as Math+import qualified Hydra.Core.Overlay.Haskell.Lib.Optionals as Optionals+import qualified Hydra.Core.Overlay.Haskell.Lib.Ordering as Ordering+import qualified Hydra.Core.Overlay.Haskell.Lib.Strings as Strings+import qualified Hydra.Core.Model as Model+import qualified Hydra.Core.Packaging as Packaging+import qualified Hydra.Core.Parsing as Parsing+import qualified Hydra.Core.Paths as Paths+import qualified Hydra.Core.Query as Query+import qualified Hydra.Core.Relational as Relational+import qualified Hydra.Core.Tabular as Tabular+import qualified Hydra.Core.Testing as Testing+import qualified Hydra.Core.Topology as Topology+import qualified Hydra.Core.Typed as Typed+import qualified Hydra.Core.Typing as Typing+import qualified Hydra.Core.Util as Util+import qualified Hydra.Core.Validation as Validation+import qualified Hydra.Core.Variants as Variants import Prelude hiding  (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines) import qualified Data.Scientific as Sci import Data.Void