Commit Graph

438 Commits

Author SHA1 Message Date
Philip Monk
5a5de05518 clay: enable mounting revisions of desks 2022-04-29 18:50:30 -07:00
Philip Monk
a7eaddfdc7 clay: remove ankh
ankh was a cache of the current validated blobs, which is no longer
necessary
2022-04-29 17:29:50 -07:00
Philip Monk
60950ade08 clay: cleanup 2022-04-29 15:05:53 -07:00
Philip Monk
ac6e793aa2 arvo: rename +de to +of 2022-04-22 17:55:42 -07:00
Philip Monk
dfd4fc1028 clay: wip 2022-04-19 20:03:32 -07:00
Philip Monk
3b337a14ce Merge branch 'philip/direct' into philip/tomb 2022-04-13 15:01:25 -07:00
Philip Monk
3a04dc3160 clay: address review comments 2022-04-13 15:00:59 -07:00
Philip Monk
10a2acdcc1 clay: use old requests for now when backfilling 2022-04-13 01:12:05 -07:00
Philip Monk
ce5ef26202 Merge branch 'philip/direct' into philip/tomb 2022-04-13 01:00:23 -07:00
Philip Monk
8805e0ee85 clay: convert all blobs to pages
This converts the blob store from having deltas, directs, and
tombstones, to just having direct pages.  This simplifies a lot of code,
since we don't have to constantly ensure that deltas always have their
parent available.

This removes the hardcoded text diff logic from clay, which was
previously required for bootstrapping.

