# Introduction
`ext-php-rs` is a Rust library containing bindings and abstractions for the PHP
extension API, which allows users to build extensions natively in Rust.
## Features
- **Easy to use:** The built-in macros can abstract away the need to interact
with the Zend API, such as Rust-type function parameter abstracting away
interacting with Zend values.
- **Lightweight:** You don't have to use the built-in helper macros. It's
possible to write your own glue code around your own functions.
- **Extensible:** Implement `IntoZval` and `FromZval` for your own custom types,
allowing the type to be used as function parameters and return types.
## Goals
Our main goal is to **make extension development easier.**
- Writing extensions in C can be tedious, and with the Zend APIs limited
documentation can be intimidating.
- Rust's modern language features and feature-full standard library are big
improvements on C.
- Abstracting away the raw Zend APIs allows extensions to be developed faster
and with more confidence.
- Abstractions also allow us to support future (and potentially past) versions
of PHP without significant changes to extension code.
## Versioning
`ext-php-rs` follows semantic versioning, however, no backwards compatibility is
guaranteed while we are at major version `0`, which is for the foreseeable
future. It's recommended to lock the version at the patch level.
When introducing breaking changes a migration guide will be provided in this
guide.
## Documentation
- This guide!
- [Rust docs](https://docs.rs/ext-php-rs)