2020-06-03 03:28:31 +03:00
|
|
|
# New IPC Protocol
|
2020-06-02 23:48:07 +03:00
|
|
|
|
2020-05-28 01:57:34 +03:00
|
|
|
Stubbed out:
|
|
|
|
|
|
|
|
- [x] Handle replacement events (stubbed out now b/c interface can't
|
2020-06-02 23:48:07 +03:00
|
|
|
handle unparsed nouns)
|
2020-05-28 03:08:53 +03:00
|
|
|
- [x] Handle IPC errors by killing serf process.
|
2020-06-01 01:37:27 +03:00
|
|
|
- [x] Handle `peek` and `pack` in `swimming` flow.
|
2020-06-01 20:51:37 +03:00
|
|
|
- [x] Documentation for `Urbit.Vere.Serf.IPC`.
|
2020-05-28 21:56:51 +03:00
|
|
|
- [x] Unstub slog/stder/dead callbacks on serf config.
|
2020-06-01 01:04:56 +03:00
|
|
|
- [x] Remove GoodParse hack in newRunCompute.
|
2020-06-02 00:31:24 +03:00
|
|
|
- [x] Bring back tank printing.
|
2020-06-01 01:37:27 +03:00
|
|
|
- [x] Handle serf stderr message correctly.
|
2020-06-02 00:31:24 +03:00
|
|
|
- [x] Bring back `logEvent`.
|
2020-06-03 02:03:04 +03:00
|
|
|
- [x] Snapshots should block until that event is commited to disk.
|
|
|
|
- [x] Hook up error callbacks to IO Drivers.
|
|
|
|
- [x] Do something useful with error callbacks from IO Drivers.
|
2020-05-28 01:57:34 +03:00
|
|
|
|
2020-06-05 19:19:08 +03:00
|
|
|
Bugs:
|
|
|
|
|
2020-06-11 00:17:55 +03:00
|
|
|
- [x] In non-daemon mode, serf slogs/stderr output that happens *before*
|
2020-06-10 23:08:09 +03:00
|
|
|
the terminal connects should still go to stderr.
|
2020-06-11 00:03:46 +03:00
|
|
|
- [x] Serf stderr should also be send (along with slogs) to all connected
|
2020-06-10 23:08:09 +03:00
|
|
|
terminals.
|
2020-06-08 02:35:54 +03:00
|
|
|
- [x] `king new` should reject pier directories that already exist.
|
2020-06-07 00:33:15 +03:00
|
|
|
- [x] In non-daemon-mode, ^D doesn't bring down Urbit properly.
|
2020-06-10 23:08:09 +03:00
|
|
|
- [x] Spinner updated multiple times with the same event, and this causes
|
2020-06-10 22:22:45 +03:00
|
|
|
logging of events to contain duplicates.
|
2020-06-05 19:19:08 +03:00
|
|
|
|
2020-05-28 01:57:34 +03:00
|
|
|
King-Haskell specific features:
|
|
|
|
|
2020-06-02 23:48:07 +03:00
|
|
|
- [x] Re-implement `collectFX` flow in Serf/Pier.
|
2020-06-03 03:28:31 +03:00
|
|
|
- [x] Hook up `collectFX` to CLI.
|
2020-06-05 02:49:56 +03:00
|
|
|
- [ ] Get `collect-all-fx` flow working again.
|
2020-05-28 01:57:34 +03:00
|
|
|
|
|
|
|
Performance:
|
|
|
|
|
2020-05-29 05:14:25 +03:00
|
|
|
- [x] Batching during replay.
|
|
|
|
- [x] Batching during normal operation.
|
2020-05-28 01:57:34 +03:00
|
|
|
|
2020-06-10 22:22:45 +03:00
|
|
|
Optimization:
|
|
|
|
|
|
|
|
- [x] IO Driver Event Prioritization
|
|
|
|
|
2020-05-28 01:57:34 +03:00
|
|
|
Polish:
|
|
|
|
|
2020-05-29 23:10:17 +03:00
|
|
|
- [x] Cleanup batching flow.
|
2020-06-02 00:31:24 +03:00
|
|
|
- [x] Think through how to shutdown the serf on exception.
|
2020-06-05 00:10:33 +03:00
|
|
|
- [x] King should shutdown promptly on ^C. Always takes 2s in practice.
|
2020-06-07 03:26:59 +03:00
|
|
|
- [x] Bring back progress bars.
|
|
|
|
- [x] Make sure replay progress bars go to stderr.
|
2020-06-08 20:45:41 +03:00
|
|
|
- [x] Logging for new IPC flow.
|
|
|
|
- [x] Logging for boot sequence.
|
|
|
|
- [x] Take snapshots on clean shutdown.
|
2020-05-29 05:14:25 +03:00
|
|
|
|
2020-06-02 23:48:07 +03:00
|
|
|
# Misc Bugs
|
2020-05-29 05:14:25 +03:00
|
|
|
|
2020-06-03 03:28:31 +03:00
|
|
|
- [ ] `king run --collect-fx` flag does nothing. Remove or implement.
|
2020-06-11 00:03:46 +03:00
|
|
|
- [x] Handle ^C in connected terminals. It should interrupt current
|
2020-06-03 02:03:04 +03:00
|
|
|
event (send SIGINT to serf, which will cause the current event to
|
|
|
|
fail promptly).
|
2020-06-10 23:08:09 +03:00
|
|
|
- [x] The terminal driver seems to have a race condition when spinner
|
2020-06-02 23:48:07 +03:00
|
|
|
changed too quickly.
|
|
|
|
|
2020-06-11 01:00:31 +03:00
|
|
|
|
|
|
|
# Finding the Serf Executable
|
|
|
|
|
|
|
|
- [ ] Right now, `urbit-worker` is found by looking it up in the PATH. This
|
|
|
|
is wrong, but what is right?
|
|
|
|
|
|
|
|
|
2020-06-11 02:41:09 +03:00
|
|
|
# Take Advantage of New IPC Features
|
|
|
|
|
|
|
|
- [ ] Hook up `scry` to drivers.
|
|
|
|
- Any immediate applications of this?
|
|
|
|
|
|
|
|
- [ ] Allow scrys to go into the %work batching flow for better latency.
|
|
|
|
|
|
|
|
- Handle event errors in other cases:
|
|
|
|
- [ ] Ames packet failures should print (but not too often).
|
|
|
|
- [ ] Incoming Http requests should produce 500 responses.
|
|
|
|
- [ ] Terminal event errors should be printed in connected terminals.
|
|
|
|
- [ ] Http client responses should be retried.
|
|
|
|
|
|
|
|
|
2020-06-11 01:00:31 +03:00
|
|
|
# Further IO Driver Startup Flow Betterment
|
|
|
|
|
|
|
|
Implement Pier-wide process start events
|
|
|
|
|
|
|
|
- [x] Handle %vega and exit effects.
|
|
|
|
- [x] Handle %trim effect
|
|
|
|
- [x] Inject entropy event on pier start: ``[//arvo [%wack ENT]]`
|
|
|
|
- [ ] Verbose flag: `-v` injects `[%verb ~]`
|
|
|
|
- [ ] CLI event injection: `-I file-path`. The `file-path` is a jammed
|
|
|
|
noun representing an event: `[wire card]`.
|
2020-06-11 02:41:09 +03:00
|
|
|
1. Just parse it as an `Ev` for now.
|
|
|
|
2. Make the serf IPC code not care about the shape of events and effects.
|
|
|
|
3. Support invalid events throughout the system (use `Lenient`?)
|
2020-06-11 01:00:31 +03:00
|
|
|
|
2020-06-11 05:02:09 +03:00
|
|
|
# Polish
|
|
|
|
|
|
|
|
- [x] Goot logging output in non-verbose mode.
|
2020-06-11 05:07:10 +03:00
|
|
|
- [x] Command-Line flag to re-enable verbose output.
|
2020-06-11 05:02:09 +03:00
|
|
|
|
2020-06-11 01:00:31 +03:00
|
|
|
|
2020-06-02 23:48:07 +03:00
|
|
|
# Cleanup
|
|
|
|
|
2020-06-07 02:03:20 +03:00
|
|
|
- [x] ShutdownSTM action that's passed to the terminal driver should
|
|
|
|
live in `KingEnv` and should be available to all drivers.
|
2020-06-02 23:48:07 +03:00
|
|
|
- [ ] Break most logic from `Main.hs` out into modules.
|
|
|
|
- [ ] Simplify `Main.hs` flows.
|
|
|
|
- [ ] Cleanup Terminal Driver code.
|
2020-06-08 23:23:30 +03:00
|
|
|
- [x] Spin off `racquire` into it's own package.
|
2020-06-08 20:24:05 +03:00
|
|
|
- [x] Spin off `urbit-noun-core` and `urbit-noun` packages.
|
2020-06-09 00:27:58 +03:00
|
|
|
- [x] Spin off `urbit-eventlog-lmdb` into it's own package.
|
|
|
|
- [ ] Spin off `Urbit.Vere.Serf` into it's own package
|
|
|
|
- Make it care less about the shape of events and effects.
|
2020-06-08 04:29:29 +03:00
|
|
|
- [ ] Spin off per-pier logic into it's own package.
|
2020-06-09 00:27:58 +03:00
|
|
|
- Probably `urbit-pier`
|