This release adds a new compiler environment, new APIs, and a suite of backend
improvements to improve the flexibility of CompilerGym environments. Many thanks
to code contributors: sogartar, KyleHerndon, SoumyajitKarmakar, uduse, and
anthony0727!
Highlights of this release include:
- [mlir] Began work on a new environment for matrix multiplication using MLIR
([652](https://github.com/facebookresearch/CompilerGym/pull/652), thanks
KyleHerndon and sogartar!). Note this environment is not yet included in the
pypi package and must be [compiled from
source](https://github.com/facebookresearch/CompilerGym/blob/development/INSTALL.md#building-from-source-with-cmake).
- [llvm] Added a new `env.benchmark_from_clang_invocation()` method
([577](https://github.com/facebookresearch/CompilerGym/pull/577)) that can be
used for constructing LLVM environment automatically from C/C++ compiler
invocations. This makes it much easier to integrate CompilerGym with your
existing build scripts.
- Added three new wrapper classes: `Counter`, that provides op counts for
analysis ([683](https://github.com/facebookresearch/CompilerGym/pull/683));
`SynchronousSqliteLogger`, that provides logging of environment interactions
to a relational database
([679](https://github.com/facebookresearch/CompilerGym/pull/679)), and
`ForkOnStep` that provides an `undo()` operation
([682](https://github.com/facebookresearch/CompilerGym/pull/682)).
- Added `reward_space` and `observation_space` parameters to `env.reset()`
([659](https://github.com/facebookresearch/CompilerGym/pull/659), thanks
SoumyajitKarmakar!)
This release includes a number of improvements to the backend APIs that make it
easier to write new CompilerGym environments:
- Refactored the backend to make `CompilerEnv` an abstract interface, and
`ClientServiceCompilerEnv` the concrete implementation of this interface. This
enables new environments to be implemented without using gRPC
([633](https://github.com/facebookresearch/CompilerGym/pull/633), thanks
sogartar!).
- Extended the support for different types of action and observation spaces
([641](https://github.com/facebookresearch/CompilerGym/pull/641),
[643](https://github.com/facebookresearch/CompilerGym/pull/643), thanks
sogartar!), including new `Permutation` and `SpaceSequence` spaces
([645](https://github.com/facebookresearch/CompilerGym/pull/645), thanks
sogartar!)..
- Added a new `disk/` subdirectory to compiler service's working directories,
which is symlinked to an on-disk location for devices which support in-memory
working directories. This fixes a bug with leftover temporary directories from
LLVM ([672](https://github.com/facebookresearch/CompilerGym/pull/672)).
This release also includes numerous bug fixes and improvements, many of which
were reported or fixed by the community. For example, fixing a bug in cache file
locations ([656](https://github.com/facebookresearch/CompilerGym/pull/656),
thanks uduse!), and a missing flag definition in example code
([684](https://github.com/facebookresearch/CompilerGym/pull/684), thanks
anthony0727!).
**Full Changelog**:
https://github.com/facebookresearch/CompilerGym/compare/v0.2.3...v0.2.4