-
Support for (de)serialization of resuls, spec,s etc. to json. Running of same.
-
Clang cross-compiler support
- See clang-cross-compile branch for progress.
- Seems to probably work but can't compiler libcfiddle because of header issue.
- cfiddle.make could be made less gcc-centric. The variables are a mess.
-
Support for remote exection (based on 5)
-
Error reporting on perf counters
- Not available
- Incompatable set of counters.
-
Documentation
- Add change log to README.md
- Add devel instructions to README.md
- Update cross refs in docstrings.
-
Multiple workflow support (mostly runners)
- Install relevante inspectors on Executables
- Encapsulate a configuration in a Workflow object. (One for C, one for Rust, remote execution, etc.)
- from cfiddle import * would pull in the default.
-
Support for Rust
- Use the FFI interfaces in each language to get access to libcfiddle.
- Extend the makefile.
-
Turn on debug for all tests
-
Cleanup full_flow_tests
- Parameterize them across toolchains.
- Expand full flow to also run code analysis tools.
-
Build per-base class tests for derived classes
- Builder
- Runner
- Toolchain
-
cleanup cfg code. it's a mess.
-
Integrate moneta
-
fancy code/assembly/cfg highlighting like it compiler explorer. Can we do it just using CSS?
-
Move src/cfiddle/resources to the root src/ directory
-
Create language abstraction. 1. get rid of util.infer_language
-
Executable-based execution (rather than .so)
- It'd be usef to be able to run programs at the command line
- e.g. to use gdb to interact with debug information while enhancing DebugINfo
- Auto-generate code from python.
- Build generic C++ library with at template function that can execute use << to deserialize arguments passed on the cmdline.
- ExeRunner should build an executable and attach it to the Executable object and reuse it later.
- Or maybe there should be an ExeBuilder that just builds the executable outright.
- Just do one invocation per process
- Statically link so gprof will work.
- I think the .so things is a bad idea. We'll see how much slower executables are.
- There was maybe some benefit in the shared state via libcfiddle, but I don't think it's bidirectional.
- It would make collecting stdout/stderr and providing stdin possible and easy.
- It'd be usef to be able to run programs at the command line
-
MacOS support 11. Clang support (done) 12. dylib suppport
-
Windows support
-
Generalized measurement mechanism of which perf counters would be a special case.
- Measure IO
-
Use
run()
to check characteristics of execution envirnoment- E.g. for remote execution, run a program to find the list of perf counters. If you run it in on the execution environment, you'll get the currently-/workload-correct answer.
-
Automatically run a test several times and generate average/stdev etc. Then automatically draw error bars
- It's enable in these binaries: https://master.dockerproject.org/ as of 1/18/2022
- But it doesn't actually work:
- docker run --cap-add PERFMON -it -w /home/jovyan/cfiddle/tests stevenjswanson/cfiddle:devel pytest test_PerfCounter.py
- can't read counters
- moby/moby#43163