Commit Graph

211 Commits

Author SHA1 Message Date
Philip Monk
8cd72daf20
clay: speed up +find-merge-points
In certain cases +find-merge-points was very slow.  Specifically, the
`done` set was meant to avoid checking the same commit repeatedly, but
it didn't catch the case where a commit was added to the worklist that
was already in that worklist.

Secondly, the worklist was stored as a list but used as a queue, which
resulted in a lot of unnecessary welding.  We change it to a qeu.

Fixes #3735
2020-10-16 11:21:02 -07:00
Joe Bryan
1402f763f3 clay: refactors +cancel-request, consistently accounting for TMI 2020-10-09 10:34:18 -07:00
Philip Monk
f9665c0cbd
Merge pull request #3378 from urbit/philip/base-hash
clay: expose mergebase as base-hash
2020-09-08 20:11:05 -07:00
Philip Monk
c7480c9b07
clay: fix bug in %mate
If both sides changed a file in the same way, %mate used the version in
the mergebase, which is incorrect.  This changes it to use the version
in the destination desk.

An example of this issue:

    > +cat %/test/hoon
    /~zod/home/~2020.9.3..21.41.24..61ed/test/hoon
    first

    > |merge %scratch our %home
    >=
    merged with strategy %fine
    + /~zod/scratch/2/test/hoon

    > +cat /=scratch=/test
    /~zod/scratch/~2020.9.3..21.41.32..408c/test/hoon
    first

    > *%/test/hoon 'second'
    : /~zod/home/3/test/hoon

    > *%%%/scratch=/test/hoon 'second'
    : /~zod/scratch/3/test/hoon

    > |merge %scratch our %home
    >=
    %fine merge failed, trying %meet
    %meet merge failed, trying %mate
    merged with strategy %mate
    : /~zod/scratch/4/test/hoon

    > +cat /=scratch=/test
    /~zod/scratch/~2020.9.3..21.42.25..9e8b/test/hoon
    first
2020-09-03 14:34:30 -07:00
Philip Monk
67c5caada8
clay: add safe merge options
As described in gen/hood/merge/help.txt
2020-08-28 16:36:00 -07:00
Philip Monk
769b43d73a
clay: add comments and cleanup +find-merge-points 2020-08-26 18:32:20 -07:00
Philip Monk
9cd826f8f9
clay: make +find-merge-points faster
The main thing here is that we aggressively check whether we're in
ancestry of another mergebase candidate.  This means we don't have to do
a 2nd pass to eliminate redundant candidates.
2020-08-25 22:54:48 -07:00
Philip Monk
4468d79509
clay: expose mergebase as base-hash
Change the definition of base-hash to be the mergebase of %home with the
OTA source.  This means it's the most recent successfully-applied
update, which is usually the most important information.

Add sour-hash, which is the hash of the most recently *downloaded*
update, regardless of whether it applied successfuly (ie the old
base-hash).

