ext-php-rs/CHANGELOG.md
2022-12-11 22:10:25 +01:00

14 KiB

Changelog

Version 0.9.0

  • ci+docs: honour PHP_CONFIG & rebuild automatically when env vars change by @julius #210
  • chore: Update generated FFI bindings with bindgen 0.63 by @ptondereau #211

BC changes

  • feat: allows ZendStr to contain null bytes by @julius #202

Migration See: #202

Version 0.8.3

  • build: Check docs warnings in CI by @davidcole1340 in #180
  • fix: Fixes inifinte loop in ClassEntry::instance_of() by @ju1ius in #188
  • fix: Fix binary slice lifetimes by @davidcole1340 in #181
  • build: Fixes CI workflow configuration by @ju1ius in #195
  • feat: Add get_id() and hash() methods on ZendObject by @ju1ius in #196
  • docs: Describes restrictions on generic parameters for php_class by @ju1ius in #194
  • feat: Add instance_of() and get_class_entry() methods on ZendObject by @ju1ius in #197

Version 0.8.2

  • Update changelog for latest versions by @striezel in #161
  • fix building docs on docs.rs by @davidcole1340 in #165
  • Add some standard zend interfaces by @nikeee in #164
  • Correct parameter name. by @denzyldick in #168
  • fix describe when using #[implements] by @davidcole1340 in #169
  • Add example that shows how to implement an interface by @nikeee in #167
  • add before flag to #[php_startup] by @davidcole1340 in #170
  • add ability to define abstract methods by @davidcole1340 in #171
  • chore(cli): Bump Clap for CLI tool by @ptondereau in #177
  • fix type links in docs.rs by @davidcole1340 in #179

Version 0.8.1

  • 404 /guide doesn't exists. by @denzyldick in #149
  • Fixed some typos by @denzyldick in #148
  • Fix a few typos by @striezel in #150
  • fix causes of some clippy warnings by @striezel in #152
  • fix more causes of clippy warnings by @striezel in #157
  • attempt to fix errors related to clap by @striezel in #158
  • ci: run clippy only on stable Rust channel by @striezel in #159
  • update actions/checkout in GitHub Actions workflows to v3 by @striezel in #151
  • Add ability to set function name on php_function macro by @joehoyle in #153
  • Specify classes as fully-qualified names in stubs by @joehoyle in #156
  • Support marking classes as interfaces by @joehoyle in #155
  • Support marking methods as abstract by @joehoyle in #154
  • Add php-scrypt as a example project by @PineappleIOnic in #146
  • Fix ini file duplication and truncation when using cargo-php command by @roborourke in #136
  • Allow passing --yes parameter to bypass prompts by @roborourke in #135

Version 0.8.0

  • Windows support by @davidcole1340 in #128
  • Support for binary slice to avoid extra allocation by @TobiasBengtsson in #139
  • Bump dependencies by @ptondereau in #144

Version 0.7.4

  • Fix is_true() / is_false() in Zval by @joehoyle in #116
  • readme: fix link to guide by @TorstenDittmann in #120
  • Fix request_(startup|shutdown)_function in ModuleBuilder by @glyphpoch in #119
  • Fix CI on macOS by @davidcole1340 in #126
  • Add ability to pass modifier function for classes by @davidcole1340 in #127

Version 0.7.3

  • Upgrade clap to 3.0.0-rc3. #113
  • Build properties hashmap once and cache inside class metadata. #114
  • Add impl FromZval for &Zval and impl FromZvalMut for &mut Zval.
  • Add has_numerical_keys and has_sequential_keys to ZendHashTable. #115

Thanks to the following contributors:

  • @davidcole1340
  • @vkill

Version 0.7.2

  • Add preliminary PHP 8.1 support. #109
    • Extensions should now compile for PHP 8.1. This doesn't implement any of the new PHP 8.1 features.
  • Add anyhow cargo feature to implement From<anyhow::Error> for PhpException. #110
  • Made ClassMetadata: Send + Sync. #111
  • Fixed registering constants with expressions. #112

Version 0.7.1

  • Ensure stable ABI between cargo-php and downstream extensions. #108
    • ext-php-rs versions used when compiling CLI and extension are now compared.

Version 0.7.0

  • Disabled serialization and unserialization of Rust structs exported as PHP classes. #105
    • You can't serialize an associated Rust struct so this would have never worked, but disabling them fixes crashes when running in an environment like psysh.
  • Replaced boxed module inside ModuleBuilder with in-struct module.
  • Fixed builds failing on Linux AArch64 systems. #106
  • Added cargo-php for creating stubs, installing and uninstalling extensions. #107
    • Check out the guide for more information on this.

Version 0.6.0

  • Reorganized project. #101
    • Changed (almost all) module paths. Too many changes to list them all, check out the docs.
    • Removed skel project.
  • Allow methods to accept references to ZendClassObject<T> instead of self. #103

