Merge branch 'test' of github.com:urbit/urbit into test

This commit is contained in:
Galen Wolfe-Pauly 2015-10-02 14:49:20 -07:00
commit f61925009f
5 changed files with 82 additions and 61 deletions

View File

@ -327,9 +327,6 @@ V_OFILES=\
MAIN_FILE =\ MAIN_FILE =\
vere/main.o vere/main.o
MEME_FILE =\
tests/test.o
VERE_OFILES=\ VERE_OFILES=\
$(CRE2_OFILES) \ $(CRE2_OFILES) \
$(OUT_OFILES) \ $(OUT_OFILES) \
@ -337,12 +334,6 @@ VERE_OFILES=\
$(MAIN_FILE) \ $(MAIN_FILE) \
$(V_OFILES) $(V_OFILES)
MEME_OFILES=\
$(CRE2_OFILES) \
$(OUT_OFILES) \
$(BASE_OFILES) \
$(MEME_FILE)
VERE_DFILES=$(VERE_OFILES:%.o=.d/%.d) VERE_DFILES=$(VERE_OFILES:%.o=.d/%.d)
-include $(VERE_DFILES) -include $(VERE_DFILES)
@ -388,7 +379,6 @@ all: urbit
@echo "# Set custom configuration here, please!" > ".make.conf" @echo "# Set custom configuration here, please!" > ".make.conf"
urbit: $(BIN)/urbit urbit: $(BIN)/urbit
meme: $(BIN)/meme
$(LIBUV_MAKEFILE) $(LIBUV_MAKEFILE2): $(LIBUV_MAKEFILE) $(LIBUV_MAKEFILE2):
cd outside/libuv_0.11 ; sh autogen.sh ; ./configure --disable-dtrace cd outside/libuv_0.11 ; sh autogen.sh ; ./configure --disable-dtrace
@ -445,10 +435,6 @@ $(BIN)/urbit: $(LIBCRE) $(LIBCOMMONMARK) $(VERE_OFILES) $(LIBUV) $(LIBRE2) $(LIB
@$(CLD) $(CLDOSFLAGS) -o $(BIN)/urbit $(VERE_OFILES) $(LIBUV) $(LIBCRE) $(LIBRE2) $(LIBED25519) $(LIBANACHRONISM) $(LIBS) $(LIBCOMMONMARK) $(LIBSCRYPT) $(LIBSOFTFLOAT) @$(CLD) $(CLDOSFLAGS) -o $(BIN)/urbit $(VERE_OFILES) $(LIBUV) $(LIBCRE) $(LIBRE2) $(LIBED25519) $(LIBANACHRONISM) $(LIBS) $(LIBCOMMONMARK) $(LIBSCRYPT) $(LIBSOFTFLOAT)
endif endif
$(BIN)/meme: $(LIBCRE) $(LIBCOMMONMARK) $(MEME_OFILES) $(LIBUV) $(LIBRE2) $(LIBED25519) $(LIBANACHRONISM) $(LIBSCRYPT) $(LIBSOFTFLOAT)
mkdir -p $(BIN)
$(CLD) $(CLDOSFLAGS) -o $(BIN)/meme $(MEME_OFILES) $(LIBUV) $(LIBCRE) $(LIBRE2) $(LIBED25519) $(LIBANACHRONISM) $(LIBS) $(LIBCOMMONMARK) $(LIBSCRYPT) $(LIBSOFTFLOAT)
tags: tags:
ctags -R -f .tags --exclude=root ctags -R -f .tags --exclude=root

View File

@ -1,11 +1,15 @@
urbit urbit
===== =====
urbit is a new programming and execution environment designed from Urbit is a new computing environment designed from scratch.
scratch.
At present urbit is under heavy development. If you're interested in At present urbit is under heavy development. It's not useful for
keeping in touch or following the project you can: any external purpose. Documentation is completely inadequate.
Anyone can use the interpreter, of course, but the network is
invitation-only.
If you're interested in keeping in touch or following the project
you can:
- Enter your email address at [urbit.org](http://urbit.org). - Enter your email address at [urbit.org](http://urbit.org).
- Subscribe to the - Subscribe to the
@ -14,22 +18,19 @@ keeping in touch or following the project you can:
- Follow [@urbit_](https://twitter.com/urbit\_) on Twitter. - Follow [@urbit_](https://twitter.com/urbit\_) on Twitter.
- Get in touch with us via email, <urbit@urbit.org> - Get in touch with us via email, <urbit@urbit.org>
All of the source code is distributed under the MIT license, but is for All of the source code is distributed under the MIT license.
all intents and purposes in the public domain.
Pacakges Packages
-------- --------
#### Ubuntu or Debian #### Ubuntu or Debian
Third-party pacakge files are maintained at https://github.com/yebyen/urbit-deb. Urbit is only supported on Jessie onward. Third-party package files are maintained at https://github.com/yebyen/urbit-deb. Urbit is only supported on Jessie onward.
#### OS X - Homebrew #### OS X - Homebrew
brew install --HEAD homebrew/head-only/urbit brew install --HEAD homebrew/head-only/urbit
If this succeeds, proceed to the [Run section](#run). Otherwise, the build must be done manually:
Dependencies Dependencies
------------ ------------
urbit depends on: urbit depends on:
@ -95,27 +96,29 @@ Just run `make`:
(On FreeBSD, use `gmake` instead.) (On FreeBSD, use `gmake` instead.)
Run <a id="run"/> Run (with a network invitation)
--- ---
Inside of the `urbit` directory run If you have a planet named `~fintud-macrep` and a ticket
`~fortyv-tombyt-tabsen-sonres`, run
bin/urbit -c pier bin/urbit -w fintud-macrep -t fortyv-tombyt-tabsen-sonres
where `pier` is a directory that does not exist. Your pier (all Urbit state, log and checkpoint) will be in
`./fintud-macrep`. To restart Urbit:
All your state (an append-only log and a memory checkpoint) will live in bin/urbit fintud-macrep
this directory. The name of your pier doesn't matter and is not visible
internally.
Begin Run (without a network invitation)
----- ---
To begin a 32-bit planet use Run
|begin bin/urbit -c mypier
which will guide you through the setup process. Urbit will create a comet in `mypier`. To restart:
bin/urbit mypier
Basics Basics
------ ------
@ -137,6 +140,8 @@ turned it off.
Talk Talk
---- ----
If you're on the network, you can use its most basic application, `talk`.
If `talk` is not running, start it with `*talk` from the task manager. If `talk` is not running, start it with `*talk` from the task manager.
Use `^x` to switch to the `talk` prompt and then run Use `^x` to switch to the `talk` prompt and then run
@ -145,16 +150,12 @@ Use `^x` to switch to the `talk` prompt and then run
to join the `urbit-meta` channel. People in there are helpful. to join the `urbit-meta` channel. People in there are helpful.
There are four main `talk` commands: There are three main `talk` commands:
;join ~urbit-name/channel ;join ~urbit-name/channel
`;join` subscribes your main feed to a remote channel. `;join` subscribes your main feed to a remote channel.
;create channel %name 'description'
`;create` creates a channel on your urbit.
;<number> ;<number>
`;<number>` activates a previous message number, like a URL that got `;<number>` activates a previous message number, like a URL that got
@ -168,7 +169,7 @@ for a private message.
Filesystem Sync Filesystem Sync
--------------- ---------------
Our filesystem, `%clay` does not automatically sync to unix. If you want Our filesystem, `%clay`, does not automatically sync to unix. If you want
to get files in and out of urbit, you'll need to setup a mount point. to get files in and out of urbit, you'll need to setup a mount point.
Since each mount point is always watching for changes you may also want Since each mount point is always watching for changes you may also want
to unmount from time to time. to unmount from time to time.
@ -199,7 +200,7 @@ your urbit and:
where pier is the name of your pier. where pier is the name of your pier.
While the network is still young from time to time we reboot the entire While the network is still young from time to time we reboot the entire
thing. We call this a 'continuity breach' since we're breaking the universe. We call this a 'continuity breach' since we're breaking the
continuity of our crypto. continuity of our crypto.
When this happens you'll need to back up your data and start a fresh When this happens you'll need to back up your data and start a fresh

View File

@ -89,7 +89,8 @@
u3r_mp(a->expWidth, h); u3r_mp(a->expWidth, h);
if ( !(_(u3a_is_cat(d)) && _(u3a_is_cat(e))) ) { if ( !(_(u3a_is_cat(d)) && _(u3a_is_cat(e))) ) {
mpz_clears(a->minExp, a->expWidth, 0); mpz_clear(a->minExp);
mpz_clear(a->expWidth);
u3m_bail(c3__exit); u3m_bail(c3__exit);
} }
a->rMode = d; a->rMode = d;
@ -160,12 +161,14 @@
_noun_to_ea(&c, a); _noun_to_ea(&c, a);
_noun_to_flOptions(&d, b); _noun_to_flOptions(&d, b);
if ( mpz_sgn(c.a) == 0 ) { if ( mpz_sgn(c.a) == 0 ) {
mpz_clears(d.minExp, d.expWidth, c.a, c.e, 0); mpz_clear(d.minExp); mpz_clear(d.expWidth);
mpz_clear(c.a); mpz_clear(c.e);
return u3m_bail(c3__exit); return u3m_bail(c3__exit);
} }
size_t m = mpz_sizeinbase(c.a, 2); size_t m = mpz_sizeinbase(c.a, 2);
if ( !_(j) && (m <= d.precision) ) { if ( !_(j) && (m <= d.precision) ) {
mpz_clears(d.minExp, d.expWidth, c.a, c.e, 0); mpz_clear(d.minExp); mpz_clear(d.expWidth);
mpz_clear(c.a); mpz_clear(c.e);
return u3m_bail(c3__exit); return u3m_bail(c3__exit);
} }
c3_w q = 0; c3_w q = 0;
@ -175,7 +178,9 @@
(mpz_cmp(c.e, d.minExp) < 0) ) { (mpz_cmp(c.e, d.minExp) < 0) ) {
mpz_sub(g, d.minExp, c.e); mpz_sub(g, d.minExp, c.e);
if ( !mpz_fits_uint_p(g) ) { if ( !mpz_fits_uint_p(g) ) {
mpz_clears(g, d.minExp, d.expWidth, c.a, c.e, 0); mpz_clear(g);
mpz_clear(d.minExp); mpz_clear(d.expWidth);
mpz_clear(c.a); mpz_clear(c.e);
return u3m_bail(c3__exit); return u3m_bail(c3__exit);
} }
q = mpz_get_ui(g); q = mpz_get_ui(g);
@ -192,19 +197,21 @@
c3_t y; c3_t y;
switch ( i ) { switch ( i ) {
default: default:
mpz_clears(v, h, g, d.minExp, d.expWidth, c.a, c.e, 0); mpz_clear(v); mpz_clear(h); mpz_clear(g);
mpz_clear(d.minExp); mpz_clear(d.expWidth);
mpz_clear(c.a); mpz_clear(c.e);
return u3m_bail(c3__exit); return u3m_bail(c3__exit);
case c3__fl: case c3__fl:
case c3__sm: case c3__sm:
mpz_set_ui(c.a, 0); mpz_set_ui(c.a, 0);
mpz_set_ui(c.e, 0); mpz_set_ui(c.e, 0);
mpz_clears(v, h, g, 0); mpz_clear(v); mpz_clear(h); mpz_clear(g);
break; break;
case c3__ce: case c3__ce:
case c3__lg: case c3__lg:
mpz_set_ui(c.a, 1); mpz_set_ui(c.a, 1);
mpz_set(c.e, d.minExp); mpz_set(c.e, d.minExp);
mpz_clears(v, h, g, 0); mpz_clear(v); mpz_clear(h); mpz_clear(g);
break; break;
case c3__ne: case c3__ne:
case c3__nt: case c3__nt:
@ -217,12 +224,11 @@
if ( y ) { if ( y ) {
mpz_set_ui(c.a, 0); mpz_set_ui(c.a, 0);
mpz_set_ui(c.e, 0); mpz_set_ui(c.e, 0);
mpz_clears(v, h, g, 0);
} else { } else {
mpz_set_ui(c.a, 1); mpz_set_ui(c.a, 1);
mpz_set(c.e, d.minExp); mpz_set(c.e, d.minExp);
mpz_clears(v, h, g, 0);
} }
mpz_clear(v); mpz_clear(h); mpz_clear(g);
break; break;
} }
goto end; goto end;
@ -231,7 +237,9 @@
switch ( i ) { switch ( i ) {
c3_ws x; c3_ws x;
default: default:
mpz_clears(v, h, g, d.minExp, d.expWidth, c.a, c.e, 0); mpz_clear(v); mpz_clear(h); mpz_clear(g);
mpz_clear(d.minExp); mpz_clear(d.expWidth);
mpz_clear(c.a); mpz_clear(c.e);
return u3m_bail(c3__exit); return u3m_bail(c3__exit);
case c3__fl: case c3__fl:
break; break;
@ -288,16 +296,18 @@
} }
if ( mpz_sgn(c.a) == 0 ) { if ( mpz_sgn(c.a) == 0 ) {
mpz_set_ui(c.e, 0); mpz_set_ui(c.e, 0);
mpz_clears(v, h, g, 0); mpz_clear(v); mpz_clear(h); mpz_clear(g);
goto end; goto end;
} }
mpz_set(g, d.minExp); mpz_set(g, d.minExp);
mpz_add(g, g, d.expWidth); mpz_add(g, g, d.expWidth);
if ( (d.eMode != c3__i) && (mpz_cmp(g, c.e) < 0) ) { if ( (d.eMode != c3__i) && (mpz_cmp(g, c.e) < 0) ) {
mpz_clears(v, h, g, d.minExp, d.expWidth, c.a, c.e, 0); mpz_clear(v); mpz_clear(h); mpz_clear(g);
mpz_clear(d.minExp); mpz_clear(d.expWidth);
mpz_clear(c.a); mpz_clear(c.e);
return u3nc(c3__i, c3y); return u3nc(c3__i, c3y);
} }
mpz_clears(v, h, g, 0); mpz_clear(v); mpz_clear(h); mpz_clear(g);
// all mpz except in c, d structures cleared; c contains result // all mpz except in c, d structures cleared; c contains result
end: end:
@ -308,7 +318,7 @@
} }
} }
u3_noun ret = u3nq(c3__f, c3y, u3k(_mp_to_satom(c.e)), u3k(u3i_mp(c.a))); u3_noun ret = u3nq(c3__f, c3y, u3k(_mp_to_satom(c.e)), u3k(u3i_mp(c.a)));
mpz_clears(d.minExp, d.expWidth, 0); mpz_clear(d.minExp); mpz_clear(d.expWidth);
return ret; return ret;
} }
@ -332,12 +342,14 @@
_noun_to_ea(&c, a); _noun_to_ea(&c, a);
_noun_to_flOptions(&d, b); _noun_to_flOptions(&d, b);
if ( mpz_sgn(c.a) == 0 ) { if ( mpz_sgn(c.a) == 0 ) {
mpz_clears(d.minExp, d.expWidth, c.a, c.e, 0); mpz_clear(d.minExp); mpz_clear(d.expWidth);
mpz_clear(c.a); mpz_clear(c.e);
u3m_bail(c3__exit); u3m_bail(c3__exit);
} }
_xpd(&c, &d); _xpd(&c, &d);
if ( !mpz_fits_sint_p(c.e) ) { if ( !mpz_fits_sint_p(c.e) ) {
mpz_clears(d.minExp, d.expWidth, c.a, c.e, 0); mpz_clear(d.minExp); mpz_clear(d.expWidth);
mpz_clear(c.a); mpz_clear(c.e);
u3m_bail(c3__exit); u3m_bail(c3__exit);
} }
mpz_t r, s, m, i, j, u, o; mpz_t r, s, m, i, j, u, o;
@ -398,7 +410,9 @@
mpz_add(o, o, u); mpz_add(o, o, u);
} }
mpz_set(c.a, o); mpz_set(c.a, o);
mpz_clears(r, s, m, i, j, u, o, d.minExp, d.expWidth, 0); mpz_clear(r); mpz_clear(s); mpz_clear(m);
mpz_clear(i); mpz_clear(j); mpz_clear(u);
mpz_clear(o); mpz_clear(d.minExp); mpz_clear(d.expWidth);
return _ea_to_noun(&c); return _ea_to_noun(&c);
} }

