Klyx Extension API
A Rust-based API for building extensions for the Klyx platform. This API provides a WebAssembly-compatible interface for creating custom extensions that can interact with Android functionality and UI components.
Overview
The Klyx Extension API allows developers to create extensions using Rust that compile to WebAssembly (WASM). Extensions can leverage platform-specific features like Android toast notifications and UI components while maintaining cross-platform compatibility.
Getting Started
Prerequisites
- Rust toolchain (latest stable)
wasm32-unknown-unknowntarget installed- Cargo
Installing the WASM Target
Creating an Extension
- Create a new Rust project:
- Add the Klyx Extension API to your
Cargo.toml:
[]
= "my_klyx_extension"
= "0.1.0"
= "2024"
[]
= ["cdylib"]
[]
= "1.1.0"
- Implement your extension in
src/lib.rs:
use ;
;
register_extension!;
- Build your extension:
Building Extensions
Development Build
Release Build
The compiled WASM file will be located at:
target/wasm32-unknown-unknown/release/your_extension_name.wasm
Example Extension
Here's a complete example of a simple extension:
use ;
;
register_extension!;
Best Practices
- Keep extensions lightweight - Extensions run in a constrained WASM environment
- Handle errors gracefully - Always consider error cases in your extension logic
- Use
#![no_std]- The API is designed forno_stdenvironments - Test thoroughly - Test your extension on target devices before distribution
Platform Support
- Android: Full support with native integration
- Other platforms: Basic WASM runtime support
Architecture
Extensions are compiled to WebAssembly and loaded by the Klyx runtime. The API provides:
- Safe bindings to platform-specific functionality
- Cross-platform compatibility through WebAssembly
- Minimal overhead with
no_stddesign - Type safety through Rust's type system
Limitations
- Extensions run in a sandboxed WASM environment
- Limited access to system resources
- No direct file system access
- Network requests must go through provided APIs
Contributing
Contributions to the Klyx Extension API are welcome! Please ensure your code:
- Follows Rust best practices
- Maintains
no_stdcompatibility - Includes appropriate documentation
- Passes all tests
License
This project is licensed under the terms specified in the main Klyx project.
Support
For questions, issues, or feature requests, please refer to the main Klyx project repository or documentation.