urbit/docs/pub/doc/arvo/eyre/commentary.md

232 lines
11 KiB
Markdown
Raw Normal View History

doc -> docs Conflicts: urb/zod/docs/psal.hook urb/zod/docs/pub/doc.md urb/zod/docs/pub/doc/arvo.md urb/zod/docs/pub/doc/arvo/ames.md urb/zod/docs/pub/doc/arvo/ames/commentary.md urb/zod/docs/pub/doc/arvo/arvo.md urb/zod/docs/pub/doc/arvo/arvo/commentary.md urb/zod/docs/pub/doc/arvo/clay.md urb/zod/docs/pub/doc/arvo/clay/commentary.md urb/zod/docs/pub/doc/arvo/dill.md urb/zod/docs/pub/doc/arvo/dill/commentary.md urb/zod/docs/pub/doc/arvo/eyre.md urb/zod/docs/pub/doc/arvo/eyre/commentary.md urb/zod/docs/pub/doc/arvo/ford.md urb/zod/docs/pub/doc/arvo/ford/commentary.md urb/zod/docs/pub/doc/arvo/gall.md urb/zod/docs/pub/doc/arvo/gall/gall.md urb/zod/docs/pub/doc/arvo/ives.md urb/zod/docs/pub/doc/arvo/ives/ives.md urb/zod/docs/pub/doc/arvo/jael.md urb/zod/docs/pub/doc/arvo/jael/jael.md urb/zod/docs/pub/doc/arvo/kahn.md urb/zod/docs/pub/doc/arvo/kahn/kahn.md urb/zod/docs/pub/doc/arvo/lunt.md urb/zod/docs/pub/doc/arvo/lunt/lunt.md urb/zod/docs/pub/doc/arvo/time.md urb/zod/docs/pub/doc/arvo/util.md urb/zod/docs/pub/doc/guide.md urb/zod/docs/pub/doc/guide/a-ford.md urb/zod/docs/pub/doc/guide/b-cli.md urb/zod/docs/pub/doc/guide/c-gall.md urb/zod/docs/pub/doc/guide/d-app.md urb/zod/docs/pub/doc/guide/e-dev.md urb/zod/docs/pub/doc/hoon.md urb/zod/docs/pub/doc/hoon/library.md urb/zod/docs/pub/doc/hoon/library/0.md urb/zod/docs/pub/doc/hoon/library/1.md urb/zod/docs/pub/doc/hoon/library/2a.md urb/zod/docs/pub/doc/hoon/library/2b.md urb/zod/docs/pub/doc/hoon/library/2c.md urb/zod/docs/pub/doc/hoon/library/2da.md urb/zod/docs/pub/doc/hoon/library/2db.md urb/zod/docs/pub/doc/hoon/library/2dc.md urb/zod/docs/pub/doc/hoon/library/2dd.md urb/zod/docs/pub/doc/hoon/library/2ea.md urb/zod/docs/pub/doc/hoon/library/2eb.md urb/zod/docs/pub/doc/hoon/library/2ec.md urb/zod/docs/pub/doc/hoon/library/2ed.md urb/zod/docs/pub/doc/hoon/library/2ee.md urb/zod/docs/pub/doc/hoon/library/2ef.md urb/zod/docs/pub/doc/hoon/library/2eg.md urb/zod/docs/pub/doc/hoon/library/2eh.md urb/zod/docs/pub/doc/hoon/library/2ei.md urb/zod/docs/pub/doc/hoon/library/2ej.md urb/zod/docs/pub/doc/hoon/library/2ek.md urb/zod/docs/pub/doc/hoon/library/2el.md urb/zod/docs/pub/doc/hoon/library/2em.md urb/zod/docs/pub/doc/hoon/library/2en.md urb/zod/docs/pub/doc/hoon/library/2eo.md urb/zod/docs/pub/doc/hoon/library/2ep.md urb/zod/docs/pub/doc/hoon/library/2ew.md urb/zod/docs/pub/doc/hoon/library/2ex.md urb/zod/docs/pub/doc/hoon/library/2ey.md urb/zod/docs/pub/doc/hoon/library/2ez.md urb/zod/docs/pub/doc/hoon/library/3ba.md urb/zod/docs/pub/doc/hoon/library/3bb.md urb/zod/docs/pub/doc/hoon/library/3bc.md urb/zod/docs/pub/doc/hoon/library/3bd.md urb/zod/docs/pub/doc/hoon/library/3be.md urb/zod/docs/pub/doc/hoon/library/3bf.md urb/zod/docs/pub/doc/hoon/library/3bg.md urb/zod/docs/pub/doc/hoon/library/3bh.md urb/zod/docs/pub/doc/hoon/library/3bi.md urb/zod/docs/pub/doc/hoon/reference.md urb/zod/docs/pub/doc/hoon/reference/odors.md urb/zod/docs/pub/doc/hoon/runes.md urb/zod/docs/pub/doc/hoon/runes/bc.md urb/zod/docs/pub/doc/hoon/runes/bc/bcbr.md urb/zod/docs/pub/doc/hoon/runes/bc/bccb.md urb/zod/docs/pub/doc/hoon/runes/bc/bccl.md urb/zod/docs/pub/doc/hoon/runes/bc/bccm.md urb/zod/docs/pub/doc/hoon/runes/bc/bccn.md urb/zod/docs/pub/doc/hoon/runes/bc/bckt.md urb/zod/docs/pub/doc/hoon/runes/bc/bcls.md urb/zod/docs/pub/doc/hoon/runes/bc/bcpm.md urb/zod/docs/pub/doc/hoon/runes/bc/bcpt.md urb/zod/docs/pub/doc/hoon/runes/bc/bctr.md urb/zod/docs/pub/doc/hoon/runes/bc/bcts.md urb/zod/docs/pub/doc/hoon/runes/bc/bcwt.md urb/zod/docs/pub/doc/hoon/runes/bc/bczp.md urb/zod/docs/pub/doc/hoon/runes/br.md urb/zod/docs/pub/doc/hoon/runes/br/brcb.md urb/zod/docs/pub/doc/hoon/runes/br/brcn.md urb/zod/docs/pub/doc/hoon/runes/br/brdt.md urb/zod/docs/pub/doc/hoon/runes/br/brfs.md urb/zod/docs/pub/doc/hoon/runes/br/brhp.md urb/zod/docs/pub/doc/hoon/runes/br/brkt.md urb/zod/docs/pub/doc/hoon/runes/br/brls.md urb/zod/docs/pub/doc/hoon/runes/br/brtr.md urb/zod/docs/pub/doc/hoon/runes/br/brts.md urb/zod/docs/pub/doc/hoon/runes/br/brwt.md urb/zod/docs/pub/doc/hoon/runes/cl.md urb/zod/docs/pub/doc/hoon/runes/cl/clcb.md urb/zod/docs/pub/doc/hoon/runes/cl/clfs.md urb/zod/docs/pub/doc/hoon/runes/cl/clhp.md urb/zod/docs/pub/doc/hoon/runes/cl/clkt.md urb/zod/docs/pub/doc/hoon/runes/cl/clls.md urb/zod/docs/pub/doc/hoon/runes/cl/clsg.md urb/zod/docs/pub/doc/hoon/runes/cl/cltr.md urb/zod/docs/pub/doc/hoon/runes/cn.md urb/zod/docs/pub/doc/hoon/runes/cn/cncb.md urb/zod/docs/pub/doc/hoon/runes/cn/cncl.md urb/zod/docs/pub/doc/hoon/runes/cn/cndt.md urb/zod/docs/pub/doc/hoon/runes/cn/cnhp.md urb/zod/docs/pub/doc/hoon/runes/cn/cnkt.md urb/zod/docs/pub/doc/hoon/runes/cn/cnls.md urb/zod/docs/pub/doc/hoon/runes/cn/cnsg.md urb/zod/docs/pub/doc/hoon/runes/cn/cntr.md urb/zod/docs/pub/doc/hoon/runes/cn/cnts.md urb/zod/docs/pub/doc/hoon/runes/cn/cnzy.md urb/zod/docs/pub/doc/hoon/runes/cn/cnzz.md urb/zod/docs/pub/doc/hoon/runes/dt.md urb/zod/docs/pub/doc/hoon/runes/dt/dtkt.md urb/zod/docs/pub/doc/hoon/runes/dt/dtls.md urb/zod/docs/pub/doc/hoon/runes/dt/dttr.md urb/zod/docs/pub/doc/hoon/runes/dt/dtts.md urb/zod/docs/pub/doc/hoon/runes/dt/dtwt.md urb/zod/docs/pub/doc/hoon/runes/dt/dtzy.md urb/zod/docs/pub/doc/hoon/runes/dt/dtzz.md urb/zod/docs/pub/doc/hoon/runes/hx.md urb/zod/docs/pub/doc/hoon/runes/hx/hxgl.md urb/zod/docs/pub/doc/hoon/runes/hx/hxgr.md urb/zod/docs/pub/doc/hoon/runes/kt.md urb/zod/docs/pub/doc/hoon/runes/kt/ktbr.md urb/zod/docs/pub/doc/hoon/runes/kt/ktdt.md urb/zod/docs/pub/doc/hoon/runes/kt/kthp.md urb/zod/docs/pub/doc/hoon/runes/kt/ktls.md urb/zod/docs/pub/doc/hoon/runes/kt/ktpm.md urb/zod/docs/pub/doc/hoon/runes/kt/ktsg.md urb/zod/docs/pub/doc/hoon/runes/kt/ktts.md urb/zod/docs/pub/doc/hoon/runes/kt/ktwt.md urb/zod/docs/pub/doc/hoon/runes/sg.md urb/zod/docs/pub/doc/hoon/runes/sg/sgbc.md urb/zod/docs/pub/doc/hoon/runes/sg/sgbr.md urb/zod/docs/pub/doc/hoon/runes/sg/sgcb.md urb/zod/docs/pub/doc/hoon/runes/sg/sgcn.md urb/zod/docs/pub/doc/hoon/runes/sg/sgfs.md urb/zod/docs/pub/doc/hoon/runes/sg/sggl.md urb/zod/docs/pub/doc/hoon/runes/sg/sggr.md urb/zod/docs/pub/doc/hoon/runes/sg/sgls.md urb/zod/docs/pub/doc/hoon/runes/sg/sgpm.md urb/zod/docs/pub/doc/hoon/runes/sg/sgts.md urb/zod/docs/pub/doc/hoon/runes/sg/sgwt.md urb/zod/docs/pub/doc/hoon/runes/sg/sgzp.md urb/zod/docs/pub/doc/hoon/runes/sm.md urb/zod/docs/pub/doc/hoon/runes/sm/smcl.md urb/zod/docs/pub/doc/hoon/runes/sm/smcn.md urb/zod/docs/pub/doc/hoon/runes/sm/smdq.md urb/zod/docs/pub/doc/hoon/runes/sm/smhp.md urb/zod/docs/pub/doc/hoon/runes/sm/smls.md urb/zod/docs/pub/doc/hoon/runes/sm/smsg.md urb/zod/docs/pub/doc/hoon/runes/sm/smsm.md urb/zod/docs/pub/doc/hoon/runes/sm/smtr.md urb/zod/docs/pub/doc/hoon/runes/sm/smzz.md urb/zod/docs/pub/doc/hoon/runes/ts.md urb/zod/docs/pub/doc/hoon/runes/ts/tsbr.md urb/zod/docs/pub/doc/hoon/runes/ts/tscl.md urb/zod/docs/pub/doc/hoon/runes/ts/tsdt.md urb/zod/docs/pub/doc/hoon/runes/ts/tsgl.md urb/zod/docs/pub/doc/hoon/runes/ts/tsgr.md urb/zod/docs/pub/doc/hoon/runes/ts/tshp.md urb/zod/docs/pub/doc/hoon/runes/ts/tskt.md urb/zod/docs/pub/doc/hoon/runes/ts/tsls.md urb/zod/docs/pub/doc/hoon/runes/ts/tssg.md urb/zod/docs/pub/doc/hoon/runes/ts/tstr.md urb/zod/docs/pub/doc/hoon/runes/wt.md urb/zod/docs/pub/doc/hoon/runes/wt/wtbr.md urb/zod/docs/pub/doc/hoon/runes/wt/wtcl.md urb/zod/docs/pub/doc/hoon/runes/wt/wtdt.md urb/zod/docs/pub/doc/hoon/runes/wt/wtgl.md urb/zod/docs/pub/doc/hoon/runes/wt/wtgr.md urb/zod/docs/pub/doc/hoon/runes/wt/wthp.md urb/zod/docs/pub/doc/hoon/runes/wt/wthz.md urb/zod/docs/pub/doc/hoon/runes/wt/wtkt.md urb/zod/docs/pub/doc/hoon/runes/wt/wtkz.md urb/zod/docs/pub/doc/hoon/runes/wt/wtls.md urb/zod/docs/pub/doc/hoon/runes/wt/wtlz.md urb/zod/docs/pub/doc/hoon/runes/wt/wtpm.md urb/zod/docs/pub/doc/hoon/runes/wt/wtpt.md urb/zod/docs/pub/doc/hoon/runes/wt/wtpz.md urb/zod/docs/pub/doc/hoon/runes/wt/wtsg.md urb/zod/docs/pub/doc/hoon/runes/wt/wtsz.md urb/zod/docs/pub/doc/hoon/runes/wt/wtts.md urb/zod/docs/pub/doc/hoon/runes/wt/wttz.md urb/zod/docs/pub/doc/hoon/runes/wt/wtzp.md urb/zod/docs/pub/doc/hoon/runes/zp.md urb/zod/docs/pub/doc/hoon/runes/zp/zpcb.md urb/zod/docs/pub/doc/hoon/runes/zp/zpcm.md urb/zod/docs/pub/doc/hoon/runes/zp/zpfs.md urb/zod/docs/pub/doc/hoon/runes/zp/zpgr.md urb/zod/docs/pub/doc/hoon/runes/zp/zpsm.md urb/zod/docs/pub/doc/hoon/runes/zp/zpts.md urb/zod/docs/pub/doc/hoon/runes/zp/zpwt.md urb/zod/docs/pub/doc/hoon/runes/zp/zpzp.md urb/zod/docs/pub/doc/nock.md urb/zod/docs/pub/doc/nock/reference.md urb/zod/docs/pub/doc/reference.md urb/zod/docs/pub/doc/reference/glossary.md urb/zod/docs/pub/doc/reference/vere.md urb/zod/docs/pub/tree/src/css/fonts.styl urb/zod/docs/pub/tree/src/css/main.css urb/zod/docs/pub/tree/src/css/main.styl urb/zod/docs/pub/tree/src/css/mobile.styl urb/zod/docs/pub/tree/src/js/actions/TreeActions.coffee urb/zod/docs/pub/tree/src/js/components/AnchorComponent.coffee urb/zod/docs/pub/tree/src/js/components/BodyComponent.coffee urb/zod/docs/pub/tree/src/js/components/KidsComponent.coffee urb/zod/docs/pub/tree/src/js/components/ListComponent.coffee urb/zod/docs/pub/tree/src/js/components/LoadComponent.coffee urb/zod/docs/pub/tree/src/js/dispatcher/Dispatcher.coffee urb/zod/docs/pub/tree/src/js/main.coffee urb/zod/docs/pub/tree/src/js/main.js urb/zod/docs/pub/tree/src/js/package.json urb/zod/docs/pub/tree/src/js/persistence/TreePersistence.coffee urb/zod/docs/pub/tree/src/js/stores/TreeStore.coffee urb/zod/docs/tree/hymn.hook urb/zod/docs/tree/json.hook urb/zod/docs/tree/util.hoon
2015-02-24 22:33:50 +03:00
Eyre: Reference
===============
todo
doc -> docs Conflicts: urb/zod/docs/psal.hook urb/zod/docs/pub/doc.md urb/zod/docs/pub/doc/arvo.md urb/zod/docs/pub/doc/arvo/ames.md urb/zod/docs/pub/doc/arvo/ames/commentary.md urb/zod/docs/pub/doc/arvo/arvo.md urb/zod/docs/pub/doc/arvo/arvo/commentary.md urb/zod/docs/pub/doc/arvo/clay.md urb/zod/docs/pub/doc/arvo/clay/commentary.md urb/zod/docs/pub/doc/arvo/dill.md urb/zod/docs/pub/doc/arvo/dill/commentary.md urb/zod/docs/pub/doc/arvo/eyre.md urb/zod/docs/pub/doc/arvo/eyre/commentary.md urb/zod/docs/pub/doc/arvo/ford.md urb/zod/docs/pub/doc/arvo/ford/commentary.md urb/zod/docs/pub/doc/arvo/gall.md urb/zod/docs/pub/doc/arvo/gall/gall.md urb/zod/docs/pub/doc/arvo/ives.md urb/zod/docs/pub/doc/arvo/ives/ives.md urb/zod/docs/pub/doc/arvo/jael.md urb/zod/docs/pub/doc/arvo/jael/jael.md urb/zod/docs/pub/doc/arvo/kahn.md urb/zod/docs/pub/doc/arvo/kahn/kahn.md urb/zod/docs/pub/doc/arvo/lunt.md urb/zod/docs/pub/doc/arvo/lunt/lunt.md urb/zod/docs/pub/doc/arvo/time.md urb/zod/docs/pub/doc/arvo/util.md urb/zod/docs/pub/doc/guide.md urb/zod/docs/pub/doc/guide/a-ford.md urb/zod/docs/pub/doc/guide/b-cli.md urb/zod/docs/pub/doc/guide/c-gall.md urb/zod/docs/pub/doc/guide/d-app.md urb/zod/docs/pub/doc/guide/e-dev.md urb/zod/docs/pub/doc/hoon.md urb/zod/docs/pub/doc/hoon/library.md urb/zod/docs/pub/doc/hoon/library/0.md urb/zod/docs/pub/doc/hoon/library/1.md urb/zod/docs/pub/doc/hoon/library/2a.md urb/zod/docs/pub/doc/hoon/library/2b.md urb/zod/docs/pub/doc/hoon/library/2c.md urb/zod/docs/pub/doc/hoon/library/2da.md urb/zod/docs/pub/doc/hoon/library/2db.md urb/zod/docs/pub/doc/hoon/library/2dc.md urb/zod/docs/pub/doc/hoon/library/2dd.md urb/zod/docs/pub/doc/hoon/library/2ea.md urb/zod/docs/pub/doc/hoon/library/2eb.md urb/zod/docs/pub/doc/hoon/library/2ec.md urb/zod/docs/pub/doc/hoon/library/2ed.md urb/zod/docs/pub/doc/hoon/library/2ee.md urb/zod/docs/pub/doc/hoon/library/2ef.md urb/zod/docs/pub/doc/hoon/library/2eg.md urb/zod/docs/pub/doc/hoon/library/2eh.md urb/zod/docs/pub/doc/hoon/library/2ei.md urb/zod/docs/pub/doc/hoon/library/2ej.md urb/zod/docs/pub/doc/hoon/library/2ek.md urb/zod/docs/pub/doc/hoon/library/2el.md urb/zod/docs/pub/doc/hoon/library/2em.md urb/zod/docs/pub/doc/hoon/library/2en.md urb/zod/docs/pub/doc/hoon/library/2eo.md urb/zod/docs/pub/doc/hoon/library/2ep.md urb/zod/docs/pub/doc/hoon/library/2ew.md urb/zod/docs/pub/doc/hoon/library/2ex.md urb/zod/docs/pub/doc/hoon/library/2ey.md urb/zod/docs/pub/doc/hoon/library/2ez.md urb/zod/docs/pub/doc/hoon/library/3ba.md urb/zod/docs/pub/doc/hoon/library/3bb.md urb/zod/docs/pub/doc/hoon/library/3bc.md urb/zod/docs/pub/doc/hoon/library/3bd.md urb/zod/docs/pub/doc/hoon/library/3be.md urb/zod/docs/pub/doc/hoon/library/3bf.md urb/zod/docs/pub/doc/hoon/library/3bg.md urb/zod/docs/pub/doc/hoon/library/3bh.md urb/zod/docs/pub/doc/hoon/library/3bi.md urb/zod/docs/pub/doc/hoon/reference.md urb/zod/docs/pub/doc/hoon/reference/odors.md urb/zod/docs/pub/doc/hoon/runes.md urb/zod/docs/pub/doc/hoon/runes/bc.md urb/zod/docs/pub/doc/hoon/runes/bc/bcbr.md urb/zod/docs/pub/doc/hoon/runes/bc/bccb.md urb/zod/docs/pub/doc/hoon/runes/bc/bccl.md urb/zod/docs/pub/doc/hoon/runes/bc/bccm.md urb/zod/docs/pub/doc/hoon/runes/bc/bccn.md urb/zod/docs/pub/doc/hoon/runes/bc/bckt.md urb/zod/docs/pub/doc/hoon/runes/bc/bcls.md urb/zod/docs/pub/doc/hoon/runes/bc/bcpm.md urb/zod/docs/pub/doc/hoon/runes/bc/bcpt.md urb/zod/docs/pub/doc/hoon/runes/bc/bctr.md urb/zod/docs/pub/doc/hoon/runes/bc/bcts.md urb/zod/docs/pub/doc/hoon/runes/bc/bcwt.md urb/zod/docs/pub/doc/hoon/runes/bc/bczp.md urb/zod/docs/pub/doc/hoon/runes/br.md urb/zod/docs/pub/doc/hoon/runes/br/brcb.md urb/zod/docs/pub/doc/hoon/runes/br/brcn.md urb/zod/docs/pub/doc/hoon/runes/br/brdt.md urb/zod/docs/pub/doc/hoon/runes/br/brfs.md urb/zod/docs/pub/doc/hoon/runes/br/brhp.md urb/zod/docs/pub/doc/hoon/runes/br/brkt.md urb/zod/docs/pub/doc/hoon/runes/br/brls.md urb/zod/docs/pub/doc/hoon/runes/br/brtr.md urb/zod/docs/pub/doc/hoon/runes/br/brts.md urb/zod/docs/pub/doc/hoon/runes/br/brwt.md urb/zod/docs/pub/doc/hoon/runes/cl.md urb/zod/docs/pub/doc/hoon/runes/cl/clcb.md urb/zod/docs/pub/doc/hoon/runes/cl/clfs.md urb/zod/docs/pub/doc/hoon/runes/cl/clhp.md urb/zod/docs/pub/doc/hoon/runes/cl/clkt.md urb/zod/docs/pub/doc/hoon/runes/cl/clls.md urb/zod/docs/pub/doc/hoon/runes/cl/clsg.md urb/zod/docs/pub/doc/hoon/runes/cl/cltr.md urb/zod/docs/pub/doc/hoon/runes/cn.md urb/zod/docs/pub/doc/hoon/runes/cn/cncb.md urb/zod/docs/pub/doc/hoon/runes/cn/cncl.md urb/zod/docs/pub/doc/hoon/runes/cn/cndt.md urb/zod/docs/pub/doc/hoon/runes/cn/cnhp.md urb/zod/docs/pub/doc/hoon/runes/cn/cnkt.md urb/zod/docs/pub/doc/hoon/runes/cn/cnls.md urb/zod/docs/pub/doc/hoon/runes/cn/cnsg.md urb/zod/docs/pub/doc/hoon/runes/cn/cntr.md urb/zod/docs/pub/doc/hoon/runes/cn/cnts.md urb/zod/docs/pub/doc/hoon/runes/cn/cnzy.md urb/zod/docs/pub/doc/hoon/runes/cn/cnzz.md urb/zod/docs/pub/doc/hoon/runes/dt.md urb/zod/docs/pub/doc/hoon/runes/dt/dtkt.md urb/zod/docs/pub/doc/hoon/runes/dt/dtls.md urb/zod/docs/pub/doc/hoon/runes/dt/dttr.md urb/zod/docs/pub/doc/hoon/runes/dt/dtts.md urb/zod/docs/pub/doc/hoon/runes/dt/dtwt.md urb/zod/docs/pub/doc/hoon/runes/dt/dtzy.md urb/zod/docs/pub/doc/hoon/runes/dt/dtzz.md urb/zod/docs/pub/doc/hoon/runes/hx.md urb/zod/docs/pub/doc/hoon/runes/hx/hxgl.md urb/zod/docs/pub/doc/hoon/runes/hx/hxgr.md urb/zod/docs/pub/doc/hoon/runes/kt.md urb/zod/docs/pub/doc/hoon/runes/kt/ktbr.md urb/zod/docs/pub/doc/hoon/runes/kt/ktdt.md urb/zod/docs/pub/doc/hoon/runes/kt/kthp.md urb/zod/docs/pub/doc/hoon/runes/kt/ktls.md urb/zod/docs/pub/doc/hoon/runes/kt/ktpm.md urb/zod/docs/pub/doc/hoon/runes/kt/ktsg.md urb/zod/docs/pub/doc/hoon/runes/kt/ktts.md urb/zod/docs/pub/doc/hoon/runes/kt/ktwt.md urb/zod/docs/pub/doc/hoon/runes/sg.md urb/zod/docs/pub/doc/hoon/runes/sg/sgbc.md urb/zod/docs/pub/doc/hoon/runes/sg/sgbr.md urb/zod/docs/pub/doc/hoon/runes/sg/sgcb.md urb/zod/docs/pub/doc/hoon/runes/sg/sgcn.md urb/zod/docs/pub/doc/hoon/runes/sg/sgfs.md urb/zod/docs/pub/doc/hoon/runes/sg/sggl.md urb/zod/docs/pub/doc/hoon/runes/sg/sggr.md urb/zod/docs/pub/doc/hoon/runes/sg/sgls.md urb/zod/docs/pub/doc/hoon/runes/sg/sgpm.md urb/zod/docs/pub/doc/hoon/runes/sg/sgts.md urb/zod/docs/pub/doc/hoon/runes/sg/sgwt.md urb/zod/docs/pub/doc/hoon/runes/sg/sgzp.md urb/zod/docs/pub/doc/hoon/runes/sm.md urb/zod/docs/pub/doc/hoon/runes/sm/smcl.md urb/zod/docs/pub/doc/hoon/runes/sm/smcn.md urb/zod/docs/pub/doc/hoon/runes/sm/smdq.md urb/zod/docs/pub/doc/hoon/runes/sm/smhp.md urb/zod/docs/pub/doc/hoon/runes/sm/smls.md urb/zod/docs/pub/doc/hoon/runes/sm/smsg.md urb/zod/docs/pub/doc/hoon/runes/sm/smsm.md urb/zod/docs/pub/doc/hoon/runes/sm/smtr.md urb/zod/docs/pub/doc/hoon/runes/sm/smzz.md urb/zod/docs/pub/doc/hoon/runes/ts.md urb/zod/docs/pub/doc/hoon/runes/ts/tsbr.md urb/zod/docs/pub/doc/hoon/runes/ts/tscl.md urb/zod/docs/pub/doc/hoon/runes/ts/tsdt.md urb/zod/docs/pub/doc/hoon/runes/ts/tsgl.md urb/zod/docs/pub/doc/hoon/runes/ts/tsgr.md urb/zod/docs/pub/doc/hoon/runes/ts/tshp.md urb/zod/docs/pub/doc/hoon/runes/ts/tskt.md urb/zod/docs/pub/doc/hoon/runes/ts/tsls.md urb/zod/docs/pub/doc/hoon/runes/ts/tssg.md urb/zod/docs/pub/doc/hoon/runes/ts/tstr.md urb/zod/docs/pub/doc/hoon/runes/wt.md urb/zod/docs/pub/doc/hoon/runes/wt/wtbr.md urb/zod/docs/pub/doc/hoon/runes/wt/wtcl.md urb/zod/docs/pub/doc/hoon/runes/wt/wtdt.md urb/zod/docs/pub/doc/hoon/runes/wt/wtgl.md urb/zod/docs/pub/doc/hoon/runes/wt/wtgr.md urb/zod/docs/pub/doc/hoon/runes/wt/wthp.md urb/zod/docs/pub/doc/hoon/runes/wt/wthz.md urb/zod/docs/pub/doc/hoon/runes/wt/wtkt.md urb/zod/docs/pub/doc/hoon/runes/wt/wtkz.md urb/zod/docs/pub/doc/hoon/runes/wt/wtls.md urb/zod/docs/pub/doc/hoon/runes/wt/wtlz.md urb/zod/docs/pub/doc/hoon/runes/wt/wtpm.md urb/zod/docs/pub/doc/hoon/runes/wt/wtpt.md urb/zod/docs/pub/doc/hoon/runes/wt/wtpz.md urb/zod/docs/pub/doc/hoon/runes/wt/wtsg.md urb/zod/docs/pub/doc/hoon/runes/wt/wtsz.md urb/zod/docs/pub/doc/hoon/runes/wt/wtts.md urb/zod/docs/pub/doc/hoon/runes/wt/wttz.md urb/zod/docs/pub/doc/hoon/runes/wt/wtzp.md urb/zod/docs/pub/doc/hoon/runes/zp.md urb/zod/docs/pub/doc/hoon/runes/zp/zpcb.md urb/zod/docs/pub/doc/hoon/runes/zp/zpcm.md urb/zod/docs/pub/doc/hoon/runes/zp/zpfs.md urb/zod/docs/pub/doc/hoon/runes/zp/zpgr.md urb/zod/docs/pub/doc/hoon/runes/zp/zpsm.md urb/zod/docs/pub/doc/hoon/runes/zp/zpts.md urb/zod/docs/pub/doc/hoon/runes/zp/zpwt.md urb/zod/docs/pub/doc/hoon/runes/zp/zpzp.md urb/zod/docs/pub/doc/nock.md urb/zod/docs/pub/doc/nock/reference.md urb/zod/docs/pub/doc/reference.md urb/zod/docs/pub/doc/reference/glossary.md urb/zod/docs/pub/doc/reference/vere.md urb/zod/docs/pub/tree/src/css/fonts.styl urb/zod/docs/pub/tree/src/css/main.css urb/zod/docs/pub/tree/src/css/main.styl urb/zod/docs/pub/tree/src/css/mobile.styl urb/zod/docs/pub/tree/src/js/actions/TreeActions.coffee urb/zod/docs/pub/tree/src/js/components/AnchorComponent.coffee urb/zod/docs/pub/tree/src/js/components/BodyComponent.coffee urb/zod/docs/pub/tree/src/js/components/KidsComponent.coffee urb/zod/docs/pub/tree/src/js/components/ListComponent.coffee urb/zod/docs/pub/tree/src/js/components/LoadComponent.coffee urb/zod/docs/pub/tree/src/js/dispatcher/Dispatcher.coffee urb/zod/docs/pub/tree/src/js/main.coffee urb/zod/docs/pub/tree/src/js/main.js urb/zod/docs/pub/tree/src/js/package.json urb/zod/docs/pub/tree/src/js/persistence/TreePersistence.coffee urb/zod/docs/pub/tree/src/js/stores/TreeStore.coffee urb/zod/docs/tree/hymn.hook urb/zod/docs/tree/json.hook urb/zod/docs/tree/util.hoon
2015-02-24 22:33:50 +03:00
Eyre: Commentary
================
2015-04-01 03:38:49 +03:00
Let us follow the loading of a simple cli app, as it bounces from
browser to server to browser and back.
2015-04-01 03:38:49 +03:00
## Initial request[#init]
2015-04-01 03:38:49 +03:00
An http request for `http://sampel-sipnym.urbit.org/cli` will be [redirected](dns)
to the `%eyre` on ~sampel-sipnym, and come in as a `%this` kiss.
2015-03-28 04:06:38 +03:00
From arvo, requests enter `++call`, which after some type reification are passed
along to `++apex:ye`. In the case of a `%this` kiss, its components are parsed
2015-03-31 02:36:36 +03:00
and handed off to `++handle`. `++apex:handle` will `++process` the request to a
`pest` or a `++done` core, and in the former case `++resolve` the pest into an
outgoing card.
2015-03-31 02:36:36 +03:00
XX it also seems to affect the current ship, test that serving ship name is consistently correct
The pest is produced by `++process`, which will first further `++parse` the
request, and if this does not make the response immediately obvious,
`++process-parsed` the resulting `perk`.
`++parse` produces the `perk`, by attempting to interpret the `pork`(url path)
[`++as-magic-filename`](#mage), `++as-beam`, and `++as-aux-request`. In this
2015-04-01 03:38:49 +03:00
case, `/cli` is parsed by the second case as a `%beam` query to `/=cli=`: a path
2015-03-31 02:36:36 +03:00
which starts with a valid ship name is expected to be a full clay(well, ford)
path, and one starting with a term implies the current serving ship and a case
of `0`, the current revision.
2015-04-01 03:38:49 +03:00
XX spur: when the desks are merged, `/cli` shall point to `/=main=/pub/cli`
2015-03-31 02:36:36 +03:00
The parsed `perk` generates a `%for` pest, `mark`ed as its extension(here
defaulting to `%urb`) and `wire`d with `~` to return unaltered to the client. It
goes on to `++resolve` by being passed to `++ford-get-beam`, which translates
the perk it into a `%f %exec %boil` note, adding an fcgi path-segment containing
query string and auth information.
2015-04-01 03:38:49 +03:00
`%ford`s translation of `/=cli=/hymn/hook` to a self-refreshing `%urb` html page
[deserves its own commentary](../ford/commentary), but we resume in `%eyre`
2015-03-31 02:36:36 +03:00
when the `%made` sign arrives in `++take`, and soon after `++axon:ye`. There the
`wire`, or rather the `whir` it has been verified to be, determines that the
response should be served immediately. However, as the mark is not `%mime`,
another trip to `%ford` is required to encode it, on the same wire; afterwards,
the value of the `%mime` cage is verified to be of the correct type, and finally
delivered back up the requesting duct as a succesful `%thou` HTTP response.
XX `%cast %mime` used to be in ford-get-beam, is there a reason it was removed?
## Back into the breach, or: auxilary requests
Now, it was mentioned that this result is self-refreshing: the `%urb`
translation door injects a `;script@"/~/on/{deps}.js"` into every page, `deps`
is a ford-readable hash of the set of resources that page construction depended
on.
This triggers another `%this` request. Its handling is identical to that of
2015-04-01 03:38:49 +03:00
`/cli` up until `++parse`, where it is seen not `++as-beam` but
2015-03-31 02:36:36 +03:00
`++as-aux-request`(auxillary requests starting with `/~/` or `/~~/`).
`/on/[hash]` is a long-`%poll`, which `++process-parsed`, for a `.js` mark,
answers with a direct `%fin %js`. Its contents are the static `++poll:js`, which
initiates the long-polling loop, run against an injected `urb.js` of
`{poll: [hash]}`.
A `%fin` `perk` is `resolve`d by `resolve-fin`, which serves `%js` as a
`text/javascript` success `%this`.
When `poll.js` is recieved by the client, it opens an `XMLHttpRequest` for
2015-04-01 03:38:49 +03:00
`/~/on/{window.urb.poll}.json`, bringing us back to `%poll:process`.
In the case of a non-`%js` `/~/on/`, `%poll:process-parsed` turns into a
`++new-dependency`, which stores the listening duct, and `pass-note`s a `%wasp`
with the deps-hash back to `%ford` whence it came. While this occured, the page
has loaded.
Some indeterminate amount of time afterwards, with dropped `/~/on/{...}.json`s
being retried upon expiring and also being stored, a `%news` sign arrives in
`++axon`, and the hash in question is retrieved from the wire, and the listening
long-polls retrieved by the hash. Each receives a 205 "Reload parent view" HTTP
response, which `poll.js` dutifully executes, and a fixed typo of markdown is
rendered.
## Authentication.
Now, while this accurately reflects the presentation of e.g. a markdown file,
`/cli` is an application front-end, and one that permits only owner access. Its
second script is `@"/~~/~/at/main/lib/urb.js"`, semantically equivalent to
`/~/as/own/~/at/main/lib/urb.js`, and handled as follows.
In `++as-aux-request`, `%as %own` becomes `%auth %get our` perk, which
`++process` passes to `++process-parsed` passes to `++process-auth`. There, a
`yac` "ya" core is built `++for-client`: a `++cookie-prefix`, which is just the
serving ship name, is used to get a `++session-from-cookies`, here nil as the
client has no cookie set. In lieu of a cookie, a `++new-ya` is constructed, with
a random token `hole` and a `++new-cyst` which fills out `cyst` session state
from request data.
Returning to `++process-auth`, `%get` checks if the yac is authenticated with
the requested credentials(anonymous requests are always granted), which for the
fresh new `cyst` is not the case (more on success [later](#auth-ok)). Unless
authentiacting as a [foreign ship](#xeno), the only thing left is to
`++show-login-page`, which detects that the requested resource is not `%html`,
and produces a `%red` pest. For `%js`, `%red`irections `++resolve` to
`auth-redir:js`, a line of javascript which prepends `/~~` to the url path.
The owner-authenticated main page request similarly ends in `++show-login-page`,
which for the empty session `%fin`ishes with 401("unauthorized")
`++login-page:xml`.
The login page shows a simple prompt, and requests `/~/at/auth.js` to handle the
submission. And so we are, once again, attempting to divine if what we're doing
makes sense `++as-aux-request`.
To understand `/~/at`, there will first be a brief diversion to `~/auth.json`.
`auth.json`, perk `[%auth %json]`, in `++process-auth` serves `++stat-json:ya`,
containing such information as the serving ship, which identities are associated
with this session, and `oryx`, a CSRF token. The latter must be present on all
2015-04-02 04:33:04 +03:00
stateful requests, and is assigned a new `cyst` to track the current client
incarnation of the session. In this case, however, it is needed only to execute
a log in.
XX explain `ixor` here and not [later](#ixor)?
2015-04-01 03:38:49 +03:00
`/~/at` is an alternate interface, which injects `auth.json` data into the
requested file. `/~/at/auth.js`, then, is a request for the built-in `auth:js`
(parsed to and processed from an `[%auth %js ~]` perk), with session data added
as `window.urb`. And indeed, ``[`%js /~/at/auth]`` is parsed to
``[%auth at [`%js /auth]``, which in `++process-auth` is re-`process`ed to
`[%fin %js {static script}]`, which is `++resolve-fin` after an `++add-json` of
the relevant data. (immediate resolution is necessary to preserve any `..ya`
state change effected by `++auth-json:ya`.
It is at this point that there is first occasion for user input, namely the password.
The `auth:js` script sends a `PUT` request, also to `/~/auth.json`, which is
parsed to a `[%auth %try {password}]` perk, and upon success produces an updated
`auth.json` which reflects the changed `user`. Upon recieving this, the page is
refreshed to retry the original request.
2015-04-02 04:33:04 +03:00
## Post-authentication: app communication. [#auth-ok]
2015-04-01 03:38:49 +03:00
Upon refresh, `/~~/cli` brings us for the third time to `%get:process-auth`, but
this time the cookie is set, and the `yac` fetched contains the serving ship as
authenticated. The `++handle` sample is updated to reflect the requesting ship,
and the `process` continues for the rest of the pork, once again serving the
ford page.
The `/~/on/[deps].json` poll starts anew, and `/~~/~/at/main/lib/urb.js` we now
2015-04-02 04:33:04 +03:00
know to serve the window.urb necessary to make requests, and the `urb.js`
standard library which extends it with a number of wrappers to them and other
useful functions.
One of those functions is `urb.bind`, which is used to subscribe to application
data. Userspace javascript sets `urb.appl` to `/tic`, and binds `lines` to a
`;pre;` text display, using a callback.
This triggers a `PUT` to `/~/is/{ixor}/cli/lines.json`, where `ixor` is a hash
of `oryx` that identifies the connection. `++as-aux-request`, an `%is` is a
`%subs` subscription update update, which for `%put` forwards to
`++add-subs:for-view`.
[#ixor] A view has all the state associated with a client that must be
remembered between events. In this case, this is what app/path the request duct
is associated with; but mainly, `++add-subs:ix` will `pass-note` to `%gall` so
it `%show`s the data on the path, current and future.
This will immediately(assuming the ship is local) result in a `%nice` by the
`/cli` app, returning `nice-json` to `urb.bind`'s second callback as
`{ok:true}`. The initial `%rush` results also arrive, and in `++axon` are
converted to json using `++back`(ford `%cast` wrapper), and when `%made` get
passed to `++get-rush:ix`. There the source application/path are decoded by
duct, and then the full event goes to `++get-even`; it is added to the queue,
however as there is no long poll it simply stays there.
Upon receipt, the client realizes the long-poll isn't actually running, so that
is started using `urb.poll`. At `/~/of/{ixor}`, perk
`[%view ixor ~ {sequence-number}]`, it is `process`ed by `++poll:ix` (the cyst
is retrieved by `++ire-ix` form global state, using the pest `ixor`): the
sequence number is in the past, so the previously recieved `%rush` is
`give-even`. After deleting the previous message in the queue and invoking
`pass-took` to signal `%gall` of this occurrence, the data is annotated with
the source app+path, and returned to the polling bone.
On the client, the user callback receives the `/cli` history, and displays it on
the page. The `/~/of` long poll is continued, this time reaching `++poll:ix`
with the "pending" sequence number, and being stored in the `cyst` for its troubles.
---
Its next update proceeds idenitcally, but first it must be triggered, which
happens when the user enters "(add 2 2)\n", firing an `urb.send` from the event
handler XXX
2015-04-01 03:38:49 +03:00
## A path not taken: magic filenames [#mage]
The `/robots.txt` and `/favicon.(ico|png)` files are static, and served
immediately when caught by a `++parse`.
2015-03-31 02:36:36 +03:00
2015-04-01 03:38:49 +03:00
XX index.html?
## A path not taken: foreign auth [#xeno]
While this example details a login `/~/as/own`, it is possible to be
authenticated as any ship on the network. A request for such seen in `%get:
process-auth` is passed to `++foreign-auth:ya`, which sends an `%ames /lon`
message to the ship in question. The foreign ship stores the inquiry a responds
with a `/hat`, containing the redirection host; this host is used to send the
client to a `/~/am` url on the foreign client, which acts as a normal login page
but later sends the client back. XX expand, basically the status quo is you're
logged in and `/~/as/foo` is ignored, just setting your `urb.user` XX
## A path not taken: deauthentication
`/~/away`, perk `[%away ~]`, produces a static `++logout-page:xml`, which also
uses `/~/at/auth.js`, to send a `DELETE /~/auth.json`, perk `[%auth %del]`. This
wipes the session from memory.
2015-03-31 02:36:36 +03:00
## Appendix A: DNS [#dns]
The `*.urbit.org` domain can be used to access destroyers and cruisers. In the
common case oh hosted ships, this is done by dynamic DNS directly to the hosting
instance. We do not speak of the uncommon case. When ports are blocked and
infrastructure crumbles around you, only imported martian networking can be
trusted: the `%get` and `%got` [gram]()s are used to proxy [`%this` requests]() and
[`%thou` responses]() respectively.