- Rename __PIP_TYPENAME_DECLARE to PIP_REGISTER_TYPENAME across all headers
- Add PIP_DECLARE_TYPENAME(name) macro for in-class type name declaration
- Replace all static const char * __pip_typename__() member functions with PIP_DECLARE_TYPENAME
- pistatemachine_base.h checked non-existent macros __GXX_RTTI__/__RTTI__,
so on GCC/Clang desktop builds formatHash() always returned 0 and the
guard signature check in testGuard() never fired (UB on incompatible
signatures). Now the real PIP_HAS_RTTI (pibase_macros.h) is used.
- no-RTTI fallback: each Function<Args...> instantiation takes a unique
hash from a process-wide counter (a per-instantiation counter would
give every signature the same hash on first call).
- __pip_typename__ primary template: replace hard static_assert with a
generic fallback; containers/stream operators instantiate it for
arbitrary T in no-RTTI builds (Pico/arm-none-eabi has no RTTI), so the
assert made any no-RTTI build impossible. Explicit
__PIP_TYPENAME_DECLARE specializations still take precedence.
* PIThread::~PIThread() now unregister itself from introspection, if terminates than show warning
* PISystemMonitor now correctly stops
* PIPeer now can correctly stopAndWait
* PIPeer::destroy(), protected method for close all eths and threads
* new PIINTROSPECTION_STOP macro
* Introspection now can be correctly stopped by macro, more safety
ClientServer:
* ClientBase::close() stop and disconnect channel
* Server clients clean-up now event-based
* No warnings on client destructor
in almost all methods removed timeouts in milliseconds, replaced to PISystemTime
PITimer rewrite, remove internal impl, now only thread implementation, API similar to PIThread
PITimer API no longer pass void*
PIPeer, PIConnection improved stability on reinit and exit
PISystemTime new methods
pisd now exit without hanging