Re: Causeway JSON format doc? (attn Tyler Close and Terry Stanley)

Kevin Reid <[email protected]>
Newsgroups gmane.comp.lang.e.general
Message-ID <[email protected]>
On Aug 1, 2008, at 0:54, Tyler Close wrote:

> Hi Kevin,
>
> On Wed, Jul 30, 2008 at 7:07 PM, Kevin Reid <[email protected]> wrote:
>> Is there any specification of the latest Causeway JSON trace file
>> format? I've only found <http://waterken.sourceforge.net/debug/>,
>> which is non-exhaustive, and an older JSON format document sent to me
>> in e-mail.
>
> The log format is defined by the set of "data" classes at:
>
> <http://waterken.sourceforge.net/javadoc/org/ref_send/log/package-summary.html 
> >
>
> The org.waterken.syntax.json package defines a serialization from Java
> record classes to JSON. So the Causeway JSON trace file format is the
> serialization of any object tree you can compose from the classes
> linked to above.


OK. My further questions then are:

* Is this format intended to be usable by systems other than ref_send?  
I had understood that the new Causeway format was, but this system  
appears to be not very flexible in the matter of what information must  
be available.

* Where do I (as a log generator) put the *content* of the messages  
(what object they are delivered to, what the verb and arguments are)?

* I now see that the anchor.turn.number field is not the causing  
event, as I had assumed it was. Where do I put cause information, then?

I get the impression that it is constructed out of the association of  
Sent and Got events -- that is, Sent has the event in which the  
message was sent and Got is the event of its delivery -- but then:
   * How do I express Resolver#gettingCloser?
   * How do I express the N causes of a buffered message? That is,  
when a promise is resolved, each message delivered to its target has  
at least two causes (in the original log format): the event(s) of the  
original send, and the event of the resolution. I get the impression  
that this is handled by SentIf and Resolved, but I don't see how this  
can express the case of a promise resolved to another promise, in that  
the Resolved event does not identify the new "condition".

* When is nonprimitive -- exactly what stage is expected to generate  
SentIf events?

* Which promises are expected to generate Resolved events?

(I'm a little bit bothered by these last three questions -- it seems  
to me that the new log format requires a lot more information to be  
tracked by the implementation to fit its structure, while not  
providing much benefit in amount of useful information available to  
the debugger. I may well be just not seeing it yet.)

* http://waterken.sourceforge.net/javadoc/org/ref_send/log/ 
CallSite.html does not state how lines and columns are counted:
   * Zero or one-based column numbers?
   * Is the column counting scalar values or grapheme clusters?
   * What are considered line breaks?

* What is expected to be in the "name" field in a CallSite?

* What is the benefit of the Anchor.number field -- is it not implicit  
in the ordering of items in the log?

Comments:

* Have you considered using a log format that doesn't require a  
termination at the end of the file, i.e. "]"? This requirement means  
that a log file is invalid if a vat's implementation is shut down  
abnormally, and there must be code to wrap up the file explicitly.  
(For example, you could say that the log format is "{...}, {...}, ..."  
-- then it can be turned into JSON by wrapping it in "[" "null]".)

-- 
Kevin Reid                            <http://homepage.mac.com/kpreid/>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.