August 2017 Development Projects Update08/30/2017
As I described back in the May issue of the Foundation newsletter, the Foundation employed Siva Mahadevan and Guangyuan (Charlie) Yang, two co-operative education students from the University of Waterloo over the summer term. In this update I’ll highlight a few more of Siva and Charlie’s projects, and touch on what’s coming next.
Previous updates mentioned continuous integration projects developed by both students (in the May update), Siva’s work on the capsicum test suite (in July) and Charlie’s addition of non-volatile DIMM memory support for the acpidump tool (also in July).
Charlie investigated test failures reported on FreeBSD by the diffoscope tool used by the reproducible builds project. These largely turned out to be due to small differences in the format of utilities used by difoscope. Charlie submitted bug reports and patches to the upstream diffoscope authors, and as a result diffoscope is now fully functional and passes its test suite on FreeBSD.
Charlie worked on several tasks related to running FreeBSD on 32-bit Arm boards (such as the Raspberry Pi and BeagleBone Black), and as a final project in this series is porting and verifying the open-source PiAware project. PiAware builds on a number of third-party software packages and connects to FlightAware’s flight-tracking services to submit aircraft movement data. It provides a good example of an embedded application running on an Arm platform that can be used to identify common examples of “Linuxisms” (relying on Linux-specific interfaces and configuration), and nonportability.
To wrap up the term, Charlie has been adding to the Simplified Chinese translation of the FreeBSD handbook. As a bilingual native speaker with contacts in the FreeBSD community, Charlie has a unique ability to contribute.
Siva has a number of projects in progress that are undergoing final stages of review and integration into FreeBSD. First is the addition of msdosfs (FAT) filesystem support to the makefs userland file system generation tool. This capability will be very useful for generating installer and virtual machine images for EFI-based PCs and embedded boards, all of which place at least a portion of their bootloader components on a FAT filesystem. With the knowledge gained in this project Siva is looking into issues in the kernel msdosfs filesystem support as reported by members of the FreeBSD community.
Siva is also addressing a few longstanding limitations in previous Foundation-sponsored and community work on the vt(4) system console. This includes adding the ability to control the scrollback history size, control over the system cursor, and other issues.
As a final project this term Siva ported the Clang undefined behavior sanitizer (ubsan) to the FreeBSD kernel. The undefined behavior sanitizer is implemented in the compiler and a companion runtime support library, with the latter previously available in FreeBSD only for userland. Ubsan provides run-time detection for behavior undefined by the C standard, such as integer overflow, and can help identify a source of common security issues.
For the upcoming fall term (September through December) Charlie will be starting a co-op placement at another company, and Siva returns to Waterloo for the second half of the third year of his Computer Science program. Both students expect to continue with some more work on FreeBSD after the work term ends. Next month two new co-op students will join the Foundation’s Kitchener-Waterloo office, and I look forward to sharing the projects they take on.
— contributed by Ed Maste