Re: [LAD] RDF libraries, was Re: [ANN] IR: LV2 Convolution Reverb

From: Stefano D'Angelo <zanga.mail@email-addr-hidden>
Date: Sat Feb 26 2011 - 16:11:15 EET

2011/2/25 David Robillard <d@email-addr-hidden>:
> On Fri, 2011-02-25 at 21:09 +0100, Olivier Guilyardi wrote:
>> On 02/25/2011 08:57 PM, David Robillard wrote:
>>
>> >> It's a few months ago now that I investigated LV2. IIRC, at that time I
>> >> concluded that this wasn't an option because SLV2 was GPL'ed. But things are
>> >> changing IIUC :)
>> >
>> > You never asked. I would have changed it... but I am not psychic ;)
>>
>> It's not always easy to discuss about religious matters, such as licenses ;)
>>
>> That said there is another big problem. This glib dependency, it's way too heavy
>> for mobile deployment.
>
> Glib was the most effective route of getting the job done - rewriting
> the few bits that are required is not an effective use of my time right
> now (it's not exposed in the API, so it's not a compatibility issue, and
> there's a ton of more pressing LV2 things that need doing).
>
> I'm not a huge fan of wheel-reinventing, and on PCs glib is about as
> unoffensive a dependency as they come. On mobile, I guess that meg or so
> actually makes a difference.
>
> Replacing glib will not be very difficult, very little of it is used:
> just a balanced BST, dynamic array, and ideally a hash table or trie
> other appropriate structure for string interning (the BST would do for
> this part, with a bit of a performance cost). Good old-fashioned data
> structure implementation is my favourite thing to do, but unfortunately
> there is no shortage of more pragmatic things that need doing ;)
>
> Perhaps Stefano's NASPRO core work will do, or using C++ internally, or
> just tearing the required bits out of glib itself. Sqlite has an
> in-memory hash table IIRC. Code abounds.
>
> Present a viable alternative, and I'll switch sord/slv2 to it, but I
> have no good reason to invest time in reinventing glib right now.

Given the discussions we had already, NASPRO core could be a viable alternative.

Pros:
- no dependencies apart from libc and libm
- size (181K without stripping on Arch Linux x86-64, -O2)
- high portability, little and confined platform-specific code,
compiler-specific (symbol visibility, etc.) code confined to a small
header
- gracefully handles platform-specific conventions (i.e., ':' vs ';'
in path variables, zero-length prefixes in path variables under *nix,
directory separators, etc.)
- total amount of code is circa 7.5k lines, including comments and
public headers
- UTF-8 support, conversion from/to UTF-16 LE, serious UTF-8 grapheme
counting is supported
- thread safety (e.g., data types are synchronized at a very granular
level, but allow you to have more coarse synchronization if you want)
- extremely low memory footprint
- locale-independent asprintf() and vasprintf(), C99 level (except
"%lc" and "%ls" conversions, possibly they are not even needed if
using UTF-8)
- semi-serious, integrated and as-lightweight-as-it-can-be
error/message reporting mechanism
- precise and well defined error checking and error codes
- includes directory traversal, dynamic loading
- well documented

Cons:
- not yet released
- no real test suite and not extensively tested
- currently implemented data types: doubly linked lists and AVL trees only
- not yet ported to non POSIX platforms (i.e., Windows)
- API/ABI are "stable enough", but can't guarantee for total stability
in the next future (i.e., no big changes will happen, yet something
might change)
- no locale-independent sscanf() or similar
- no UTF16-BE support/conversion
- till now, a one man effort

That is, it is certainly possible to make it become viable to replace
SLV2, but this is not high priority for me at the moment. Once the new
NASPRO release is out I can consider whether to do the work, since I
want to port SLV2 to Windows right after.

The decision, however, depends on whether Dave would like that or not.

Stefano
_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@email-addr-hidden
http://lists.linuxaudio.org/listinfo/linux-audio-dev
Received on Sat Feb 26 16:15:02 2011

This archive was generated by hypermail 2.1.8 : Sat Feb 26 2011 - 16:15:02 EET