Over the wire, we handle both old and new requests and responses
transparently, so communication is normal in both directions across
ships which do or do not have this change.
2022-04-13 00:35:58 -07:00
Philip Monk
bb14c495da clay: seek wip 2022-04-12 21:02:50 -07:00
Philip Monk
72fa850912 clay: don't download unneeded blobs 2022-04-12 18:31:55 -07:00
Philip Monk
ed00d38166 clay: add |tomb 2022-04-08 21:20:02 -07:00
Philip Monk
78d2d12cca clay; fix overly cautios tombstoning 2022-04-08 17:28:42 -07:00
Philip Monk
39b7b0a96b clay: add %tako scry 2022-04-08 16:21:19 -07:00
Philip Monk
07d8187fcc clay: allow to set norm for past revision 2022-04-08 15:50:35 -07:00
Philip Monk
d71a685b91 clay: add norm to +pick cache 2022-04-07 18:10:00 -07:00
Philip Monk
6dc20bfa7f clay: trying to find %dead bug 2022-04-07 00:44:49 -07:00
Philip Monk
7482717c02 clay: make +pick fast 2022-04-06 23:16:26 -07:00
Philip Monk
84ccf60b19 clay: add gc routines 2022-04-06 21:45:30 -07:00
Philip Monk
8084200f81 clay: add norm state, remove mark from %delta blobs 2022-04-06 21:44:50 -07:00
Philip Monk
a51152d1a4 clay: address review comments 2022-04-06 12:16:22 -07:00
Philip Monk
4131821b4f clay: unify all trie implementations
We had trie operations independently implemented in +de in arvo,
+an:cloy in zuse, +zu in clay, lib/trie, and app/spider.  This unifies
them all into +de in arvo, aggregating the used operations.
2022-04-06 00:19:38 -07:00
Philip Monk
0f6f2d6321 clay: bump kelvin, refactor 2022-04-06 00:18:23 -07:00
Philip Monk
90a2625016 clay: style 2022-04-05 20:30:52 -07:00
Philip Monk
90098067f2 clay: extend %tomb to delete all unneeded blobs 2022-03-26 14:37:46 -07:00
Philip Monk
ee3951e2df clay: require non-dead files at head of remote 2022-03-25 22:15:53 -07:00
Philip Monk
6e641005a0 clay: add upgrade to %11 2022-03-25 18:02:22 -07:00
Philip Monk
fb3f74f639 clay: prefer life 2022-03-25 15:32:38 -07:00
Philip Monk
ef9521272a Merge remote-tracking branch 'origin/lf/ford-memory-shit' into philip/tomb 2022-03-25 13:13:24 -07:00
Philip Monk
c5fda496ac clay: add basic %tomb 2022-03-25 13:13:09 -07:00
Philip Monk
99a10aa7a8 clay: use XX for things that really need to change 2022-03-25 12:33:48 -07:00
Philip Monk
0c3eee07b5 Merge remote-tracking branch 'origin/master' into philip/tomb 2022-03-25 12:21:56 -07:00
Liam Fitzgerald
dd70856188 clay: be careful with subject in ford results
This fixes a space leak where the entire ford/clay core would be
included in the ford cache. Heavily reduces memory usage by clay,
reducing total usage from 100-200MB to around 10MB.
2022-03-21 13:02:36 -06:00
Liam Fitzgerald
2def946ded clay: break out ford memory usage in more detail
Instead of reporting a single memory size for built files, marks and
conversions, we now report memory size per path, mark name and mark
pair, respectively.
2022-03-21 12:21:38 -06:00
Yaseen
70afcbd642 clay: fix bug in fuse
Co-authored-by: Philip Monk <phil@pcmonk.me>
2022-02-25 16:34:44 -05:00
Yaseen
3d006d60ad clay: add scry for case existence check 2022-02-18 17:43:38 -05:00
Yaseen
ce0fa85e18 story: generators improvements
- use desk parameter instead of %base everywhere
- formatting clean up
- make |story-remove take a case instead of an aeon
- make desk param optional for story-set and story-log
2022-02-05 22:50:10 -05:00
fang
2c5510db64
Merge branch 'jb/next-gen-term' into next/dill
Resolves a good number of conflicts. Most notably, re-propagates removal
of gall's %onto, confirms new /app/herm behavior, coerces hood/drum
state adapters back into place, and updates webterm to use the latest
api.
2022-01-24 14:50:16 +01:00
Yaseen
b37fd09fab clay: implement %base-tako scry under the %s care 2022-01-13 15:56:20 -05:00
Yaseen
163ed030d4 clay: add new %s scry which gives the tako for a given beak 2021-11-25 12:48:24 -05:00
Yaseen
c080eb8336 fix comment styling 2021-11-15 09:07:24 -05:00
Yaseen
ae7cf81c29
clay: keep info in stacktrace when labeling fails
Co-authored-by: Philip Monk <phil@pcmonk.me>
2021-11-15 05:32:59 -05:00
Philip Monk
8af1dd3acc
clay: refactor +wake
+wake had accumulated several layers of abstractions which were later
rendered unnecessary.  This removes those abstractions and should have
no semantic effect.
2021-11-14 19:35:32 -08:00
Yaseen
70a85ccdb0 remove unnecessary comments 2021-11-14 20:41:30 -05:00
Yaseen
17751e7890 clay: enforce referential transparency on labels 2021-11-14 16:49:17 -05:00
Yaseen
25ce97cade clay: add support for labeling commits
- add helper arm `label:de`
- update relevant code to take in arbitrary aeons
2021-11-12 15:35:06 -05:00
Philip Monk
d9276cd51c
clay: Add support for representing tombstones
This adds support for tombstoned files to clay.  It does not include any
way to actually tombstone them; that is left for later.

This allows tombstoning at the level of a file.  Precisely, this expands
+blob:clay by adding a %dead case:

    +$  blob                                              ::  fs blob
      $%  [%delta p=lobe q=[p=mark q=lobe] r=page]        ::  delta on q
          [%direct p=lobe q=page]                         ::  immediate
          [%dead p=lobe ~]                                ::  tombstone
      ==                                                  ::

Thus, we maintain the invariant that every lobe corresponds to a blob,
but now a blob may be an explicit tombstone.

Details:
- This has not been tested at all, except that it compiles and boots.
- This does not have a state adapter from master.  The only state change
  is the definition of +cach.
- Additionally, out-of-date ships may unexpectedly receive a %dead blob
  from a foreign clay which would interfere with their ability to download
  that desk.  No code changes necessary, but sponsors should avoid
  tombstoning files in %base for a while so their children can get the
  update.
