Hi everyone! We are happy to announce the release of Babeltrace 2.0.0-pre4.
What's new since pre3? ---------------------- * Project-wide: * Lots of fixes in all the project's modules (Python bindings, library, CLI, plugins, tests, build system). * Continued efforts to port Babeltrace 2 to other platforms such as macOS and Windows. * Improve terminal color support. Only colorize both the standard output and error streams if _both_ are connected to a color-supporting terminal. Introduce a new environment variable, `BABELTRACE_TERM_COLOR`, which can be set to `AUTO` (default), `NEVER`, or `ALWAYS` to force specific configurations. Remove the `BABELTRACE_FORCE_COLORS` environment variable support which is the equivalent of `BABELTRACE_TERM_COLOR=ALWAYS`. * Remove the `check` target in the subdirectories of tests/. Use a single `check` target in the tests/ directory like the project used to do to execute all tests even if one fails. * Add `CONTRIBUTING.adoc` which brings together all the development documentations. This guide is not complete yet, but it contains what used to be written in different files like the reference counting guide and the logging guide. * Library: * bt_notification_event_create() and bt_notification_inactivity_create(): create an empty clock class priority map when the parameter is `NULL`. * For all functions which add a listener to an object: pass an optional remove listener when calling it. This is useful to keep per-listener resources and free them when it is guaranteed that the listener won't be called in the future (usually when the object is destroyed or finalized). * bt_ctf_clock_value_create(): freeze the clock class parameter on success. * Do not finalize a non-initialized user notification iterator. * Add the `bt_query_executor` object and its API. This is used to contain a query performed on a component class: both the user querying the class and the class have access to the same query executor object. Just like a graph, a query executor can be canceled, in which case the user query method should quit instead of retrying system calls. * CTF writer: do not truncate a stream file at each packet flush, but only when destroying it. * Disallow recursively consuming a graph object, that is, make it impossible for component methods and graph listeners to run the graph while it's running. * Add an _output port notification iterator_ object and API. When such a notification iterator is created on an output port with bt_output_port_notification_iterator_create(), the utility adds a special sink component to the graph and connects the chosen output port to its input port. This special sink component consumes notifications and transfers them to the output port notification iterator. This effectively allows the graph's user to get notification objects without creating a dedicated sink component. What used to be called a simple notification iterator is now called a _private connection notification iterator_, as this specific notification iterator is created from a private connection object. The common bt_notification_iterator_next() and bt_notification_iterator_get_notification() functions are used for all types of notification iterators. * Split the clock class and clock value APIs in different headers. * Rename bt_X_from_private_X() to bt_X_from_private(), where X is an object name which can be converted from its private representation to its public representation. * Make a returned enumeration field type mapping iterator at the "before the first element" position like it is the case for the notification iterator. This means you need to call the "next" and "get" functions in this order when you iterate. * Add bt_ctf_field_is_set() and bt_ctf_field_reset() to view and control the state of a CTF IR field's value. When a field is created, it is considered _not set_, until you set its value (or, for compound fields, until you set all its values, recursively). * Python bindings: * Implement the `babeltrace` package using the new `bt2` package. Add tests for the `babeltrace` package. The LTTng analyses project <https://github.com/lttng/lttng-analyses> works as is with Babeltrace 2's reworked `babeltrace` package. * Remove the public `value` getter property of value and field objects. The public `value` setter property is still available to assign a raw value to a wrapped Babeltrace object. We don't need the getter because the objects act like native Python objects anyway (for example, a `bt2` integer field can be used where a Python integral number (`int`, for example) can be used). * Wrap the new C query executor object and API. * Wrap the new C output port notification iterator object and API. * Add the `bt2.TraceCollectionNotificationIterator` class. This class's constructor accepts a list of source component specifiers. It creates a graph, adds a filter.utils.muxer component, adds each of the specified source components using the specified parameters, and connects all of them to the muxer. A trace collection notification iterator is the equivalent of an output port notification iterator on its muxer's output port. The object also supports a stream intersection mode, and optional global beginning and end timestamps (trimming is done after the muxer). * Plugins: * filter.lttng-utils.debug-info: * Add logging. * filter.utils.trimmer: * Add logging. * Allow the `begin` and `end` parameters to be integer values (ns since Epoch). * source.ctf.fs: * Accept negative clock offsets in the metadata stream. * Add logging in the query functions. * Perform automatic packet indexing when the LTTng-specific index files are missing or malformed. This is internal, but it makes the `trace-info` query work with non-LTTng traces, for example. * sink.ctf.fs: * Add logging. * sink.text.pretty: * Only print the negative timestamp warning once. * CLI: * Do not use the --component option to specify the component class to query in the `babeltrace query` command because the component class is mandatory. The old usage: babeltrace [GEN OPTS] query [OPTS] OBJECT --component=TYPE.PLUGIN.CLS is replaced with this: babeltrace [GEN OPTS] query [OPTS] TYPE.PLUGIN.CLS OBJECT Let us know of all problems/bugs you encounter with this release! Jérémie Project website: http://diamon.org/babeltrace/ Download link: https://www.efficios.com/files/babeltrace/babeltrace-2.0.0-pre4.tar.bz2 -- Jérémie Galarneau EfficiOS Inc. http://www.efficios.com _______________________________________________ lttng-dev mailing list lttng-dev@lists.lttng.org https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev