1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214
|
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.
|