isShortClosure method to Opis\Closure\ReflectionClosurestream_set_option()createClosure static method in Opis\Closure\SerializableClosure.
This method creates a new closure from arbitrary code, emulating create_function,
but without using evalsha1 instead of md5 for hashing file names in Opis\Closure\ReflectionClosure classjson_encode is no longer used
when signing a closure. Backward compatibility is maintained and all closures that were
previously signed using the old method will continue to work.Opis\Closure\SecurityException exception is no longer thrown when
unserializing a signed closure, if no security provider is set.A::new(), A::use(), A::if(), A::function(), A::__DIR__(), etc.@internal to mark classes & methods that are for internal use only and
backward compatibility is not guaranteed.$this keyword was used inside an anonymous classparent keyword was treated like a class-name and scope was not added to the
serialized closuretransformUseVariables and resolveUseVariables to
Opis\Closure\SerializableClosure class.removeSecurityProvider static method to
Opis\Closure\SerializableClosure class.SerializableClosure::mapPointers methodSerializableClosure::unwrapClosuresSerializableClosure::getClosurePointer methodOpis\Closure\ClosureScope now extends SplObjectStoragestorage property was removed from Opis\Closure\ClosureScopeinstances and objects properties were removed from Opis\Closure\ClosureContext$this object was not handled properly inside the
SerializableClosre::serialize method.lib to src folderOpis\Closure\SerializableClosure::from method and from constructorOpis\Closure\{SecurityProviderInterface, DefaultSecurityProvider, SecureClosure} classeswrapClosures and unwrapClosures static methods to Opis\Closure\SerializableClosure classOpis\Colosure\serialize and Opis\Closure\unserialize functionsOpis\Closure\SerializableClosure::__invoke methodOpis\Closure\{ISecurityProvider, SecurityProvider} were addedOpis\Closure\{SecurityProviderInterface, DefaultSecurityProvider, SecureClosure} were deprecated
and they will be removed in the next major versionsetSecretKey and addSecurityProvider static methods were added to Opis\Closure\SerializableClosureisBindingRequired and isScopeRequired to the Opis\Closure\ReflectionClosure classOpis\Closure\ReflectionClosure::fetchItemsOpis\Closure\ClosureContext, Opis\Closure\ClosureScope, Opis\Closure\SelfReference
and Opis\Closure\SecurityException classes were moved into separate filesOpis\Closure\ReflectionClosure class__METHOD__, __FUNCTION__ and __TRAIT__ magic constantsOpis\Closure\SecurityProviderInterface,
Opis\Closure\DefaultSecurityProvider, Opis\Closure\SecureClosure, Opis\Closure\SecurityException.Opis\Closure\ReflectionClosure::getClasses methodisStatic method to Opis\Closure\ReflectionClosure classbranch-alias property from composer.json#trackme directive which allows tracking closure's residing source