|
|
|
@ -4,11 +4,8 @@
|
|
|
|
|
|
|
|
|
|
This is in order of priority.
|
|
|
|
|
|
|
|
|
|
0. Add `__attribute__((warn_unused_result))` to clang only. (GCC is not okay.)
|
|
|
|
|
0. Add debug versions of the function enter and exit macros.
|
|
|
|
|
1. Change every function to use the above macros.
|
|
|
|
|
2. Implement Yvm.
|
|
|
|
|
3. Implement Yvm Interpreter.
|
|
|
|
|
1. Implement Yvm.
|
|
|
|
|
2. Implement Yvm Interpreter.
|
|
|
|
|
* Implement permissions and capabilities.
|
|
|
|
|
* Implement translation of value names to indices and back.
|
|
|
|
|
* Have three stackpools:
|
|
|
|
@ -18,20 +15,13 @@ This is in order of priority.
|
|
|
|
|
* This requires that there is no "address of" instruction.
|
|
|
|
|
* Instead, everything that needs an address must be stack allocated.
|
|
|
|
|
* Could also use the above design for the C backend.
|
|
|
|
|
4. Change Yao Standard Library to Have Keywords.
|
|
|
|
|
5. Change Yao Lexer and Parser to Use Packages.
|
|
|
|
|
* This includes using the `rig` package properly, with its own keywords.
|
|
|
|
|
6. Change Yao Lexer and Parser to Generate Yvm.
|
|
|
|
|
* Keep track of temporaries for each statment.
|
|
|
|
|
* Use those as feeders into the list of BB arguments.
|
|
|
|
|
7. Add Variables to Yao.
|
|
|
|
|
8. Add Control Flow to Yao.
|
|
|
|
|
3. Add Variables to Yao.
|
|
|
|
|
4. Add Control Flow to Yao.
|
|
|
|
|
* `if` statements.
|
|
|
|
|
* `for` loops.
|
|
|
|
|
* `while` loops.
|
|
|
|
|
9. Add Compiler and Platform Database to Rig.
|
|
|
|
|
10. Add Functions to Yao.
|
|
|
|
|
11. Change All Relevant Allocations to Use Stackpools.
|
|
|
|
|
5. Add Compiler and Platform Database to Rig.
|
|
|
|
|
6. Change All Relevant Allocations to Use Stackpools.
|
|
|
|
|
* Obviously, if something needs to be dynamically allocated, it should be.
|
|
|
|
|
* But all dynamic allocations should have their root in a stackpool.
|
|
|
|
|
* Things that need to be dynamically allocated include:
|
|
|
|
@ -41,17 +31,17 @@ This is in order of priority.
|
|
|
|
|
* Also, make a way to attach mutex and other lock unlocking to stackpools.
|
|
|
|
|
* Probably allocate a pointer to the lock.
|
|
|
|
|
* Make sure to use a scope opener beforehand.
|
|
|
|
|
12. Add a Way for Users to Say Which Env Vars to Save with `rigc`.
|
|
|
|
|
13. Tie Config in with Build in Rig.
|
|
|
|
|
7. Add a Way for Users to Say Which Env Vars to Save with `rigc`.
|
|
|
|
|
8. Tie Config in with Build in Rig.
|
|
|
|
|
* Make the config constant.
|
|
|
|
|
* If the user wants to have choices, they should define multiple and pick
|
|
|
|
|
one when executing a target.
|
|
|
|
|
14. Bootstrap on Mac OSX.
|
|
|
|
|
15. Bootstrap on Windows.
|
|
|
|
|
16. Finish GAML fuzz program.
|
|
|
|
|
17. Finish Cryptopals.
|
|
|
|
|
9. Bootstrap on Mac OSX.
|
|
|
|
|
10. Bootstrap on Windows.
|
|
|
|
|
11. Finish GAML fuzz program.
|
|
|
|
|
12. Finish Cryptopals.
|
|
|
|
|
* This is for Yar.
|
|
|
|
|
18. Make a context stack for random number generators.
|
|
|
|
|
13. Make a context stack for random number generators.
|
|
|
|
|
|
|
|
|
|
## Testing
|
|
|
|
|
|
|
|
|
@ -79,8 +69,6 @@ This is in order of priority.
|
|
|
|
|
* Add commands to opt parsing.
|
|
|
|
|
* Add base64 and base16 encoding.
|
|
|
|
|
* Tweak ternary in style?
|
|
|
|
|
* A Type type, to define size, destructor, copy function, etc.
|
|
|
|
|
* Also distinguish between primitives, pointers, and structs.
|
|
|
|
|
* A `copy()` function that uses the Type `copy()` function.
|
|
|
|
|
* A `move()` function that uses `memcpy()` and then zeroes the source.
|
|
|
|
|
* Add design-by-contract facilities, if possible. See the Ada book.
|
|
|
|
@ -100,13 +88,8 @@ This is in order of priority.
|
|
|
|
|
* A function to make soft and hard links.
|
|
|
|
|
* `chroot`.
|
|
|
|
|
* Various allocators.
|
|
|
|
|
* Stack allocator, like `alloca()`, except that it doesn't directly use the
|
|
|
|
|
stack.
|
|
|
|
|
* Slab allocator.
|
|
|
|
|
* Allocator by Type.
|
|
|
|
|
* Have two kinds of allocators:
|
|
|
|
|
* A stack-like allocator that can only deallocate in reverse order.
|
|
|
|
|
* A general-purpose allocator.
|
|
|
|
|
* Fixed Point numbers.
|
|
|
|
|
* Connecting to items on the Internet.
|
|
|
|
|
* Sockets, etc.
|
|
|
|
@ -118,7 +101,6 @@ This is in order of priority.
|
|
|
|
|
* Serialization and deserialization.
|
|
|
|
|
* Owned references, borrowed references, and a way to access parent pointers, if
|
|
|
|
|
possible. (To remove the need for weak references, for example.)
|
|
|
|
|
* Add build option to remove `y` and `Y` prefixes. This will be done by macros.
|
|
|
|
|
* Html templating engine.
|
|
|
|
|
* GAML parsing and dumping.
|
|
|
|
|
* Use base64 or base16 for binary data, and support that natively? Probably
|
|
|
|
@ -148,10 +130,6 @@ This is in order of priority.
|
|
|
|
|
* Cancel Tokens with deadlines (not timeouts) and also programmatic
|
|
|
|
|
cancellation.
|
|
|
|
|
* Shell parsing (just commands like `shlex` in Python).
|
|
|
|
|
* Yao.
|
|
|
|
|
* Make compatible with C by allowing packages to specify function and type
|
|
|
|
|
prefixes. Also, have default ones. This is to prevent name mangling from
|
|
|
|
|
being a thing.
|
|
|
|
|
* Benchmark how long it takes to do a clock_gettime().
|
|
|
|
|
* Benchmark arithmetic implementations versus gcc/clang builtins.
|
|
|
|
|
* Yesno.
|
|
|
|
|