-
Notifications
You must be signed in to change notification settings - Fork 358
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Release candidate #1996
Release candidate #1996
Conversation
+on-agent now takes a +sign:agent:mall, which doesn't include spurious options. Similarly, +task:agent:mall is smaller.
This removes the %http-response special case from gall. In its place, we implement a subscription regime with the following steps: - Agent sends %connect to Eyre - Eyre pokes agent with %handle-http-response, including unique eyre-id - Agent passes %start-watching to Eyre with eyre-id and unique app-id - Eyre subscribes to agent on /http-response/app-id - Agent produces a %http-response-header fact followed by 0 or more %http-response-data facts and possibly a %http-response-cancel fact - Agent produces a %kick to close the subscription, which Eyre interprets as completion of the message. This works when there is data. There is currently a bug where if the response has no data in total (as in the case of a naked 404), no response will be sent. This also includes lib/http-handler, which implements a convenient interface for agents that want to respond immediately with all the data. This lets them avoid carrying extra state to keep track of pending requests. This should really have access to your state and the ability to change it. Perhaps a more minimalist design would be better: just keep track of the requests, then hand it off to +on-watch when eyre is ready to receive responses. It's not clear how to pass in the request data in +on-watch.
eyre: subscribe to apps for responses
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A couple minor cleanup requests:
pkg/urbit/include/noun/vortex.h
Outdated
u3_noun our; // identity | ||
u3_noun fak; // c3y is fake | ||
u3_noun our; // identity XX Remove | ||
u3_noun fak; // c3y is fake XX Remove |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since this is going into a breach, these members can now be removed from this struct. (Doing so in a hotfix would break the memory image.)
pkg/arvo/sys/zuse.hoon
Outdated
@@ -1,3 +1,4 @@ | |||
!: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should be removed, IMO
Both done |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
Congrats to @philipcmonk and @belisarius222 on the new %ames and %gall implementations, and to everyone involved in this massive porting effort.
This reverts commit 6b9522d.
We were calling it directly, rather than through the (initialized) tc core, causing the bowl in its context to be the *bowl, resulting in [~zod /] audience.
Creates a local reducer to mutate the state in one place. Fixes an issue where chat updates would pop the sidebar open.
This fixes a quick typo that completely breaks the medium viewport layout.
* rc: (451 commits) ping: delay kick until after ames processes breach aqua: make faster so moon-az can finish ping: fix comments ping: avoid fragile state transitions ames: don't say not responding if we haven't been talking eth-watcher; don't start timer if already started chat: hotfixing a class name chat: fix sidebar toggle on chat update dojo: set prompt on watch gen: add comments on new generators chat-cli: our-self with bowl set keys: add +keys for diagnostics verb: add +verb %bowl to print bowl on every event azimuth-tracker: add |kick clay: don't make |cancel require argument jael: allowed skipped rifts ames: make life printf helpful Revert "|ames-verb: fix generator sample type" |ames-verb: fix generator sample type gall: correctly construct wire for ap-specific-take ... Signed-off-by: Jared Tobin <jared@tlon.io>
Fuller release notes will come later, but here's a release candidate for the next breach. This primarily includes the twin efforts of "static gall" and "new ames". Some highlights include:
!<
, has been introduced. It takes a mold and a vase, dynamically checks the type in the vase matches the mold, and produces the value typed with that type. In other words,!<(some-type !>(`some-type`value))
is justvalue
.agent:gall
in sys/zuse.hoon.agent
toagent
that wraps the agent with printfs describing every piece of input it receives. It can be turned on or off with:app +verb
.There is some preliminary documentation on agents, threads, and ph here:
agent.txt
thread.txt
ph-static.txt
Feel free to review a part at a time. "New Ames" changes primarily ames.hoon, with additional changes in clay, jael, and gall to support the new interface. Static gall has five main components: gall.hoon (+ap core rewritten), app/.hoon (apps converted to the new style), app/spider.hoon (thread manager, replacing tapps/async), ted/.hoon (threads, mostly converted from tapps), and ted/ph/*.hoon (new-style ph tests, which are just threads instead of a hand-rolled monad).
The only known issues are:
Comets aren't working correctly. @belisarius222 is working on this and expects to solve it soon.@Fang- has reported that eth-watcher isn't working correctly as of today, but this hasn't been nailed down. It could be due to us upgrading our Ethereum nodes to be ready for Istanbul.Determined to be a timing issue; it used to be safe to reduce the time between jael updates.Backpressure was working, but a recent change broke it. I believe it needs to add the trigger for checking for %dead when enqueueing a new message.I believe this works correctly.If you leave a chat room for a while and come back, it doesn't give you all the backlog because it only resubscribes to the "new posts" path. It should retrieve all backlog since its last known post. @loganallenc is working on this.