Skip to content

Releases: hfp/libxstream

Version 0.9.1

01 Sep 12:46
@hfp hfp

Choose a tag to compare

This release (better called a version-tag) closes the 0-series of versions and prepares for a version 1-series. This release does not fix or extents functionality nor it intends to update anything beyond the status quo (like ten years of quietness).

Version 0.9

15 May 17:36
@hfp hfp

Choose a tag to compare

As promised in the previous release note and in the (already removed) roadmap statement, this release delivers proper internal work scheduling and is cleaning up the "demux" legacy parameter (one less argument for libxstream_stream_create).

For similar reasons, a few more interfaces have been changed: libxstream_stream_sync is now just synchronizing the given stream(s) and represents a (re-)scheduling point for stream-local queues in presence of multiple threads (pushing into a single stream). In order to wait for pending work in a stream, the function libxstream_stream_wait has been provided (it does what libxstream_stream_sync previously did). Similarly, libxstream_event_synchronize has been renamed to libxstream_event_wait (however a separate libxstream_event_sync is neither existing nor sensible).

Creating and destroying function signatures has been removed from the API. The functionality is superseded by libxstream_fn_signature which is receiving a thread-local signature of LIBXSTREAM_MAX_NARGS capacity. This is not only avoiding the practice to construct/destruct a signature on a per function call basis but is also avoiding confusion (or locking threads) with the signature's state in presence of multiple threads. This obviously requires to always construct all function arguments every call rather than "bundling" them in advance.

Feature-wise, libxstream_get_autotype now supports a "start" argument determining a type category (to map types of a known size to the library's type enumeration). The previously implemented execution trace (were only enabled in "debug" builds) is now available in general. An environment variable (LIBXSTREAM_VERBOSITY or LIBXSTREAM_VERBOSE) takes the level of verbosity. The latter can be controlled on an API level as well (libxstream_set_verbosity, and libxstream_get_verbosity). The execution trace is muted by default however client code may use the new libxstream_print function (stderr output).

In addition to the API level and internal changes, two new code samples are provided ("copy", and "entropy") and the documentation is showing some more performance results (copy benchmark).

Version 0.8.2

05 May 15:45
@hfp hfp

Choose a tag to compare

This release is mainly about code cleanup and revised documentation. It is the last release before addressing the roadmap issue "Work scheduling and legacy cleanup (demux)".

Version 0.8.1

20 Mar 18:17
@hfp hfp

Choose a tag to compare

Minor adjustments allowing a project (e.g., CP2K) to use the library as an optional dependency while still having a build system which collects all potential translation units (without knowing about "optional"). The mechanism relies on the include guards LIBXSTREAM_EXPORTED (or __LIBXSTREAM); this mechanism is similar to what is already in place for the implementation headers.

Version 0.8

20 Mar 18:20
@hfp hfp

Choose a tag to compare

Initial release featuring a stable programming interface (API). The (1) work scheduling with legacy cleanup, and a (2) native FORTRAN interface are the next upcoming features towards version 1.0.