JMLX42 opened a new issue, #7004:
URL: https://github.com/apache/opendal/issues/7004

   ### Summary
   
   Add a new OpenDAL backend that leverages the 
[`wasi:filesystem`](https://github.com/WebAssembly/wasi-filesystem) interface 
for file operations. This enables OpenDAL to access the host filesystem when 
running as a WebAssembly component, with the host runtime (e.g., wasmtime, 
wasmer) providing the actual filesystem implementation.
   
   ### Motivation
   
   Currently, the `services-fs` backend cannot compile to `wasm32-wasip2` 
because it depends on tokio's filesystem features, which are not supported on 
WASM targets.
   
   However, WASM components can access the host filesystem through the 
standardized `wasi:filesystem` interface. A `wasi-fs` backend would:
   
   1. **Enable filesystem access in WASM components** — Components could 
read/write files preopened by the host runtime
   2. **Complement existing backends** — `memory` and `s3` work on WASM, but 
there's no local filesystem option
   3. **Leverage existing WASI ecosystem** — Runtimes like wasmtime already 
implement `wasi:filesystem`
   
   ### Proposed Implementation
   
   A new `services-wasi-fs` feature/backend that:
   
   - **Imports** `wasi:filesystem/types` and `wasi:filesystem/preopens` 
interfaces
   - **Uses** `wasi:io/streams` for read/write operations
   - **Works with** preopened directories provided by the host
   - **Compiles to** `wasm32-wasip2` target only (or conditional compilation)
   
   ### Use Case
   
   We're building WASM components that expose storage capabilities. We want to:
   
   1. Create an OpenDAL-based storage component
   2. Export `wasi:filesystem` interface for downstream consumers
   3. Support multiple backends (memory, S3, **and host filesystem**)
   
   Without a `wasi-fs` backend, components cannot access files that the host 
runtime preopens for them.
   
   ### Research Notes
   
   | Backend | WASM-compatible | Notes |
   |---------|-----------------|-------|
   | `services-memory` | ✅ | Works out of the box |
   | `services-s3` | ✅ | Works with reqwest/reqsign |
   | `services-fs` | ❌ | Requires tokio fs (not WASM-compatible) |
   | `services-wasi-fs` | 🆕 | **Proposed** — uses `wasi:filesystem` imports |
   
   ### Related
   
   - WASI filesystem spec: https://github.com/WebAssembly/wasi-filesystem
   - Preview 2 (Component Model): 
https://github.com/WebAssembly/WASI/blob/main/preview2/README.md


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to