- A merge will only fail if the tombstoned file conflicts with another
  change.  Note that as written, merging from a past desk *can* bring a
  tombstoned file to the head of a desk.  Possibly this shouldn't be
  allowed.

This also includes a couple refactors that were made possible by ford
fusion (since everything is synchronous now) but never got done.  In
both cases we get to remove a monad, which simplifies the code
considerably.

- refactor +merge's error handling to use !!/mule instead of threading
  through errors
- refactor all +read-* functions and related parts of +try-fill-sub to
  eagerly convert lobes to cages.

We also add support reading %a/b/c/e/f/r/x from past and foreign desks,
when possible.  Apologies that all of these are in one commit, it was
all a single chunk of work.

This is a draft until we have a way to tombstone.  I suspect we'll want
to have a mechanism of keeping track of gc roots and trace to remove,
but this PR doesn't suggest any particular strategy.
2021-11-07 22:17:02 -08:00
fang
bf4aef198c
clay: give %u answer for non-existent desks
Instead of considering it "in the future", an existence check for paths
on non-existent desks now always produce false.
2021-10-07 21:57:56 +04:00
Ted Blackman
5cce66523c Revert "clay: print cult"
This reverts commit d4bc38f774.
2021-09-29 20:31:57 -04:00
Ted Blackman
86a2715e67 clay: purge %next and %sing on migration 2021-09-29 20:10:53 -04:00
Ted Blackman
d4bc38f774 clay: print cult 2021-09-29 20:01:43 -04:00
Ted Blackman
5e1778ea84 clay: compile failure 2021-09-29 19:43:26 -04:00
Ted Blackman
b16d176863 clay: delete /app/publish from subscription state on migration 2021-09-29 19:36:29 -04:00
Ted Blackman
bd46a367a3 clay: always notify if new read says nonexistent 2021-09-29 17:57:55 -04:00
Ted Blackman
9560fa43b2 gall,clay: fix migration file build dates; add %home as parent desk in jams 2021-09-29 15:00:42 -04:00
Fang
1867209a12
Merge branch 'jm/spider-gall' into dist 2021-09-28 17:12:17 +04:00
Fang
059c2daed3
clay: make distribution desks public on-migrate
To ensure our sponsees (and other ships) can install from them.
2021-09-28 15:59:36 +04:00
ryjm
472f16fd2e garden spider: address comments 2021-09-27 21:23:46 -04:00
ryjm
c630b560ee gall: don't verify spider marks 2021-09-27 21:23:46 -04:00
Ted Blackman
9aa8566a6e -jam-all-desks 2021-09-26 22:03:13 -04:00
Philip Monk
a94e17915f clay: fix failure to load apps
When you loaded an app with an error, then fixed the error, it would
create the main gall %mult subscription at a time in the past.  Then,
clay would never fill the subscription since it couldn't get the old %a
entries for the apps.

This fixes the issue in two ways:  first, don't subscribe in the past.
Second, if clay can't get the old versions, just fire the subscription
anyway.
2021-09-26 00:26:37 -04:00
Ted Blackman
8f115bf059 clay: remote-install desks during migration 2021-09-25 16:53:52 -04:00
ryjm
154deb3281 clay: print stacktrace on build failure 2021-09-25 15:36:00 -04:00
Joe Bryan
5385889ebd Revert "Revert "Merge pull request #4463 from urbit/m/next-gen-term""
This reverts commit 3fba32185d.
2021-09-24 23:14:55 -04:00
Joe Bryan
3fba32185d Revert "Merge pull request #4463 from urbit/m/next-gen-term"
This reverts commit 39667fc071, reversing
changes made to 698fd6f66f.
2021-09-24 16:33:15 -04:00
Fang
ce09681b0a
clay: avoid migrating during boot
We set the "have we migrated yet" flag to true during boot, because
we're starting out in a post-migration world.

