On Nov 23, 12:03 pm, Zach Tellman <ztell...@gmail.com> wrote: > When writing Calx [1], I discovered it was a huge pain to deal with > mixed C datatypes in Java. When writing Aleph [2], I discovered the > problem increases by a factor of ten when dealing with streams of > bytes. In an attempt to alleviate my own pain, and hopefully help a > few other people out, I've written Gloss, which can transform a simple > byte-format specification into an encoder and streaming decoder. > > A full writeup can be found athttps://github.com/ztellman/gloss/wiki. > > A few people have already asked me how this differs from protocol > buffers, so I'll preemptively answer that protocol buffers are a fixed > format that cannot be used to interface with external systems. Gloss > is less performant than protocol buffers, but is also much less picky > about formats. > > If anyone has any questions, I'd be happy to answer them. >
Looks very useful, Zach. Thanks. I have a question. I have only taken a quick look, so maybe I'm misunderstanding the intent, but it's not clear to me how you would use this for sending and receiving structured data from, say, a C program. Taking your example from the wiki: (def fr (compile-frame {:a :int16, :b :float32})) Let's say I want to talk to a C program that speaks in structs, like this: struct Foo { short a; float b; } The problem is, the C program cares about order - the short comes before the float. How does the Clojure program know what order I need the fields in, since I have specified the format with a map; an unordered data structure? Is there another way to specify a structure where order of the fields matters? If so, why have two ways of doing it? Or am I just missing something? Thanks, - Chris -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en