|
| 1 | +## Highlights |
| 2 | + |
| 3 | +### A Major Rework of Handlers |
| 4 | + |
| 5 | +https://github.com/cablehead/xs/wiki/Handlers |
| 6 | + |
| 7 | +- Prior to this release, handlers had virtually no error handling. Now, when an |
| 8 | + error occurs, handlers will unregister themselves and record the error in the |
| 9 | + unregister frame's metadata. |
| 10 | +- The handlers closure shape is now `{|frame, state| ... }`, meaning the frame |
| 11 | + is passed as an argument instead of being supplied as `$in`. |
| 12 | +- Treatment of return values has been normalized: there is no longer any |
| 13 | + difference between handler return values for stateful and stateless handlers. |
| 14 | + By default, non-empty return values are appended as <handler>.out (previously |
| 15 | + it was just <handler>). |
| 16 | +- You can configure the return value suffix and TTL using the return_options in |
| 17 | + the metadata of the handler registration frame. |
| 18 | +- `.append` calls from a handler are now batched and processed together *after* |
| 19 | + the handler successfully completes. They aren't yet emitted in a fjall atomic |
| 20 | + batch but will be in the future. handler_id, frame_id, and state_id (if there |
| 21 | + is state) are not automatically included in the metadata of these appended |
| 22 | + frames. |
| 23 | +- Stateful handlers now communicate state updates by appending a |
| 24 | + <handler>.state frame. |
| 25 | +- A useful technique is to set the return value suffix to `.state`: then your |
| 26 | + return value will become the next state value for the subsequent handler |
| 27 | + call. |
| 28 | + |
| 29 | +### Miscellaneous |
| 30 | + |
| 31 | +- You can now import from one store into another: |
| 32 | + https://github.com/cablehead/xs/wiki/Export-and-Import |
| 33 | +- The CLI client can now access stores behind HTTPS and BasicAuth |
| 34 | +- Two new TTL options for frames: |
| 35 | + - `time:<milliseconds>`: the frame will exist for the specified number of |
| 36 | + milliseconds |
| 37 | + - `head:<count>`: keeps the most recent `count` frames for a given topic; |
| 38 | + among other uses, this is useful for using `xs` as a KV store |
| 39 | + |
| 40 | +## Breaking Changes |
| 41 | + |
| 42 | +- See handlers notes above |
| 43 | +- fjall dependency has been upgraded from 1.5 to 2.4 |
| 44 | +- $env.XSPWD has been renamed to $env.XS_ADDR |
| 45 | +- `xs pipe` has been renamed to `xs process` -- .pipe -> .process |
| 46 | + |
| 47 | + |
| 48 | +## Raw commit messages: |
| 49 | + |
| 50 | +- 4d983f3 docs: add --locked to the cargo install instructions 🙏 @fdncred |
| 51 | +- 2d840a8 rename $env.XSPWD to $env.XS_ADDR |
| 52 | +- e02edab feat: add a version endpoint; bump version in toml to 0.1.0 |
| 53 | +- 96c482b feat: add conveniences to dump and load a store |
| 54 | +- a190163 feat: add frame import endpoint for backup/restore operations |
| 55 | +- 6b5b51f feat: add xs cas-post: which inserts content into the CAS without needing to insert a corresponding frame |
| 56 | +- ca9b5bf s/postfix/suffix/g -- 🙏 @marvin_j97 |
| 57 | +- 1fa2678 feat: lots and lots of work on handlers (#28) |
| 58 | +- 0c9e689 tuning: use less (lsm) threads (#27) |
| 59 | +- ecf1e2e fix: update the example handlers to take frame as an argument |
| 60 | +- 5ab960b fix(handlers): ignore unregistered handlers on startup |
| 61 | +- 5f07a3a feat(handlers): validate closure shape and emit .unregister on registration error |
| 62 | +- f4f01f3 refactor: rename HandlerMeta to Meta, reuse Handler for /process endpoint |
| 63 | +- c5a0390 refactor: rename pipe to process |
| 64 | +- ee6193c refactor(handlers): pass frame/state as args instead of pipeline, encapsulate eval |
| 65 | +- ea648e9 refactor(handlers): split handlers.rs into module with handler and serve |
| 66 | +- 5907db4 fix: only include expose in xs.start meta when expose option is set |
| 67 | +- abe717f fix: pull TTL into its own module: bring nu/commands/append_command.rs up to date with TTL changes (#26) |
| 68 | +- cf30c8d feat(store): add Head TTL to retain latest N frames per topic (#24) |
| 69 | +- cbf70a8 fix: topic index encoding (#25) |
| 70 | +- 02938f6 feat: support unregister for handlers |
| 71 | +- d1106ae fix: avoid sending any events generated as a response to a handler, back to that handler |
| 72 | +- 71b3c83 fix: 's/eval_block/eval_block_with_early_return/g' |
| 73 | +- f7d367b feat: flesh out support for TTL::Time(Duration) |
| 74 | +- 5d1f2d0 feat: bump fjall dependency from 1.5 to 2.4 🎉 |
| 75 | +- 9af2792 fix: .pipe now uses eval_block_with_early_return |
| 76 | +- 82edbf3 fix: iterate on error handling / messages when using the cli to call the API |
| 77 | +- 674181d image: add deno2 |
| 78 | +- aa02716 example(discord-bot): add README note for slash command handler |
| 79 | +- ed4a5ee example(discord-bot): add an example /dice slash command handler |
| 80 | +- 48776da example(discord-bot): bump API version to v10 |
| 81 | +- 4e9b2c7 Update README.md |
| 82 | +- dd00b68 Update README.md |
| 83 | +- ff3a931 example(discord-bot): read access token from the stream |
| 84 | +- ceace87 chore: iterate on the packaged container image |
| 85 | +- 6d2d558 chore: iterate on the packaged container image |
| 86 | +- 6b74142 feat: client support for stores behind https and basicauth (#22) |
| 87 | +- 76e37d1 release: allow --expose to be enabled in the container image |
| 88 | +- 84921cf release: allow --expose to be enabled in the container image |
| 89 | +- f170252 fix(example/solid-ui): actually push up store/cas.ts |
0 commit comments