Git Product home page Git Product logo

3c-actions's People

Contributors

jackastner avatar john-h-kastner avatar machiry avatar mattmccutchen-cci avatar

Watchers

 avatar

Forkers

purs3lab

3c-actions's Issues

Possible improvements to YAML generation in generate-workflow.py

Some ideas to make the YAML generation in generate-workflow.py better after #7:

  • From John: "The python script could include a call to yamllint to sanity check the generated workflow. Easy enough to run manually, but it might catch trivial errors in future changes." This would require everyone who runs generate-workflow.py to install yamllint, so we'd have to think about whether it's worth it.
  • We could generate the output using a YAML library rather than a bunch of manual string manipulation. (Or maybe there is even a library specifically for generating GitHub workflow files?) If there are hard-coded chunks of the workflow file that are easier to understand in YAML format than as hard-coded calls to the YAML library to build the corresponding data structures, we can probably just have the YAML library parse hard-coded YAML strings.

Icecast: Include `src/*/test*.c` once 3C can handle multiple `main`s

From #13 (review):

It looks like this is skipping the test.c files (which contain duplicate mains) without an explicit --skip flag. This behavior is fine for now since the duplicate mains would cause 3c to raise an error, but we will probably want to include them when correctcomputation/checkedc-clang#505 is merged.

The reason these files are not being included now appears to be that they are not built by the default ./configure && make, so Bear doesn't add them to the compilation database. We'd have to figure out the correct arguments to ./configure and/or make to build the files.

Clean up `generate-workflow.py` after paper submission

#33 added a ton of duplicate code to generate-workflow.py for different versions of the source code for each benchmark (original, manual port, C3 reversion of manual port). When we have time, we should clean this up (unless we decide to delete the extra versions anyway once we're done with the paper).

Speed up the expanded benchmark workflow

With #7, the workflow takes over an hour to run. Some ideas to speed it up:

  • (Done in #10) Use a release build of 3C and Clang, or RelWithDebInfo if having the debug info is useful (e.g., if it shows up in stack traces for assertion failures: I'd need to re-test that).
  • (Done in #15) For the CMake projects, replace make with ninja. For the non-CMake projects, manually pass the appropriate flags to make for a parallel build.
  • Generate the compilation database without actually building the unconverted code.
    • For the CMake projects, we should just be able to use CMAKE_EXPORT_COMPILE_COMMANDS, although I don't know if convert_project handles this correctly; it may need minor changes.
    • For the non-CMake projects, we could try to use Bear's "wrapper" mode that uses a fake compiler that doesn't actually perform compilation, but this appears to require a newer version of Bear than is currently available via Ubuntu; we'd have to manually build our own version on gamera.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.