Commit Graph

12494 Commits

Author SHA1 Message Date
Jōshin
aebce8dbf5
Merge branch 'next/vere' into jo/khan-c3 2022-01-25 08:50:45 -08:00
Jōshin
13bdfe26aa
build: arm64 architecture
This seems to be what nix settled on.

(As of now, I can build urbit on M1 Mac with stock nix. nix-build -A
urbit hangs for some reason, but nix-shell ./configure && make works.)
2022-01-23 21:22:13 -08:00
Jōshin
924d8e0628
conn: comments 2022-01-22 02:33:26 +00:00
Jōshin
86fee3c104
conn: merge lines 2022-01-15 08:13:50 +00:00
Jōshin
c89eb11f57
conn: various fixes and cleanups 2022-01-15 08:00:59 +00:00
Jōshin
275beeb071
conn: some peel/urth functionality 2022-01-15 07:32:48 +00:00
Jōshin
c1a4bf75cf
conn: comment 2022-01-14 20:36:10 +00:00
Jōshin
f6cef00dd9
conn: comment 2022-01-13 06:29:55 +00:00
Jōshin
2e39926180
conn: van_o -> kan_o 2022-01-13 06:25:12 +00:00
Jōshin
bdcc30da98
khan: -> conn
Get some space between the IO driver and vane, since the driver is
mostly self-contained now and only depends on %khan for thread running.

