2018
Interface Dispatch
Virtual method calls are simple: you just look up the method slot in a vtable and call the function pointer. Easy! Well, not quite: interfaces present a kind of multiple inheritance, and things quickly become complicated.
This post discusses interface method calls in C++ (GCC), Java (OpenJDK/HotSpot), C# (CLR), Go, and Rust.
It is an expanded version of my answer on Software Engineering Stack Exchange on Implementation of pure abstract classes and interfaces.
gcovr 4.0
After a lot of refactoring and cleanup, gcovr 4.0 is out!
This release represents four months of work.
The focus was on internal changes,
but there are lots of enhancements as well:
better filters,
improved Python 3 support,
GCC 8 support,
better encoding support via --source-encoding
,
parallel gcov invocations with -j
,
and HTML customizations with
--html-title
, --html-medium-threshold
, and --html-high-threshold
.
Gcovr is a command line tool that uses gcov to produce code coverage reports as text summaries, detailed HTML reports, or Cobertura-compatible XML. I works with the GCC and Clang compilers.
You can pip install gcovr
from PyPI,
read the overview on GitHub,
or read the user guide.
Favourite Blogs
I've assembled a list of a few programming and tech blogs which I particularly enjoy.
gcovr 3.4
I am excited to announce that gcovr 3.4 has been released!
This release represents over a year of accumulated bug fixes. Support for Windows and for Python 3 has been greatly improved. There are also a number of quality improvements behind the scenes.
Gcovr is a command line tool that uses gcov to produce code coverage reports as text summaries, detailed HTML reports, or Cobertura-compatible XML. I works with the GCC and Clang compilers.
You can pip install gcovr
from PyPI,
read the overview on GitHub,
or read the user guide.
On Cleverness
Please apply your cleverness not to write clever code, but to find clever ways to avoid the need for blatant cleverness.