shrub/pkg/arvo
Philip Monk e3a8cab943 khan: support inline threads
This allows you to pass a thread directly into khan, instead of passing
a filename.  This has several implications:

- The friction for using threads from an app is significantly lower.
  Consider:

    =/  shed
      =/  m  (strand ,vase)
      ;<  ~  bind:m  (poke:strandio [our %hood] %helm-hi !>('hi'))
      ;<  ~  bind:m  (poke:strandio [our %hood] %helm-hi !>('there'))
      (pure:m !>('product'))
    [%pass /wire %arvo %k %lard %base shed]

- These threads close over their subject, so you don't need to parse
  arguments out from a vase -- you can just refer to them.  The produced
  value must still be a vase.

    ++  hi-ship
      |=  [=ship msg1=@t msg2=@t]
      =/  shed
        =/  m  (strand ,vase)
        ;<  ~  bind:m  (poke:strandio [ship %hood] %helm-hi !>(msg1))
        ;<  ~  bind:m  (poke:strandio [ship %hood] %helm-hi !>(msg2))
        (pure:m !>('product'))
      [%pass /wire %arvo %k %lard %base shed]

- Inline threads can be added to the dojo, though this PR does not add
  any sugar for this.

    =strandio -build-file %/lib/strandio/hoon
    =sh |=  message=@t
        =/  m  (strand:rand ,vase)
        ;<  ~  bind:m  (poke:strandio [our %hood] %helm-hi !>('hi'))
        ;<  ~  bind:m  (poke:strandio [our %hood] %helm-hi !>(message))
        (pure:m !>('product'))
    |pass [%k %lard %base (sh 'the message')]

Implementation notes:
- Review the commits separately: the first is small and implements the
  real feature.  The second moves the strand types into lull so khan can
  refer to them.

- In lull, I wanted to put +rand inside +khan, but this fails to that
  issue that puts the compiler in a loop.  +rand depends on +gall, which
  depends on +sign-arvo, which depends on +khan.  If +rand is in +khan,
  this spins the compiler.  The usual solution is to either move
  everything into the same battery (very ugly here) or break the
  recursion (which we do here).
2022-08-29 21:04:50 -08:00
..
app khan: support inline threads 2022-08-29 21:04:50 -08:00
gen azimuth: remove :azimuth|kick 2022-08-29 10:57:47 -08:00
lib gall: support %doff-ing specific apps and/or ships 2022-08-10 20:33:07 +02:00
mar Merge pull request #5830 from urbit/m/aqua-mark 2022-07-15 20:17:01 +02:00
sur azimuth: fetch snapshot on boot 2022-06-30 23:22:50 -07:00
sys khan: support inline threads 2022-08-29 21:04:50 -08:00
ted Merge remote-tracking branch 'origin/master' into philip/snap 2022-08-19 12:37:25 -08:00
tests tests: fix ames comet test 2022-08-11 20:49:09 +03:00
.gitattributes gitattributes: export-ignore additions [ci skip] 2020-02-01 17:40:27 +04:00
.ignore Write top-level pier code; hook up Ames and Behn. 2019-07-31 19:34:14 -07:00
desk.bill Merge branch 'master' into naive/roller 2021-10-26 20:46:32 +02:00
LICENSE.txt Pull in latest v0.8.0.rc changes 2019-07-16 15:59:39 -07:00
README.md %home -> %base 2022-03-06 11:55:55 -05:00
sys.kelvin clay: bump kelvin, refactor 2022-04-06 00:18:23 -07:00
TESTING.udon Pull in latest v0.8.0.rc changes 2019-07-16 15:59:39 -07:00

Arvo

A clean-slate operating system.

Usage

To run Arvo, you'll need Urbit. To install Urbit and run Arvo please follow the instructions in the getting started docs. You'll be on the live network in a few minutes.

If you're doing development on Arvo, keep reading.

Documentation

Find Arvo's documentation on urbit.org.

Development

To boot a fake ship from your development files, run urbit with the following arguments:

urbit -F zod -A /path/to/arvo -c fakezod

Mount Arvo's filesystem allows you to update its contents through Unix. To do so, run |mount in dojo. It is most common to |mount /=base=.

To create a custom pill (bootstrapping object) from the files loaded into the base desk, run .my/pill +solid. Your pill will appear in /path/to/fakezod/.urb/put/my.pill.

To boot a fake ship with a custom pill, use the -B flag:

urbit -F zod -A /path/to/arvo -B /path/to.pill -c fakezod

To run all tests in /tests, run -test %/tests in dojo. To run only the tests in /tests/some/path, use -test %/tests/some/path.

Maintainers

Most parts of Arvo have dedicated maintainers.

  • /sys/hoon: @pilfer-pandex (~pilfer-pandex)
  • /sys/zuse: @pilfer-pandex (~pilfer-pandex)
  • /sys/arvo: @joemfb (~master-morzod)
  • /sys/vane/ames: @belisarius222 (~rovnys-ricfer) & @philipcmonk (~wicdev-wisryt)
  • /sys/vane/behn: @belisarius222 (~rovnys-ricfer)
  • /sys/vane/clay: @philipcmonk (~wicdev-wisryt) & @belisarius222 (~rovnys-ricfer)
  • /sys/vane/dill: @fang- (~palfun-foslup)
  • /sys/vane/eyre: @fang- (~palfun-foslup)
  • /sys/vane/gall: @philipcmonk (~wicdev-wisryt)
  • /sys/vane/jael: @fang- (~palfun-foslup) & @philipcmonk (~wicdev-wisryt)
  • /app/acme: @joemfb (~master-morzod)
  • /app/dns: @joemfb (~master-morzod)
  • /app/aqua: @philipcmonk (~wicdev-wisryt)
  • /app/hood: @belisarius222 (~rovnys-ricfer)
  • /lib/hood/drum: @fang- (~palfun-foslup)
  • /lib/hood/kiln: @philipcmonk (~wicdev-wisryt)

Contributing

Contributions of any form are more than welcome! Please take a look at our contributing guidelines for details on our git practices, coding styles, how we manage issues, and so on.

You might also be interested in: