accelerate-llvm 1.4.0.0 → 1.4.0.1
raw patch · 3 files changed
+28/−13 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- CHANGELOG.md +6/−2
- accelerate-llvm.cabal +1/−1
- src/Data/Array/Accelerate/LLVM/Target/ClangInfo.hs +21/−10
CHANGELOG.md view
@@ -6,7 +6,11 @@ project adheres to the [Haskell Package Versioning Policy (PVP)](https://pvp.haskell.org) -## [1.4.0.0] - ?+## [1.4.0.1] - 2026-08-29+### Fixed+ * More robust `clang` output parsing (allows building tests during Nix packaging) [accelerate-llvm#117]++## [1.4.0.0] - 2026-04-02 ### Changed * Support for LLVM-15 to 22 (15 only on native backend, 16 and newer are supported on native and PTX). * Simplified installation by using clang via the command line instead of linking with LLVM. Clang should be on the PATH or (on Windows) installed in a standard location.@@ -76,4 +80,4 @@ [1.0.0.0]: https://github.com/AccelerateHS/accelerate-llvm/compare/be7f91295f77434b2103c70aa1cabb6a4f2b09a8...1.0.0.0 [#407]: https://github.com/AccelerateHS/accelerate/issues/407-+[accelerate-llvm#117]: https://github.com/AccelerateHS/accelerate-llvm/issues/117
accelerate-llvm.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.2 name: accelerate-llvm-version: 1.4.0.0+version: 1.4.0.1 tested-with: GHC >= 9.4 build-type: Simple
src/Data/Array/Accelerate/LLVM/Target/ClangInfo.hs view
@@ -55,17 +55,28 @@ -- | Returns list of version components: '12.3' becomes [12, 3]. hostLLVMVersion :: NonEmpty Int hostLLVMVersion =- fmap read . splitOn '.' $- let firstLine = takeWhile (/= '\n') $- dropWhile isSpace clangMachineVersionOutput- in case catMaybes (map (`startsWith` "clang version") (tails firstLine)) of- rest : _ ->- -- "Ubuntu clang version 14.0.0-1ubuntu1.1" <- we care about the "14.0.0" part only- takeWhile (\c -> not (isSpace c) && c /= '-')- $ dropWhile isSpace- $ rest- [] -> error $ "Could not extract clang version from `clang -###` output: <" ++ clangMachineVersionOutput ++ ">"+ -- On Nix when building a package, the first 2 lines of stderr output are+ -- "warning: Skipping impure flag -march=native because NIX_ENFORCE_NO_NATIVE is set"+ -- and the same for -mcpu. Skip those and potential other such warnings by trying the first 5.+ -- (Having NIX_ENFORCE_NO_NATIVE set obviously cripples performance, but since compiling the+ -- test suite entails a kernel compilation (for runQ testing) it's good if this just works.+ -- At runtime the warning goes to stderr and will be shown to the user if relevant.)+ case catMaybes (map tryFromLine (take 5 (lines clangMachineVersionOutput))) of+ res : _ -> res+ [] -> error $ "Could not extract clang version from `clang -###` output: <" ++ clangMachineVersionOutput ++ ">" where+ tryFromLine :: String -> Maybe (NonEmpty Int)+ tryFromLine line =+ case catMaybes (map (`startsWith` "clang version") (tails line)) of+ rest : _ ->+ Just $+ fmap read . splitOn '.'+ -- "Ubuntu clang version 14.0.0-1ubuntu1.1" <- we care about the "14.0.0" part only+ $ takeWhile (\c -> not (isSpace c) && c /= '-')+ $ dropWhile isSpace+ $ rest+ [] -> Nothing+ splitOn :: Eq a => a -> [a] -> NonEmpty [a] splitOn _ [] = [] NE.:| [] splitOn sep (c:cs)