Revision history for Tangence 0.33 2024-09-10 [CHANGES] * Updates for `meta` v0.007: * use ->try_get_symbol instead of ->can_symbol * use new ->set_subname on returned symbols, avoids awkward Sub::Util hackery * Requires `Struct::Dumb` v0.14 otherwise tests fail 0.32 2024-01-06 [CHANGES] * Quiet the meta::experimental warnings of meta 0.003_002 0.31 2024-01-03 [CHANGES] * Various module style updates for newer Object::Pad v0.800 * Swapped unit tests from `Test::More` to `Test2::V0` * Dropped many test-time dependencies now they are built-in to `Test2::Suite` * Use `meta` rather than `no strict 'refs'` hackery 0.30 2022-10-29 [CHANGES] * Updates for Object::Pad v0.70: + Use `ADJUST :params` instead of `ADJUSTPARAMS` + Use `field` instead of `has` 0.29 2022-06-06 [CHANGES] * Look for `builtin::is_bool` now it's been renamed, and present in the perl 5.36 release * Use the `:isa(Superclass)` notation of Object::Pad 0.57 0.28 2022-01-27 [CHANGES] * Look for the `isbool` function in perl core's `builtin::` namespace, rather than the short-lived and now removed Scalar::Util version 0.27 2021-10-18 [CHANGES] * General code modernisation: + Use signatures from perl v5.26 + Use Object::Pad in most classes + Use Future::AsyncAwait + Use Syntax::Keyword::Dynamically + Use Syntax::Keyword::Match in more places * Rename the memoizing constructors to `->make` to avoid clashing with the generated ones from Object::Pad 0.26 2021-09-12 [CHANGES] * General code modernisation: + Use Syntax::Keyword::Match instead of given/when + Use Feature::Compat::Try instead of eval {} + use VERSION in every .pm file * Support core booleans in 'any' type packing * Ensure that boolean stream values unpack to real booleans [BUGFIXES] * Depend on Future >= 0.36 for ->retain method (RT131471) 0.25 2020-01-14 [CHANGES] * Allow servers to disallow access to Registry * Disallow clients from accessing objects that haven't already been sent to them * Customisable root object per connection * Added $client->get_registry; discourage the ->registry method * Use core's Sub::Util::set_subname() * Removed support for protocol minor version 2 [BUGFIXES] * Ensure MSG_SETPROP serialises correctly for non-scalar properties 0.24 2017-11-14 17:48:45 [BUGFIXES] * Avoid harmless warning about wide characters during SvIV test 0.23 2017/01/09 13:40:23 [BUGFIXES] * Fix handling of Inf and NaN float values to work on perl versions other than 5.22 (RT118806) 0.22 2016/11/16 23:38:38 [CHANGES] * Rename 'iterators' to 'cursors' * Document and support Inf and NaN float values, including on float16 * Support perl 5.24's lack of "." in @INC 0.21 2015/10/28 21:07:15 [BREAKING CHANGES] * Large API-breaking changes in Tangence::ObjectProxy - now works entirely through Futures instead of one-shot continuation callbacks 0.20 2014/08/13 23:23:11 [CHANGES] * Better support for late declaration of Tangence class definitions after the main tanfile is loaded [BUGFIXES] * Fix 'return or' operator precedence (RT97483) * Compare floats by approximation during unit tests (RT94404) * Fix block folding in syntax/tangence.vim 0.19 2014/03/30 13:33:40 [CHANGES] * Created new Tangence::Type classes to represent the type system as firstclass objects * Have Tangence::Type provide a suitable default value for uninitialised properties * Move most of the value pack/unpack code out of Tangence::Message into the Type classes * Support floating-point numbers as a native format * Pack/unpack smashed objects using type-specific serialisation [BUGFIXES] * Quiet 'experimental' warnings about given/when 0.18 BUGFIXES: * Handle void-returning method signatures correctly (RT#83637) 0.17 CHANGES: * Minimal minor version 2 * Expose ->class and ->can_method / ->can_event / ->can_property on both Tangence::Object and Tangence::ObjectProxy 0.16 CHANGES: * Bumped wire protocol minor version to 3: + Support GETPROPELEM operation + Support WATCH_ITER for queue property iteration * Internal rewrites to some unit tests for neatness 0.15 BUGFIXES: * Fix Tangence::Message on clientside when dealing with minor version 2 servers, by actually 'use'ing classes it requires 0.14 CHANGES: * Bumped wire protocol minor version to 2: + Provide wire-level struct record serialisations + Encode classes as structs rather than use introspection dict * Recognise struct definitions in the tanfile parser * Minimum supported minor protocol version is now 1; minor version 0 is no longer supported 0.13 CHANGES: * Bumped wire protocol minor version to 1: + Encode strings on the wire (dict keys and class names) as Tangence strings + Give classes ID numbers to refer to in CONSTRUCT messages, rather then full class name every time 0.12 CHANGES: * Defined MSG_INIT for server/client version negitiations * Implement it in the server, but not yet in the client as it crashes pre 0.12 servers * Implement types as first-class metadata values BUGFIXES: * Implement respondERROR since it is actually being used 0.11 BUGFIXES: * Handle UPDATE messages on objset properties correctly 0.10 BUGFIXES: * Fix memory cycle testing bug 0.09 CHANGES: * Renaming/reworking of internal metadata classes * Optionally use Sub::Name to apply names to subscription / watch callbacks 0.08 CHANGES: * Optionally use Sub::Name to name generated property accessor/mutator methods * Further improvements to metadata layer 0.07 CHANGES: * Redesign of metadata layer to use real objects rather than unblessed hashrefs for structural information * Optionally parse (but currently ignore) argument names in methods and events * Created a parse+dump script to test the parser 0.06 CHANGES: * Look up Tangence interface metadata from a specified file, rather than per-class package variables. * Added Tangence::Compiler::Parser 0.05 CHANGES: * Added documentation to some of the classes * Moved the Net::Async::Tangence tree into its own module 0.04 CHANGES: * Properly split out lower-level abstract Tangence code, from IO::Async-based Net::Async::Tangence wrappers * Added some initial documentation to Tangence::Stream, ::Client and ::Server 0.03 CHANGES: * Weaken references between objects and connections to remove memory cycles * Move all the IO::Async-based code into its own namespace tree of Net::Async::Tangence 0.02 CHANGES: * New Meta::Class introspection objects * Bugfixes for test reliability due to the way stream writes/reads get split 0.01 First version, released on an unsuspecting world.