about summary refs log tree commit diff stats
path: root/html/channel.mu.html
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2018-05-12 10:22:26 -0700
committerKartik Agaram <vc@akkartik.com>2018-05-12 10:22:26 -0700
commitcdf2822743b3beeb37ebc3deea8e08b6130698c5 (patch)
treeb7946314d79e8df95eb16703b65832e20f7ee620 /html/channel.mu.html
parentbd222553d7bc7d91d3eebae5639b01f58c8f7c75 (diff)
downloadmu-cdf2822743b3beeb37ebc3deea8e08b6130698c5.tar.gz
4242 - get rid of refcounts entirely
We're going to lean back into the experiment of commit 4179 back in Jan.
If we delete memory it's up to us to ensure no pointers into it survive.

Since deep-copy depends on our refcounting infrastructure, it's gone as
well. So we're going to have to start watching out for pointers shared
over channels.
Diffstat (limited to 'html/channel.mu.html')
-rw-r--r--html/channel.mu.html16
1 files changed, 8 insertions, 8 deletions
diff --git a/html/channel.mu.html b/html/channel.mu.html
index f69af8e5..fdb5c2dc 100644
--- a/html/channel.mu.html
+++ b/html/channel.mu.html
@@ -59,7 +59,7 @@ if ('onhashchange' in window) {
 <pre id='vimCodeElement'>
 <span id="L1" class="LineNr"> 1 </span><span class="Comment"># example program: communicating between routines using channels</span>
 <span id="L2" class="LineNr"> 2 </span>
-<span id="L3" class="LineNr"> 3 </span><span class="muRecipe">def</span> <a href='channel.mu.html#L3'>producer</a> <a href='075channel.mu.html#L47'>sink</a>:&amp;:<a href='075channel.mu.html#L47'>sink</a>:char<span class="muRecipe"> -&gt; </span><a href='075channel.mu.html#L47'>sink</a>:&amp;:<a href='075channel.mu.html#L47'>sink</a>:char [
+<span id="L3" class="LineNr"> 3 </span><span class="muRecipe">def</span> <a href='channel.mu.html#L3'>producer</a> <a href='075channel.mu.html#L40'>sink</a>:&amp;:<a href='075channel.mu.html#L40'>sink</a>:char<span class="muRecipe"> -&gt; </span><a href='075channel.mu.html#L40'>sink</a>:&amp;:<a href='075channel.mu.html#L40'>sink</a>:char [
 <span id="L4" class="LineNr"> 4 </span>  <span class="Comment"># produce characters 1 to 5 on a channel</span>
 <span id="L5" class="LineNr"> 5 </span>  <span class="Constant">local-scope</span>
 <span id="L6" class="LineNr"> 6 </span>  <span class="Constant">load-inputs</span>
@@ -71,20 +71,20 @@ if ('onhashchange' in window) {
 <span id="L12" class="LineNr">12 </span>    <span class="Comment"># other threads might get between these prints</span>
 <span id="L13" class="LineNr">13 </span>    $print <span class="Constant">[produce: ]</span>, n, <span class="Constant">[ </span>
 <span id="L14" class="LineNr">14 </span><span class="Constant">]</span>
-<span id="L15" class="LineNr">15 </span>    <a href='075channel.mu.html#L47'>sink</a> <span class="Special">&lt;-</span> <a href='075channel.mu.html#L67'>write</a> <a href='075channel.mu.html#L47'>sink</a>, n
+<span id="L15" class="LineNr">15 </span>    <a href='075channel.mu.html#L40'>sink</a> <span class="Special">&lt;-</span> <a href='075channel.mu.html#L60'>write</a> <a href='075channel.mu.html#L40'>sink</a>, n
 <span id="L16" class="LineNr">16 </span>    n <span class="Special">&lt;-</span> add n,<span class="Constant"> 1</span>
 <span id="L17" class="LineNr">17 </span>   <span class="muControl"> loop</span>
 <span id="L18" class="LineNr">18 </span>  <span class="Delimiter">}</span>
-<span id="L19" class="LineNr">19 </span>  close <a href='075channel.mu.html#L47'>sink</a>
+<span id="L19" class="LineNr">19 </span>  close <a href='075channel.mu.html#L40'>sink</a>
 <span id="L20" class="LineNr">20 </span>]
 <span id="L21" class="LineNr">21 </span>
-<span id="L22" class="LineNr">22 </span><span class="muRecipe">def</span> <a href='channel.mu.html#L22'>consumer</a> <a href='075channel.mu.html#L43'>source</a>:&amp;:<a href='075channel.mu.html#L43'>source</a>:char<span class="muRecipe"> -&gt; </span><a href='075channel.mu.html#L43'>source</a>:&amp;:<a href='075channel.mu.html#L43'>source</a>:char [
+<span id="L22" class="LineNr">22 </span><span class="muRecipe">def</span> <a href='channel.mu.html#L22'>consumer</a> <a href='075channel.mu.html#L36'>source</a>:&amp;:<a href='075channel.mu.html#L36'>source</a>:char<span class="muRecipe"> -&gt; </span><a href='075channel.mu.html#L36'>source</a>:&amp;:<a href='075channel.mu.html#L36'>source</a>:char [
 <span id="L23" class="LineNr">23 </span>  <span class="Comment"># consume and print integers from a channel</span>
 <span id="L24" class="LineNr">24 </span>  <span class="Constant">local-scope</span>
 <span id="L25" class="LineNr">25 </span>  <span class="Constant">load-inputs</span>
 <span id="L26" class="LineNr">26 </span>  <span class="Delimiter">{</span>
 <span id="L27" class="LineNr">27 </span>    <span class="Comment"># read an integer from the channel</span>
-<span id="L28" class="LineNr">28 </span>    n:char, eof?:bool, <a href='075channel.mu.html#L43'>source</a> <span class="Special">&lt;-</span> read <a href='075channel.mu.html#L43'>source</a>
+<span id="L28" class="LineNr">28 </span>    n:char, eof?:bool, <a href='075channel.mu.html#L36'>source</a> <span class="Special">&lt;-</span> read <a href='075channel.mu.html#L36'>source</a>
 <span id="L29" class="LineNr">29 </span>    <span class="muControl">break-if</span> eof?
 <span id="L30" class="LineNr">30 </span>    <span class="Comment"># other threads might get between these prints</span>
 <span id="L31" class="LineNr">31 </span>    $print <span class="Constant">[consume: ]</span>, n:char, <span class="Constant">[ </span>
@@ -95,10 +95,10 @@ if ('onhashchange' in window) {
 <span id="L36" class="LineNr">36 </span>
 <span id="L37" class="LineNr">37 </span><span class="muRecipe">def</span> <a href='channel.mu.html#L37'>main</a> [
 <span id="L38" class="LineNr">38 </span>  <span class="Constant">local-scope</span>
-<span id="L39" class="LineNr">39 </span>  <a href='075channel.mu.html#L43'>source</a>:&amp;:<a href='075channel.mu.html#L43'>source</a>:char, <a href='075channel.mu.html#L47'>sink</a>:&amp;:<a href='075channel.mu.html#L47'>sink</a>:char <span class="Special">&lt;-</span> <a href='075channel.mu.html#L51'>new-channel</a> <span class="Constant">3/capacity</span>
+<span id="L39" class="LineNr">39 </span>  <a href='075channel.mu.html#L36'>source</a>:&amp;:<a href='075channel.mu.html#L36'>source</a>:char, <a href='075channel.mu.html#L40'>sink</a>:&amp;:<a href='075channel.mu.html#L40'>sink</a>:char <span class="Special">&lt;-</span> <a href='075channel.mu.html#L44'>new-channel</a> <span class="Constant">3/capacity</span>
 <span id="L40" class="LineNr">40 </span>  <span class="Comment"># create two background 'routines' that communicate by a channel</span>
-<span id="L41" class="LineNr">41 </span>  routine1:num <span class="Special">&lt;-</span> <span class="muControl">start-running</span> <a href='channel.mu.html#L3'>producer</a>, <a href='075channel.mu.html#L47'>sink</a>
-<span id="L42" class="LineNr">42 </span>  routine2:num <span class="Special">&lt;-</span> <span class="muControl">start-running</span> <a href='channel.mu.html#L22'>consumer</a>, <a href='075channel.mu.html#L43'>source</a>
+<span id="L41" class="LineNr">41 </span>  routine1:num <span class="Special">&lt;-</span> <span class="muControl">start-running</span> <a href='channel.mu.html#L3'>producer</a>, <a href='075channel.mu.html#L40'>sink</a>
+<span id="L42" class="LineNr">42 </span>  routine2:num <span class="Special">&lt;-</span> <span class="muControl">start-running</span> <a href='channel.mu.html#L22'>consumer</a>, <a href='075channel.mu.html#L36'>source</a>
 <span id="L43" class="LineNr">43 </span>  wait-for-routine routine1
 <span id="L44" class="LineNr">44 </span>  wait-for-routine routine2
 <span id="L45" class="LineNr">45 </span>]