Cabal revisions of idna2008-1.0.0.1
Hackage metadata revisions edit the .cabal file after upload; each diff below is one revision.
revision 1
-cabal-version: 3.0--name: idna2008-version: 1.0.0.1-synopsis: Strict IDNA2008 for Haskell-description:- A Haskell library for parsing and validating internationalized domain- names, which may contain characters from non-Latin scripts (Greek,- Hebrew, Arabic, CJK, ...) alongside the conventional letters, digits,- and hyphens.- .- Given a domain name as the user typed it, the library checks- that every label is well-formed, encodes any non-ASCII labels- into their ACE-prefixed form for the wire, tells the- caller what kind of label each one is, and (optionally)- renders the parsed name back to display form.- .- A single domain name often mixes several kinds of labels.- The library reports each label as one of: a conventional- hostname-style letter-digit-hyphen label, a legacy reserved- label, an internationalized label encoded as Punycode, an- @\"xn--\"@-prefix that turns out not to decode cleanly, a- Unicode label, an underscore-prefixed service-discovery- label (e.g. @_25._tcp@, @_dmarc@), an arbitrary-bytes label,- or the DNS wildcard. Most existing IDNA libraries don't- make these distinctions; this library does.- .- Strict IDNA2008. Some browsers and language standard- libraries use a more permissive variant of the IDNA standard- that accepts characters strict IDNA2008 rejects; this- library does not use that variant.- .- Originally factored out of the @dnsbase@ library; conformance- test vectors are published as JSON for reuse by ports to- other languages.--author: Viktor Dukhovni-maintainer: ietf-dane@dukhovni.org-copyright: 2026 Viktor Dukhovni-license: BSD-3-Clause-license-file: LICENSE-category: Text-homepage: https://github.com/dnsbase/idna2008-bug-reports: https://github.com/dnsbase/idna2008/issues-build-type: Simple-tested-with: GHC == 9.6.7- , GHC == 9.8.4- , GHC == 9.10.3- , GHC == 9.12.4- , GHC == 9.14.1---- The Unicode version the library's generated tables track. This is--- the single source of truth: 'internal/tools/update' uses it as the--- default version to fetch the UCD inputs from, and the--- 'unicode-conformance' test suite uses it to fetch the matching--- IdnaTestV2.txt and IdnaMappingTable.txt files. Bump this value--- when re-running 'internal/tools/update' against a new Unicode--- release. The @x-@ prefix marks this as a custom Cabal field that--- the cabal tool ignores but other consumers can read.-x-unicode-version: 17.0.0--extra-doc-files:- CHANGELOG.md- README.md---- Gzip-compressed snapshots of the UTS #46 reference data the--- 'unicode-conformance' test suite consults. Bundled in the source--- distribution so 'cabal test' has no network dependency. The--- 'internal/tools/update' script regenerates these whenever the--- 'x-unicode-version' field above is bumped. Gzip is used rather--- than xz so that the test suite can rely on the Haskell @zlib@--- package (which ships everywhere) rather than @lzma@ (which needs--- the liblzma C library wired up through pkg-config).-extra-source-files:- internal/tools/genIdnaBidi.py- internal/tools/genIdnaCombining.py- internal/tools/genIdnaDerive.py- internal/tools/genIdnaEmoji.py- internal/tools/genIdnaJoining.py- internal/tools/genIdnaNFC.py- internal/tools/genIdnaNFCTables.py- internal/tools/genIdnaProperty.py- internal/tools/genIdnaScript.py- internal/tools/genIdnaSimpleLower.py- internal/tools/genIdnaWidth.py- internal/tools/update- tests/data/idna-test-v2-expected-diffs.txt- tests/data/IdnaMappingTable.txt.gz- tests/data/IdnaTestV2.txt.gz- tests/README.md- tests/vectors.json--source-repository head- type: git- location: https://github.com/dnsbase/idna2008.git--common all- ghc-options: -O2 -Wall- default-language: GHC2021- default-extensions:- BangPatterns- BlockArguments- MultiWayIf- PatternSynonyms- StrictData--common deps- build-depends:- base >=4.18 && <5- , bytestring >=0.11 && <0.13- , primitive >=0.9 && <0.10- , template-haskell >=2.20 && <2.25- , text >=2.0 && <2.2---- Narrowly-scoped private sublibrary holding only--- 'Text.IDNA2008.Internal.Punycode'. Its sole reason for--- existing is to let the @punycode@ test suite (which exercises--- the codec against RFC 3492 section 7.1 vectors as raw--- round-trips) import the module directly without forcing the--- entire @Text.IDNA2008.Internal.*@ surface into either the--- public Hackage API or Haddock's view. We keep the sublibrary--- as small as possible because @cabal haddock@ has known issues--- generating documentation when private sublibraries carry a--- large module set; the rest of the Internal.* modules continue--- to live as @other-modules@ of the main library.-library punycode-internal- import: all, deps- visibility: private- hs-source-dirs: internal-punycode- exposed-modules:- Text.IDNA2008.Internal.Punycode--library- import: all, deps- hs-source-dirs: src internal- build-depends:- idna2008:punycode-internal- exposed-modules:- Text.IDNA2008- Text.IDNA2008.Wire- other-modules:- Text.IDNA2008.Internal.Bidi- Text.IDNA2008.Internal.Bidi.Data- Text.IDNA2008.Internal.Case- Text.IDNA2008.Internal.Case.Data- Text.IDNA2008.Internal.Combining- Text.IDNA2008.Internal.Combining.Data- Text.IDNA2008.Internal.Emoji- Text.IDNA2008.Internal.Emoji.Data- Text.IDNA2008.Internal.Error- Text.IDNA2008.Internal.Flags- Text.IDNA2008.Internal.Joining- Text.IDNA2008.Internal.Joining.Data- Text.IDNA2008.Internal.LabelForm- Text.IDNA2008.Internal.LabelFormSet- Text.IDNA2008.Internal.LabelInfo- Text.IDNA2008.Internal.NFC- Text.IDNA2008.Internal.NFC.Data- Text.IDNA2008.Internal.NFC.Tables- Text.IDNA2008.Internal.NFC.Tables.Data- Text.IDNA2008.Internal.Parse- Text.IDNA2008.Internal.Property- Text.IDNA2008.Internal.Property.Data- Text.IDNA2008.Internal.Ranges- Text.IDNA2008.Internal.Script- Text.IDNA2008.Internal.Script.Data- Text.IDNA2008.Internal.Tokens- Text.IDNA2008.Internal.UTS46- Text.IDNA2008.Internal.Width- Text.IDNA2008.Internal.Width.Data---- RFC 3492 section 7.1 Punycode vectors, tested as raw codec--- round-trips through the internal Punycode module rather than--- through the full IDNA pipeline. The vectors live as Haskell--- code (not in @tests/vectors.json@) because they exercise a--- module whose API is not part of the public IDNA library--- surface.-test-suite punycode- import: all, deps- type: exitcode-stdio-1.0- hs-source-dirs: tests- main-is: punycode.hs- -- @idna2008@ is listed here even though the test only imports- -- from @idna2008:punycode-internal@. Without this fictional- -- dependency, building under @--enable-coverage@ races: Cabal- -- starts linking the punycode test before it has finished- -- building (and registering) the main library, which the- -- coverage-instrumented test links against by way of HPC's- -- cross-component tixing. Listing @idna2008@ explicitly forces- -- the build order, so a clean coverage build works on the first- -- attempt without needing a separate 'cabal build all' pass.- build-depends:- idna2008- , idna2008:punycode-internal- , tasty >=1.5 && <1.6- , tasty-hunit >=0.10 && <0.11---- Unicode @IdnaTestV2.txt@ conformance suite. Reads--- XZ-compressed snapshots of the UTS \#46 reference data bundled--- under @tests/data/@ (see 'extra-source-files') so 'cabal test'--- runs offline. Known systematic disagreements between strict--- IDNA2008 and UTS #46 Nontransitional are listed in--- @tests\/data\/idna-test-v2-expected-diffs.txt@; an additional--- auto-skip uses @IdnaMappingTable.txt@ to identify codepoints--- where UTS \#46's preprocessing legitimately differs from strict--- IDNA2008. An @IDNA_TEST_V2_FILE@\/@IDNA_MAPPING_TABLE_FILE@--- environment variable can point at an uncompressed local copy--- to test against a different Unicode version without re-bundling.-test-suite unicode-conformance- import: all, deps- type: exitcode-stdio-1.0- hs-source-dirs: tests- main-is: unicode_conformance.hs- build-depends:- idna2008- , idna2008:punycode-internal- , containers >=0.6 && <0.9- , directory >=1.0 && <1.4- , tasty >=1.5 && <1.6- , tasty-hunit >=0.10 && <0.11- , zlib >=0.6 && <0.8--test-suite conformance- import: all, deps- type: exitcode-stdio-1.0- hs-source-dirs: tests- main-is: conformance.hs- build-depends:- idna2008- , idna2008:punycode-internal- , aeson >=2.2 && <2.4- , tasty >=1.5 && <1.6- , tasty-hunit >=0.10 && <0.11+cabal-version: 3.0 + +name: idna2008 +version: 1.0.0.1 +x-revision: 1 +synopsis: Strict IDNA2008 for Haskell +description: + A Haskell library for parsing and validating internationalized domain + names, which may contain characters from non-Latin scripts (Greek, + Hebrew, Arabic, CJK, ...) alongside the conventional letters, digits, + and hyphens. + + Given a domain name as the user typed it, the library checks + that every label is well-formed, encodes any non-ASCII labels + into their ACE-prefixed form for the wire, tells the + caller what kind of label each one is, and (optionally) + renders the parsed name back to display form. + + A single domain name often mixes several kinds of labels. + The library reports each label as one of: a conventional + hostname-style letter-digit-hyphen label, a legacy reserved + label, an internationalized label encoded as Punycode, an + @\"xn--\"@-prefix that turns out not to decode cleanly, a + Unicode label, an underscore-prefixed service-discovery + label (e.g. @_25._tcp@, @_dmarc@), an arbitrary-bytes label, + or the DNS wildcard. Most existing IDNA libraries don't + make these distinctions; this library does. + + Strict IDNA2008. Some browsers and language standard + libraries use a more permissive variant of the IDNA standard + that accepts characters strict IDNA2008 rejects; this + library does not use that variant. + + Originally factored out of the @dnsbase@ library; conformance + test vectors are published as JSON for reuse by ports to + other languages. + +author: Viktor Dukhovni +maintainer: ietf-dane@dukhovni.org +copyright: 2026 Viktor Dukhovni +license: BSD-3-Clause +license-file: LICENSE +category: Text +homepage: https://github.com/dnsbase/idna2008 +bug-reports: https://github.com/dnsbase/idna2008/issues +build-type: Simple +tested-with: GHC == 9.6.7 + , GHC == 9.8.4 + , GHC == 9.10.3 + , GHC == 9.12.4 + , GHC == 9.14.1 + +-- The Unicode version the library's generated tables track. This is +-- the single source of truth: 'internal/tools/update' uses it as the +-- default version to fetch the UCD inputs from, and the +-- 'unicode-conformance' test suite uses it to fetch the matching +-- IdnaTestV2.txt and IdnaMappingTable.txt files. Bump this value +-- when re-running 'internal/tools/update' against a new Unicode +-- release. The @x-@ prefix marks this as a custom Cabal field that +-- the cabal tool ignores but other consumers can read. +x-unicode-version: 17.0.0 + +extra-doc-files: + CHANGELOG.md + README.md + +-- Gzip-compressed snapshots of the UTS #46 reference data the +-- 'unicode-conformance' test suite consults. Bundled in the source +-- distribution so 'cabal test' has no network dependency. The +-- 'internal/tools/update' script regenerates these whenever the +-- 'x-unicode-version' field above is bumped. Gzip is used rather +-- than xz so that the test suite can rely on the Haskell @zlib@ +-- package (which ships everywhere) rather than @lzma@ (which needs +-- the liblzma C library wired up through pkg-config). +extra-source-files: + internal/tools/genIdnaBidi.py + internal/tools/genIdnaCombining.py + internal/tools/genIdnaDerive.py + internal/tools/genIdnaEmoji.py + internal/tools/genIdnaJoining.py + internal/tools/genIdnaNFC.py + internal/tools/genIdnaNFCTables.py + internal/tools/genIdnaProperty.py + internal/tools/genIdnaScript.py + internal/tools/genIdnaSimpleLower.py + internal/tools/genIdnaWidth.py + internal/tools/update + tests/data/idna-test-v2-expected-diffs.txt + tests/data/IdnaMappingTable.txt.gz + tests/data/IdnaTestV2.txt.gz + tests/README.md + tests/vectors.json + +source-repository head + type: git + location: https://github.com/dnsbase/idna2008.git + +common all + ghc-options: -O2 -Wall + default-language: GHC2021 + default-extensions: + BangPatterns + BlockArguments + MultiWayIf + PatternSynonyms + StrictData + +common deps + build-depends: + base >=4.18 && <5 + , bytestring >=0.11 && <0.13 + , primitive >=0.9 && <0.10 + , template-haskell >=2.20 && <2.25 + , text >=2.0 && <2.2 + +-- Narrowly-scoped private sublibrary holding only +-- 'Text.IDNA2008.Internal.Punycode'. Its sole reason for +-- existing is to let the @punycode@ test suite (which exercises +-- the codec against RFC 3492 section 7.1 vectors as raw +-- round-trips) import the module directly without forcing the +-- entire @Text.IDNA2008.Internal.*@ surface into either the +-- public Hackage API or Haddock's view. We keep the sublibrary +-- as small as possible because @cabal haddock@ has known issues +-- generating documentation when private sublibraries carry a +-- large module set; the rest of the Internal.* modules continue +-- to live as @other-modules@ of the main library. +library punycode-internal + import: all, deps + visibility: private + hs-source-dirs: internal-punycode + exposed-modules: + Text.IDNA2008.Internal.Punycode + +library + import: all, deps + hs-source-dirs: src internal + build-depends: + idna2008:punycode-internal + exposed-modules: + Text.IDNA2008 + Text.IDNA2008.Wire + other-modules: + Text.IDNA2008.Internal.Bidi + Text.IDNA2008.Internal.Bidi.Data + Text.IDNA2008.Internal.Case + Text.IDNA2008.Internal.Case.Data + Text.IDNA2008.Internal.Combining + Text.IDNA2008.Internal.Combining.Data + Text.IDNA2008.Internal.Emoji + Text.IDNA2008.Internal.Emoji.Data + Text.IDNA2008.Internal.Error + Text.IDNA2008.Internal.Flags + Text.IDNA2008.Internal.Joining + Text.IDNA2008.Internal.Joining.Data + Text.IDNA2008.Internal.LabelForm + Text.IDNA2008.Internal.LabelFormSet + Text.IDNA2008.Internal.LabelInfo + Text.IDNA2008.Internal.NFC + Text.IDNA2008.Internal.NFC.Data + Text.IDNA2008.Internal.NFC.Tables + Text.IDNA2008.Internal.NFC.Tables.Data + Text.IDNA2008.Internal.Parse + Text.IDNA2008.Internal.Property + Text.IDNA2008.Internal.Property.Data + Text.IDNA2008.Internal.Ranges + Text.IDNA2008.Internal.Script + Text.IDNA2008.Internal.Script.Data + Text.IDNA2008.Internal.Tokens + Text.IDNA2008.Internal.UTS46 + Text.IDNA2008.Internal.Width + Text.IDNA2008.Internal.Width.Data + +-- RFC 3492 section 7.1 Punycode vectors, tested as raw codec +-- round-trips through the internal Punycode module rather than +-- through the full IDNA pipeline. The vectors live as Haskell +-- code (not in @tests/vectors.json@) because they exercise a +-- module whose API is not part of the public IDNA library +-- surface. +test-suite punycode + import: all, deps + type: exitcode-stdio-1.0 + hs-source-dirs: tests + main-is: punycode.hs + -- @idna2008@ is listed here even though the test only imports + -- from @idna2008:punycode-internal@. Without this fictional + -- dependency, building under @--enable-coverage@ races: Cabal + -- starts linking the punycode test before it has finished + -- building (and registering) the main library, which the + -- coverage-instrumented test links against by way of HPC's + -- cross-component tixing. Listing @idna2008@ explicitly forces + -- the build order, so a clean coverage build works on the first + -- attempt without needing a separate 'cabal build all' pass. + build-depends: + idna2008 + , idna2008:punycode-internal + , tasty >=1.5 && <1.6 + , tasty-hunit >=0.10 && <0.11 + +-- Unicode @IdnaTestV2.txt@ conformance suite. Reads +-- XZ-compressed snapshots of the UTS \#46 reference data bundled +-- under @tests/data/@ (see 'extra-source-files') so 'cabal test' +-- runs offline. Known systematic disagreements between strict +-- IDNA2008 and UTS #46 Nontransitional are listed in +-- @tests\/data\/idna-test-v2-expected-diffs.txt@; an additional +-- auto-skip uses @IdnaMappingTable.txt@ to identify codepoints +-- where UTS \#46's preprocessing legitimately differs from strict +-- IDNA2008. An @IDNA_TEST_V2_FILE@\/@IDNA_MAPPING_TABLE_FILE@ +-- environment variable can point at an uncompressed local copy +-- to test against a different Unicode version without re-bundling. +test-suite unicode-conformance + import: all, deps + type: exitcode-stdio-1.0 + hs-source-dirs: tests + main-is: unicode_conformance.hs + build-depends: + idna2008 + , idna2008:punycode-internal + , containers >=0.6 && <0.9 + , directory >=1.0 && <1.4 + , tasty >=1.5 && <1.6 + , tasty-hunit >=0.10 && <0.11 + , zlib >=0.6 && <0.8 + +test-suite conformance + import: all, deps + type: exitcode-stdio-1.0 + hs-source-dirs: tests + main-is: conformance.hs + build-depends: + idna2008 + , idna2008:punycode-internal + , aeson >=2.2 && <2.4 + , tasty >=1.5 && <1.6 + , tasty-hunit >=0.10 && <0.11