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 +1/−2
- extism.cabal +1/−1
- src/Extism.hs +12/−0
- test/Test.hs +20/−20
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)