-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathIDEAS
123 lines (98 loc) · 4.44 KB
/
IDEAS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
- Lib/Expect
+ (make-queue items...) yields a queue preloaded with items.
+ (expect input timeout pattern) -> #f or pattern-items
E.G. (expect (make-queue "abc,123,456") 100 '^(.*),$') -> ("abc")
+ (expect-case input timeout
((pattern ...) ...)
('timeout stmt ...)
('else stmt...))
E.G. (expect-case (make-queue "abc,123,456") 100
(("^abc,(.*)$") (print* "ABC had: " (car result)))
(timeout (print* "Out of data.")))
- Recovery System for Console Shutdown
+ The console will checkpoint its state to disk after each modification of
a setting or creation of a drone.
+ The console may be started with this checkpointed state, permitting the
recovery of lost drones.
+ Added the "recover all" command, recovering all disconnected drones.
- Provide a Feedback System for Errors in MOSREF
+ Break up messages into chunks no larger than 1024 bytes.
+ Ensure that messages larger than 2**32 cause a console error.
- Add Wait Multiple
+ recv_mt's take a ct argument.
+ wait primitive can send a count through.
+ byte-channels use that for a string length.
+ data-channels use that for returning lists of values per read.
- Protection for MOSREF Against Information Theoretic attacks
+ Use a unified console private key.
+ Drones are assigned drone-iv at compilation, all drones use same console-public.
+ Add a maximum and minimum value to check-collation.
+ Protect check-checksum-filter against messages shorter than by specifying
a check-collation minimum of 4.
+ Protect against unholy large messages with a check-collation maximum.
+ Added (salsa20-iv key) and (set-salsa20-iv! key iv) to permit failure
triggered rekeying.
+ Added one or more bytes of prefix noise to plaintext.
+ Added one or more bytes of suffix noise padding.
+ Make shell command work on Win32.
+ Make exit command work as expected with on <drone> exit
- WaspDoc Markup Language
- Derived from HazeML
- Lines starting with * are list entries; subsequent indentation is a part of the line.
- Empty lines are breaks, continues current block.
- S-Exprs are code-formatted, from opening parenthesis to closing parenthesis.
- Lines starting with ! are headings.
- {}'s are references to nodes.
- ref:// URL's are references to WaspDoc reference entries.
- {url free flowing name}
- {url} -- Name comes from destination file.
If a line starts with parenthesis, it is code-format.
! An Example of HazeML
* List 1
* List 2
More about List 2.
Still more about List 2.
> The Code for List 2.
* List 3 (list3-expr "hello world")
- HazeEx
(p -//-
Big, long paragraph of nois
text
-\\-)
(* "List Item 1")
(* "List Item 2")
(br)
(* "List Item 1-3")
- Add string-read-expr! to string.c
- Removal of buffers from core
No wasp_printf, wasp_formatf, and controlled use of wasp_errf. Put all that in top-level error
handlers.
- Incremental VM Loop
- Create a variant of spawn that suspends after each instruction.
- Add accessors for all of the process members.
- Write a process state decompiler.
- Write a shim routine for inserting procedures into the current call stack.
- Add prim-map, prim-foreach, prim-filter
Uses prim chaining to avoid writing a lisp top level loop.
- Add loaded-subsystems tracking to VM
- Add preload-subsystems to build process for MOSREF capability
- Flatten VM Loop 1
This will improve jump predictability and remove C stack overhead from instruction cycles.
Use a select-based dispatch loop for instructions.
- Flatten VM Loop 2
This will reduce heap complexity for NEWF / USEA / USEN / CALL
- Remove USEA / USEN instructions.
- Modify NEWF to consume RX for the function.
- Modify NEWF to create a call frame specialized to the function's needs, including
space for arguments, space for internal variables.
- Modify ARG and SCAT to intelligently use this space, using a special overflow slot for
variable arity functions.
- Modify USEA and USEN to verify the number of arguments supplied to a procedure.
- Modify compiler to use this functionality.
- Modify optimizer to drop any load that is not followed by: NEWF, ARG, SCAT
Note, this will break the form: (@ list), which is sort of a ghetto eval. It would have to
add a special form that translates to ((car list) @(cdr list)).
- Primitive Iterator Loops
Generalize map-car and map-cdr with map-prim.
(map-prim primitive list)
Most common? map-format