blob: 43d675c10585460e02d42dcc97d4667026600c52 [file] [log] [blame]
0.2.1 XXXX-XX-XX
* The licence for libnih has been changed to MIT/X11.
* The --enable-compiler-warnings configure option has been
extended to add -Wextra, but turns off a few of the more extreme
warnings
* TEST_FILE_MATCH() added to allow matching of a line in a file
against a wildcard string
* NIH_MUST(), NIH_ZERO() and NIH_SHOULD() now expand to an
expression with the value of the expression inside. This means
that the code like the following is now valid:
ret = NIH_SHOULD (some_function_call ());
if (ret < 0)
...
This style is preferred to the previous way of doing it (set ret
inside the macro call) and the code has been updated.
* nih_option_parser() fixed to not eat an argument containing a
lone dash.
* nih_error_raise_again() renamed to nih_error_raise_error().
* Errors are no longer removed from the context when you call
nih_error_get(), this means that to clear the error you must free
it and it's now a bug to call nih_error_raise_error() to raise
it again.
* Unhandled errors now result in an assertion error, rather than a
log message being emitted. This assertion will include the
filename, line number and function name where the error was
originally raised. The assertion may be generated on exit from
the program.
* nih_option_help() produces slightly different output if the
bug reporting address is a URL.
* GNU C Library v2.4 (or backported inotify support) is required
* D-Bus object and proxy interface structure definitions have been
moved to nih-dbus/dbus_interface.h, this file is still included
by nih-dbus/dbus_object.h and nih-dbus/dbus_proxy.h so there
may be no need to include it directly.
* nih_dbus_proxy_new() has additional arguments, a lost handler
function which enables tracking of the owner of the well-known
name, and a data pointer. NihDBusProxy has a new owner member
which contains this.
* Signals may be connected using nih_dbus_proxy_connect(), this
requires both a handler function and an intermediate filter
function. The NihDBusSignal structure gained a filter member
to specify the latter.
* The D-Bus binding tool has moved into a separate nih-dbus-tool
subdirectory, and rewritten from Python to C.
* The D-Bus binding tool now uses annotations rather than XML
namespaced attributes to adjust the output:
- set com.netsplit.Nih.Method.Async to "true" instead of using
nih:object="async"
- com.netsplit.Nih.Symbol may be used to override C symbol name
generation
- org.freedesktop.DBus.Deprecated results in a deprecated
attribute on external API
* Function names generated by the D-Bus binding tool now include
the last element of the interface name; my_method() would now
be named my_interface_method(). The interface name can be
ommitted by setting the com.netsplit.Nih.Symbol annotation to ""
* Proxy method functions are now asynchronous by default, the
synchronous version has _sync() appended to its name.
* Signal function names now always include "emit" in them.
* Signal filter functions are generated by the binding tool for use
with nih_dbus_proxy_connect()
* Get and Set access functions are now generated for properties,
and in object mode are expected to be provided.
* Arrays of arrays are now fully supported; if the array is an
array of basic types, the function will have two arguments; a
NULL-terminated array of arrays, and a second NULL-terminated
array of those array lengths. This is supported to infinite
depths.
* D-Bus 1.2.4 is now required.
* pkg-config 0.22 is now required, it probably was anyway but we
now explicitly check for it.
* Dependency on Python for the D-Bus binding tool has been dropped
and replaced with a dependency on expat 2.0.0
* The NIH_DBUS_ERROR and NIH_DBUS_INVALID_ARGS error enums have
been moved to nih-dbus/errors.h
0.2.0 2009-01-29
* nih_alloc_set_allocator() is now a macro that casts the function
to the right typedef, so such casts are no longer needed
* nih_alloc() now permits multiple parent references
- nih_ref(ptr, parent) creates a new parent reference
- nih_unref(ptr, parent) drops a reference and frees if the last
- nih_unref_only(ptr, parent) drops a reference without freeing
- nih_free() unconditionally frees as it always has
- nih_discard() only frees if there are no references
* nih_local may be added to variable definitions to have the
pointer automatically discarded when it goes out of scope, unless
it is referenced in the meantime:
{
nih_local char *str = NULL;
str = nih_strdup (NULL, "some string");
pass_to_func (str);
}
* nih_alloc_reparent() has been dropped, it can be replaced with
an nih_unref_only()/nih_ref() pair - however many uses of this
are no longer necessary and it's worth taking some time to refactor
the code.
* nih_alloc_parent() has changed; it now accepts both an object ptr
and a parent and returns TRUE if the object has that parent, if
parent is NULL is returns TRUE of the object has any parent.
(previously it was used to return _the_ parent).
* TEST_ALLOC_PARENT() now behaves as nih_alloc_parent(), which means
testing for no parent with NULL has the exact opposite behaviour
use the new TEST_ALLOC_ORPHAN(ptr) macro instead.
* nih_str_array_addp() now references the passed pointer, instead
of reparenting it. Calling code should be modified to make sure
it either calls nih_discard() or uses nih_local to be safe in case
of error.
* nih_strv_free() has been dropped since it did not match the
behaviour of the other functions
* new NIH_LIST_ITER(iter, type, member) macro to handle the case of
an offset head in an iterated structure
* nih_hash_pointer_new(), nih_hash_pointer_key(),
nih_hash_pointer_hash() and nih_hash_pointer_cmp() have been dropped
since they did strange things to pointers that probably aren't
legal C.
* nih_config_parse() now reads the file into memory, instead of using
mmap(). The API is unchanged, however the errors may be different.
* The D-Bus bindings have been moved into a separate sub-directory
and split out into multiple files. You will need to update your
includes as follows:
- NihDBusError and nih_dbus_error_*() are in nih-dbus/dbus_error.h
- nih_dbus_connect(), nih_dbus_bus(), nih_dbus_setup() and
nih_dbus_server() are in nih-dbus/dbus_connection.h
- NihDBusMessage and nih_dbus_message_*() are in
nih-dbus/dbus_message.h
- NihDBusObject, NihDBusInterface and nih_dbus_object_new() are in
nih-dbus/dbus_object.h
- NihDBusProxy and nih_dbus_proxy_new() are in nih-dbus/dbus_proxy.h
- nih_dbus_path() is now in nih-dbus/dbus_util.h
* The D-Bus test macros are now in nih-dbus/test_dbus.h
* nih_dbus_message_new() now exists as a function in its own right
* Asynchronous method callbacks must take a reference to the
NihDBusMessage object they are passed, otherwise it will be freed
* Reply functions and nih_dbus_message_error() no longer free the
message passed in, this is consistent with the above change.
* libtool 2.2.4 is now required
* The MIN() and MAX() macros are no longer defined, instead use
nih_min() and nih_max() which do not re-evaluate their parameters
multiple times.
* The nih_main_package_string() function has been dropped, instead
just access the package_string global set by nih_main_init_full()
0.1.0 2008-10-24
* Initial public release.