mirror of
https://github.com/ilyakooo0/urbit.git
synced 2024-12-15 10:02:47 +03:00
Merge branch 'master' of https://github.com/urbit/urbit into do
This commit is contained in:
commit
3847c64f47
248
README.markdown
248
README.markdown
@ -1,8 +1,6 @@
|
|||||||
Urbit
|
Urbit
|
||||||
=====
|
=====
|
||||||
|
|
||||||
[![Build Status](https://travis-ci.org/urbit/urbit.png?branch=master)](https://travis-ci.org/urbit/urbit)
|
|
||||||
|
|
||||||
> Tlön is surely a labyrinth, but it is
|
> Tlön is surely a labyrinth, but it is
|
||||||
> a labyrinth devised by men, a labyrinth
|
> a labyrinth devised by men, a labyrinth
|
||||||
> destined to be deciphered by men.
|
> destined to be deciphered by men.
|
||||||
@ -12,7 +10,8 @@ Urbit is a new programming and execution environment designed from scratch. Any
|
|||||||
resemblance to existing languages or operating systems is coincidental,
|
resemblance to existing languages or operating systems is coincidental,
|
||||||
cosmetic, or inevitable.
|
cosmetic, or inevitable.
|
||||||
|
|
||||||
All of the source code is entirely in the public domain.
|
All of the source code is distributed under the MIT license, but is for all
|
||||||
|
intents and purposes in the public domain.
|
||||||
|
|
||||||
Install
|
Install
|
||||||
-------------------
|
-------------------
|
||||||
@ -92,37 +91,54 @@ Run `bin/vere -c mypier` in the urbit directory, where `mypier` is a directory t
|
|||||||
A _pier_ is an Urbit virtual machine that hosts one or more Urbit identities,
|
A _pier_ is an Urbit virtual machine that hosts one or more Urbit identities,
|
||||||
or _ships_. When you run `bin/vere -c`, it automatically creates a 128-bit ship, or `submarine`. Your name (a hash of a randomly-generated public key) will look something like:
|
or _ships_. When you run `bin/vere -c`, it automatically creates a 128-bit ship, or `submarine`. Your name (a hash of a randomly-generated public key) will look something like:
|
||||||
|
|
||||||
~machec-binnev-dordeb-sogduc--dosmul-sarrum-faplec-nidted
|
~hinfet-rovler-labheb-laddev--ladner-pillur-divmun-tamfur
|
||||||
|
|
||||||
First you'll see a string of messages like:
|
First you'll see a string of messages like:
|
||||||
|
|
||||||
vere: urbit home is /Users/cyarvin/Documents/src/u3/urb
|
vere: urbit home is mypier
|
||||||
loom: mapped 1024MB
|
vere: hostname is cyarvin
|
||||||
time: ~2013.9.1..03.57.11..4935
|
loom: mapped 2048MB
|
||||||
ames: on localhost, UDP 63908.
|
boot: installed 190 jets
|
||||||
|
boot: loading /home/cyarvin/urbit/urb/urbit.pill
|
||||||
|
cv_make: loaded pill /home/cyarvin/urbit/urb/urbit.pill, as 8ddffb8
|
||||||
|
cv_make: kernel 12e1ffdf, core 23b73cd
|
||||||
|
cv_jack: activating kernel 12e1ffdf
|
||||||
|
%post-start
|
||||||
|
cv_jack: activated
|
||||||
|
cv_start: time: ~2015.5.9..18.03.32..ba77
|
||||||
|
|
||||||
|
Next vere will generate a 2048 RSA key that will be used as your identity:
|
||||||
|
|
||||||
generating 2048-bit RSA pair...
|
generating 2048-bit RSA pair...
|
||||||
|
|
||||||
and then it'll pause a little, 'cause this is slow, and then
|
and then it'll pause a little, 'cause this is slow, and then
|
||||||
|
|
||||||
saving passcode in /Users/cyarvin/.urbit/~magsut-hopful.txt
|
saving passcode in mypier/.urb/code.~malmel-ridnep
|
||||||
(for real security, write it down and delete the file...)
|
(for real security, write it down and delete the file...)
|
||||||
|
|
||||||
and, then, if the network gods are happy, your submarine will start pulling
|
and, then, if the network gods are happy, your submarine will start pulling
|
||||||
down Arvo files:
|
down Arvo files:
|
||||||
|
|
||||||
+ /~machec-binnev-dordeb-sogduc--dosmul-sarrum-faplec-nidted/main/1/bin/ticket/hoon
|
[%bos ~zod ~hinfet-rovler-labheb-laddev--ladner-pillur-divmun-tamfur]
|
||||||
+ /~machec-binnev-dordeb-sogduc--dosmul-sarrum-faplec-nidted/main/1/bin/reset/hoon
|
[%behn-init ~hinfet-rovler-labheb-laddev--ladner-pillur-divmun-tamfur]
|
||||||
+ /~machec-binnev-dordeb-sogduc--dosmul-sarrum-faplec-nidted/main/1/bin/ye/hoon
|
ames: czar zod.urbit.org: ip .192.241.195.84
|
||||||
+ /~machec-binnev-dordeb-sogduc--dosmul-sarrum-faplec-nidted/main/1/bin/ls/hoon
|
kick: init: ~hinfet-rovler-labheb-laddev--ladner-pillur-divmun-tamfur
|
||||||
|
ames: on localhost, UDP 55659.
|
||||||
|
http: live (insecure) on 8081
|
||||||
|
http: live ("secure") on 8444
|
||||||
|
term: live on 10024
|
||||||
|
; ~zod |Tianming| is your neighbor
|
||||||
|
; ~zod |Tianming| is your neighbor
|
||||||
|
<sole>
|
||||||
|
|
||||||
and the like. You'll see a couple pages of this stuff. Don't worry too much
|
You will probably be stuck here for a while as your local submarine copies all of its files from the master carrier, `~zod`. This is normal.
|
||||||
about the details right now. Finally, you'll get the Arvo shell prompt (which
|
|
||||||
is also a Hoon REPL):
|
|
||||||
|
|
||||||
~machec-binnev-dordeb-sogduc--dosmul-sarrum-faplec-nidted/try=>
|
Once that is finished, you will be dropped into the main application, the `:dojo` shell (which is coincidentally also a Hoon REPL):
|
||||||
|
|
||||||
|
~hinfet-rovler-labheb-laddev--ladner-pillur-divmun-tamfur:dojo>
|
||||||
|
|
||||||
If you would like to safely bring this ship back into port (End the Unix process),
|
If you would like to safely bring this ship back into port (End the Unix process),
|
||||||
just enter Control-D.
|
just enter Control-V to switch to the task manager, then Control-D.
|
||||||
|
|
||||||
To re-launch your pier after creation run `bin/vere mypier` (exclude the `-c`)
|
To re-launch your pier after creation run `bin/vere mypier` (exclude the `-c`)
|
||||||
|
|
||||||
@ -151,19 +167,18 @@ Let's say one of your ships is `~waclux-tomwyc` and its ticket is
|
|||||||
rendered in Hoon's syllabic base, `@p`.)
|
rendered in Hoon's syllabic base, `@p`.)
|
||||||
|
|
||||||
A new life awaits you on the off-world colonies! To begin, just
|
A new life awaits you on the off-world colonies! To begin, just
|
||||||
type at the submarine prompt:
|
type at the `:dojo` prompt:
|
||||||
|
|
||||||
:begin ~waclux-tomwyc
|
:helm?begin
|
||||||
|
|
||||||
and follow the directions. When the script completes, hit return
|
and enter your ship name and ticket when prompted. When the script completes, hit return
|
||||||
and you'll be the `~waclux-tomwyc` you wanted to be. Now, when other user's see you in chat or look at your
|
and you'll begin re-cloning the files from `~zod` needed to boot the destroyer, after which you will become the `~waclux-tomwyc` you wanted to be.
|
||||||
Urbit social profile (a fasplan), they can learn whatever information you gave the :begin process.
|
|
||||||
|
|
||||||
###5. Play with Arvo
|
###5. Play with Arvo
|
||||||
|
|
||||||
If all went well, you now have a nice short prompt:
|
If all went well, you now have a nice short prompt:
|
||||||
|
|
||||||
~waclux-tomwyc/try=>
|
~waclux-tomwyc:dojo>
|
||||||
|
|
||||||
If all did not go well (send us another email), or you're just
|
If all did not go well (send us another email), or you're just
|
||||||
too impatient to wait for your destroyer, you have a big long
|
too impatient to wait for your destroyer, you have a big long
|
||||||
@ -175,29 +190,30 @@ exercises will still work.
|
|||||||
Let's try a few quick things to stretch your fingers. Type these
|
Let's try a few quick things to stretch your fingers. Type these
|
||||||
command lines and you should see the matching results:
|
command lines and you should see the matching results:
|
||||||
|
|
||||||
~waclux-tomwyc/try=> "hello, world"
|
~waclux-tomwyc:dojo> "hello, world"
|
||||||
"hello, world"
|
"hello, world"
|
||||||
|
|
||||||
~waclux-tomwyc/try=> (add 2 2)
|
~waclux-tomwyc:dojo> (add 2 2)
|
||||||
4
|
4
|
||||||
|
|
||||||
~waclux-tomwyc/try=> :hello %world
|
~waclux-tomwyc:dojo> +hello %world
|
||||||
"hello, world."
|
'hello, dlrow'
|
||||||
|
|
||||||
~waclux-tomwyc/try=> :cat /=main=/bin/hello/hoon
|
~waclux-tomwyc:dojo> +cat /=home=/cat/hello/gate/hook :: XX make this work
|
||||||
::
|
::
|
||||||
:: /=main=/bin/hello/hoon
|
:::: /hook/gate/hello/cat
|
||||||
|
::
|
||||||
|
/? 314
|
||||||
::
|
::
|
||||||
|= *
|
::::
|
||||||
|= [planet=@ta ~]
|
!:
|
||||||
^- bowl
|
|= [* [[txt=@tas ~] ~]]
|
||||||
:_ ~ :_ ~
|
:- %noun
|
||||||
:- %%
|
(crip (weld "hello, " (flop (trip txt))))
|
||||||
!>("hello, {(trip planet)}.")
|
|
||||||
|
|
||||||
What did you just do?
|
What did you just do?
|
||||||
|
|
||||||
One, you used Arvo as a Hoon REPL to print the constant `"hello,
|
One, you used the Hoon REPL to print the constant `"hello,
|
||||||
world"`, which is a fancy way to write the Nock noun
|
world"`, which is a fancy way to write the Nock noun
|
||||||
|
|
||||||
[104 101 108 108 111 44 32 119 111 114 108 100 0]
|
[104 101 108 108 111 44 32 119 111 114 108 100 0]
|
||||||
@ -205,7 +221,7 @@ world"`, which is a fancy way to write the Nock noun
|
|||||||
Two, you called the Hoon `add` function to see that two plus two
|
Two, you called the Hoon `add` function to see that two plus two
|
||||||
is four. Math seems to work the same on the off-world colonies.
|
is four. Math seems to work the same on the off-world colonies.
|
||||||
|
|
||||||
Three, you ran the Arvo application `:hello` with the argument
|
Three, you ran the `:dojo` application `+hello` with the argument
|
||||||
`%world`, which is just a fancy way to write the atom
|
`%world`, which is just a fancy way to write the atom
|
||||||
`431.316.168.567` (or, for non-Germans, `431,316,168,567`). You
|
`431.316.168.567` (or, for non-Germans, `431,316,168,567`). You
|
||||||
might recognize it better as `0x64.6c72.6f77` - the ASCII
|
might recognize it better as `0x64.6c72.6f77` - the ASCII
|
||||||
@ -214,18 +230,18 @@ characters in LSB first order.
|
|||||||
(Is Urbit German? Sadly, no. But all our noun print formats are
|
(Is Urbit German? Sadly, no. But all our noun print formats are
|
||||||
URL-safe, which dot is and comma isn't.)
|
URL-safe, which dot is and comma isn't.)
|
||||||
|
|
||||||
And you (4) used the Arvo application :cat to print the Hoon file
|
And you (4) used the `:dojo` application `+cat` to print the Hoon file
|
||||||
|
|
||||||
/=main=/bin/hello/hoon
|
/=home=/cat/hello/gate/hook
|
||||||
|
|
||||||
which, supposing your current date is
|
which, supposing your current date is
|
||||||
|
|
||||||
~2013.9.1..04.38.31..f259
|
~2015.5.9..18.03.32..ba77
|
||||||
|
|
||||||
(ie, September 1, 2013 at 4:38:31 GMT/LS25 plus 0xf259/65536
|
(ie, May 9, 2015 at 18:03:32 GMT/LS25 plus 0xba77/47735 seconds), is
|
||||||
seconds), is equivalent to the global path
|
equivalent to the global path
|
||||||
|
|
||||||
/~waclux-tomwyc/main/~2013.8.23..04.38.31..f259/bin/hello/hoon
|
/~waclux-tomwyc/home/~2015.5.9..18.03.32..ba77/cat/hello/gate/hook
|
||||||
|
|
||||||
which anyone in Urbit can, see and even use - but we're getting
|
which anyone in Urbit can, see and even use - but we're getting
|
||||||
ahead of ourselves.
|
ahead of ourselves.
|
||||||
@ -259,20 +275,31 @@ There are also some special control keys specific to Arvo. It's
|
|||||||
a good idea to learn these first so that you feel in, um,
|
a good idea to learn these first so that you feel in, um,
|
||||||
control.
|
control.
|
||||||
|
|
||||||
First, we'll quit out of an infinite loop with `^C`:
|
First off, Arvo has a simple task manager interface, allowing you see the
|
||||||
|
running commands, along with being able to spawn or kill programs.
|
||||||
|
|
||||||
~waclux-tomwyc/try=> :infinite
|
Hitting `^V` will bring you to this interface, and running `-prog`
|
||||||
|
will kill that program while `+prog` will spawn a new one.
|
||||||
|
If you ever end up with a broken program that is spouting errors
|
||||||
|
and wish to restart it, do it from this interface. Even our shell
|
||||||
|
and REPL `:dojo` is just another program in this list!
|
||||||
|
|
||||||
|
This is the base view from Arvo as well. If you kill all your running
|
||||||
|
programs, it will drop you into this interface.
|
||||||
|
|
||||||
|
Next, we'll show you how we can quit out of an infinite loop with `^C`:
|
||||||
|
|
||||||
|
~waclux-tomwyc:dojo> |-($)
|
||||||
|
|
||||||
When you hit return at the end of this line, Arvo will appear to
|
When you hit return at the end of this line, Arvo will appear to
|
||||||
hang. Do not be alarmed! This is not a bug - it means that
|
hang. Do not be alarmed! This is not a bug - it means that
|
||||||
we've started running our infinite loop before printing the next
|
we've started running our infinite loop before printing the next
|
||||||
console prompt. Simply hit `^C`, and you'll see
|
console prompt. Simply hit `^C`, and you'll see
|
||||||
|
|
||||||
! intr
|
recover: dig: intr
|
||||||
~waclux-tomwyc/try=> :infinite
|
intr
|
||||||
|
[various stack traces]
|
||||||
(There may be some stacktrace stuff before the `! intr`, depending
|
~waclux-tomwyc:dojo> |-($)
|
||||||
on whether your kernel was compiled with debugging.)
|
|
||||||
|
|
||||||
Hit `^U` to delete the line and escape from infinity. Arvo is a
|
Hit `^U` to delete the line and escape from infinity. Arvo is a
|
||||||
deterministic OS; you interrupted it while processing an event
|
deterministic OS; you interrupted it while processing an event
|
||||||
@ -296,40 +323,38 @@ current character - as in Unix.
|
|||||||
|
|
||||||
Try this by running
|
Try this by running
|
||||||
|
|
||||||
~waclux-tomwyc/try=> :begin
|
~waclux-tomwyc:dojo> +helm?begin
|
||||||
|
|
||||||
Do you have a ship and a ticket? yes
|
~waclux-tomwyc:dojo: your ship: ~
|
||||||
|
|
||||||
Then hit `^D` and you'll be back to the command prompt (which,
|
Then hit `^D` and you'll kill the current task, the command prompt `:dojo`.
|
||||||
unlike in Unix, is not a task itself, but part of the OS).
|
|
||||||
|
|
||||||
We don't always want to kill the prompting task. We often want
|
We don't always want to kill the prompting task. We often want
|
||||||
to switch between tasks, or between tasks and the command line.
|
to switch between tasks, or between tasks and the command line.
|
||||||
Sort of like switching between windows, except in a command line.
|
Sort of like switching between windows, except in a command line.
|
||||||
We do this with `^X`. Try
|
We do this with `^X`.
|
||||||
|
|
||||||
~waclux-tomwyc/try=> :begin
|
Let's try an example: First, make sure you
|
||||||
|
have two apps running, like `:dojo` and `:talk`. Then, try:
|
||||||
|
|
||||||
Do you have a ship and a ticket? yes
|
~waclux-tomwyc:dojo> :helm?begin
|
||||||
|
|
||||||
But hit `^X` instead of `^D`. You'll get a prompt again. Use
|
~waclux-tomwyc:dojo: your ship: ~
|
||||||
|
|
||||||
|
But hit `^X` instead of `^D`. You'll get switched to the next app in line, in this case `:talk`. Use
|
||||||
it:
|
it:
|
||||||
|
|
||||||
~waclux-tomwyc/try=> :begin
|
~waclux-tomwyc:dojo> :helm?begin
|
||||||
|
|
||||||
~waclux-tomwyc/try=> :hello %world
|
~waclux-tomwyc:talk() hello, world!
|
||||||
"hello, world."
|
|
||||||
~waclux-tomwyc/try=>
|
|
||||||
|
|
||||||
Hit `^X` again:
|
Hit `^X` again:
|
||||||
|
|
||||||
~waclux-tomwyc/try=> :begin
|
~waclux-tomwyc:dojo> :helm?begin
|
||||||
|
|
||||||
~waclux-tomwyc/try=> :hello %world
|
~waclux-tomwyc:dojo: your ship: ~
|
||||||
"hello, world."
|
|
||||||
Do you have a ship and a ticket? yes
|
|
||||||
|
|
||||||
And finally, hit `^C` to kill the task.
|
And finally, hit `^D` to kill the task.
|
||||||
|
|
||||||
Lastly, Arvo is a single-level store. Since it's not the '70s
|
Lastly, Arvo is a single-level store. Since it's not the '70s
|
||||||
anymore and disk is cheap, everything you do is saved for ever.
|
anymore and disk is cheap, everything you do is saved for ever.
|
||||||
@ -337,29 +362,40 @@ anymore and disk is cheap, everything you do is saved for ever.
|
|||||||
log - so you, or the government if they haz your filez, can
|
log - so you, or the government if they haz your filez, can
|
||||||
repeat every computation you've ever performed.)
|
repeat every computation you've ever performed.)
|
||||||
|
|
||||||
If the current prompt is just the shell prompt, `^D` on an empty
|
If the current prompt is the task manager, `^D` on an empty
|
||||||
line will log out - as in Unix:
|
line will log out - as in Unix:
|
||||||
|
|
||||||
~waclux-tomwyc/try=>
|
~waclux-tomwyc:dojo, talk#
|
||||||
oxford:~/urbit; pwd
|
cyarvin:~/urbit; pwd
|
||||||
/Users/cyarvin/urbit
|
/home/cyarvin/urbit
|
||||||
oxford:~/urbit; echo "hello, world"
|
cyarvin:~/urbit; echo "hello, world"
|
||||||
hello, world
|
hello, world
|
||||||
oxford:~/urbit;
|
cyarvin:~/urbit;
|
||||||
|
|
||||||
Then you can restart and be right back where you were - just
|
Then you can restart and be right back where you were - just
|
||||||
run `bin/vere` without `-c`:
|
run `bin/vere` without `-c`:
|
||||||
|
|
||||||
oxford:~/urbit; bin/vere mypier
|
cyarvin:~/urbit; bin/vere mypier
|
||||||
vere: urbit home is /Users/cyarvin/urb
|
vere: urbit home is mypier
|
||||||
loom: loaded 9MB
|
vere: hostname is cyarvin
|
||||||
time: ~2013.9.1..17.23.05..0cc1
|
loom: mapped 2048MB
|
||||||
ames: on localhost, UDP 60342.
|
protected loom
|
||||||
http: live on 8080
|
live: loaded: MB/172.933.120
|
||||||
rest: checkpoint to event 383
|
boot: installed 190 jets
|
||||||
rest: old 0v1c.gkr1o, new 0v10.m4gdu
|
cv_start: time: ~2015.5.9..19.03.45..a758
|
||||||
|
raft: single-instance mode
|
||||||
|
raft: -> lead
|
||||||
|
sist: booting
|
||||||
|
rest: checkpoint to event 23.630
|
||||||
|
rest: old 0vt.3iqg5, new 0v1j.moa0t
|
||||||
|
loaded passcode from mypier/.urb/code.~lacsep-bonnyr
|
||||||
|
|
||||||
---------------- playback complete----------------
|
---------------- playback complete----------------
|
||||||
waclux-tomwyc/try=>
|
ames: on localhost, UDP 46404.
|
||||||
|
http: live (insecure) on 8080
|
||||||
|
http: live ("secure") on 8443
|
||||||
|
term: live on 10023
|
||||||
|
~waclux-tomwyc:dojo, talk#
|
||||||
|
|
||||||
Use your arrow keys and you'll see your history is still there.
|
Use your arrow keys and you'll see your history is still there.
|
||||||
Arvo is indestructible and can be shut down however you like
|
Arvo is indestructible and can be shut down however you like
|
||||||
@ -370,34 +406,18 @@ But don't try to operate the same ship on two Unix hosts at the
|
|||||||
same time. This will confuse everyone, including yourself.
|
same time. This will confuse everyone, including yourself.
|
||||||
|
|
||||||
####System administration
|
####System administration
|
||||||
|
|
||||||
Sometimes we make changes to Hoon or Arvo (we never make changes
|
Sometimes we make changes to Hoon or Arvo (we never make changes
|
||||||
to Nock) and you need to update your ship.
|
to Nock) and you need to update your ship.
|
||||||
|
|
||||||
There are two steps to updating. You need to get the new files,
|
Luckily, Arvo has some special sauce that allows the same carrier
|
||||||
and you need to install them. To get them:
|
you initially pulled your files from to push kernel update over-the-air.
|
||||||
|
You may notice this happening automatically from time to time through mysterious messages
|
||||||
|
such as:
|
||||||
|
|
||||||
~waclux-tomwyc/try=> :update
|
['merge succeeded' {}]
|
||||||
: /~waclux-tomwyc/arvo/2/hoon/hoon
|
|
||||||
: /~waclux-tomwyc/arvo/2/dill/hoon
|
|
||||||
: /~waclux-tomwyc/arvo/2/batz/hoon
|
|
||||||
|
|
||||||
To install them (the simplest, slowest, most general way):
|
These updates will be applied without having to restart Arvo or any of its
|
||||||
|
`%vanes`. All of your state, including running tasks, will be unchanged.
|
||||||
~waclux-tomwyc/try=> :reset
|
|
||||||
|
|
||||||
%reset-start
|
|
||||||
%reset-parsed
|
|
||||||
%reset-compiled
|
|
||||||
%hoon-load
|
|
||||||
[%tang /~waclux-tomwyc/arvo/~2013.11.26..20.29.15..090f/zuse ~tirnux-latwex]
|
|
||||||
[%vane %a /~waclux-tomwyc/arvo/~2013.11.26..20.29.15..090f/ames ~tolryn-watret]
|
|
||||||
[%vane %b /~waclux-tomwyc/arvo/~2013.11.26..20.29.15..090f/batz ~donfex-ladsem]
|
|
||||||
[%vane %c /~waclux-tomwyc/arvo/~2013.11.26..20.29.15..090f/clay ~picsug-mitref]
|
|
||||||
[%vane %d /~waclux-tomwyc/arvo/~2013.11.26..20.29.15..090f/dill ~dilpex-laptug]
|
|
||||||
[%vane %e /~waclux-tomwyc/arvo/~2013.11.26..20.29.15..090f/eyre ~forbur-disben]
|
|
||||||
|
|
||||||
All of your state, including running tasks, will be unchanged.
|
|
||||||
|
|
||||||
Sometimes the interpreter, called `vere` gets updated. In your urbit directory, back in Unixland, run:
|
Sometimes the interpreter, called `vere` gets updated. In your urbit directory, back in Unixland, run:
|
||||||
|
|
||||||
@ -407,20 +427,22 @@ every so often to get the latest Urbit source code. You'll need to run:
|
|||||||
|
|
||||||
make clean; make
|
make clean; make
|
||||||
|
|
||||||
before executing `bin/vere pier` again.
|
before executing `bin/vere mypier` again.
|
||||||
|
|
||||||
|
|
||||||
###6. Chat
|
###6. Talk
|
||||||
|
|
||||||
Okay, fine. You're a long way from being an Arvo ninja. But -
|
Okay, fine. You're a long way from being an Arvo ninja. But -
|
||||||
you're ready for the two most important uses of Urbit right now.
|
you're ready for the two most important uses of Urbit right now.
|
||||||
One, coding. Two, chatting.
|
One, coding. Two, chatting.
|
||||||
|
|
||||||
To start chatting, simply type
|
To start chatting, simply press `^X` to switch to the `:talk` app
|
||||||
|
(If you accidently killed it, no worries: start a new one by typing
|
||||||
|
`+talk` from the `^V` menu)
|
||||||
|
|
||||||
~waclux-tomwyc/try=> :chat
|
~waclux-tomwyc:talk()
|
||||||
|
|
||||||
and type `?` for the list of commands once `:chat` is running.
|
and type `;join /urbit-meta` to join our main chat room.
|
||||||
|
|
||||||
Most of us are hanging out on `:chat` regularly. We can answer any questions you might have and help you get oriented in this new environment.
|
Most of us are hanging out on `:talk` regularly. We can answer any questions you might have and help you get oriented in this new environment.
|
||||||
|
|
||||||
|
5
n/n.c
5
n/n.c
@ -86,7 +86,10 @@ _n_hint(u3_noun zep,
|
|||||||
}
|
}
|
||||||
pro = _n_nock_on(u3k(bus), u3k(nex));
|
pro = _n_nock_on(u3k(bus), u3k(nex));
|
||||||
|
|
||||||
u3z_save_2(c3__nock, bus, nex, pro);
|
if ( u3R != &(u3H->rod_u) ) {
|
||||||
|
u3z_save_2(c3__nock, bus, nex, pro);
|
||||||
|
}
|
||||||
|
|
||||||
u3z(bus); u3z(nex);
|
u3z(bus); u3z(nex);
|
||||||
|
|
||||||
return pro;
|
return pro;
|
||||||
|
45
v/raft.c
45
v/raft.c
@ -1855,7 +1855,11 @@ static void
|
|||||||
_raft_grab(u3_noun ova)
|
_raft_grab(u3_noun ova)
|
||||||
{
|
{
|
||||||
if ( u3_nul != u3A->sac ) {
|
if ( u3_nul != u3A->sac ) {
|
||||||
c3_w usr_w = 0, ova_w = 0, sac_w = 0, utv_w = 0, utm_w = 0, wep_w = 0;
|
c3_w usr_w = 0, ova_w = 0, sac_w = 0, utv_w = 0, utm_w = 0, wep_w = 0,
|
||||||
|
har_w = 0, das_w = 0, flu_w = 0, tax_w = 0, mer_w = 0, don_w = 0,
|
||||||
|
day_w = 0, car_w = 0;
|
||||||
|
|
||||||
|
c3_assert( u3R == &(u3H->rod_u) );
|
||||||
|
|
||||||
fprintf(stderr, "\r\n");
|
fprintf(stderr, "\r\n");
|
||||||
usr_w = _raft_prof(u3_nul, 0, u3A->sac);
|
usr_w = _raft_prof(u3_nul, 0, u3A->sac);
|
||||||
@ -1874,8 +1878,40 @@ _raft_grab(u3_noun ova)
|
|||||||
fprintf(stderr, "arvo stuff: ");
|
fprintf(stderr, "arvo stuff: ");
|
||||||
_raft_print_memory(utv_w);
|
_raft_print_memory(utv_w);
|
||||||
|
|
||||||
utm_w = u3m_mark();
|
har_w = u3h_mark(u3R->jed.har_p);
|
||||||
fprintf(stderr, "road stuff: ");
|
fprintf(stderr, " warm jet state: ");
|
||||||
|
_raft_print_memory(har_w);
|
||||||
|
|
||||||
|
das_w = u3a_mark_noun(u3R->jed.das);
|
||||||
|
fprintf(stderr, " cold jet state: ");
|
||||||
|
_raft_print_memory(das_w);
|
||||||
|
|
||||||
|
flu_w = u3a_mark_noun(u3R->ski.flu);
|
||||||
|
fprintf(stderr, " namespace: ");
|
||||||
|
_raft_print_memory(flu_w);
|
||||||
|
|
||||||
|
tax_w = u3a_mark_noun(u3R->bug.tax);
|
||||||
|
fprintf(stderr, " trace stack list: ");
|
||||||
|
_raft_print_memory(tax_w);
|
||||||
|
|
||||||
|
mer_w = u3a_mark_noun(u3R->bug.mer);
|
||||||
|
fprintf(stderr, " trace stack buffer: ");
|
||||||
|
_raft_print_memory(mer_w);
|
||||||
|
|
||||||
|
don_w = u3a_mark_noun(u3R->pro.don);
|
||||||
|
fprintf(stderr, " profile battery list: ");
|
||||||
|
_raft_print_memory(don_w);
|
||||||
|
|
||||||
|
day_w = u3a_mark_noun(u3R->pro.day);
|
||||||
|
fprintf(stderr, " profile doss: ");
|
||||||
|
_raft_print_memory(day_w);
|
||||||
|
|
||||||
|
car_w = u3h_mark(u3R->cax.har_p);
|
||||||
|
fprintf(stderr, " memoization: ");
|
||||||
|
_raft_print_memory(car_w);
|
||||||
|
|
||||||
|
utm_w = har_w + das_w + flu_w + tax_w + mer_w + don_w + day_w + car_w;
|
||||||
|
fprintf(stderr, "total road stuff: ");
|
||||||
_raft_print_memory(utm_w);
|
_raft_print_memory(utm_w);
|
||||||
|
|
||||||
fprintf(stderr, "total marked: ");
|
fprintf(stderr, "total marked: ");
|
||||||
@ -1885,6 +1921,9 @@ _raft_grab(u3_noun ova)
|
|||||||
fprintf(stderr, "sweep: ");
|
fprintf(stderr, "sweep: ");
|
||||||
_raft_print_memory(wep_w);
|
_raft_print_memory(wep_w);
|
||||||
|
|
||||||
|
u3h_free(u3R->cax.har_p);
|
||||||
|
u3R->cax.har_p = u3h_new();
|
||||||
|
|
||||||
u3z(u3A->sac);
|
u3z(u3A->sac);
|
||||||
u3A->sac = u3_nul;
|
u3A->sac = u3_nul;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user