Also fixes a state version number.
2021-09-24 20:55:28 +04:00
Ted Blackman
c80fb82318 clay,kiln,landscape/notify: migration runs 2021-09-23 18:07:13 -04:00
Fang
eb1ec5b749
clay: clean up migration error case printfs 2021-09-22 15:45:04 +02:00
Fang
904165f83a
clay: don't forget the extra q
+load still nest-fails though.
2021-09-22 01:39:29 +02:00
Fang
f588ea9feb
clay: grab tmp desk jamfile correctly 2021-09-22 01:16:21 +02:00
Ted Blackman
30364ab29b clay: wip migration 2021-09-21 19:13:54 -04:00
Fang
c0bfab9bf5
clay: wip migrate from desk jams
To work around mark availability issues.
2021-09-21 00:28:31 +02:00
Fang
e9aa3821ef
zuse, clay: further wip migration 2021-09-20 23:13:04 +02:00
Ted Blackman
fb8c73e39a zuse,clay: WIP +migrate-dist 2021-09-20 13:01:48 -04:00
Ted Blackman
84c043d921 lull,clay: WIP migration 2021-08-31 02:25:36 +03:00
Ted Blackman
dda7f13e0e clay: WIP migrate from master 2021-08-26 19:32:52 +03:00
Fang
da85ee2e38
Merge branch 'master' into m/next-gen-term 2021-08-12 15:15:36 +02:00
Ted Blackman
616ab66f26 merge master; loosen :hood's updates 2021-08-11 19:23:36 +03:00
Ted Blackman
d9c9740b8d clay: print desk in +read-a 2021-07-23 14:03:36 +03:00
Ted Blackman
4f5739879e clay: more printing adjustment 2021-07-19 14:01:34 +03:00
Ted Blackman
f521881212 clay: better print 2021-07-18 23:11:13 +03:00
Ted Blackman
4f3e99f797 clay,hood: seems to boot for real now 2021-07-17 02:54:20 +03:00
Ted Blackman
a1b82d4b36 various: can bootstrap off existing ship, but generators are broken 2021-07-16 19:01:55 +03:00
Ted Blackman
5e496e920e clay: invalidate cache on kelvin change 2021-07-14 19:21:00 +03:00
Ted Blackman
f4232ce415 dill,clay: minor printing cleanup 2021-07-14 01:51:35 +03:00
Ted Blackman
529502543b sys,lib: boots! 2021-07-14 01:00:13 +03:00
Ted Blackman
9b968edf75 clay,kiln,/mar/kelvin,/lib/pill: some fixes for pills; not done 2021-07-13 19:02:24 +03:00
Ted Blackman
070bbd0917 clay: use 2021-07-10 08:56:25 -04:00
raghu
ad96d47cdc better formatting in error messages 2021-07-08 22:29:06 -04:00
Ted Blackman
784004cfb6 kiln: +install compiles and loads, untested 2021-06-30 21:03:47 -04:00
Ted Blackman
8c3d14b7a7 clay: check kelvin on non-%base desks 2021-06-28 21:22:55 -04:00
Ted Blackman
40af38c9ee bin/solid.pill 2021-06-28 20:18:37 -04:00
Ted Blackman
501ed4ad82 clay: remove reef 2021-06-28 20:01:51 -04:00
fang
2640a3352a
Merge branch 'master' into m/next-gen-term-real 2021-06-23 11:19:48 +02:00
raghu
5698e2662a Merge remote-tracking branch 'upstream/master' into better-bar-fuse 2021-06-21 20:57:20 -04:00
raghu
a04b318d2d clay: log on strange fuse responses 2021-06-21 20:43:49 -04:00
Philip Monk
85fdd6b190
clay: handle out-of-bounds versions in nako 2021-06-08 15:41:44 -10:00
raghu
b499e1e711 clay: print conflicting source on fuse failure 2021-06-07 20:35:18 -04:00
Philip Monk
bbe3cbe8ee
clay: formatting 2021-05-18 08:32:30 -10:00
Philip Monk
1e6e69a49d
Merge branch 'pr' into release/next-sys 2021-05-18 07:50:26 -10:00
Philip Monk
63ba2823dd
Merge remote-tracking branch 'origin/ted/clay-bunt' into release/next-sys 2021-05-18 07:38:52 -10:00
raghu
44722f3a09 fuse: properly report success 2021-05-11 21:30:44 -04:00
raghu
9db61a1566 fuse: simplify state restoration logic 2021-05-03 22:26:49 -04:00
raghu
2fd8e729e1 fuse: fix indents 2021-05-03 19:29:28 -04:00
raghu
20fb39bba7 fuse: fix comments 2021-05-02 14:15:03 -04:00
raghu
08d3aa2485 fuse: c/r 2021-05-02 14:04:03 -04:00
raghu
75ed2cc0af fuse: c/r 2021-05-02 13:44:18 -04:00
Philip Monk
49bbf37ca2
Merge pull request #4835 from urbit/philip/clay-fixes
clay: fix requests for strange cares over ames
2021-04-29 15:18:05 -07:00
Philip Monk
7b7e9e3104
clay: fix requests for strange cares over ames
Four changes:

