<div dir="ltr">And to conclude this rant, I shall be blunt.<br><br>> For completeness - when there are userland ports, implementing UDP as a module will be trivial.<div><br></div><div>UDP is already done with raw devices. <br><br>There is an ffi module you can use for sockets in Gerbil, which is distributed with the same license as Gambit and you can use in your Gambit programs without waiting for whatever these userland ports are. <br><br></div><div>Similarly, Gamsock can also be easily updated to use raw devices with the it's existing interface but without the spinning.<br></div><div><br></div><div>-- vyzo<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Aug 12, 2017 at 9:28 AM, Dimitris Vyzovitis <span dir="ltr"><<a href="mailto:vyzo@hackzen.org" target="_blank">vyzo@hackzen.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div><div>Just to clarify this last one a bit.<br><br></div>I was referring to the classic byte/character/object port abstraction.<br><br></div>With the introduction of raw devices, we have a new base class of ports, which are the waitable ports.<br></div>These objects are i/o objects managed by the Gambit runtime and integrated with the Gambit scheduler.<br></div>The idea is that there exist i/o objects that don't fit the stream abstraction, and we would like to do i/o on them using specialized (ffi) methods while integrating with the Gambit scheduler.<br><br></div>UDP sockets is perfect example of such a device: they are not streams of bytes, so they don't fit the classic port abstraction. But they are i/o objects, on which you can do i/o with specialized ffi methods and you want to integrate with the Gambit scheduler to avoid blocking or spinning.<br></div><br></div>-- vyzo<br><div><div><div><div><div><br><br></div></div></div></div></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Aug 12, 2017 at 8:55 AM, Dimitris Vyzovitis <span dir="ltr"><<a href="mailto:vyzo@hackzen.org" target="_blank">vyzo@hackzen.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Ports are not the right abstraction for UDP -- UDP sockets are not streams of bytes, so userland ports are not relevant. <br><br><br></div><div>--vyzo<br></div></div><div class="m_1611773647954719275HOEnZb"><div class="m_1611773647954719275h5"><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Aug 11, 2017 at 9:28 PM, Adam <span dir="ltr"><<a href="mailto:adam.mlmb@gmail.com" target="_blank">adam.mlmb@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Guillaume,</div><div><br></div><div>For completeness - when there are userland ports, implementing UDP as a module will be trivial.</div><div><br></div><div>For more info see here <a href="https://github.com/gambit/gambit/issues/288" target="_blank">https://github.com/gambit/gamb<wbr>it/issues/288</a> .<span class="m_1611773647954719275m_-8368539681464842947HOEnZb"><font color="#888888"><br></font></span></div><span class="m_1611773647954719275m_-8368539681464842947HOEnZb"><font color="#888888"><div><br></div><div>Adam</div></font></span></div><div class="m_1611773647954719275m_-8368539681464842947HOEnZb"><div class="m_1611773647954719275m_-8368539681464842947h5"><div class="gmail_extra"><br><div class="gmail_quote">2017-08-09 19:10 GMT+02:00 Dimitris Vyzovitis <span dir="ltr"><<a href="mailto:vyzo@hackzen.org" target="_blank">vyzo@hackzen.org</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>> Regarding #2<br><br></div><div>Yes, I implemented raw devices exactly for this reason.<br></div><div>Gamsock could use the socket ffi from Gerbil to provide the same interface but integrated with the Gambit i/o scheduler, <br></div><div><br></div><div>-- vyzo<br></div></div><div class="m_1611773647954719275m_-8368539681464842947m_6039448362646779735HOEnZb"><div class="m_1611773647954719275m_-8368539681464842947m_6039448362646779735h5"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Aug 9, 2017 at 6:48 PM, Guillaume Cartier <span dir="ltr"><<a href="mailto:gcartier@jazzscheme.org" target="_blank">gcartier@jazzscheme.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hey Jeff,<div><br></div><div>I really like what I saw when I browsed Gamsock's code. The code looks clean and well implemented.</div><div><br></div><div>The two things I see missing, correct me if I'm wrong are:</div><div><br></div><div>#1 Cross-platform support, mainly Windows</div><div>#2 Some way to block on reading the UDP port that is integrated with the Gambit scheduler</div><div><br></div><div>Regarding #1, it seems a bit wasteful to have to implement cross-platform sockets as it is already done in Gambit's low-level C code, so maybe some collaboration with Marc into exposing this code in some way</div><div><br></div><div>Regarding #2, my understanding is that Marc added raw-device ports a while ago to help vyzo do exactly that in Gerbil</div><div><br></div></div><div class="m_1611773647954719275m_-8368539681464842947m_6039448362646779735m_-7623502638253295059HOEnZb"><div class="m_1611773647954719275m_-8368539681464842947m_6039448362646779735m_-7623502638253295059h5"><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Aug 4, 2017 at 4:36 PM, Jeff Read <span dir="ltr"><<a href="mailto:bitwize@gmail.com" target="_blank">bitwize@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto">Gamsock maintainer here. Does Gamsock somehow not fit your needs? I'm open to bug reports or feature requests.</div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="m_1611773647954719275m_-8368539681464842947m_6039448362646779735m_-7623502638253295059m_8117350511853637121h5">On Aug 3, 2017 7:56 AM, "Guillaume Cartier" <<a href="mailto:gcartier@jazzscheme.org" target="_blank">gcartier@jazzscheme.org</a>> wrote:<br type="attribution"></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="m_1611773647954719275m_-8368539681464842947m_6039448362646779735m_-7623502638253295059m_8117350511853637121h5"><div dir="ltr"><span style="font-size:12.8px">Hi everyone,</span><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">What is the current state of UDP in Gambit?</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">I found</div><div style="font-size:12.8px">- an old post where Marc says he has preliminary support and<br></div><div style="font-size:12.8px">- <a href="https://github.com/bitwize/gamsock" target="_blank">https://github.com/bitwize/g<wbr>amsock</a> which looks interesting but hasn't been updated in years</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Anything else available if I need to integrate UDP in my Gambit application?</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Thanks</div></div>
<br></div></div><span>______________________________<wbr>_________________<br>
Gambit-list mailing list<br>
<a href="mailto:Gambit-list@iro.umontreal.ca" target="_blank">Gambit-list@iro.umontreal.ca</a><br>
<a href="https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list" rel="noreferrer" target="_blank">https://webmail.iro.umontreal.<wbr>ca/mailman/listinfo/gambit-lis<wbr>t</a><br>
<br></span></blockquote></div></div>
</blockquote></div><br></div>
</div></div><br>______________________________<wbr>_________________<br>
Gambit-list mailing list<br>
<a href="mailto:Gambit-list@iro.umontreal.ca" target="_blank">Gambit-list@iro.umontreal.ca</a><br>
<a href="https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list" rel="noreferrer" target="_blank">https://webmail.iro.umontreal.<wbr>ca/mailman/listinfo/gambit-lis<wbr>t</a><br>
<br></blockquote></div><br></div>
</div></div><br>______________________________<wbr>_________________<br>
Gambit-list mailing list<br>
<a href="mailto:Gambit-list@iro.umontreal.ca" target="_blank">Gambit-list@iro.umontreal.ca</a><br>
<a href="https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list" rel="noreferrer" target="_blank">https://webmail.iro.umontreal.<wbr>ca/mailman/listinfo/gambit-lis<wbr>t</a><br>
<br></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>