Skip to content

2018-04-27 Developer build of Checked C clang compiler

Compare
Choose a tag to compare
@dtarditi dtarditi released this 07 Jun 22:55
b88a40f

Summary

This is a developer build of the Checked C clang compiler. It is for use by developers who want to try out the Checked C extension while it is being implemented. We do not recommend using this compiler in production environments because core extension features are still under active development.

Installation Notes

Clang expects an existing C/C++ compiler before running the installer. If installing on a fresh machine, first install the C/C++ compiler. We recommend using Visual Studio 2017, which has a free Community version available. Use Visual Studio 2017's built in feature installer to ensure a C/C++ compiler and runtime are present before installing Checked C clang.

  • The binaries are installers for 32-bit and 64-bit Windows versions of the compiler
  • The compiler will be installed in a separate directory from your existing clang install. If you are also using the production version of clang, do not add the Checked C version to your path.
  • If you could use prebuilt binaries for another OS, please open an issue.

Using the compiler

See the Checked C clang users manual for directions on how to use the compiler.

To change the compiler to Checked C clang in a Visual Studio project, open the project Properties and set "Platform Toolset" to one of the "CheckedC-LLVM" versions in the drop-down. (If there are no CheckedC-LLVM options in the "Platform Toolset" dropdown, try reinstalling Checked C clang.)

Change notes

  • Rename BOUNDS_CHECKED pragma to CHECKED_SCOPE.
  • Static checking now produces an error message when inferred bounds contain modifying expressions (#480).
  • Fix compiler crash when using a function in a checked scope that returns a function pointer with a bounds-safe interface (#483).
  • Fix incorrect typechecking error when making an indirect function call via a const member (#482).

Extension features implemented

See the implementation roadmap and status. Some runtime checks and a lot of the static checking is not implemented yet.