- implement +validate-u to allow %u requests over the network
- make +validate-x use our local marks to make %x requests generally
  work over the network
- in +start-request, if a foreign ship is making a request that we
  shouldn't send over the network, ignore it.  This closes a DOS vector.
- in +duce, if we're about to make a request to a foreign ship which
  they won't be able to answer, crash the event.

Combined, these fix many of the common cases of weirdness around foreign
clay requests.  Notably absent is a fix for reading `%a` across the
network, which I still maintain should happen against the foreign
hoon/zuse.

fixes #4834
see also #4307
2021-04-28 23:24:15 -07:00
fang
5d4d7de6a6
Merge pull request #4745 from urbit/m/ford-fassig
clay: add /~ ford rune, as /= for directories
2021-04-26 16:19:19 +02:00
raghu
8cbacb2545 clay: allow successive upgrades 2021-04-25 14:01:55 -04:00
raghu
201c3db193 clay: finalize fuse request - update |fuse 2021-04-25 14:01:45 -04:00
raghu
9d7afd10ee clay: change fuse request 2021-04-25 14:01:33 -04:00
fang
550dee32da
clay: +any:in in place of +lien over +tap:in 2021-04-23 23:05:11 +02:00
fang
dcdf695991
clay: insert %nest-fail into trace conditionally
Previously, we would stack on the ~| for every file we had previously
processed, even though we only want it in the trace for actual failures.
2021-04-23 22:56:24 +02:00
raghu
b2e1008d9a clay: add %fuse 2021-04-19 23:46:46 -04:00
Philip Monk
66b4c3f193
Merge pull request #4677 from urbit/philip/fast-refresh
sys: Speed up things used in Landscape
2021-04-19 15:43:16 -07:00
fang
0570fb5b76
clay: share logic between build-file and directory
By factoring their shared logic out into +build-dependency, which gets
passed the relevant details about how to track the file being built in
the dependency stack.
2021-04-12 13:10:36 +02:00
fang
8b4dba28fa
clay: update dependency logic for /~ imports
To match recent changes to the build logic, where it only includes
top-level hoon files.
2021-04-10 16:22:52 +02:00
fang
a45179412b
clay: for /~, only build top-level files
This is semantically cleaner than arbitrary-depth recursion, and lets us
stop worrying about hyphenated path conflicts.
2021-04-10 02:26:32 +02:00
fang
1411e08944
clay: specify target type for /~ results
Clay will nest-check the results and put a homogenous map into the
subject.
2021-04-10 01:59:26 +02:00
fang
62d7281156
clay: add /~ ford rune, as /= for directories
Hoon files may want to import nouns from all files in a given directory.
/~ lets you do so, importing as a (map @ta *) (but with typed values).

