<!DOCTYPE html><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <p>Hi,</p>
    <p>Thanks! I was inspired by VPRI's ascii art language for tcp/ip
      stack. I thought it would be interesting if you could read
      directly (i.e. not trying to read N bytes to in-memory buffer then
      actually parse it) from network stream; that is, keep parsing and
      putting messages asynchronously into a shared queue, as they go. <br>
    </p>
    <p>One thing that might be slightly worrying is additional
      indirection via BlockClosure evaluation, especially because it's
      valued in #everything method - the most fundamental rule for OMeta
      and might even further cripple performance for typical use cases.<br>
    </p>
    <p>The idea was born out of distraction, so I didn't bother
      significantly rewriting fetching the next element but I think it's
      possible to avoid it - or just put the feature as preference?
      Cheaper to check "if" than always send #value.<br>
    </p>
    <p>But hey, as was said some time ago: <span class="BxUVEf ILfuVd" lang="en"><span class="hgKElc">all problems in computer science
          can be solved by another level of indirection.</span></span></p>
    <p><span class="BxUVEf ILfuVd" lang="en"><span class="hgKElc">Cheers,<br>
          Michał<br>
        </span></span></p>
    <p></p>
    <div class="moz-cite-prefix">On 17.07.2024 03:47, Phil B wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:CAMJMOejmmR6ACvGPJE-uABCJvHGFMpS4rOHG2JVS-2MLx_QLEw@mail.gmail.com">
      
      <div dir="ltr">Very cool, I'll look at merging these as well. 
        I've found OMeta quite useful over a network as well, though I
        tend to use higher level protocols (right now I mainly just
        piggyback on http/https using various 'web standards' to shuttle
        things back and forth which is handy when you only control the
        client or server, but not both)  Things tend to get ugly when
        you start throwing network errors into the mix, but if you're in
        a clean networking environment where things are
        reliable/controlled, you could definitely have fun implementing
        (or even defining new) protocols in OMeta.</div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Thu, Jun 20, 2024 at
          10:18 AM Michał Olszewski via Cuis-dev <<a href="mailto:cuis-dev@lists.cuis.st" moz-do-not-send="true" class="moz-txt-link-freetext">cuis-dev@lists.cuis.st</a>>
          wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi
          all,<br>
          <br>
          While working on a parser (uses text emphasis as part of the
          grammar <br>
          btw.) for my bachelor's streaming language, I've strayed a bit
          and made <br>
          a really small and fun experiment with OMeta2 serving as
          interpreter for <br>
          simple message format being received from a SocketStream,
          showing <br>
          versatility of OMeta in not just "local", finite pattern
          matching but <br>
          also from push-pull streams, like network sockets.<br>
          <br>
          To enable it, I had to add small change to defer fetching next
          element <br>
          from the stream.<br>
          <br>
          I attached necessary package and workspace contents. You can
          git clone <br>
          OMeta with above fix from my repo: <a href="https://github.com/michalo1334/OMeta-Cuis" rel="noreferrer" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">https://github.com/michalo1334/OMeta-Cuis</a><br>
          <br>
          Tested in Cuis7.0.<br>
          <br>
          Have fun!<br>
          <br>
          Cheers,<br>
          Michał<br>
          <br>
          Possible TODO: implement parser/msg constructor for simple
          binary format <br>
          like MessagePack and do message passing between objects across
          network. <br>
          Implement everything in OMeta :).<br>
          -- <br>
          Cuis-dev mailing list<br>
          <a href="mailto:Cuis-dev@lists.cuis.st" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">Cuis-dev@lists.cuis.st</a><br>
          <a href="https://lists.cuis.st/mailman/listinfo/cuis-dev" rel="noreferrer" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">https://lists.cuis.st/mailman/listinfo/cuis-dev</a><br>
        </blockquote>
      </div>
    </blockquote>
  </body>
</html>