Add a summary of the various hashes at the top of gen/trouble.
2020-08-25 20:25:39 -07:00
Philip Monk
f606d2e3d6
clay: cleaner no-op detection
Only no-op if the incoming commit's parent is the old head of the desk.
Also move the printing near the end so we can know exactly if anything
changed.
2020-08-25 18:15:06 -07:00
Philip Monk
d5596eb1a3
clay: if commit would be a no-op, don't commit it
fixes #3317
2020-08-25 16:24:36 -07:00
Philip Monk
3d1b7f2b35
clay: fix ph tests 2020-07-28 21:44:45 -07:00
Philip Monk
495a6cf004
clay: remove debugging printfs 2020-07-24 22:05:49 -07:00
Philip Monk
51983e5480
clay: rewrite new protocol
Use an explicit state machine to carefully manage pending downloads.
2020-07-24 00:20:22 -07:00
Philip Monk
553a9db843
clay: refactor over-the-wire protocol
Don't send blobs initially; instead, wait for the recipient to ask for
any they need.  This should significantly reduce network and memory usage.
2020-07-23 00:12:33 -07:00
Philip Monk
f4c34c7598
release: urbit-os-v1.0.29 2020-07-21 12:59:12 -07:00
Philip Monk
f4f1d0ab4b
clay: print conflicts 2020-06-30 15:24:42 -07:00
Philip Monk
e7e2c07d6f
clay: remove scaffolding 2020-06-29 14:30:33 -07:00
Philip Monk
40db8ea580
kiln: make otas continue even if they failed to apply 2020-06-29 13:25:10 -07:00
Ted Blackman
ede7105820 clay: flop syntax error trace 2020-06-29 11:01:23 -04:00
Philip Monk
42de999024
kiln: don't implicitly create syncs
Also silence some spurious errors.
2020-06-26 19:21:09 -07:00
Philip Monk
3a662881be
clay: don't be evil 2020-06-24 21:24:27 -07:00
Philip Monk
fc42bf6039
clay: special-case +run-pact for %hoon 2020-06-24 20:26:04 -07:00
Ted Blackman
652dc70304 clay,dojo: clean up stack traces 2020-06-20 03:46:22 -04:00
Ted Blackman
d1b4af89fe sys: s/mure/road 2020-06-19 00:44:17 -04:00
Philip Monk
7494bf57c6
clay: make reachable-takos linear instead of exponential
When merging, +reachable-takos is called roughly once per merge commit
in the ancestry of the new commit.  +reachable-takos was exponential in
the number of merge commits in the ancestry of the commit it's looking
at, due to mishandling of the accumulator.  This makes it linear.

Of course, linear x linear is still quadratic, which is not great.  I
doubt +reachable-takos can be made asymptotically better, but
+reduce-merge-points/+find-merge-points probably can.  50 merge commits
already gives about 14.000 iterations through the loop in
+reachable-takos.  Another option is to try to memoize this somehow, but
a simple ~+ is insufficient since `s` is usually different.

In local tests on macOS with a -L copy of ~wicdev-wisryt, this speeds up
OTAs significantly.  The majority of time was spent on this.
2020-06-18 18:56:31 -07:00
Ted Blackman
1b1d7c9512 Merge remote-tracking branch 'origin/m/clay-fusion-markers' into ota-ford-fusion 2020-06-13 02:09:31 -04:00
Philip Monk
90f3c7d2a1
clay: build reef to prime reef-cache on inital OTA 2020-06-12 21:40:32 -07:00
Philip Monk
21c0f77321
arvo: add +mure for compiling hoon/arvo
Also use +mure in clay for building cores
2020-06-12 21:38:50 -07:00
Philip Monk
a3e15cd64c
clay: send notifications on vega 2020-06-11 19:41:22 -07:00
Fang
6e8822ffb5
clay: resurrect ':' for file-change notifications
Instead of printing '+' for both additions and modifications.
2020-06-08 23:24:23 +02:00
Ted Blackman
3834860410 clay: state adapter, still needs :goad 2020-06-03 03:00:45 -04:00
Philip Monk
8b78f04dd3
Merge remote-tracking branch 'origin/master' into ford-fusion 2020-06-02 21:50:20 -07:00
Philip Monk
84b8a67e47
clay: handle reefs for non-home desks
We build a reef for each desk but use the compiler from our kernel.  At
some point we should use the compiler from the desk, but then we need to
validate any results we get from it.
2020-06-01 20:52:20 -07:00
Ted Blackman
b191636276 clay: WIP reef building 2020-06-01 12:56:21 -04:00
Philip Monk
a4a44f1e21
kiln: cleanup 2020-05-22 14:32:32 -07:00
Philip Monk
4aff4d74e2
kiln: get updates into %home, remove %base
We need to get updates directly into %home in case the marks depend on
changes to hoon.hoon.  %base has no reason to exist.

