hw-json 1.3.0.1 → 1.3.1.0
raw patch · 2 files changed
+22/−47 lines, 2 filesdep ~hw-primdep ~optparse-applicativePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: hw-prim, optparse-applicative
API changes (from Hackage documentation)
Files
- app/App/Commands/Demo.hs +2/−27
- hw-json.cabal +20/−20
app/App/Commands/Demo.hs view
@@ -22,16 +22,13 @@ import HaskellWorks.Data.MQuery import HaskellWorks.Data.MQuery.Micro import HaskellWorks.Data.RankSelect.CsPoppy-import HaskellWorks.Data.Vector.AsVector8+import HaskellWorks.Data.Vector.Storable import Options.Applicative hiding (columns) import qualified App.Commands.Types as Z-import qualified Data.ByteString as BS import qualified Data.ByteString.Internal as BSI import qualified Data.ByteString.Lazy as LBS import qualified Data.DList as DL-import qualified Data.Vector.Storable as DVS-import qualified Data.Vector.Storable.Mutable as DVSM import qualified HaskellWorks.Data.BalancedParens.RangeMin as RM import qualified HaskellWorks.Data.ByteString.Lazy as LBS import qualified HaskellWorks.Data.Json.Simd.Index.Standard as S@@ -39,28 +36,6 @@ import qualified System.IO as IO import qualified System.IO.MMap as IO -constructUnzipN :: Int -> [(BS.ByteString, BS.ByteString)] -> (DVS.Vector Word64, DVS.Vector Word64)-constructUnzipN nBytes xs = (DVS.unsafeCast ibv, DVS.unsafeCast bpv)- where [ibv, bpv] = DVS.createT $ do- let nW64s = (nBytes + 7) `div` 8- let capacity = nW64s * 8- ibmv <- DVSM.new capacity- bpmv <- DVSM.new capacity- (ibmvRemaining, bpmvRemaining) <- go ibmv bpmv xs- return- [ DVSM.take (((DVSM.length ibmv - ibmvRemaining) `div` 8) * 8) ibmv- , DVSM.take (((DVSM.length bpmv - bpmvRemaining) `div` 8) * 8) bpmv- ]- go :: DVSM.MVector s Word8 -> DVSM.MVector s Word8 -> [(BS.ByteString, BS.ByteString)] -> ST s (Int, Int)- go ibmv bpmv ((ib, bp):ys) = do- DVS.copy (DVSM.take (BS.length ib) ibmv) (asVector8 ib)- DVS.copy (DVSM.take (BS.length bp) bpmv) (asVector8 bp)- go (DVSM.drop (BS.length ib) ibmv) (DVSM.drop (BS.length bp) bpmv) ys- go ibmv bpmv [] = do- DVSM.set (DVSM.take 8 ibmv) 0- DVSM.set (DVSM.take 8 bpmv) 0- return (DVSM.length (DVSM.drop 8 ibmv), DVSM.length (DVSM.drop 8 bpmv))- runDemo :: Z.DemoOptions -> IO () runDemo opts = do let filePath = opts ^. the @"filePath"@@ -76,7 +51,7 @@ let !bs = BSI.fromForeignPtr (castForeignPtr fptr) offset size case S.makeStandardJsonIbBps (LBS.resegmentPadded 512 (LBS.fromStrict bs)) of Right ibBps -> do- let (!ib, !bp) = constructUnzipN size ibBps+ let (!ib, !bp) = construct64UnzipN size ibBps let !cursor = GenericCursor bs (makeCsPoppy ib) (RM.mkRangeMin bp) 1 let !json = lightJsonAt cursor let q = MQuery (DL.singleton json)
hw-json.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.2 name: hw-json-version: 1.3.0.1+version: 1.3.1.0 synopsis: Memory efficient JSON parser description: Memory efficient JSON parser. Please see README.md category: Data@@ -9,7 +9,7 @@ bug-reports: https://github.com/haskell-works/hw-json/issues author: John Ky maintainer: newhoggy@gmail.com-copyright: 2016 - 2019 John Ky+copyright: 2016-2019 John Ky license: BSD-3-Clause license-file: LICENSE build-type: Simple@@ -59,7 +59,7 @@ common hw-json-standard-cursor { build-depends: hw-json-standard-cursor >= 0.2.1.0 && < 0.3 } common hw-mquery { build-depends: hw-mquery >= 0.2.0.0 && < 0.3 } common hw-parser { build-depends: hw-parser >= 0.1 && < 0.2 }-common hw-prim { build-depends: hw-prim >= 0.6.2.28 && < 0.7 }+common hw-prim { build-depends: hw-prim >= 0.6.2.32 && < 0.7 } common hw-rankselect { build-depends: hw-rankselect >= 0.13 && < 0.14 } common hw-rankselect-base { build-depends: hw-rankselect-base >= 0.3.2.1 && < 0.4 } common hw-simd { build-depends: hw-simd >= 0.1.1.2 && < 0.2 }@@ -75,8 +75,8 @@ common semigroups { if impl(ghc < 8 ) { build-depends: semigroups >= 0.16 && < 0.19 } } common config- default-language: Haskell2010- ghc-options: -Wall -O2 -msse4.2+ default-language: Haskell2010+ ghc-options: -Wall -O2 -msse4.2 if flag(sse42) ghc-options: -msse4.2 if flag(bmi2) && impl(ghc >= 8.4.1)@@ -150,10 +150,10 @@ , semigroups , text , vector- main-is: Main.hs- hs-source-dirs: app- ghc-options: -threaded -rtsopts -with-rtsopts=-N- build-depends: hw-json+ main-is: Main.hs+ hs-source-dirs: app+ ghc-options: -threaded -rtsopts -with-rtsopts=-N+ build-depends: hw-json other-modules: App.Commands App.Commands.CreateIndex@@ -180,12 +180,12 @@ , text , transformers , vector- type: exitcode-stdio-1.0- main-is: Spec.hs- build-depends: hw-json- hs-source-dirs: test- ghc-options: -threaded -rtsopts -with-rtsopts=-N- build-tools: hspec-discover+ type: exitcode-stdio-1.0+ main-is: Spec.hs+ build-depends: hw-json+ hs-source-dirs: test+ ghc-options: -threaded -rtsopts -with-rtsopts=-N+ build-tool-depends: hspec-discover:hspec-discover other-modules: HaskellWorks.Data.Json.LightJsonSpec HaskellWorks.Data.Json.Simple.CursorSpec@@ -204,8 +204,8 @@ , hw-json-standard-cursor , mmap , semigroups- type: exitcode-stdio-1.0- main-is: Main.hs- hs-source-dirs: bench- build-depends: hw-json- other-modules: Paths_hw_json+ type: exitcode-stdio-1.0+ main-is: Main.hs+ hs-source-dirs: bench+ build-depends: hw-json+ other-modules: Paths_hw_json