"Conn" is a nautical term; it is the status of being in control of a
ship's movements, or the act of controlling a ship.
2022-01-13 06:21:30 +00:00
Jōshin
75271a8795
khan: implement %ovum
Untested as of yet.
2022-01-13 06:11:35 +00:00
Jōshin
66ef25447f
khan: stub out new commands 2022-01-13 05:19:51 +00:00
Jōshin
9e115a2b28
khan: rid is any-sized atom
Also updates comment to match current target.
2022-01-13 04:58:09 +00:00
Peter McEvoy
db1b8d8239 vere: use hex literal for database size passed to u3_lmdb_init() 2022-01-07 14:44:08 -08:00
Peter McEvoy
e4616828c1
u3: disable page tracking on inner roads (#5477)
* u3: disable page tracking on inner roads

* u3: optimize reinstatement of page tracking

* u3: replace U3_OS_Native* macros with static global variable

* u3: move U3_OS_NativePageWords global variable into portable.h

* Revert 2ee26990c2, 16c52a4b73, d7bfe37ff7, 4a78133991

Revert "u3: move U3_OS_NativePageWords global variable into portable.h"
This reverts commit 2ee26990c26a8af15a0234fa23dd041b13aa02de.

Revert "u3: replace U3_OS_Native* macros with static global variable"
This reverts commit 16c52a4b73f35cfe54165ad9232110c2f741d223.

Revert "u3: optimize reinstatement of page tracking"
This reverts commit d7bfe37ff768ecfc0055d71076c67a4df4aff621.

Revert "u3: disable page tracking on inner roads"
This reverts commit 4a781339914b2c47772107d8654a27c40aef7ddf.

* u3: remove u3e_dirty()

* u3: use sizeof() in u3e_foul()

* u3: disable inner road page tracking by defaulting to dirty pages

* u3: read and write-protect on per-page basis in _ce_image_blit()

* u3: remove _ce_patch_junk_page()

* u3: increment ptr_w in _ce_image_blit()
2022-01-06 16:23:19 -08:00
Jōshin
573495546d
vere: reading comprehension :( 2022-01-04 18:28:19 +00:00
Jōshin
c7d8c73865
vere: change include file name in compat 2022-01-04 18:19:46 +00:00
Jōshin
40f3263e08
vere: remove headers from configure script
It doesn't seem to be doing anything.
2022-01-04 17:29:23 +00:00
Jōshin
645b7afbd7
test: cleanup
- u3s_cue_xeno_init_with to after u3m_boot_lite().

- c3__ux for overflow case for more intuitive test output.

- "test boot" in final output.
2021-12-26 23:26:39 +00:00
Jōshin
0682eb8a3a
nix,vere: move ivory def to its own source file 2021-12-26 22:31:35 +00:00
Jōshin
fbcec9d0ec
vere: use u3r_safe_word instead of u3r_word_fit
Also add boundary condition tests for u3v_lily.
2021-12-26 21:31:46 +00:00
Jōshin
a07e0b8997
test: return 0 2021-12-26 19:56:06 +00:00
Jōshin
b29fb12e47
test: fix make output, add boot tests 2021-12-26 19:55:03 +00:00
Jōshin
c7f4768e40
vere: reorder u3v functions 2021-12-26 07:08:05 +00:00
Jōshin
2526c4b59d
vere: fix u3v_lily bounds checking
Before this, u3v_lily would erroneously accept atoms bigger than 64 bits
that, when truncated to 64 bits, were 31-bit numbers.

Decided to drop _cv_mole altogether. Another option would be to write a
u3r_chub_fit, write _cv_mole in terms of that, and check width in
u3v_lily as it currently does.

I tried to add a test case, but it seems that tests don't have access to
an ivory pill for +scot / +slaw. This would be the test case, more or
less:

    {
      c3_l lit_l;
      c3_w big_w[] = {0, 0, 1};
      u3_atom big = u3i_words(3, big_w);
      u3_noun cod = u3dc("scot", c3__ux, big);

      if ( c3y == u3v_lily(c3__ux, cod, &lit_l) ) {
        printf("fail\n");
      }
    }

(The refcounting was also messed up, possibly from my refactor to use
+slaw instead of +slay, but this seems to have been unrelated.)
2021-12-26 06:44:54 +00:00
Jōshin
d64674c0e8
khan: only plan %done if vane is present 2021-12-25 21:19:25 +00:00
Jōshin
e226161d03
khan: better noun refcounting, errors
- Caught a couple potential leaks.

- Reworded error messages to be more @tas-compliant.

- Used unique error codes in bal_f calls.

- Moved u3z calls onto same line as returns.
2021-12-25 21:07:59 +00:00
Jōshin
b61f4e5728
khan: comment changes
Not sure we actually want to guarantee exactly-once response semantics,
so you can't rely on request ordering to correlate requests even if you
never send simultaneous requests.

Also do a worked example of a %urth scry, which hopefully raises the
question of whether %urth should try to support views.
2021-12-25 20:42:19 +00:00
Jōshin
d505541498
Revert "behn: comment spacing"
Leave arvo stuff out of the next/vere changes entirely.

This reverts commit 0102bb271f.
2021-12-25 20:26:45 +00:00
Jōshin
69f4d57ccd
test: we stopped futureproofing at some point 2021-12-25 20:25:24 +00:00
Jōshin
9f0a1cc684
vere: export u3v_lily
It was if 0'd out in noun/vortex.c. That seems like a more reasonable
place to put it then a whole other self-contained file.

The commented version used slay instead of slaw and had an extra paren;
I opted to replace it with the impelementation from reck.c from http.c.
2021-12-25 19:54:21 +00:00
Jōshin
0911c39b0e
khan: comment fixes 2021-12-25 09:47:26 +00:00
Jōshin
d22618e89f
khan: comment formatting 2021-12-25 09:41:27 +00:00
Jōshin
736fc6f47c
khan: fix comment
It's a little atom; so 31 bits, not 32.
2021-12-25 08:44:36 +00:00
Jōshin
ddbe673a43
khan: naming scheme for _khan_init_sock 2021-12-25 08:41:42 +00:00
Jōshin
845d325dd7
khan: always open socket, make %fyrd conditional
Inlines the server initialization in _khan_io_talk. Adds a van_o loobean
that differentiates between having the vane and missing the vane; van_o
is c3n if the %born event failed. In that case, we don't bother
forwarding %fyrd requests at all, but %peek requests still go through.
2021-12-25 08:37:47 +00:00
Jōshin
969115d5c1
khan: document %peek overlay 2021-12-25 08:26:05 +00:00
Jōshin
6a783cda55
khan: remove _khan_close_socket
It was a mistake to call it except from _khan_close_chan, so just inline
it at the one call site. Also lets us stop doing our own pointer
juggling in _khan_io_exit.

While we're at it, flip argument order in _khan_close_chan;
superordinate first seems more natural.
2021-12-25 01:53:56 +00:00
Jōshin
18764678b0
khan: remove TODO, clean up docs 2021-12-25 01:31:37 +00:00
Jōshin
dfe2330d49
khan: urth namespace stub 2021-12-25 01:28:17 +00:00
Jōshin
fbe6cd5196
khan: include %avow in response 2021-12-25 00:19:28 +00:00
Jōshin
7386e3b0a3
khan: assert 2021-12-24 23:30:01 +00:00
Jōshin
9280c107c0
newt: remove fprintf
This was sorta here in case that decode case ever got tripped
erroneously. Calling bal_f ought to be sufficient to produce a log.
2021-12-24 22:51:07 +00:00
Jōshin
ee68f533fe
khan: redo error logic
No more retries. If something goes wrong, log it and close the channel.
If we receive an unknown message from the vane, crash the process.
2021-12-24 22:49:57 +00:00
Jōshin
a85dac4e65
khan: _khan_read_wire takes tag, rename fn
- Have _khan_read_wire take a tag rather than produce it; if the tag is
  not the one passed, it assumes it knows nothing of the rest of the
  wire structure and simply returns c3n.

- rename _khan_search_chan to _khan_find_chan, the latter being more
  flwy.
2021-12-24 22:29:59 +00:00
Jōshin
3cad739fdf
khan: reformat %peek, report %fyrd errors, misc
- Reformat %peek responses to start with request-id.

- Send %fyrd errors back over the channel that started the %fyrd.

- Factor out _khan_read_wire, reused by both _khan_poke_bail and
  _khan_io_kick.

- Move _khan_search_chan up above _khan_poke_bail to use it there.
2021-12-24 22:20:49 +00:00
Jōshin
8e1ab0ff35
khan: fix ci
liv_o was always c3n without the vane. The pier was waiting for all
drivers to report liv_o == c3y. Tragedy ensued.

Maybe now we want to open the socket for peeks and moves even if the
vane is not present, so this may need to be rethought even further.
This is just the simple resolution for the culprit unearthed by
git-bisect.
2021-12-24 07:39:26 +00:00
Jōshin
1b39475096
khan: cleanup, request-ids in kick_f
- Factor out _khan_send_noun.

- Fix inconsistent operator locations.
2021-12-23 23:13:21 +00:00
Jōshin
1b64a72b7d
khan: flip request-id order, add request list
Keeping a request list allows us to detect the case where a scry result
has returned on a connection that has already been closed, so we can
noop in that case.

Flipping the order of tag and request-id seems more natural for the
%fyrd case; otherwise there's no clear thing to send to the vane.
(Sending the whole jar sends request-id twice; once in the wire, once in
the body. Sending only the command itself loses context and introduces
potential namespace overlaps.)

As of now, scries are working.

And the format the IO driver takes is:

$:  request-id=@ud
$%  [%fyrd fyrd-args=*]
    [%peek peek-args=*]
    [%move move-args=*]
==
2021-12-23 10:04:16 +00:00
Jōshin
ceeb21d71e
khan: poke destructuring now case-independent
- Adds request-id to %fyrd.

- Adds log lines per poke.

- Missed a u3z(jar) in the switch default case.
2021-12-23 09:26:24 +00:00