Our ota strategy is now to merge from parent/kids to home, then
parent/kids to kids.
2020-05-21 23:45:17 -07:00
Philip Monk
a84b0db733
clay: fix clobbering changes if identical changes 2020-05-21 01:23:04 -07:00
Philip Monk
560e3375f5
clay: drip if foreign desk 2020-05-21 01:10:39 -07:00
Ted Blackman
5a1f227622 clay: remove beak from compiler path 2020-05-20 04:25:00 -04:00
Ted Blackman
044c22357d clay: virtualize +read-at-aeon:ze so failures don't kill event 2020-05-19 20:28:24 -04:00
Philip Monk
161cc7aa15
clay: put ship/desk in compiler path 2020-05-17 01:59:10 -07:00
Philip Monk
b7beb6a697
clay: make covariant in type of +hoon 2020-05-16 05:22:39 -07:00
Philip Monk
2c2e16df7a
language-server: convert to fusion 2020-05-13 23:30:52 -07:00
Philip Monk
fd26b2184e
kiln: convert to fusion 2020-05-13 20:13:53 -07:00
Philip Monk
af1a26aa5d
clay: abort mate on conflicts 2020-05-13 19:29:20 -07:00
Ted Blackman
4dde2081f1 Merge branch 'ted/leap-arvo' into ford-fusion 2020-05-13 19:44:44 -04:00
Philip Monk
9b434af44e clay: only reload vanes that changed 2020-05-13 18:27:14 -04:00
Ted Blackman
778f6e9d05 /sys: make hoon optional in %lyra 2020-05-13 18:27:14 -04:00
Philip Monk
6da1424f8a
clay: remove last turbo references 2020-05-12 23:36:55 -07:00
Philip Monk
be77fa39db
clay: convert foreign-update to fusion 2020-05-12 22:53:23 -07:00
Philip Monk
ee13aa73d4
clay: move foreign-request to fusion 2020-05-12 20:22:25 -07:00
Philip Monk
8536c6b1ca
clay: remove move of +util 2020-05-12 03:03:07 -07:00
Philip Monk
6e10a7439a
clay: remove fusion mount and queuing infrastructure 2020-05-12 02:09:41 -07:00
Philip Monk
4e1bac8946
clay: convert |mount to fusion 2020-05-12 01:27:19 -07:00
Philip Monk
5474b2fab6
clay: remove turbo merge 2020-05-12 00:43:45 -07:00
Philip Monk
aacd6f80d8
clay: move merge back into clay 2020-05-12 00:01:46 -07:00
Philip Monk
e75ab631a4
clay: remove turbo commit 2020-05-11 19:33:56 -07:00
Philip Monk
7d5e102dfe
clay: change %info to use ford fusion 2020-05-11 19:26:22 -07:00
Philip Monk
9a9d91214f
clay: port mate/meld to ford fusion 2020-05-11 18:23:44 -07:00
Ted Blackman
b6dcb65061 clay: rebuild desk on zuse change 2020-05-08 06:03:29 -04:00
Ted Blackman
b32ca5d222 /sys: kernel upgrades seem to work 2020-05-08 02:18:24 -04:00
Ted Blackman
ea2386b36c clay: stop the %drip 2020-05-07 23:58:03 -04:00
Ted Blackman
a064afbd89 /sys: |mass works again 2020-05-07 04:51:08 -04:00
Ted Blackman
339e4e34ce clay: fix %mime->%html mark conversion 2020-05-06 01:09:35 -04:00
Ted Blackman
3ad411646b clay: fix %sole-effect->%json conversion 2020-05-05 18:24:16 -04:00
Ted Blackman
58d3820e41 clay: track /{mar,lib,sur} dependencies properly 2020-05-05 02:31:35 -04:00
Philip Monk
1d5dfe394f
gall: port mark operations to fusion
Gall no longer refers to Ford Turbo
2020-04-30 23:19:50 -07:00
Philip Monk
65766a73e2
clay: port -merge to fusion 2020-04-29 17:38:24 -07:00
Philip Monk
1ae66bd098
clay: clean up sanity checks 2020-04-29 14:50:30 -07:00
Philip Monk
06c0d55a1e
clay: working sanity checks for ankh 2020-04-28 22:34:48 -07:00
Philip Monk
c5d7473cf7
clay: recurse properly 2020-04-28 20:33:12 -07:00
Philip Monk
7133e50ef3
clay: make first commits use fusion 2020-04-28 18:14:18 -07:00
Ted Blackman
87818b8795 clay: report cache sizes in |mass 2020-04-28 06:37:43 -04:00
Ted Blackman
004d0624da clay: remove stray print 2020-04-28 06:23:53 -04:00
Ted Blackman
0a906dc297 clay: use %mime cache on %into 2020-04-28 05:56:28 -04:00
Ted Blackman
3eac215a1c clay: fix %mime->%hoon bootstrapping 2020-04-28 00:52:07 -04:00
Ted Blackman
48caee7579 clay: fix +build-fit 2020-04-27 22:53:50 -04:00
Philip Monk
dca81a2ee2
clay: prepare for kernel updates 2020-04-24 17:44:29 -07:00
Philip Monk
d3b5fba864
clay: prepare for switching first commit to fusion
Can't be done right now because get-fit doesn't look at the incoming
changes.
2020-04-24 12:17:22 -07:00
Philip Monk
42bab4ecfb
clay: move -commit back into clay 2020-04-23 17:16:42 -07:00
Philip Monk
fa0e019ddf
clay: change %park interface to not take caches
Now a full commit is synchronous.  -commit will be assimilated back into
clay.
2020-04-23 13:54:57 -07:00
Ted Blackman
8b4ad9bfc9 :spider2 works with threads in subfolders 2020-04-21 00:22:54 -04:00
Ted Blackman
acaf5a12cf -test: all tests pass; fixed clay +get-fit 2020-04-20 02:41:20 -04:00
Ted Blackman
1f91676c97 ford-fusion: stateful %warp reads compile 2020-04-19 04:58:12 -04:00
Ted Blackman
0e4fb5a4f4 -test /sys/vane/{ames,clay} 2020-04-18 19:53:45 -04:00
Ted Blackman
8d3a497bb9 ford-fusion: add ~| with .changes and .deletes 2020-04-18 04:18:13 -04:00
Ted Blackman
8f60c0e036 ford-fusion: update ankh before mime conversion 2020-04-18 01:36:59 -04:00
Ted Blackman
f36dc49ede -build-file, -build-mark, -build-cast 2020-04-17 22:50:03 -04:00
Philip Monk
3d04695ca7
clay: use ford fusion for ankh and mime cache 2020-04-17 18:04:51 -07:00
Ted Blackman
1b27582e3a ford-fusion: minor cleanup to +get-value 2020-04-17 02:23:19 -04:00
Ted Blackman
fdcc80b1e2 ford-fusion: use .baked.nub; fixes /mar/hoon dep cycle 2020-04-17 02:14:41 -04:00
Philip Monk
92f8fad85d
clay: write checkout-ankh and checkout-mime 2020-04-16 20:18:02 -07:00
Philip Monk
a479618a23
clay: add +get-changes 2020-04-16 14:05:43 -07:00
Ted Blackman
af24318955 ford-fusion: check for cycles 2020-04-16 16:30:55 -04:00
Ted Blackman
3592b7e5bc ford-fusion: minor +promote-ford cleanup 2020-04-16 16:09:02 -04:00
Ted Blackman
46ee902eaa ford-fusion: hook up %cc scry to +get-cast 2020-04-16 15:00:03 -04:00
Ted Blackman
ea23be3973 ford-fusion: report syntax errors 2020-04-16 09:55:48 -04:00
Ted Blackman
95f27d4a7b ford-fusion: +run-pact compiles 2020-04-16 09:38:34 -04:00
Ted Blackman
6e12f71789 ford-fusion: +validate-path, +cast-path 2020-04-16 09:28:14 -04:00
Ted Blackman
5854162e74 ford-fusion: parse /? 2020-04-16 08:56:06 -04:00