Version 0.5.3

  • Fixed docs.rs PHP bindings file.

Version 0.5.2

  • Constructors that return Self can now be added to classes. #83
    • Default is no longer required to be implemented on classes, however, a constructor must be specified if you want to construct the class from PHP.
    • Constructors can return Self or Result<Self, E>, where E: Into<PhpException>.
  • Added FromZendObject and IntoZendObject traits. #74
  • Added #[derive(ZvalConvert)] derive macro. Derives IntoZval and FromZval on arbitrary structs and enums. #78
  • Added ZBox<T>, similar to Box<T>, to allocate on the Zend heap. #94
  • Changed execution data functions to take mutable references. #100
  • &mut T is now valid as a function parameter. #100

Thanks to the contributors for this release:

  • @davidcole1340
  • @vodik

Version 0.5.1

  • PhpException no longer requires a lifetime #80.
  • Added PhpException and PhpResult to prelude #80.
  • Fixed ZendString missing last character #82.

Version 0.5.0

Breaking changes

  • Method names are now renamed to snake case by default #63.
  • Refactored ZendHashTable into an owned and borrowed variant #76.
    • Creating a new hashtable is done through the OwnedHashTable struct, which is then dereferenced to &HashTable, as String is to &str.
  • Refactored ZendString into an owned and borrowed variant #77.
    • Creating a new Zend string is done through the ZendString struct, which is then dereferenced to &ZendStr, as String is to &str.
  • Class properties are now defined as struct properties, removing the old property system in the process #69.

Enhancements

  • Added interfaces and parent class to the Debug implementation for ClassEntry @72b0491.
  • Rust unit type () now has a datatype of void @8b3ed08.
  • Functions returning Rust objects will now display their full classname in reflection #64.
  • Fixed alignment of class objects in memory #66.

Thanks to the contributors for this release:

  • @davidcole1340
  • @vodik

Version 0.2.0 - 0.4.0

  • Added macros!
  • Missed a bit :(

Version 0.1.0

  • Zval::reference() returns a reference instead of a dereferenced pointer.
  • Added ZendHashTable::iter() - note this is changing in a future version.
  • ClassBuilder::extends() now takes a reference rather than a pointer to match the return type of ClassEntry::exception().
  • ClassEntry::build() now returns a reference - same reason as above.
  • Improve library 'safety' by removing unwrap calls:
    • .build() returns Result on FunctionBuilder, ClassBuilder and ModuleBuilder.
    • .property() and .constant() return Result on ClassBuilder.
    • .register_constant() returns Result.
    • .try_call() on callables now return Result rather than Option.
    • throw() and throw_with_code() now returns Result.
    • new() and new_interned() on ZendString now returns a Result.
    • For ZendHashTable:
      • insert(), insert_at_index() now returns a Result<HashTableInsertResult>, where Err failed, Ok(Ok) inserts successfully without overwrite, and Ok(OkWithOverwrite(&Zval)) inserts successfully with overwrite.
      • push() now returns a Result.
      • Converting from a Vec or HashMap to a ZendHashTable is fallible, so it now implements TryFrom as opposed to From.
    • For Zval:
      • set_string() now returns a Result, and takes a second parameter (persistent).
      • set_persistent_string() has now been removed in favour of set_string().
      • set_interned_string() also returns a Result.
      • set_array() now only takes a ZendHashTable, you must convert your Vec or HashMap by calling try_into() and handling the error.

Version 0.0.7

  • Added support for thread-safe PHP (@davidcole1340) #37
  • Added ability to add properties to classes (@davidcole1340) #39
  • Added better interactions with objects (@davidcole1340) #41

Version 0.0.6

  • Fixed panic! when a PHP binary string was given to a function (@davidcole1340) [c:d73788e]
  • Fixed memory leak when returning an array from Rust to PHP (@davidcole1340) #34
  • Documentation is now deployed to GitHub Pages (@davidcole1340) #35
  • Added ability to unpack and pack binary strings similar to PHP (@davidcole1340) #32
  • Allowed default-features to be true for Bindgen (@willbrowningme) #36

Version 0.0.5

  • Relicensed project under MIT or Apache 2.0 as per Rust crate guidelines (@davidcole1340) [c:439f2ae]
  • Added parse_args! macro to simplify argument parsing (@davidcole1340) [c:45c7242]
  • Added ability to throw exceptions from Rust to PHP (@davidcole1340) [c:45c7242]
  • Added ability to register global constants (@davidcole1340) [c:472e26e]
  • Implemented From<ZendHashTable> for Vec (@davidcole1340) [c:3917c41]
  • Expanded implementations for converting to Zval from primitives (@davidcole1340) [c:d4c6aa2]
  • Replaced unit errors with an Error enum (@davidcole1340) [c:f11451f]
  • Added Debug and Clone implementations for most structs (@davidcole1340) [c:62a43e6]