View File

@ -163,6 +163,13 @@ _main_getopt(c3_i argc, c3_c** argv)
return c3n; return c3n;
} }
if ( u3_Host.ops_u.tic_c == 0 && u3_Host.ops_u.who_c != 0 ) {
c3_c tic_c[29];
printf("your ticket: ~");
scanf("%28s",tic_c);
u3_Host.ops_u.tic_c = _main_presig(tic_c);
}
if ( c3y == u3_Host.ops_u.bat ) { if ( c3y == u3_Host.ops_u.bat ) {
u3_Host.ops_u.dem = c3y; u3_Host.ops_u.dem = c3y;
u3_Host.ops_u.nuu = c3y; u3_Host.ops_u.nuu = c3y;
@ -315,6 +322,14 @@ main(c3_i argc,
return 1; return 1;
} }
if ( c3y == u3_Host.ops_u.nuu ) {
struct stat s;
if ( !stat(u3_Host.dir_c, &s) ) {
fprintf(stderr, "used -c but %s already exists\n", u3_Host.dir_c);
exit(1);
}
}
u3_ve_sysopt(); u3_ve_sysopt();
printf("~\n"); printf("~\n");

View File

@ -359,7 +359,10 @@ _unix_scan_mount_point(u3_umon* mon_u)
else { else {
if ( '.' != out_u->d_name[len_w] if ( '.' != out_u->d_name[len_w]
|| '\0' == out_u->d_name[len_w + 1] || '\0' == out_u->d_name[len_w + 1]
|| '~' == out_u->d_name[strlen(out_u->d_name) - 1] ) { || '~' == out_u->d_name[strlen(out_u->d_name) - 1]
|| ('#' == out_u->d_name[0] &&
'#' == out_u->d_name[strlen(out_u->d_name) - 1])
) {
free(pax_c); free(pax_c);
continue; continue;
} }
@ -895,6 +898,8 @@ _unix_update_dir(u3_udir* dir_u)
if ( !S_ISDIR(buf_u.st_mode) ) { if ( !S_ISDIR(buf_u.st_mode) ) {
if ( !strchr(out_u->d_name,'.') if ( !strchr(out_u->d_name,'.')
|| '~' == out_u->d_name[strlen(out_u->d_name) - 1] || '~' == out_u->d_name[strlen(out_u->d_name) - 1]
|| ('#' == out_u->d_name[0] &&
'#' == out_u->d_name[strlen(out_u->d_name) - 1])
) { ) {
free(pax_c); free(pax_c);
continue; continue;