cabal-version: 3.0 name: vector-quicksort version: 0.1 x-revision: 1 synopsis: Fast and flexible quicksort implementation for mutable vectors description: Quicksort implementation developed with performance in mind. Has good default single-threaded sort and provides parallelised versions that are actually faster than the single-threaded version. Users can define new parallelisation methods. Good starting point: > import Data.Vector.Algorithms.Quicksort qualified as Quick Then call as > Quick.sort xs copyright: (c) Sergey Vinokurov 2022 license: Apache-2.0 license-file: LICENSE author: Sergey Vinokurov maintainer: Sergey Vinokurov category: Algorithms build-type: Simple extra-source-files: Readme.md homepage: https://github.com/sergv/vector-quicksort source-repository head type: git location: https://github.com/sergv/vector-quicksort.git common ghc-options default-language: GHC2021 default-extensions: ImportQualifiedPost LambdaCase ghc-options: -O2 -Weverything -Wno-all-missed-specialisations -Wno-implicit-prelude -Wno-missed-specialisations -Wno-missing-import-lists -Wno-missing-local-signatures -Wno-missing-safe-haskell-mode -Wno-safe -Wno-type-defaults -Wno-unsafe -Wno-unused-packages if impl(ghc >= 8.8) ghc-options: -Wno-missing-deriving-strategies if impl(ghc >= 9.2) ghc-options: -Wno-missing-kind-signatures library import: ghc-options exposed-modules: Data.Vector.Algorithms.FixedSort Data.Vector.Algorithms.Heapsort Data.Vector.Algorithms.Quicksort Data.Vector.Algorithms.Quicksort.Fork2 Data.Vector.Algorithms.Quicksort.Median Data.Vector.Algorithms.Quicksort.Parameterised hs-source-dirs: src build-depends: , base >= 4.15 && < 5 , primitive , stm , vector library vector-quicksort-predefined import: ghc-options exposed-modules: Data.Vector.Algorithms.Quicksort.Predefined.AveragingMedian Data.Vector.Algorithms.Quicksort.Predefined.Pair Data.Vector.Algorithms.Quicksort.Predefined.BitonicIntST Data.Vector.Algorithms.Quicksort.Predefined.PIntParallelMedian3IO Data.Vector.Algorithms.Quicksort.Predefined.PIntParallelMedian3or5IO Data.Vector.Algorithms.Quicksort.Predefined.PIntSequentialMedian3ST Data.Vector.Algorithms.Quicksort.Predefined.PIntSequentialMedian3IO Data.Vector.Algorithms.Quicksort.Predefined.PIntParallelStrategiesMedian3ST Data.Vector.Algorithms.Quicksort.Predefined.PIntParallelStrategiesMedian3IO Data.Vector.Algorithms.Quicksort.Predefined.PIntSequentialMedian3or5ST Data.Vector.Algorithms.Quicksort.Predefined.PIntSequentialMedian3or5IO Data.Vector.Algorithms.Quicksort.Predefined.PIntParallelStrategiesMedian3or5ST Data.Vector.Algorithms.Quicksort.Predefined.PIntParallelStrategiesMedian3or5IO Data.Vector.Algorithms.Quicksort.Predefined.PIntSequentialAveragingMedianST Data.Vector.Algorithms.Quicksort.Predefined.UPairSequentialAveragingMedianST Data.Vector.Algorithms.Quicksort.Predefined.VIntSequentialMedian3ST Data.Vector.Algorithms.Quicksort.Predefined.VIntSequentialMedian3IO Data.Vector.Algorithms.Quicksort.Predefined.VPairSequentialMedian3ST Data.Vector.Algorithms.Quicksort.Predefined.VPairSequentialMedian3IO Data.Vector.Algorithms.Quicksort.Predefined.VIntParallelStrategiesMedian3ST Data.Vector.Algorithms.Quicksort.Predefined.VIntParallelStrategiesMedian3IO Data.Vector.Algorithms.Quicksort.Predefined.VPairParallelStrategiesMedian3ST Data.Vector.Algorithms.Quicksort.Predefined.VPairParallelStrategiesMedian3IO Data.Vector.Algorithms.Quicksort.Predefined.VIntSequentialMedian3or5ST Data.Vector.Algorithms.Quicksort.Predefined.VIntSequentialMedian3or5IO Data.Vector.Algorithms.Quicksort.Predefined.VPairSequentialMedian3or5ST Data.Vector.Algorithms.Quicksort.Predefined.VPairSequentialMedian3or5IO Data.Vector.Algorithms.Quicksort.Predefined.VIntParallelStrategiesMedian3or5ST Data.Vector.Algorithms.Quicksort.Predefined.VIntParallelStrategiesMedian3or5IO Data.Vector.Algorithms.Quicksort.Predefined.VPairParallelStrategiesMedian3or5ST Data.Vector.Algorithms.Quicksort.Predefined.VPairParallelStrategiesMedian3or5IO Data.Vector.Algorithms.Quicksort.Predefined.UIntSequentialMedian3ST Data.Vector.Algorithms.Quicksort.Predefined.UIntSequentialMedian3IO Data.Vector.Algorithms.Quicksort.Predefined.UPairSequentialMedian3ST Data.Vector.Algorithms.Quicksort.Predefined.UPairSequentialMedian3IO Data.Vector.Algorithms.Quicksort.Predefined.UIntParallelStrategiesMedian3ST Data.Vector.Algorithms.Quicksort.Predefined.UIntParallelStrategiesMedian3IO Data.Vector.Algorithms.Quicksort.Predefined.UPairParallelStrategiesMedian3ST Data.Vector.Algorithms.Quicksort.Predefined.UPairParallelStrategiesMedian3IO Data.Vector.Algorithms.Quicksort.Predefined.UIntSequentialMedian3or5ST Data.Vector.Algorithms.Quicksort.Predefined.UIntSequentialMedian3or5IO Data.Vector.Algorithms.Quicksort.Predefined.UPairSequentialMedian3or5ST Data.Vector.Algorithms.Quicksort.Predefined.UPairSequentialMedian3or5IO Data.Vector.Algorithms.Quicksort.Predefined.UIntParallelStrategiesMedian3or5ST Data.Vector.Algorithms.Quicksort.Predefined.UIntParallelStrategiesMedian3or5IO Data.Vector.Algorithms.Quicksort.Predefined.UPairParallelStrategiesMedian3or5ST Data.Vector.Algorithms.Quicksort.Predefined.UPairParallelStrategiesMedian3or5IO Data.Vector.Algorithms.Quicksort.Predefined.VTupleSequentialMedian3ST Data.Vector.Algorithms.Quicksort.Predefined.VTupleSequentialMedian3IO Data.Vector.Algorithms.Quicksort.Predefined.VTupleParallelStrategiesMedian3ST Data.Vector.Algorithms.Quicksort.Predefined.VTupleParallelStrategiesMedian3IO Data.Vector.Algorithms.Quicksort.Predefined.VTupleSequentialMedian3or5ST Data.Vector.Algorithms.Quicksort.Predefined.VTupleSequentialMedian3or5IO Data.Vector.Algorithms.Quicksort.Predefined.VTupleParallelStrategiesMedian3or5ST Data.Vector.Algorithms.Quicksort.Predefined.VTupleParallelStrategiesMedian3or5IO Data.Vector.Algorithms.Quicksort.Predefined.UTupleSequentialMedian3ST Data.Vector.Algorithms.Quicksort.Predefined.UTupleSequentialMedian3IO Data.Vector.Algorithms.Quicksort.Predefined.UTupleParallelStrategiesMedian3ST Data.Vector.Algorithms.Quicksort.Predefined.UTupleParallelStrategiesMedian3IO Data.Vector.Algorithms.Quicksort.Predefined.UTupleSequentialMedian3or5ST Data.Vector.Algorithms.Quicksort.Predefined.UTupleSequentialMedian3or5IO Data.Vector.Algorithms.Quicksort.Predefined.UTupleParallelStrategiesMedian3or5ST Data.Vector.Algorithms.Quicksort.Predefined.UTupleParallelStrategiesMedian3or5IO hs-source-dirs: src-predefined build-depends: , base >= 4.14 , parallel , primitive , stm , vector >= 0.13 , vector-quicksort test-suite test import: ghc-options type: exitcode-stdio-1.0 main-is: test/TestMain.hs other-modules: Data.Vector.Algorithms.Quicksort.Tests hs-source-dirs: . test build-depends: , QuickCheck , base >= 4.14 , containers , tasty , tasty-quickcheck , vector , vector-quicksort-predefined ghc-options: -rtsopts -threaded "-with-rtsopts=-N -A16m -n1m -qg -qb" -main-is TestMain library vector-quicksort-cpp default-language: GHC2021 include-dirs: cbits cxx-sources: cbits/sort.cpp cxx-options: -std=c++17 -- Just like in the ‘text’ package, less critical for us since this -- is a library for testing and benchmarking only. if impl(ghc >= 9.4) build-depends: system-cxx-std-lib == 1.0 elif os(darwin) || os(freebsd) extra-libraries: c++ elif os(openbsd) extra-libraries: c++ c++abi pthread elif os(windows) -- GHC's Windows toolchain is based on clang/libc++ in GHC 9.4 and later if impl(ghc < 9.3) extra-libraries: stdc++ else extra-libraries: c++ c++abi elif os(linux) extra-libraries: stdc++ else -- This is supposed to be under arch(wasm32), but we can't do that yet -- since cabal check would fail with unrecognized arch, see -- https://github.com/haskell/cabal/pull/8096 for the fix. -- TODO: when a new cabal release is out with that fix, bump cabal in CI -- and add proper arch(wasm32) declaration here. cpp-options: -DSIMDUTF_NO_THREADS cxx-options: -fno-exceptions extra-libraries: c++ c++abi benchmark bench import: ghc-options type: exitcode-stdio-1.0 main-is: BenchMain.hs other-modules: ForeignSorting hs-source-dirs: bench build-depends: , atomic-counter , base >= 4.14 , bytestring , deepseq , primitive , random , stm , tasty , tasty-bench >= 0.3.2 , text , text-builder-linear , vector , vector-algorithms , vector-quicksort , vector-quicksort-cpp , vector-quicksort-predefined ghc-options: -fno-spec-constr -rtsopts -threaded "-with-rtsopts=-N -A16m -n1m -qg -qb" -main-is BenchmarkMain