@@ -28,59 +28,47 @@ export const HomePage = ({ onStartRepl }: HomePageProps) => {
2828
2929 < div className = "bg-white rounded-2xl p-8 border border-[var(--color-wasi-purple)]/20 shadow-lg mb-12" >
3030 < h3 className = "text-2xl font-bold mb-4" > What is it?</ h3 >
31- < p className = "text-gray-700 mb-4 text-lg" >
32- The WebAssembly Component Model enables interoperable WebAssembly
33- libraries, but existing examples are either{ " " }
34- < strong > too simple</ strong > or < strong > too complex</ strong > . This
35- project demonstrates its power with a{ " " }
36- < strong > practical implementation</ strong > that goes{ " " }
37- < strong > beyond "hello world"</ strong > .
38- </ p >
3931 < p className = "text-gray-700 mb-6 text-lg" >
40- It's a{ " " }
41- < strong > REPL (Read-Eval-Print Loop) with a plugin system</ strong > { " " }
42- where plugins can be written in{ " " }
43- < strong > any language that compiles to WebAssembly</ strong > . The
44- plugins are < strong > sandboxed by default</ strong > , and the core logic
45- itself is written in Rust and also compiles to WebAssembly.
32+ A < strong > REPL with a plugin system</ strong > that demonstrates the
33+ WebAssembly Component Model's power. Plugins can be written in{ " " }
34+ < strong > any language that compiles to WASM</ strong > and run in a{ " " }
35+ < strong > sandboxed environment</ strong > .
36+ < br />
37+ Existing examples are either < strong > too simple</ strong > or{ " " }
38+ < strong > too complex</ strong > - this project goes{ " " }
39+ < strong > beyond "hello world"</ strong > with a{ " " }
40+ < strong > practical implementation</ strong > .
4641 </ p >
4742
4843 < h3 className = "text-2xl font-bold mb-4" > This Web Version</ h3 >
49- < p className = "text-gray-700 mb-4 text-lg" >
50- You're currently using the < strong > web version</ strong > of the REPL,
51- built with React and TypeScript. There's also a corresponding{ " " }
52- < strong > Rust CLI version</ strong > that runs in the terminal. Both
53- versions load and execute the{ " " }
54- < strong > same WebAssembly components</ strong > - the REPL logic and
55- plugins are compiled once and run in both environments.
56- </ p >
57- < p className = "text-gray-700 mb-6 text-lg" >
58- This demonstrates how the WebAssembly Component Model enables{ " " }
59- < strong > true cross-platform compatibility</ strong > - the same code
60- runs in browsers and terminals with different host implementations.
61- </ p >
6244 < p className = "text-gray-700 mb-6 text-lg" >
63- Plugins like < code > cat </ code > , < code > ls </ code > or < code > tee </ code > can
64- interact with a virtual filesystem using the primitives of the
65- languages they are written in (like < code > std::fs::read_dir </ code > , { " " }
66- < code > std::fs::read_to_string </ code > or < code > std::fs::write </ code > ) .
45+ You're using the < strong > web version </ strong > built with
46+ React/TypeScript. There's also a < strong > Rust CLI version </ strong > .
47+ Both load the < strong > same WebAssembly components </ strong > ,
48+ demonstrating true cross-platform compatibility .
6749 </ p >
6850
6951 < h4 className = "text-xl font-bold mb-3" > Key Features</ h4 >
7052 < ul className = "text-gray-700 space-y-2 mb-3 text-base pl-4 list-disc" >
71- < li > WebAssembly Component Model architecture</ li >
72- < li > Dual host support (CLI + Web)</ li >
73- < li > Plugin system with sandboxed WebAssembly components</ li >
7453 < li >
75- Language-agnostic plugins (any language that compiles to WASM)
54+ < strong > WebAssembly Component Model</ strong > architecture
55+ </ li >
56+ < li >
57+ < strong > Dual host support</ strong > (CLI + Web)
58+ </ li >
59+ < li >
60+ < strong > Plugin system</ strong > with sandboxed WASM components
61+ </ li >
62+ < li >
63+ < strong > Language-agnostic</ strong > plugins
64+ </ li >
65+ < li >
66+ < strong > Virtual filesystem</ strong > on the browser with WASI shim
67+ for filesystem (including < strong > WRITE</ strong > operations)
7668 </ li >
7769 < li >
78- Virtual filesystem: the I/O operations are forwarded via a local
79- fork of < code > @bytecodealliance/preview2-shim/filesystem</ code > ,
80- which shims < code > wasi:filesystem</ code > (yes, you can do{ " " }
81- < strong > WRITE</ strong > operations)
70+ < strong > Modern React + TypeScript</ strong > interface
8271 </ li >
83- < li > Modern React + TypeScript web interface</ li >
8472 </ ul >
8573
8674 < div className = "flex flex-row gap-4 items-center justify-center mt-8" >
0 commit comments