blob: 4033fdc1fe1ce3e20b12ae2d7e676b519f462523 [file] [log] [blame]
(window.webpackJsonp=window.webpackJsonp||[]).push([[98],{443:function(e,t,n){"use strict";n.r(t);var o=n(11),i=Object(o.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("h1",{attrs:{id:"function-executors"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#function-executors"}},[e._v("#")]),e._v(" Function Executors")]),e._v(" "),n("p",[e._v("Function executor is one of the core component in a FaaS platform to provide\nexecution runtime for running user-defined functions. In Teaclave, we aim to\nprovide safe, secure and versatile function executors, which can guarantee the\nconfidentiality of security-sensitive data during computation, and also support\nfunctions written in different languages. In addition, we are working hard to\nachieve better security guarantees such as memory safety.")]),e._v(" "),n("p",[e._v("In Teaclave, there are three executors to native, Python, and WebAssembly functions.")]),e._v(" "),n("ul",[n("li",[n("strong",[e._v("Builtin Executor")]),e._v(": There are many useful built-in functions which are statically\ncompiled with Teaclave. Normally, these built-in functions are implemented in\nRust, and can provide better (native) performance. The Builtin executor is to\ndispatch function invocation requests to corresponding built-in function\nimplementations.")]),e._v(" "),n("li",[n("strong",[e._v("MesaPy Executor")]),e._v(": The MesaPy executor provides a Python interpreter in SGX.\nUser-defined Python functions can be executed in the MesaPy executor. The\nexecutor also provides interfaces to fetch and store data through the runtime.")]),e._v(" "),n("li",[n("strong",[e._v("WAMR Executor")]),e._v(": WebAssembly Micro Runtime (WAMR) is integrated into\nTeaclave to provide a interpreter for WebAssembly bytecode. Please refer to\nthe "),n("RouterLink",{attrs:{to:"/teaclave/docs/executing-wasm.html"}},[e._v("WebAssembly Executor Document")]),e._v(" for more\ndetails on its usage.")],1)]),e._v(" "),n("p",[e._v("To add a new executor, you can implement the "),n("code",[e._v("TeaclaveExecutor")]),e._v(" trait (basically\nimplement the "),n("code",[e._v("execute")]),e._v(" function). Then, register the executor in the Teaclave\nworker. At last, the execution service will dispatch functions to the specific\nexecutor.")])])}),[],!1,null,null,null);t.default=i.exports}}]);