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.