diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2016-04-25 22:27:19 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2016-04-25 22:27:19 -0700 |
commit | 32b8fac2799ac7cec613e84a3eb9c009141b6a3a (patch) | |
tree | 11f56c1a235abf7b626ea8983fff3d2edb1fcf98 /index.html | |
parent | 224972ee9871fcb06ee285fa5f3d9528c034d414 (diff) | |
download | mu-32b8fac2799ac7cec613e84a3eb9c009141b6a3a.tar.gz |
2866
Diffstat (limited to 'index.html')
-rw-r--r-- | index.html | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/index.html b/index.html index 1f72e0d6..36050d5d 100644 --- a/index.html +++ b/index.html @@ -89,27 +89,31 @@ harness for adding per-primitive checks to run before running a program. <br/>Various primitive operations: on <a href='html/022arithmetic.cc.html'>numbers</a>, <a href='html/023boolean.cc.html'>booleans</a>, for <a href='html/024jump.cc.html'>control flow</a>, and <a href='html/025compare.cc.html'>comparing values</a>. +<br/><a href='html/026call.cc.html'>026call.cc</a>: calls to functions look +just like primitive operations. +<br/><a href='html/027call_ingredient.cc.html'>027call_ingredient.cc</a>: how +functions pass arguments or 'ingredients' without introducing any syntax and +breaking the metaphor of functions as lists of instructions. +<br/><a href='html/028call_reply.cc.html'>028call_reply.cc</a>: functions can +return arbitrary numbers of values to their callers. <br/><a href='html/029tools.cc.html'>029tools.cc</a>: various primitive operations to help with testing and debugging. <p/><a href='html/030container.cc.html'>030container.cc</a>: Mu supports compound types called<em>containers</em> akin to records, structs or classes. -<br/><a href='html/031address.cc.html'>031address.cc</a>: adding and removing -layers of indirection to Mu data. -<br/><a href='html/032array.cc.html'>032array.cc</a>: all Mu data structures +<br/><a href='html/031array.cc.html'>031array.cc</a>: all Mu data structures are bounds-checked. -<br/><a href='html/033exclusive_container.cc.html'>033exclusive_container.cc</a>: +<br/><a href='html/032exclusive_container.cc.html'>032exclusive_container.cc</a>: tagged unions or sum types. -<br/><a href='html/034call.cc.html'>034call.cc</a>: calls to functions look -just like primitive operations. -<br/><a href='html/035call_ingredient.cc.html'>035call_ingredient.cc</a>: how -functions pass arguments or 'ingredients' without introducing any syntax and -breaking the metaphor of functions as lists of instructions. -<br/><a href='html/036call_reply.cc.html'>036call_reply.cc</a>: functions can -return arbitrary numbers of values to their callers. -<br/><a href='html/037new.cc.html'>037new.cc</a>: rudimentary memory -allocator that is aware of all global types in any Mu program. -<br/><a href='html/061recipe.cc.html'>061recipe.cc</a>: passing functions +<br/><a href='html/033address.cc.html'>033address.cc</a>: Mu requires you to +manually manage memory. However, it provides transparent refcounting for all +addresses, making it entirely safe from the sorts of undefined behavior and +security vulnerabilities that plague C. Compared to Rust, Mu gives up some +runtime efficiency in exchange for C-like flexibility (you can copy addresses +around all you like, and write from any copy of an address) and simpler +implementation (since I punt on Rust's static analysis). + +<p/><a href='html/061recipe.cc.html'>061recipe.cc</a>: passing functions around as first-class values in higher-order functions. <br/><a href='html/062scheduler.cc.html'>062scheduler.cc</a>: running multiple functions concurrently using <em>routines</em> that might execute in |