version: 0.3.0 → 0.4.0 in handshake, TUI, manifest, architecture doc
Some checks failed
Deploy (Gitea) / deploy (push) Failing after 2s
Some checks failed
Deploy (Gitea) / deploy (push) Failing after 2s
This commit is contained in:
@@ -118,7 +118,7 @@ For the design rationale, see Design Decisions: Token Economics and Performance
|
|||||||
All communication between the daemon and its gateways (TUI, CLI, Emacs) uses length-prefixed plists over TCP:
|
All communication between the daemon and its gateways (TUI, CLI, Emacs) uses length-prefixed plists over TCP:
|
||||||
|
|
||||||
```
|
```
|
||||||
00002C(:TYPE :EVENT :PAYLOAD (:ACTION :handshake :VERSION "0.3.0"))
|
00002C(:TYPE :EVENT :PAYLOAD (:ACTION :handshake :VERSION "0.4.0"))
|
||||||
```
|
```
|
||||||
|
|
||||||
The 6-character hex prefix encodes the payload length. The payload is a ~prin1~-serialized plist. ~*read-eval*~ is bound to nil on the receiving end to prevent code injection.
|
The 6-character hex prefix encodes the payload length. The payload is a ~prin1~-serialized plist. ~*read-eval*~ is bound to nil on the receiving end to prevent code injection.
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
(let ((stream (usocket:socket-stream socket)))
|
(let ((stream (usocket:socket-stream socket)))
|
||||||
(handler-case
|
(handler-case
|
||||||
(progn
|
(progn
|
||||||
(format stream "~a" (frame-message (make-hello-message "0.3.0")))
|
(format stream "~a" (frame-message (make-hello-message "0.4.0")))
|
||||||
(finish-output stream)
|
(finish-output stream)
|
||||||
(loop
|
(loop
|
||||||
(let ((msg (read-framed-message stream)))
|
(let ((msg (read-framed-message stream)))
|
||||||
|
|||||||
@@ -274,7 +274,7 @@
|
|||||||
(st :connected) t)
|
(st :connected) t)
|
||||||
(bt:make-thread (lambda () (reader-loop (st :stream)))
|
(bt:make-thread (lambda () (reader-loop (st :stream)))
|
||||||
:name "tui-reader")
|
:name "tui-reader")
|
||||||
(add-msg :system (format nil "* Connected v~a *" "0.3.0"))
|
(add-msg :system (format nil "* Connected v~a *" "0.4.0"))
|
||||||
(return-from connect-daemon t))
|
(return-from connect-daemon t))
|
||||||
(usocket:connection-refused-error (c)
|
(usocket:connection-refused-error (c)
|
||||||
(when (= attempt 3)
|
(when (= attempt 3)
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ The Communication Protocol defines how Passepartout speaks to the outside world.
|
|||||||
|
|
||||||
Every message is an S-expression (plist) prefixed with a 6-character hex length:
|
Every message is an S-expression (plist) prefixed with a 6-character hex length:
|
||||||
|
|
||||||
00002C(:TYPE :EVENT :PAYLOAD (:ACTION :handshake :VERSION "0.3.0"))
|
00002C(:TYPE :EVENT :PAYLOAD (:ACTION :handshake :VERSION "0.4.0"))
|
||||||
|
|
||||||
This is a deliberate rejection of JSON, Protocol Buffers, or any other serialization format. The message format is Lisp-native because:
|
This is a deliberate rejection of JSON, Protocol Buffers, or any other serialization format. The message format is Lisp-native because:
|
||||||
|
|
||||||
@@ -151,7 +151,7 @@ The daemon sends a handshake message on connection, then enters a read loop, inj
|
|||||||
(let ((stream (usocket:socket-stream socket)))
|
(let ((stream (usocket:socket-stream socket)))
|
||||||
(handler-case
|
(handler-case
|
||||||
(progn
|
(progn
|
||||||
(format stream "~a" (frame-message (make-hello-message "0.3.0")))
|
(format stream "~a" (frame-message (make-hello-message "0.4.0")))
|
||||||
(finish-output stream)
|
(finish-output stream)
|
||||||
(loop
|
(loop
|
||||||
(let ((msg (read-framed-message stream)))
|
(let ((msg (read-framed-message stream)))
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ Components are loaded in sequence (~:serial t~): package first (defines the publ
|
|||||||
(defsystem :passepartout
|
(defsystem :passepartout
|
||||||
:name "Passepartout"
|
:name "Passepartout"
|
||||||
:author "Amr Gharbeia"
|
:author "Amr Gharbeia"
|
||||||
:version "0.3.0"
|
:version "0.4.0"
|
||||||
:license "AGPLv3"
|
:license "AGPLv3"
|
||||||
:description "The Probabilistic-Deterministic Lisp Machine"
|
:description "The Probabilistic-Deterministic Lisp Machine"
|
||||||
:depends-on (:usocket :bordeaux-threads :dexador :uiop :cl-dotenv :cl-ppcre :hunchentoot :ironclad :str :cl-json :uuid)
|
:depends-on (:usocket :bordeaux-threads :dexador :uiop :cl-dotenv :cl-ppcre :hunchentoot :ironclad :str :cl-json :uuid)
|
||||||
|
|||||||
@@ -311,7 +311,7 @@ Event handlers + daemon I/O + main loop.
|
|||||||
(st :connected) t)
|
(st :connected) t)
|
||||||
(bt:make-thread (lambda () (reader-loop (st :stream)))
|
(bt:make-thread (lambda () (reader-loop (st :stream)))
|
||||||
:name "tui-reader")
|
:name "tui-reader")
|
||||||
(add-msg :system (format nil "* Connected v~a *" "0.3.0"))
|
(add-msg :system (format nil "* Connected v~a *" "0.4.0"))
|
||||||
(return-from connect-daemon t))
|
(return-from connect-daemon t))
|
||||||
(usocket:connection-refused-error (c)
|
(usocket:connection-refused-error (c)
|
||||||
(when (= attempt 3)
|
(when (= attempt 3)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
(defsystem :passepartout
|
(defsystem :passepartout
|
||||||
:name "Passepartout"
|
:name "Passepartout"
|
||||||
:author "Amr Gharbeia"
|
:author "Amr Gharbeia"
|
||||||
:version "0.3.0"
|
:version "0.4.0"
|
||||||
:license "AGPLv3"
|
:license "AGPLv3"
|
||||||
:description "The Probabilistic-Deterministic Lisp Machine"
|
:description "The Probabilistic-Deterministic Lisp Machine"
|
||||||
:depends-on (:usocket :bordeaux-threads :dexador :uiop :cl-dotenv :cl-ppcre :hunchentoot :ironclad :str :cl-json :uuid)
|
:depends-on (:usocket :bordeaux-threads :dexador :uiop :cl-dotenv :cl-ppcre :hunchentoot :ironclad :str :cl-json :uuid)
|
||||||
|
|||||||
Reference in New Issue
Block a user