Cabal revisions of dnsbase-1.0.2.0
Hackage metadata revisions edit the .cabal file after upload; each diff below is one revision.
revision 1
-cabal-version: 3.12-name: dnsbase-version: 1.0.2.0-build-type: Simple-synopsis: Stub DNS resolver with a typed RData model and value-based extension API--description: A DNS stub resolver library for Haskell. The IO layer is- derived from Kazu Yamamoto's @dns@ package; what @dnsbase@- adds is a rich set of RRtypes and a runtime-extensible- RRtype data model with a simple configuration interface.- .- Every RR type's payload is modeled as a dedicated Haskell- type — these include, for example, the recent SVCB and HTTPS- service-binding records, with extensible up-to-date SvcParam- coverage. EDNS option support includes Extended DNS Errors- (EDE) whose info-code name table is user-extensible. Coverage- of both widely used and historical DNS RR types is comprehensive- — only the most marginal obsolete or experimental types remain- unimplemented.- .- Applications can extend the library with any /missing/- RRTYPEs, EDNS(0) options, SVCB and HTTPS SvcParam values.- Application-specified data types take precedence over any- existing or later added built-in implementations.- .- Extensions are registered by constructing a pure resolver- configuration value, rather than via IO actions on mutable- global state. Adding custom data types to the library does not- require a source-code fork. See the- <https://hackage-content.haskell.org/package/dnsbase-1.0.0.0/candidate/docs/Net-DNSBase-Extensible.html Net.DNSBase.Extensible>- module for- <https://hackage-content.haskell.org/package/dnsbase-1.0.0.0/candidate/docs/Net-DNSBase-Extensible.html#customRRtype detailed examples>- .- The library has been deployed as part of a DANE/DNSSEC survey- for many years, and performs ~108 million queries each day,- over approximately 3.5 hours (while also saving results to a- database and performing some SMTP STARTTLS probes). Domain-name- parsing supports 8-bit RFC 1035 names directly and also- supports pluggable @Text@-based parsers via external- libraries, for example from the companion- <https://hackage.haskell.org/package/idna2008 idna2008>- package.- .--license: BSD-3-Clause-license-files: LICENSE- LICENSE.dns-author: Viktor Dukhovni-maintainer: ietf-dane@dukhovni.org-homepage: https://github.com/dnsbase/dnsbase-bug-reports: https://github.com/dnsbase/dnsbase/issues-copyright: 2018-2026 Viktor Dukhovni-category: Network-tested-with: GHC == 9.10.3- , GHC == 9.12.3-extra-source-files:- CHANGELOG.md- README.md--common all- ghc-options: -O2 -Wall- default-language: GHC2024- default-extensions:- BlockArguments- DerivingVia- MultiWayIf- PatternSynonyms- RequiredTypeArguments- StrictData- TypeFamilies- ViewPatterns--common deps- build-depends:- base >=4.20 && <5- , base16 ^>=1.0- , base32 >=0.3 && <0.5- , base64 ^>=1.0- , bytestring >=0.10.8 && <0.13- , crypton >=0.30 && <1.2- , containers >=0.6 && <0.9- , deepseq ^>=1.5- , hashtables >=1.2 && <1.6- , hourglass ^>=0.2.12- , iproute ^>=1.7.9- , monad-ste ^>=0.1- , mtl >=2.2 && <2.4- , network >=3.1 && <3.3- , primitive >=0.8 && <0.10- , template-haskell >=2.22 && <2.25- , text >=2.0 && <2.2- , time >=1.11 && <1.16- , transformers >=0.5 && <2.7- , unordered-containers ^>=0.2---- Shared source layout for both the main library and the--- test-only internal library. Both compile the same .hs files--- under @src@ and @internal@; the two library stanzas differ--- only in which modules they expose.-common library-source- hs-source-dirs: src internal---- Test-only sub-library that exposes every module of the package.--- Tests @build-depends: dnsbase:internal@ instead of @dnsbase@ so--- they can reach internal modules without going through a hidden--- import. Built only when the package's test components are built.-library internal- import: all, deps, library-source- visibility: private- exposed-modules:- Net.DNSBase- Net.DNSBase.Bytes- Net.DNSBase.Decode.Domain- Net.DNSBase.Decode.State- Net.DNSBase.Domain- Net.DNSBase.EDNS- Net.DNSBase.EDNS.OptNum- Net.DNSBase.EDNS.Option- Net.DNSBase.EDNS.Option.ECS- Net.DNSBase.EDNS.Option.EDE- Net.DNSBase.EDNS.Option.NSID- Net.DNSBase.EDNS.Option.Opaque- Net.DNSBase.EDNS.Option.Secalgs- Net.DNSBase.Encode.Metric- Net.DNSBase.Encode.State- Net.DNSBase.Error- Net.DNSBase.Extensible- Net.DNSBase.Flags- Net.DNSBase.Lookup- Net.DNSBase.Message- Net.DNSBase.Nat16- Net.DNSBase.NonEmpty- Net.DNSBase.NsecTypes- Net.DNSBase.Opcode- Net.DNSBase.Present- Net.DNSBase.RCODE- Net.DNSBase.RData- Net.DNSBase.RData.A- Net.DNSBase.RData.CAA- Net.DNSBase.RData.CSYNC- Net.DNSBase.RData.Dnssec- Net.DNSBase.RData.NSEC- Net.DNSBase.RData.Obsolete- Net.DNSBase.RData.SOA- Net.DNSBase.RData.SRV- Net.DNSBase.RData.SVCB- Net.DNSBase.RData.SVCB.SPV- Net.DNSBase.RData.SVCB.SPVList- Net.DNSBase.RData.SVCB.SPVSet- Net.DNSBase.RData.SVCB.SVCParamKey- Net.DNSBase.RData.SVCB.SVCParamValue- Net.DNSBase.RData.TLSA- Net.DNSBase.RData.TXT- Net.DNSBase.RData.WKS- Net.DNSBase.RData.XNAME- Net.DNSBase.RR- Net.DNSBase.RRCLASS- Net.DNSBase.RRTYPE- Net.DNSBase.RRSet- Net.DNSBase.Resolver- Net.DNSBase.Secalgs- Net.DNSBase.Text- Net.DNSBase.Decode.Internal.Domain- Net.DNSBase.Decode.Internal.Message- Net.DNSBase.Decode.Internal.Option- Net.DNSBase.Decode.Internal.RData- Net.DNSBase.Decode.Internal.State- Net.DNSBase.EDNS.Internal.OptNum- Net.DNSBase.EDNS.Internal.Option- Net.DNSBase.EDNS.Internal.Option.Opaque- Net.DNSBase.Encode.Internal.Metric- Net.DNSBase.Encode.Internal.State- Net.DNSBase.Internal.Bytes- Net.DNSBase.Internal.Domain- Net.DNSBase.Internal.EDNS- Net.DNSBase.Internal.Error- Net.DNSBase.Internal.Flags- Net.DNSBase.Internal.Message- Net.DNSBase.Internal.NameComp- Net.DNSBase.Internal.Nat16- Net.DNSBase.Internal.Opcode- Net.DNSBase.Internal.Peer- Net.DNSBase.Internal.Present- Net.DNSBase.Internal.RCODE- Net.DNSBase.Internal.RData- Net.DNSBase.Internal.RR- Net.DNSBase.Internal.RRCLASS- Net.DNSBase.Internal.RRTYPE- Net.DNSBase.Internal.SockIO- Net.DNSBase.Internal.Text- Net.DNSBase.Internal.Transport- Net.DNSBase.Internal.Util- Net.DNSBase.RData.Internal.XNAME- Net.DNSBase.Resolver.Internal.Encoding- Net.DNSBase.Resolver.Internal.Parser- Net.DNSBase.Resolver.Internal.Types---- The main library. This is what downstream packages (and Hackage)--- see; @other-modules@ keeps the implementation hidden but compiled--- into the same library, so haddocks on internal symbols propagate--- to their public re-exports.-library- import: all, deps, library-source- exposed-modules:- Net.DNSBase- Net.DNSBase.Bytes- Net.DNSBase.Decode.Domain- Net.DNSBase.Decode.State- Net.DNSBase.Domain- Net.DNSBase.EDNS- Net.DNSBase.EDNS.Option- Net.DNSBase.EDNS.Option.ECS- Net.DNSBase.EDNS.Option.EDE- Net.DNSBase.EDNS.Option.NSID- Net.DNSBase.EDNS.Option.Opaque- Net.DNSBase.EDNS.Option.Secalgs- Net.DNSBase.EDNS.OptNum- Net.DNSBase.Encode.Metric- Net.DNSBase.Encode.State- Net.DNSBase.Error- Net.DNSBase.Extensible- Net.DNSBase.Flags- Net.DNSBase.Lookup- Net.DNSBase.Message- Net.DNSBase.Nat16- Net.DNSBase.NonEmpty- Net.DNSBase.NsecTypes- Net.DNSBase.Opcode- Net.DNSBase.Present- Net.DNSBase.RCODE- Net.DNSBase.RData- Net.DNSBase.RData.A- Net.DNSBase.RData.CAA- Net.DNSBase.RData.CSYNC- Net.DNSBase.RData.Dnssec- Net.DNSBase.RData.NSEC- Net.DNSBase.RData.Obsolete- Net.DNSBase.RData.SOA- Net.DNSBase.RData.SRV- Net.DNSBase.RData.SVCB- Net.DNSBase.RData.SVCB.SPV- Net.DNSBase.RData.SVCB.SPVList- Net.DNSBase.RData.SVCB.SPVSet- Net.DNSBase.RData.SVCB.SVCParamKey- Net.DNSBase.RData.SVCB.SVCParamValue- Net.DNSBase.RData.TLSA- Net.DNSBase.RData.TXT- Net.DNSBase.RData.WKS- Net.DNSBase.RData.XNAME- Net.DNSBase.Resolver- Net.DNSBase.RR- Net.DNSBase.RRCLASS- Net.DNSBase.RRSet- Net.DNSBase.RRTYPE- Net.DNSBase.Secalgs- Net.DNSBase.Text- other-modules:- Net.DNSBase.Decode.Internal.Domain- Net.DNSBase.Decode.Internal.Message- Net.DNSBase.Decode.Internal.Option- Net.DNSBase.Decode.Internal.RData- Net.DNSBase.Decode.Internal.State- Net.DNSBase.EDNS.Internal.OptNum- Net.DNSBase.EDNS.Internal.Option- Net.DNSBase.EDNS.Internal.Option.Opaque- Net.DNSBase.Encode.Internal.Metric- Net.DNSBase.Encode.Internal.State- Net.DNSBase.Internal.Bytes- Net.DNSBase.Internal.Domain- Net.DNSBase.Internal.EDNS- Net.DNSBase.Internal.Error- Net.DNSBase.Internal.Flags- Net.DNSBase.Internal.Message- Net.DNSBase.Internal.NameComp- Net.DNSBase.Internal.Nat16- Net.DNSBase.Internal.Opcode- Net.DNSBase.Internal.Peer- Net.DNSBase.Internal.Present- Net.DNSBase.Internal.RCODE- Net.DNSBase.Internal.RData- Net.DNSBase.Internal.RR- Net.DNSBase.Internal.RRCLASS- Net.DNSBase.Internal.RRTYPE- Net.DNSBase.Internal.SockIO- Net.DNSBase.Internal.Text- Net.DNSBase.Internal.Transport- Net.DNSBase.Internal.Util- Net.DNSBase.RData.Internal.XNAME- Net.DNSBase.Resolver.Internal.Encoding- Net.DNSBase.Resolver.Internal.Parser- Net.DNSBase.Resolver.Internal.Types---- Test framework dependencies, split out so individual stanzas--- can opt in.-common test-deps- build-depends:- tasty- , tasty-hunit- , tasty-quickcheck--common test- import: all, deps- hs-source-dirs: tests- build-depends: dnsbase:internal--test-suite domain- import: test- type: exitcode-stdio-1.0- main-is: domain.hs--test-suite literals- import: test- type: exitcode-stdio-1.0- main-is: literals.hs- other-modules: LiteralsParser--test-suite message- import: test- type: exitcode-stdio-1.0- main-is: message.hs--test-suite extensibility- import: test, test-deps- type: exitcode-stdio-1.0- main-is: extensibility.hs--test-suite test- import: test, test-deps- type: exitcode-stdio-1.0- main-is: test.hs--benchmark bench- import: test- hs-source-dirs: bench- type: exitcode-stdio-1.0- main-is: bench.hs- build-depends:- tasty-bench+cabal-version: 3.12 +name: dnsbase +version: 1.0.2.0 +x-revision: 1 +build-type: Simple +synopsis: Stub DNS resolver with a typed RData model and value-based extension API + +description: A DNS stub resolver library for Haskell. The IO layer is + derived from Kazu Yamamoto's @dns@ package; what @dnsbase@ + adds is a rich set of RRtypes and a runtime-extensible + RRtype data model with a simple configuration interface. + + Every RR type's payload is modeled as a dedicated Haskell + type — these include, for example, the recent SVCB and HTTPS + service-binding records, with extensible up-to-date SvcParam + coverage. EDNS option support includes Extended DNS Errors + (EDE) whose info-code name table is user-extensible. Coverage + of both widely used and historical DNS RR types is comprehensive + — only the most marginal obsolete or experimental types remain + unimplemented. + + Applications can extend the library with any /missing/ + RRTYPEs, EDNS(0) options, SVCB and HTTPS SvcParam values. + Application-specified data types take precedence over any + existing or later added built-in implementations. + + Extensions are registered by constructing a pure resolver + configuration value, rather than via IO actions on mutable + global state. Adding custom data types to the library does not + require a source-code fork. See the + <https://hackage-content.haskell.org/package/dnsbase-1.0.2.0/docs/Net-DNSBase-Extensible.html Net.DNSBase.Extensible> + module for + <https://hackage-content.haskell.org/package/dnsbase-1.0.2.0/docs/Net-DNSBase-Extensible.html#customRRtype detailed examples> + + The library has been deployed as part of a DANE/DNSSEC survey + for many years, and performs ~108 million queries each day, + over approximately 3.5 hours (while also saving results to a + database and performing some SMTP STARTTLS probes). Domain-name + parsing supports 8-bit RFC 1035 names directly and also + supports pluggable @Text@-based parsers via external + libraries, for example from the companion + <https://hackage.haskell.org/package/idna2008 idna2008> + package. + +license: BSD-3-Clause +license-files: LICENSE + LICENSE.dns +author: Viktor Dukhovni +maintainer: ietf-dane@dukhovni.org +homepage: https://github.com/dnsbase/dnsbase +bug-reports: https://github.com/dnsbase/dnsbase/issues +copyright: 2018-2026 Viktor Dukhovni +category: Network +tested-with: GHC == 9.10.3 + , GHC == 9.12.3 +extra-source-files: + CHANGELOG.md + README.md + +common all + ghc-options: -O2 -Wall + default-language: GHC2024 + default-extensions: + BlockArguments + DerivingVia + MultiWayIf + PatternSynonyms + RequiredTypeArguments + StrictData + TypeFamilies + ViewPatterns + +common deps + build-depends: + base >=4.20 && <5 + , base16 ^>=1.0 + , base32 >=0.3 && <0.5 + , base64 ^>=1.0 + , bytestring >=0.10.8 && <0.13 + , crypton >=0.30 && <1.2 + , containers >=0.6 && <0.9 + , deepseq ^>=1.5 + , hashtables >=1.2 && <1.6 + , hourglass ^>=0.2.12 + , iproute ^>=1.7.9 + , monad-ste ^>=0.1 + , mtl >=2.2 && <2.4 + , network >=3.1 && <3.3 + , primitive >=0.8 && <0.10 + , template-haskell >=2.22 && <2.25 + , text >=2.0 && <2.2 + , time >=1.11 && <1.16 + , transformers >=0.5 && <2.7 + , unordered-containers ^>=0.2 + +-- Shared source layout for both the main library and the +-- test-only internal library. Both compile the same .hs files +-- under @src@ and @internal@; the two library stanzas differ +-- only in which modules they expose. +common library-source + hs-source-dirs: src internal + +-- Test-only sub-library that exposes every module of the package. +-- Tests @build-depends: dnsbase:internal@ instead of @dnsbase@ so +-- they can reach internal modules without going through a hidden +-- import. Built only when the package's test components are built. +library internal + import: all, deps, library-source + visibility: private + exposed-modules: + Net.DNSBase + Net.DNSBase.Bytes + Net.DNSBase.Decode.Domain + Net.DNSBase.Decode.State + Net.DNSBase.Domain + Net.DNSBase.EDNS + Net.DNSBase.EDNS.OptNum + Net.DNSBase.EDNS.Option + Net.DNSBase.EDNS.Option.ECS + Net.DNSBase.EDNS.Option.EDE + Net.DNSBase.EDNS.Option.NSID + Net.DNSBase.EDNS.Option.Opaque + Net.DNSBase.EDNS.Option.Secalgs + Net.DNSBase.Encode.Metric + Net.DNSBase.Encode.State + Net.DNSBase.Error + Net.DNSBase.Extensible + Net.DNSBase.Flags + Net.DNSBase.Lookup + Net.DNSBase.Message + Net.DNSBase.Nat16 + Net.DNSBase.NonEmpty + Net.DNSBase.NsecTypes + Net.DNSBase.Opcode + Net.DNSBase.Present + Net.DNSBase.RCODE + Net.DNSBase.RData + Net.DNSBase.RData.A + Net.DNSBase.RData.CAA + Net.DNSBase.RData.CSYNC + Net.DNSBase.RData.Dnssec + Net.DNSBase.RData.NSEC + Net.DNSBase.RData.Obsolete + Net.DNSBase.RData.SOA + Net.DNSBase.RData.SRV + Net.DNSBase.RData.SVCB + Net.DNSBase.RData.SVCB.SPV + Net.DNSBase.RData.SVCB.SPVList + Net.DNSBase.RData.SVCB.SPVSet + Net.DNSBase.RData.SVCB.SVCParamKey + Net.DNSBase.RData.SVCB.SVCParamValue + Net.DNSBase.RData.TLSA + Net.DNSBase.RData.TXT + Net.DNSBase.RData.WKS + Net.DNSBase.RData.XNAME + Net.DNSBase.RR + Net.DNSBase.RRCLASS + Net.DNSBase.RRTYPE + Net.DNSBase.RRSet + Net.DNSBase.Resolver + Net.DNSBase.Secalgs + Net.DNSBase.Text + Net.DNSBase.Decode.Internal.Domain + Net.DNSBase.Decode.Internal.Message + Net.DNSBase.Decode.Internal.Option + Net.DNSBase.Decode.Internal.RData + Net.DNSBase.Decode.Internal.State + Net.DNSBase.EDNS.Internal.OptNum + Net.DNSBase.EDNS.Internal.Option + Net.DNSBase.EDNS.Internal.Option.Opaque + Net.DNSBase.Encode.Internal.Metric + Net.DNSBase.Encode.Internal.State + Net.DNSBase.Internal.Bytes + Net.DNSBase.Internal.Domain + Net.DNSBase.Internal.EDNS + Net.DNSBase.Internal.Error + Net.DNSBase.Internal.Flags + Net.DNSBase.Internal.Message + Net.DNSBase.Internal.NameComp + Net.DNSBase.Internal.Nat16 + Net.DNSBase.Internal.Opcode + Net.DNSBase.Internal.Peer + Net.DNSBase.Internal.Present + Net.DNSBase.Internal.RCODE + Net.DNSBase.Internal.RData + Net.DNSBase.Internal.RR + Net.DNSBase.Internal.RRCLASS + Net.DNSBase.Internal.RRTYPE + Net.DNSBase.Internal.SockIO + Net.DNSBase.Internal.Text + Net.DNSBase.Internal.Transport + Net.DNSBase.Internal.Util + Net.DNSBase.RData.Internal.XNAME + Net.DNSBase.Resolver.Internal.Encoding + Net.DNSBase.Resolver.Internal.Parser + Net.DNSBase.Resolver.Internal.Types + +-- The main library. This is what downstream packages (and Hackage) +-- see; @other-modules@ keeps the implementation hidden but compiled +-- into the same library, so haddocks on internal symbols propagate +-- to their public re-exports. +library + import: all, deps, library-source + exposed-modules: + Net.DNSBase + Net.DNSBase.Bytes + Net.DNSBase.Decode.Domain + Net.DNSBase.Decode.State + Net.DNSBase.Domain + Net.DNSBase.EDNS + Net.DNSBase.EDNS.Option + Net.DNSBase.EDNS.Option.ECS + Net.DNSBase.EDNS.Option.EDE + Net.DNSBase.EDNS.Option.NSID + Net.DNSBase.EDNS.Option.Opaque + Net.DNSBase.EDNS.Option.Secalgs + Net.DNSBase.EDNS.OptNum + Net.DNSBase.Encode.Metric + Net.DNSBase.Encode.State + Net.DNSBase.Error + Net.DNSBase.Extensible + Net.DNSBase.Flags + Net.DNSBase.Lookup + Net.DNSBase.Message + Net.DNSBase.Nat16 + Net.DNSBase.NonEmpty + Net.DNSBase.NsecTypes + Net.DNSBase.Opcode + Net.DNSBase.Present + Net.DNSBase.RCODE + Net.DNSBase.RData + Net.DNSBase.RData.A + Net.DNSBase.RData.CAA + Net.DNSBase.RData.CSYNC + Net.DNSBase.RData.Dnssec + Net.DNSBase.RData.NSEC + Net.DNSBase.RData.Obsolete + Net.DNSBase.RData.SOA + Net.DNSBase.RData.SRV + Net.DNSBase.RData.SVCB + Net.DNSBase.RData.SVCB.SPV + Net.DNSBase.RData.SVCB.SPVList + Net.DNSBase.RData.SVCB.SPVSet + Net.DNSBase.RData.SVCB.SVCParamKey + Net.DNSBase.RData.SVCB.SVCParamValue + Net.DNSBase.RData.TLSA + Net.DNSBase.RData.TXT + Net.DNSBase.RData.WKS + Net.DNSBase.RData.XNAME + Net.DNSBase.Resolver + Net.DNSBase.RR + Net.DNSBase.RRCLASS + Net.DNSBase.RRSet + Net.DNSBase.RRTYPE + Net.DNSBase.Secalgs + Net.DNSBase.Text + other-modules: + Net.DNSBase.Decode.Internal.Domain + Net.DNSBase.Decode.Internal.Message + Net.DNSBase.Decode.Internal.Option + Net.DNSBase.Decode.Internal.RData + Net.DNSBase.Decode.Internal.State + Net.DNSBase.EDNS.Internal.OptNum + Net.DNSBase.EDNS.Internal.Option + Net.DNSBase.EDNS.Internal.Option.Opaque + Net.DNSBase.Encode.Internal.Metric + Net.DNSBase.Encode.Internal.State + Net.DNSBase.Internal.Bytes + Net.DNSBase.Internal.Domain + Net.DNSBase.Internal.EDNS + Net.DNSBase.Internal.Error + Net.DNSBase.Internal.Flags + Net.DNSBase.Internal.Message + Net.DNSBase.Internal.NameComp + Net.DNSBase.Internal.Nat16 + Net.DNSBase.Internal.Opcode + Net.DNSBase.Internal.Peer + Net.DNSBase.Internal.Present + Net.DNSBase.Internal.RCODE + Net.DNSBase.Internal.RData + Net.DNSBase.Internal.RR + Net.DNSBase.Internal.RRCLASS + Net.DNSBase.Internal.RRTYPE + Net.DNSBase.Internal.SockIO + Net.DNSBase.Internal.Text + Net.DNSBase.Internal.Transport + Net.DNSBase.Internal.Util + Net.DNSBase.RData.Internal.XNAME + Net.DNSBase.Resolver.Internal.Encoding + Net.DNSBase.Resolver.Internal.Parser + Net.DNSBase.Resolver.Internal.Types + +-- Test framework dependencies, split out so individual stanzas +-- can opt in. +common test-deps + build-depends: + tasty + , tasty-hunit + , tasty-quickcheck + +common test + import: all, deps + hs-source-dirs: tests + build-depends: dnsbase:internal + +test-suite domain + import: test + type: exitcode-stdio-1.0 + main-is: domain.hs + +test-suite literals + import: test + type: exitcode-stdio-1.0 + main-is: literals.hs + other-modules: LiteralsParser + +test-suite message + import: test + type: exitcode-stdio-1.0 + main-is: message.hs + +test-suite extensibility + import: test, test-deps + type: exitcode-stdio-1.0 + main-is: extensibility.hs + +test-suite test + import: test, test-deps + type: exitcode-stdio-1.0 + main-is: test.hs + +benchmark bench + import: test + hs-source-dirs: bench + type: exitcode-stdio-1.0 + main-is: bench.hs + build-depends: + tasty-bench
revision 2
cabal-version: 3.12 name: dnsbase version: 1.0.2.0 -x-revision: 1 +x-revision: 2 build-type: Simple synopsis: Stub DNS resolver with a typed RData model and value-based extension API require a source-code fork. See the <https://hackage-content.haskell.org/package/dnsbase-1.0.2.0/docs/Net-DNSBase-Extensible.html Net.DNSBase.Extensible> module for - <https://hackage-content.haskell.org/package/dnsbase-1.0.2.0/docs/Net-DNSBase-Extensible.html#customRRtype detailed examples> + <https://hackage-content.haskell.org/package/dnsbase-1.0.2.0/docs/Net-DNSBase-Extensible.html#customRRtype detailed examples>. The library has been deployed as part of a DANE/DNSSEC survey for many years, and performs ~108 million queries each day, copyright: 2018-2026 Viktor Dukhovni category: Network tested-with: GHC == 9.10.3 - , GHC == 9.12.3 + , GHC == 9.12.4 extra-source-files: CHANGELOG.md README.md