Note the description as "directories" here, instead of "path prefix".
The behavior, as implemented, will not include /path/hoon for /~  /path,
instead only including /path/more/hoon and more deeply nested files.
This seems to be, generally, the behavior you want, for example when
importing from /app/myapp/* for /app/myapp/hoon.

Actually using the resulting map requires some manual casting, which is
not ideal. Some code style improvement work remains to be done as well.
2021-04-09 01:49:14 +02:00
fang
1ec5e5acfb
hoon: add +stap, path parser
And cleans up a bunch of locally hand-written implementations of it.
2021-04-07 21:14:13 +02:00
fang
7e2cc77ae0
clay: explicitly ask dill to print changelist
Instead of emitting a "debug message" gift and hoping dill picks it up
for printing.
2021-03-31 22:28:22 +02:00
Philip Monk
a1647a9767
clay, eyre: add profiling hints 2021-03-28 00:50:25 -07:00
Ted Blackman
b55417a1c3 clay: remove +bunt from marks 2021-03-05 16:53:35 -05:00
Philip Monk
f5ce79da9d
marks: fixup
Many of the marks were broken, and staticizing the marks revealed this.
This makes them build.
2021-03-04 19:21:34 -08:00
Philip Monk
a0146f4a44
clay: add %e, %f requests
For static naves, casts respectively
2021-03-04 18:28:16 -08:00
Philip Monk
4a066c8d4d
clay: fix upgrade 2021-03-04 13:41:07 -08:00
Ted Blackman
9636b889aa clay: speed up +checkout-changes 2021-02-24 14:43:35 -05:00
Ted Blackman
0452eb92f2 Merge branch 'release/next-sys' into HEAD 2021-02-24 13:26:51 -05:00
Ted Blackman
ce61d49ef9 clay: fix |mass; some renaming 2021-02-24 12:59:13 -05:00
Ted Blackman
19bf227428 clay: remove debug artifacts 2021-02-24 12:44:08 -05:00
Ted Blackman
d447e70b09 clay: fix /% parser; clean up unit tests 2021-02-24 12:18:50 -05:00
Ted Blackman
9bf6c6136a clay: fix mark +grad delegation bug 2021-02-22 14:35:57 -05:00
Ted Blackman
674b5edb1f Merge branch 'release/next-sys' into ted/gall-q 2021-02-19 13:42:58 -05:00
Ted Blackman
b702505ac8 clay: print if +read-at-aeon crashes 2021-02-18 21:50:59 -05:00
Ted Blackman
ad20ddb1d4 clay: added mark runes; can boot off solid pill 2021-02-17 14:31:20 -05:00
fang
353e0f7395 clay: condense +pile-rule
Rewrites the `+pile-rule` parsing rule for compactness and legibility.
This is a purely stylistic change.
2021-01-27 12:17:40 -05:00
Ted Blackman
ca1585c841 clay: static clay boots 2021-01-26 22:51:52 -05:00
Ted Blackman
ce9f1eb3da clay: fix +grow in mark casting 2021-01-26 20:43:23 -05:00
Ted Blackman
6be1ebc41a clay,lull: +test-mar-mime passes 2021-01-26 15:59:36 -05:00
Ted Blackman
f469dbf8bc clay,lull: compiles with static marks 2021-01-13 15:20:58 -05:00
Ted Blackman
ece8bbf0a2 clay: WIP static mark and cast builds 2021-01-12 19:10:11 -05:00
fang
1b1b613729
clay: condense +pile-rule
Rewrites the `+pile-rule` parsing rule for compactness and legibility.
This is a purely stylistic change.
2020-12-24 13:03:56 +01:00
Joe Bryan
37a24bb800 clay: build %zuse against %lull 2020-12-07 19:24:34 -08:00
Joe Bryan
aaf506ce8a Merge branch 'jb/motion' into jb/motion-merge
* jb/motion:
  pill: solid
  zuse: remove %crud from vane-task
  arvo: full vane names in $sign
  aqua: build again (still broken)
  arvo: reform of the scry reform
2020-12-07 18:52:51 -08:00
Joe Bryan
5dd3e148b8 zuse: remove %crud from vane-task 2020-12-07 18:01:48 -08:00
fang
d98c59e73a
zuse: lift moves out of +able 2020-12-08 01:47:06 +01:00