This document tracks all incomplete features, known limitations, and remaining tasks for the Crustty C Interpreter.
- Complex Member Access: Implementation needed for nested field access via pointers (e.g.,
ptr->nested.field). - Pointer Arithmetic: Full support for mixing pointers and dereferences in arithmetic expressions (e.g.,
x + *ptr). - Type Checking:
- Mixed
char/intarithmetic behavior needs verification. - Strict type checking for assignments and function calls.
- Mixed
- Printf Support:
- Basic specifiers:
%d,%u,%x,%c,%s,%%. - Missing width/precision modifiers.
- Basic specifiers:
- Goto/Label:
- Forward gotos within the same function (the
goto cleanuppattern). - Backward gotos (jumping to a label before the goto statement).
- Goto into nested blocks.
- Forward gotos within the same function (the
- Performance:
- Implement pagination/windowing for Stack and Heap panes (currently renders all items, potentially slow).
- Optimize large memory snapshot rendering.
- Display Limits:
- Handle deep or cyclic struct references in variables view (verify recursion limits).
- Input Handling:
- Verify scrolling behavior when stepping backwards (auto-scroll to active line).
- Shift+Tab (BackTab) for reverse pane cycling.
- CLI/Main:
- Ensure
main.rsgracefully transitions to TUI. - Better error reporting for runtime errors without TUI mode.
- Ensure
- Standard Library:
- Add
memset,memcpy,strcpybuilt-ins. - Support
NULLmacro properly in all contexts.
- Add
- Error Handling:
- Use-after-free errors now produce
RuntimeError::UseAfterFreewith proper address instead of genericInvalidMemoryOperation.
- Use-after-free errors now produce
- CI Limitations: Tests requiring TTY/Interactive TUI cannot run in CI.
- Integration Scenarios:
- Full run-through of
examples/default.cchecking for memory leaks.
- Full run-through of
- Edge Cases:
- Stack overflow detection (recursion limit).
- Zero-size allocations.
- Parser: Switch to
nomor similar if hand-written parser becomes unmaintainable. - Snapshot Optimization: Implement copy-on-write instead of full cloning for memory efficiency.
- Save/Load: Capability to save execution trace to file.
- Removed unused
RuntimeError::Genericvariant andRuntimeError::format()method. - Removed unused
Theme.bgfield. - Removed unused
MockTerminal::println,delete_output_from_line,clearmethods. - Removed unused
SnapshotManager::latest,count,clearmethods.