packages feed

extism 0.2.0 → 0.3.0

raw patch · 4 files changed

+34/−23 lines, 4 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Extism: createPlugin :: ByteString -> Bool -> IO (Result Plugin)
+ Extism: createPluginFromManifest :: Manifest -> Bool -> IO (Result Plugin)
- Extism: data Manifest
+ Extism: data () => Manifest

Files

Example.hs view
@@ -9,8 +9,7 @@  main = do   let m = manifest [wasmFile "../wasm/code.wasm"]-  context <- Extism.newContext-  plugin <- unwrap <$> Extism.pluginFromManifest context m False+  plugin <- unwrap <$> Extism.createPluginFromManifest m False   res <- unwrap <$> Extism.call plugin "count_vowels" (Extism.toByteString "this is a test")   putStrLn (Extism.fromByteString res)   Extism.free plugin
extism.cabal view
@@ -1,6 +1,6 @@ cabal-version:      3.0 name:               extism-version:            0.2.0+version:            0.3.0 license:            BSD-3-Clause maintainer:         oss@extism.org author:             Extism authors
src/Extism.hs view
@@ -79,12 +79,24 @@         return $ Left (ExtismError e)       else         return $ Right (Plugin c p))+      +-- | Create a 'Plugin' with its own 'Context'+createPlugin :: B.ByteString -> Bool -> IO (Result Plugin)+createPlugin c useWasi = do+  ctx <- newContext+  plugin ctx c useWasi  -- | Create a 'Plugin' from a 'Manifest' pluginFromManifest :: Context -> Manifest -> Bool -> IO (Result Plugin) pluginFromManifest ctx manifest useWasi =   let wasm = toByteString $ toString manifest in   plugin ctx wasm useWasi++-- | Create a 'Plugin' with its own 'Context' from a 'Manifest'+createPluginFromManifest :: Manifest -> Bool -> IO (Result Plugin)+createPluginFromManifest manifest useWasi = do+  ctx <- newContext+  pluginFromManifest ctx manifest useWasi  -- | Update a 'Plugin' with a new WASM module update :: Plugin -> B.ByteString -> Bool -> IO (Result ())
test/Test.hs view
@@ -9,45 +9,45 @@  defaultManifest = manifest [wasmFile "../../wasm/code.wasm"] -initPlugin :: Context -> IO Plugin-initPlugin context =-  Extism.pluginFromManifest context defaultManifest False >>= unwrap+initPlugin :: Maybe Context -> IO Plugin+initPlugin Nothing =+  Extism.createPluginFromManifest defaultManifest False >>= unwrap+initPlugin (Just ctx) =+  Extism.pluginFromManifest ctx defaultManifest False >>= unwrap  pluginFunctionExists = do-  withContext (\ctx -> do-    p <- initPlugin ctx-    exists <- functionExists p "count_vowels"-    assertBool "function exists" exists-    exists' <- functionExists p "function_doesnt_exist"-    assertBool "function doesn't exist" (not exists'))+  p <- initPlugin Nothing+  exists <- functionExists p "count_vowels"+  assertBool "function exists" exists+  exists' <- functionExists p "function_doesnt_exist"+  assertBool "function doesn't exist" (not exists')  checkCallResult p = do-    res <- call p "count_vowels" (toByteString "this is a test") >>= unwrap-    assertEqual "count vowels output" "{\"count\": 4}" (fromByteString res)+  res <- call p "count_vowels" (toByteString "this is a test") >>= unwrap+  assertEqual "count vowels output" "{\"count\": 4}" (fromByteString res)  pluginCall = do-  withContext (\ctx -> do-    p <- initPlugin ctx-    checkCallResult p)+  p <- initPlugin Nothing+  checkCallResult p  pluginMultiple = do-  withContext (\ctx -> do-    p <- initPlugin ctx+  withContext(\ctx -> do+    p <- initPlugin (Just ctx)     checkCallResult p-    q <- initPlugin ctx-    r <- initPlugin ctx+    q <- initPlugin (Just ctx)+    r <- initPlugin (Just ctx)     checkCallResult q     checkCallResult r)  pluginUpdate = do   withContext (\ctx -> do-    p <- initPlugin ctx+    p <- initPlugin (Just ctx)     updateManifest p defaultManifest True >>= unwrap     checkCallResult p)  pluginConfig = do   withContext (\ctx -> do-    p <- initPlugin ctx+    p <- initPlugin (Just ctx)     b <- setConfig p [("a", Just "1"), ("b", Just "2"), ("c", Just "3"), ("d", Nothing)]     assertBool "set config" b)