compiler toolchain

Aaron J. Seigo aseigo at kde.org
Mon Aug 4 18:36:29 UTC 2014


A short word on my thoughts for the compiler toolchain to allow your minds to 
start working through the implications and start dreaming ideas ;)

The plan is to give the compiler hooks throughout for additional systems to 
tap into. The obvious example to use here is clang (http://clang.llvm.org/)

The plan is to expose not just an AST (IDE-friendly and all that) but to allow 
hooks for instrumenting, adding and changing the generated results at various 
steps. Compiler plugins will be able to extend the functionality of the 
compiler using these hooks.

For instance, the integrated testing framework will be implemented as a 
compiler plugin. In non-release builds it will instrument the compiled code to 
allow it to capture which functions and lines get run while running any given 
test. This will allow for:

* very useful code coverage reports that go beyond "this line was run 8 times 
in testing"

* automated running of unit tests which touch functions that have been changed 
since the last run

* code injection to support patterns like mocking that are based on actual 
modules / functions in the code

The integrated documentation system will similarly be able to note 
documentation coverage, when documentation no longer matches what it 
documents, ....

Refactoring tools will also be more easily added with this kind of 
infrastructure.

Another benefit to this approach is that funq can provide things like an 
integrated testing and documentation framework without welding it too tightly 
to the compiler and runtime.

It should be possible to write these plugins in funq itself, though a C++ API 
will probably also be offered for use by more complex tools or IDEs.

-- 
Aaron J. Seigo
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://kde.org/pipermail/funq-devel/attachments/20140804/24f7aa3d/attachment.sig>


More information about the Funq-devel mailing list