hevm 0.50.1 → 0.50.2
raw patch · 4 files changed
+16/−16 lines, 4 filesdep −fgldep −parsecdep −s-cargotPVP ok
version bump matches the API change (PVP)
Dependencies removed: fgl, parsec, s-cargot, semver-range
API changes (from Hackage documentation)
Files
- CHANGELOG.md +8/−1
- hevm.cabal +1/−5
- src/EVM/Expr.hs +6/−3
- test/BlockchainTests.hs +1/−7
CHANGELOG.md view
@@ -5,9 +5,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.50.2] - 2023-01-06++### Fixed++- Arithmetic overflow in concrete `SAR` edge case ([#163](https://github.com/ethereum/hevm/pull/163))+- Unexpected abstract term application during fully concrete execution ([#163](https://github.com/ethereum/hevm/pull/163))+ ## [0.50.1] - 2022-12-29 -## Fixed+### Fixed - `hevm exec` no longer fails with `hevm: No match in record selector smttimeout` - the `gas`, `gaslimit`, `priorityfee`, and `gasprice` cli options are now respected
hevm.cabal view
@@ -2,7 +2,7 @@ name: hevm version:- 0.50.1+ 0.50.2 synopsis: Ethereum virtual machine evaluator description:@@ -141,7 +141,6 @@ cryptonite >= 0.30 && < 0.31, memory >= 0.16.0 && < 0.20, data-dword >= 0.3.1 && < 0.4,- fgl >= 5.7.0 && < 5.8, free >= 5.1.3 && < 5.2, haskeline >= 0.8.0 && < 0.9, process >= 1.6.5 && < 1.7,@@ -155,8 +154,6 @@ quickcheck-text >= 0.1.2 && < 0.2, restless-git >= 0.7 && < 0.8, rosezipper >= 0.2 && < 0.3,- s-cargot >= 0.1.4 && < 0.2,- semver-range >= 0.2.7 && < 0.3, temporary >= 1.3 && < 1.4, witherable >= 0.3.5 && < 0.5, wreq >= 0.5.3 && < 0.6,@@ -167,7 +164,6 @@ smt2-parser >= 0.1.0.1, word-wrap >= 0.5 && < 0.6, spool >= 0.1 && < 0.2,- parsec >= 3.1.15 && < 3.2, hs-source-dirs: src
src/EVM/Expr.hs view
@@ -181,8 +181,12 @@ sar :: Expr EWord -> Expr EWord -> Expr EWord sar = op2 SAR (\x y ->- let asSigned = (fromIntegral y) :: Int256- in fromIntegral $ shiftR asSigned (fromIntegral x))+ let msb = testBit y 255+ asSigned = fromIntegral y :: Int256+ in if x > 256 then+ if msb then maxBound else 0+ else+ fromIntegral $ shiftR asSigned (fromIntegral x)) -- ** Bufs ** -------------------------------------------------------------------------------------- @@ -319,7 +323,6 @@ copySlice a@(Lit srcOffset) b@(Lit dstOffset) c@(Lit size) d@(ConcreteBuf src) e@(ConcreteBuf dst) | dstOffset < maxBytes- , srcOffset < maxBytes , size < maxBytes = let hd = padRight (num dstOffset) $ BS.take (num dstOffset) dst sl = if srcOffset > num (BS.length src)
test/BlockchainTests.hs view
@@ -112,13 +112,7 @@ commonProblematicTests :: Map String (TestTree -> TestTree) commonProblematicTests = Map.fromList- [ ("twoOps_d0g0v0_London", expectFailBecause "TODO: regression")- , ("sar_2^256-1_0_d0g0v0_London", expectFailBecause "TODO: regression")- , ("shiftCombinations_d0g0v0_London", expectFailBecause "TODO: regression")- , ("shiftSignedCombinations_d0g0v0_London", expectFailBecause "TODO: regression")- , ("bufferSrcOffset_d14g0v0_London", expectFailBecause "TODO: regression")- , ("bufferSrcOffset_d38g0v0_London", expectFailBecause "TODO: regression")- , ("loopMul_d0g0v0_London", ignoreTestBecause "hevm is too slow")+ [ ("loopMul_d0g0v0_London", ignoreTestBecause "hevm is too slow") , ("loopMul_d1g0v0_London", ignoreTestBecause "hevm is too slow") , ("loopMul_d2g0v0_London", ignoreTestBecause "hevm is too slow") , ("CALLBlake2f_MaxRounds_d0g0v0_London", ignoreTestBecause "very slow, bypasses timeout due time spent in FFI")