Skip to content
Andrew Hu edited this page Mar 12, 2019 · 9 revisions

2019

Documentation

We need a better high level overview, as well as a guide about how the roadrunner pipeline works.

Maintenance

We want to decrease the C++ complexity bloat as much possible. Some things are okay like unique_ptr, but in general it's very hard to understand how to safely modify the code. This will be greatly helped by documentation, but we'd also like to make changes to the code to make it more maintainable.

Linter/Style Guide

Using a C++ linter will automatically tell you if you violate style guide rules. The Google one is popular, but we may want to use some custom rules.

Redesigns

LLVMModelData

This size of LLVMModelData should not be unknown at compile time as it is now with the data[0] hack. I suggest changing the data fields to a set of pointers to arrays that contain the data

Curiously Recurring Template Pattern (CRTP)

CRTP is used in SetValuesCodeGen, and possibly in other places. I would like to investigate if we could get the same performance out of some other, more readable design. It's only used in like 3 files, but those files are frequently hotspots for debugging and it takes a lot of effort to understand what is going on. At the very least, they should be better documented and explain CRTP.

Features

  • Direct access to the model data to change it during execution

Long-Term

Migrating from C++

There are a lot of problems with C++ that might be solved by moving to a language like Rust. I'm interested in experimenting with this by taking small pieces of the codebase and replacing them with Rust equivalents. This would involve setting up a build/link system with cargo in CMake, but that's doable.