<div dir="ltr"><div class="markdown-here-wrapper" style><p style="margin:1.2em 0px!important">On Mon, Sep 1, 2014 at 11:06 PM, Wojtek Narczyński <<a href="mailto:wojtek@power.com.pl" target="_blank">wojtek@power.com.pl</a>> wrote:</p>
<p style="margin:1.2em 0px!important"></p><div class="markdown-here-exclude"><p></p><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Maybe internalizing UBF into erlang somehow would be a way to go?</blockquote>
<p></p></div><p style="margin:1.2em 0px!important"></p>
<p style="margin:1.2em 0px!important">I’m all for that too. There are some higher-level questions to be answered: </p>
<ul style="margin:1.2em 0px;padding-left:2em">
<li style="margin:0.5em 0px">should the contract checker be hard-linked to UBF(A), the wire format? If used only internally, it seems reasonable to let it understand the Erlang binary format</li>
<li style="margin:0.5em 0px">since 2002, Erlang got type descriptions and specifications; should these be used for describing the protocols? Again, it seems reasonable to be able to refer to existing types from the source code. </li>
<li style="margin:0.5em 0px">should it be possible to turn the contract checker on and off, preferably without performance impact when off? </li>
</ul>
<p style="margin:1.2em 0px!important">regards,<br>Vlad</p>
<div title="MDH:PGRpdiBjbGFzcz0iZ21haWxfZXh0cmEiPjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+T24g
TW9uLCBTZXAgMSwgMjAxNCBhdCAxMTowNiBQTSwgV29qdGVrIE5hcmN6ecWEc2tpIDxzcGFuIGRp
cj0ibHRyIj4mbHQ7PGEgaHJlZj0ibWFpbHRvOndvanRla0Bwb3dlci5jb20ucGwiIHRhcmdldD0i
X2JsYW5rIj53b2p0ZWtAcG93ZXIuY29tLnBsPC9hPiZndDs8L3NwYW4+IHdyb3RlOjxicj4KPGJs
b2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9y
ZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+TWF5YmUgaW50ZXJuYWxp
emluZyBVQkYgaW50byBlcmxhbmcgc29tZWhvdyB3b3VsZCBiZSBhIHdheSB0byBnbz88L2Jsb2Nr
cXVvdGU+PC9kaXY+PGJyPkknbSBhbGwgZm9yIHRoYXQgdG9vLiBUaGVyZSBhcmUgc29tZSBoaWdo
ZXItbGV2ZWwgcXVlc3Rpb25zIHRvIGJlIGFuc3dlcmVkOjwvZGl2Pgo8ZGl2IGNsYXNzPSJnbWFp
bF9leHRyYSI+LSBzaG91bGQgdGhlIGNvbnRyYWN0IGNoZWNrZXIgYmUgaGFyZC1saW5rZWQgdG8g
VUJGKEEpLCB0aGUgd2lyZSBmb3JtYXQ/IElmIHVzZWQgb25seSBpbnRlcm5hbGx5LCBpdCBzZWVt
cyByZWFzb25hYmxlIHRvIGxldCBpdCB1bmRlcnN0YW5kIHRoZSBFcmxhbmcgYmluYXJ5IGZvcm1h
dDwvZGl2PjxkaXYgY2xhc3M9ImdtYWlsX2V4dHJhIj4tIHNpbmNlIDIwMDIsIEVybGFuZyBnb3Qg
dHlwZSBkZXNjcmlwdGlvbnMgYW5kIHNwZWNpZmljYXRpb25zOyBzaG91bGQgdGhlc2UgYmUgdXNl
ZCBmb3IgZGVzY3JpYmluZyB0aGUgcHJvdG9jb2xzPyBBZ2FpbiwgaXQgc2VlbXMgcmVhc29uYWJs
ZSB0byBiZSBhYmxlIHRvIHJlZmVyIHRvIGV4aXN0aW5nIHR5cGVzIGZyb20gdGhlIHNvdXJjZSBj
b2RlLjwvZGl2Pgo8ZGl2IGNsYXNzPSJnbWFpbF9leHRyYSI+LSBzaG91bGQgaXQgYmUgcG9zc2li
bGUgdG8gdHVybiB0aGUgY29udHJhY3QgY2hlY2tlciBvbiBhbmQgb2ZmLCBwcmVmZXJhYmx5IHdp
dGhvdXQgcGVyZm9ybWFuY2UgaW1wYWN0IHdoZW4gb2ZmPyZuYnNwOzwvZGl2PjxkaXYgY2xhc3M9
ImdtYWlsX2V4dHJhIj4KPGJyPjwvZGl2PjxkaXYgY2xhc3M9ImdtYWlsX2V4dHJhIj5yZWdhcmRz
LDwvZGl2PjxkaXYgY2xhc3M9ImdtYWlsX2V4dHJhIj5WbGFkPC9kaXY+PGRpdiBjbGFzcz0iZ21h
aWxfZXh0cmEiPjxicj48L2Rpdj4=" style="height:0;font-size:0em;padding:0;margin:0"></div></div></div>