-
Notifications
You must be signed in to change notification settings - Fork 0
andrewsmike/nodel
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Nodel ===== Nodel is a toy environment aimed at visually representing datastructures and algorithms. You can find details about the architecture in ARCH. Nodel currently has an assembler and interpreter. It has a managed runtime in the works, and is moving towards a higher language and a visual interface. Building -------- Important `make` directives: - all: Build test application. - clean: Clean all files. Usage ----- Nodel currently produces four executables. ./ndltest ndl.prefix # Run all available test with the given prefix. ./ndlasm source.asm [-o output.ndl] # Assembles an assembly program into a program graph. ./ndldump output.ndl # Dumps a description of a program graph. ./ndlrun output.ndl [arg1...] # Runs the program graph with the given arguments. ./main # For testing purposes. Will be removed eventually. All utilities accept the '-' character to mean standard in, and use standard out by default. For example, to run a single script, you may type ~/src/nodel $ ./ndlasm - | ./ndlrun - 3.14159 print arg1 print 3.14159 exit ^D [000@004]: [Float:3.14159]. [001@004]: [Float:3.14159]. Exiting. Status ------ Nodel currently has a working node graph with backreferences and garbage collection. It includes a frequency and event based runtime system, along with an interpreter and assembler. Nodel was not made to be inefficient, but with the exception of a few pieces, nodel runs with reasonable efficiency. The runtime is partially complete, and requires more testing/debugging/refactoring/feature adding before being ready for use. Nodel is now able to run programs generated from a basic assembly language. Future work ----------- Refactoring/improvements: - Move rehashtable to lazy copy for absolute O(1), rather than amortized O(1)? - Hash caching? - Replace runtime with efficient and realistic ~100Hz batching system. - Continue work on the runtime systems - - Comprehensive process control - - Add periodic GC - - Storage management excalls - - Process management excalls - - Make heap significantly more efficient - - Freq=max and operation grouping - - Improve heap efficiency (Go back to stable pointer slabheap?) - - Runtime serialization (possibly just encode into graph, save graph and root) - Further performance analysis - Improve testing system and more tests. Features: - Features for embedding into games (limits on process count, frequency, nodecount, etc) - program graph <---> assembly tools - BASIC-inspired datastructure oriented high level language compiler (and utilities) - Frontent-agnostic UI datastructure, generator, event handling, etc? - Assembly, code, graph differ for nice effects? - NCURSES test visualization interface? - Actual GUI? (What to use, oh god... xlib? gtk? pygame? cat > /dev/printer?) Goals ----- The goal of this project is to build a virtual environment where users are able to manipulate running processes and their datastructures in realtime. The idea came from a discussion with friends about how programming systems embedded into sandbox games should work. I cannot imagine any goal other than entertainment.
About
Toy environment for toy systems
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published