blob: 53d67063750d8f02ea034f980aba6e1e3dcfd706 [file] [log] [blame]
(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{336:function(e,t,a){e.exports=a.p+"assets/img/teaclave-function-executors-wasm.ba81b2d7.png"},337:function(e,t,a){e.exports=a.p+"assets/img/teaclave-tvm-webassembly.60f6da35.png"},385:function(e,t,a){"use strict";a.r(t);var n=a(11),r=Object(n.a)({},(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[n("p",[e._v("On behalf of the Teaclave community, I am happy to announce the "),n("em",[e._v("third")]),e._v(" Apache\nIncubator release of Teaclave, 0.3.0. Teaclave is a universal secure computing\nplatform, making computation on privacy-sensitive data safe and simple.\nApache Teaclave (including the\n"),n("a",{attrs:{href:"https://github.com/apache/incubator-teaclave",rel:"noopener noreferrer"}},[e._v("FaaS platform")]),e._v(",\n"),n("a",{attrs:{href:"https://github.com/apache/incubator-teaclave-sgx-sdk",rel:"noopener noreferrer"}},[e._v("SGX SDK")]),e._v(",\nand "),n("a",{attrs:{href:"https://github.com/apache/incubator-teaclave-trustzone-sdk",rel:"noopener noreferrer"}},[e._v("TrustZone SDK")]),e._v(") is\nbeing used and contributed by developers from many organizations and\nother open source projects. Please see the "),n("a",{attrs:{href:"/powered-by"}},[n("em",[e._v("powered by")])]),e._v(" page to learn more.")]),e._v(" "),n("p",[e._v("This is the third official Apache Incubator release. In this release, we focus\nmore on bringing "),n("a",{attrs:{href:"https://webassembly.org/",rel:"noopener noreferrer"}},[e._v("WebAssembly")]),e._v(" into Teaclave. Now, you\ncan run functions written in different languages in Teaclave with the\nWebAssembly executor. Specifically, we modify\n"),n("a",{attrs:{href:"https://github.com/bytecodealliance/wasm-micro-runtime",rel:"noopener noreferrer"}},[e._v("WebAssembly Micro Runtime")]),e._v(" and add\nit as a new executor in Teaclave.")]),e._v(" "),n("h2",{attrs:{id:"highlights"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#highlights"}},[e._v("#")]),e._v(" Highlights")]),e._v(" "),n("p",[e._v("In this release, we added a new WebAssembly executor which supports to run\nfunction in the WebAssembly bytecode. Therefore, in addition to native code and\nPython scripts, Teaclave can run many other languages which can be compiled in\nto WebAssembly. This enables a lot of functions of privacy-preseving computation\nthat are not easily rewritten in Rust or Python. Furthermore, because of the\necosystem of WebAssembly, we can even run deep neural network models in the\nWebAssembly executor.")]),e._v(" "),n("p",[n("img",{attrs:{src:a(336),alt:"Teaclave Function Executors"}})]),e._v(" "),n("p",[e._v("To illustrate the capability of the executor, we also support WebAssembly\nmachine learning models compiled by "),n("a",{attrs:{href:"https://tvm.apache.org/",rel:"noopener noreferrer"}},[e._v("Apache TVM")]),e._v(".\nApache TVM is an open source machine learning compiler framework for CPUs, GPUs,\nand machine learning accelerators. TVM also supports WebAssembly runtime\nbackend. We also introduce a new MNIST inference example to show the usage of\nthe new executor with TVM.")]),e._v(" "),n("p",[n("img",{attrs:{src:a(337),alt:"Using the WebAssembly executor for Machine Learning Inference with TVM"}})]),e._v(" "),n("h2",{attrs:{id:"_0-3-0-release-notes"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#_0-3-0-release-notes"}},[e._v("#")]),e._v(" 0.3.0 Release Notes")]),e._v(" "),n("p",[e._v("Here is a list of notable changes in Teaclave version 0.3.0.")]),e._v(" "),n("p",[n("strong",[e._v("Features")])]),e._v(" "),n("ul",[n("li",[e._v("Add the WebAssembly executor to support functions written in other languages.")]),e._v(" "),n("li",[e._v("Examples of running C and Rust with the WebAssembly executor.")]),e._v(" "),n("li",[e._v("Support inference tasks with models compiled by TVM.")]),e._v(" "),n("li",[e._v("Add the MNIST inference example to demonstrate the ability of using TVM in Teaclave.")])]),e._v(" "),n("p",[n("strong",[e._v("Enhancements")])]),e._v(" "),n("ul",[n("li",[e._v("Add the script to simplify developing with editors with Rust's Language Server Protocol support.")]),e._v(" "),n("li",[e._v("Upgrade SGX SDK dependencies, i.e., Intel SGX SDK to version 2.14.100.2, DCAP to version 1.11.100.2.")])]),e._v(" "),n("p",[n("strong",[e._v("Bug Fixes")])]),e._v(" "),n("ul",[n("li",[e._v("Update the SGX SDK used in the runtime dockerfile.")]),e._v(" "),n("li",[e._v("Fix "),n("code",[e._v("Python.h")]),e._v(" not found when compiling "),n("code",[e._v("acs_py_enclave.c")]),e._v(".")]),e._v(" "),n("li",[e._v("Fix building system messed up by untracked "),n("code",[e._v("Cargo.lock")]),e._v(" files.")]),e._v(" "),n("li",[e._v("Fix dcap building issue.")])]),e._v(" "),n("p",[n("strong",[e._v("Docs")])]),e._v(" "),n("ul",[n("li",[e._v("Add instructions to configure URLs of input/output files in examples.")]),e._v(" "),n("li",[e._v("Executing WebAssembly in Teaclave: "),n("a",{attrs:{href:"https://teaclave.apache.org/docs/executing-wasm/",rel:"noopener noreferrer"}},[e._v("https://teaclave.apache.org/docs/executing-wasm/")]),e._v(".")]),e._v(" "),n("li",[e._v("Inferencing with TVM in Teaclave: "),n("a",{attrs:{href:"https://teaclave.apache.org/docs/inference-with-tvm/",rel:"noopener noreferrer"}},[e._v("https://teaclave.apache.org/docs/inference-with-tvm/")]),e._v(".")])]),e._v(" "),n("h2",{attrs:{id:"download"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#download"}},[e._v("#")]),e._v(" Download")]),e._v(" "),n("p",[e._v("Teaclave 0.3.0 can be downloaded at "),n("RouterLink",{attrs:{to:"/download/"}},[e._v("the download page")]),e._v(". Note that\nit is essential to verify the integrity of the downloaded file using the\nPGP signature (the "),n("code",[e._v(".asc")]),e._v(" file) or a hash (the "),n("code",[e._v(".sha256")]),e._v(" file).")],1),e._v(" "),n("h2",{attrs:{id:"documentation"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#documentation"}},[e._v("#")]),e._v(" Documentation")]),e._v(" "),n("p",[e._v("If it is the first time to try Teaclave, we provide a simple but clear tutorial\nto guide you getting stated with Teaclave by invoking\n"),n("RouterLink",{attrs:{to:"/docs/my-first-function/"}},[e._v("your first function")]),e._v(" in Teaclave.")],1),e._v(" "),n("p",[e._v("Basically, you can build the Teaclave platform using docker with these commands:")]),e._v(" "),n("div",{staticClass:"language-sh extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v('$ tar zxvf apache-teaclave-0.3.0-incubating.tar.gz && cd \\\n apache-teaclave-0.3.0-incubating\n$ # Instructions to verify the source tar: https://teaclave.apache.org/download/#verify-the-integrity-of-the-files\n\n$ docker run --rm -v $(pwd):/teaclave -w /teaclave \\\n -it teaclave/teaclave-build-ubuntu-1804-sgx-2.14:latest \\\n bash -c ". /root/.cargo/env && \\\n . /opt/sgxsdk/environment && \\\n mkdir -p build && cd build && \\\n cmake -DTEST_MODE=ON -DSGX_SIM_MODE=ON -DGIT_SUBMODULE=OFF .. && \\\n make"\n')])])]),n("p",[e._v("Launch all services with "),n("code",[e._v("docker-compose")]),e._v(" using simulation mode:")]),e._v(" "),n("div",{staticClass:"language-sh extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v("$ (cd docker && docker-compose -f docker-compose-ubuntu-1804-sgx-sim-mode.yml up --build)\n")])])]),n("p",[e._v("And invoke function with a Python client:")]),e._v(" "),n("div",{staticClass:"language-sh extra-class"},[n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[e._v("$ cd examples/python\n$ PYTHONPATH=../../sdk/python python3 builtin_echo.py 'Hello, Teaclave!'\n[+] registering user\n[+] login\n[+] registering function\n[+] creating task\n[+] approving task\n[+] invoking task\n[+] getting result\n[+] done\n[+] function return: b'Hello, Teaclave!'\n")])])]),n("p",[e._v("If you want to understand the internals of Teaclave, we provide several\ndocuments about the "),n("RouterLink",{attrs:{to:"/docs/#design"}},[e._v("design")]),e._v(" of Teaclave. Also, we extensively\ndocument our "),n("RouterLink",{attrs:{to:"/docs/#codebase"}},[e._v("codebase")]),e._v(" in each sub directories. At last, "),n("RouterLink",{attrs:{to:"/docs/#api-references"}},[e._v("API references")]),e._v("\nare automatically generated and uploaded to our homepage.")],1),e._v(" "),n("h2",{attrs:{id:"community"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#community"}},[e._v("#")]),e._v(" Community")]),e._v(" "),n("ul",[n("li",[e._v("Join us on our "),n("a",{attrs:{href:"https://lists.apache.org/list.html?dev@teaclave.apache.org",rel:"noopener noreferrer"}},[e._v("mailing list")]),e._v(" and "),n("a",{attrs:{href:"https://discord.gg/ynECXsxm5P",rel:"noopener noreferrer"}},[e._v("Discord channel")]),e._v(".")]),e._v(" "),n("li",[e._v("Follow us at "),n("a",{attrs:{href:"https://twitter.com/ApacheTeaclave",rel:"noopener noreferrer"}},[e._v("@ApacheTeaclave")]),e._v(".")]),e._v(" "),n("li",[e._v("Meet us at our "),n("a",{attrs:{href:"https://teaclave.apache.org/community/#calendar",rel:"noopener noreferrer"}},[e._v("monthly community meetup")]),e._v(".")]),e._v(" "),n("li",[e._v("See "),n("a",{attrs:{href:"https://teaclave.apache.org/community/",rel:"noopener noreferrer"}},[e._v("more")]),e._v(".")])])])}),[],!1,null,null,null);t.default=r.exports}}]);