Good to see this list getting traffic again but discussion has mostly moved to https://urbit.org/fora. You might get more discussion if you cross-post there.
Best, Jacob. On Mon, Sep 25, 2017 at 7:55 PM James Torre <torreaiwork...@gmail.com> wrote: > Not to imply you haven't already reviewed this, but a distributed graph of > dependency driven propagation of computation superficially resonates with > my understanding of Radul and Sussman's "The Art of the Propagator" [0] > (whose abstract should be sufficient to inspire or deter interest, on the > chance it is as yet uninspected). > > --jpt4 > > [0] (pdf warning) > http://dspace.mit.edu/bitstream/handle/1721.1/44215/MIT-CSAIL-TR-2009-002.pdf?sequence=1 > > On Sep 26, 2017 12:44 AM, "James Bowery" <jabow...@gmail.com> wrote: > >> Yesterday I ran across Nock because I was thinking about doing a quick >> and dirty VM based on an early '80s idea I had. I figured I could dispense >> with all the complicated optimizations due to 23 doublings under Moore's >> law. I posted about this, too informally, in /. in 2000 under "Network >> Functional Programming >> <https://ask.slashdot.org/comments.pl?sid=6343&cid=930087>". Before I >> started coding, I wanted to see if anyone had done anything like it since, >> after all, it's been 35 years! So googling some keywords led me to >> discover first Nock and then the stack which is intended to solve the >> problem I had been hired to solve for AT&T and Knight-Ridder way back then >> -- but that's another story >> <https://tech.slashdot.org/comments.pl?sid=2702791&cid=39217853>. >> >> I was quite excited to see the possibility that someone had finally >> solved the problem, but when I discovered Nock didn't do lazy evaluation -- >> instead leaving it as an option to higher levels -- I realized it wasn't >> going to do what I had hoped. >> >> Let me explain the basic idea in more detail because it isn't "just" lazy >> evaluation, and I'm not sure -- even after doing the searches -- that >> anyone has seriously researched it. And, just to preempt -- I'm not >> talking about "reactive" or "functional reactive" programming as normally >> conceived either. >> >> Normally what people think of when they hear "lazy" or "demand driven" is >> that there is some kind of output required and everything happens -- only >> -- in service of that observation, and once the output is generated, it's >> all over until the next demand drives the evaluation again. The network >> architecture I was targeting used dependency graphs required by David >> Reed's NAMOS system* (eventually becoming TeaTime for Alan Kay's Croquet >> system) for networked atomic actions, but the graphs were, along with >> pervasive memoized values, built by lazy evaluation and remained in place, >> connecting the inputs to the network to the continuously observed outputs >> of the network. If one of the inputs change, the change propagates through >> the dependency graphs as a data-driven or eager evaluation -- terminating >> any propagation if an evaluation produced no change in its memoized >> output. If an observation goes away, the reference counts are decremented >> through the graphs along with the dependency links and at 0 references, the >> memoized value is voided -- although not deleted as NAMOS was a write-once >> or single assignment system (depending on one's paradigm) and the result is >> journaled as it rolls off the system providing an audit trail and potential >> for pseudo-time travel. If the eager evaluation propagates all the way to >> an output and discovers it is inactive, it assumes there was a failure to >> decrement the reference counters etc. by the removal of the observer and it >> happens at that point. >> >> Now, this may seem like way too much functionality to put into such a >> primitive VM as Nock, but one must bear in mind that SK reduction machines >> were widely considered to be a viable route for massively parallel dataflow >> evaluation back in the halcyon days post-Backus's Turing Award lecture >> <https://www.cs.ucf.edu/~dcm/Teaching/COT4810-Fall%202012/Literature/Backus.pdf>"". >> Also bear in mind that Nock contains features that permit it to _formally_ >> fulfill the rigor of such horrors as Church numbers without sacrificing >> much in the way of performance. You don't need to put all that machinery >> everywhere -- but when you need it, which is almost all the time -- you >> _really_ need it. >> >> For example, one of the symptoms that one needs it is when one finds one >> has to construct "make" like systems or "build" systems to maintain file >> system version integrity. What you _really_ need is a generalized atomic >> action system such as that provided by NAMOS, and a "release" of a "build" >> is just the commit of an atomic action that propagates changes outside of >> the temporary** "fork" in reality. >> >> *"Naming and Synchronization In a Decentralized Computer System >> <http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-205.pdf>" -- >> an early form of named data networking aka content-centric networking aka >> information centric networking. It turns out that Arvind and Gostellow -- >> down one story from Reed at the MIT LCS -- had used virtually isomorophic >> data structures to Reed's NAMOS in their contemporaneous dataflow machine >> (the "U-Interpreter <http://ieeexplore.ieee.org/document/1653940/>") to >> perform the data-driven evaluations but neither they nor Reed were aware of >> this until I pointed it out to them. Their "tagged architecture" had >> "tags" that were pretty much the same as Reed's "names", to match up data >> flow tokens. >> >> **This "ease of forking reality" is, by the way, automatically >> accomplished by non-determinism and is a reason people working on pure >> functional operating systems find themselves going relational since >> functions are degenerate relations that may be considered inconsistent >> "forks" as required by the CAP theorem, among other realities. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "urbit" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to urbit-dev+unsubscr...@googlegroups.com. >> To post to this group, send email to urbit-dev@googlegroups.com. >> For more options, visit https://groups.google.com/d/optout. >> > -- > You received this message because you are subscribed to the Google Groups > "urbit" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to urbit-dev+unsubscr...@googlegroups.com. > To post to this group, send email to urbit-dev@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "urbit" group. To unsubscribe from this group and stop receiving emails from it, send an email to urbit-dev+unsubscr...@googlegroups.com. To post to this group, send email to urbit-dev@googlegroups.com. For more options, visit https://groups.google.com/d/optout.