[Machine readable output from userland utilities] report

Vsevolod Stakhov vsevolod at FreeBSD.org
Wed May 28 10:41:23 UTC 2014


David, Zaro,

On 26/05/14 18:30, David Chisnall wrote:
> On 26 May 2014, at 15:34, Zaro Korchev <zkorchev at mail.bg> wrote:
> 
>> I considered using libucl and libnv. The problem with libucl is
>> that it does not support streamed output so, after a discussion
>> with my mentors, I decided to implement this prototype version
>> using YAJL. This is not a final decision but that's what I'm using
>> at the moment.
> 
> That's fine, as long as you're prototyping an interface for an
> abstraction layer it doesn't matter much what is on the back end, I
> just wanted to make sure that you were thinking about libucl as an
> eventual back end.
> 
> I've added Vsevolod to the cc list, as he's the author of libucl -
> perhaps he can add the missing functionality that you require.
> 
> I definitely agree that streaming is important - we want to be able
> to construct pipes of these, although hopefully the total amount of
> data won't be huge.

I do not understand what is streaming *output* in case of any
serialization format. Does it means that you want to have some output on
object changing?

This is not currently supported by libucl, but the design of ucl emitter
allows to implement it in a rather straightforward way.

YAJL, on the contrary, supports JSON only.

> 
>> I may use libnv soon - I just haven't had need for it yet. It has
>> one limitation that I'm concerned about - it does not support
>> arrays (the only supported composite data type is key, value
>> pairs).
> 
> Arrays in libnv came up at BSDCan.  Apparently someone (Pawel?) has
> patches for arrays, but didn't commit them because there were no
> consumers in the base system that needed them.  It sounds like you've
> just volunteered as a beta tester ;-)
> 
> It would also be good to consider prepending a header to each stream
> so that tools can consume them without having to be aware of the
> format.  JSON has the nice property that it can be spotted quite
> easily be examining the first 4 bytes (in any unicode encoding).  I'm
> not sure if UCL and NV have the same property - if they do, then we
> don't need to worry.

Libucl itself can produce valid JSON. The pure `UCL` output is mostly  a
human readable output.

-- 
Vsevolod Stakhov


More information about the soc-status mailing list