Changes in Version 2.0.4
This library contains no changes in this version.
Changes in Version 2.0.3
This library contains no changes in this version.
Changes in Version 2.0.2
Changes in Version 2.0.1
This library contains no changes in this version.
Changes in Version 2.0
Breaking changes
- plugins can no longer register different types of elements with the same class key, as all element types (I/O components, I/O points, I/O batches, and microservices) have been merged into a single class.
- tweaked the automatic conversions for read and write handles to avoid unnecessary copying of string data. This slightly changes the conversion behaviour of read and write handles, and affects the type mappings returned by xentara::data::NativeTypeToCppType for string like types.
- made xentara::model::Attribute::Access a scoped enum
- removed unused enum xentara::model::Attribute::Category
- read and write handles handles now convert the values std::chrono::time_point::min() and std::chrono::time_point::max() to “never (-infinity)” and “never (infinity)”, respectively, when converting them to strings.
- removed configuration memory block for skill elements, as configuration parameters are now stored directly as member variables of the skill element itself. Skill elements derived from the deprecated classes xentara::io::Component, xentara::io::Io, xentara::io::IoBatch, and xentara::process::Microservice still have access to a configuration block, but that block no longer contains the name, UUID, and primary key of the element.
- obsoleted xentara::utils::string::cat in favour of std::format
New features
- eliminated the need for a plugin object and deprecated xentara::plugin::Plugin
- merged xentara::io::Driver and xentara::process::ServiceProvider into a single class xentara::skill::Skill. xentara::skill::Skill replaces the classes xentara::io::Driver::Environment and xentara::process::ServiceProvider::Environment, and the new inner class xentara::skill::Skill::Class replaces the actual classes xentara::io::Driver and xentara::process::ServiceProvider
- merged xentara::io::Component, xentara::io::IoBatch and xentara::process::Microservice into a single class xentara::skill::Element. xentara::io::ComponentClass, xentara::io::IoBatchClass and xentara::process::MicroserviceClass were replaced with the inner class xentara::skill::Element::Class.
- renamed xentara::io::Io to class xentara::skill::DataPoint, which is derived from xentara::skill::Element. xentara::io::IoClass was replaced with xentara::skill::Element::Class, just like the other element class classes.
- renamed xentara::model::GenericElement to xentara::model::Element
- added xentara::skill::Skill::ConcreteClass and xentara::skill::Element::ConcreteClass templates to simplify writing skill and element classes
- added support for global skill configurations placed inside the Xentara config file
- added support for declaring dependencies of Xentara skill elements using xentara::skill::Element::isMetadataPending(), xentara::skill::Element::isAttributePending(), xentara::skill::Element::isEventPending(), and xentara::skill::Element::isTaskPending()
- merged resolver and fallback handlers into a configuration context.
- added support for synthetic child elements
- added support for ACLs and authentication using (JSON Web Tokens](https://datatracker.ietf.org/doc/html/rfc7519) (JWTs).
- added standard paths for server certificates.
- added support for read handles that return configuration parameters directly, without placing them in a memory block. This greatly simplifies publishing custom configuration parameters as attributes.
- added support for read handles that do not read from a memory block, but alwyas return a fixed value.
- added support for [system clock](
- See also
- std::chrono::system_clock) [time points](
-
std::chrono::time_point) with [durations](
-
std::chrono::duration) other than std::chrono::system_clock::duration to [read handles](xentara::data::ReadHandle). This allows storing std::chrono::sys_days and the like in read handles.
- added xentara::utils::data::ReadHandle::bitWidth() and xentara::data::WriteHandle::bitWidth(), which allows determining the exact bit size of numeric type used by a read or write handle.
- added support for reading and writing custom types using read handles and write handles. For custom types, the type used by the handle must be exactly the same as the type read or written.
- added xentara::process::data::WriteHandle to copy data directly from a read handle to a write handle, without the need for an intermediate std::any object.
- added xentara::utils::data::ReadHandle::typeId() and xentara::data::WriteHandle::typeId(), which allows determining the exact type used by a read or write handle.
- added xentara::process::EventHandler and the convenience subclass xentara::process::CollatedEventHandler
- added process::Event::addHandler() and process::Event::removeHandler() to add and remove handlers from events
- added memory::ReadHandle::addChangeHandler() and memory::ReadHandle::removeChangeHandler() to add and remove change event handlers for data
- renamed process::Event::fire() to process::Event::raise()
- added possibility of raising a list of events atomically as a block
- improved automatic conversions for read and write handles that contain system clock time points non-standard durations.
- improved automatic conversions for read and write handles that contain error code enums.
- added a directional parameter to xentara::data::NativeTypeToCppType to destigush between types used for get and put operations
- added xentara::data::cppTypeToNativeType() to get the native read/write handle type for an arbitrary C++ type
- added xentara::data::isBetter() and xentara::data::isWorse() to compare qualities
- added xentara::data::isUsable() to determine whether the value that goes with a quality is usable.
- added xentara::data::combine() to select the worse of two qualities.
- added comparison operators for UUIDs to xentara::model::Attribute, xentara::model::Attribute::Role, xentara::proces::Event::Role, and xentara::process::Task::Role
- added comparison operator to compare xentara::model::Attribute and xentara::model::Attribute::Role
- added xentara::utils::filesystem::toString() to turn std::filesystem::path objects into strings using the preferred path separator
- added std::formatter specializations for xentara::model::Element, xentara::skill::Element, xentara::utils::Attribute, xentara::model::ElementAttribute, xentara::utils::Attribute::Role, xentara::process::Task::Role, and xentara::process::Event::Role.
Bug Fixes
- Fixed a bug in xentara::memory::WriteSentinel that prevented the [kCopyOldValues](xentara::memory::kCopyOldValues) flag in the constructor from working.
Changes in Version 1.2.2
This library contains no changes in this version.
Changes in Version 1.2.1
This library contains no changes in this version.
Changes in Version 1.2
Breaking changes
Changes in Version 1.1
Breaking changes
- replaced all occurrences of char8_t and char16_t with char, including strings and string views.
- removed xentara::data::BasicString and the corresponding type aliases. Use std::basic_string instead.
- xentara::memory::MemoryResource is now a polymorphic class rather than a concept, removing the need for the MemoryResource template parameter for xentara::memory::MemoryBlock and related classes
New features
Changes in Version 1.0
This is the initial release of xentara-plugin.