NetBSD LLVM sanitizers and GDB regression test suite, Ada—The Language of Cost Savings, Homura - a Windows Games Launcher for FreeBSD, FreeBSD core team appoints a WG to explore transition to Git, OpenBSD 6.6 Beta tagged, Project Trident 12-U5 update now available, and more.
As NetBSD-9 is branched, I have been asked to finish the LLVM sanitizer integration. This work is now accomplished and with MKLLVM=yes build option (by default off), the distribution will be populated with LLVM files for ASan, TSan, MSan, UBSan, libFuzzer, SafeStack and XRay.
I have also transplanted basesystem GDB patched to my GDB repository and managed to run the GDB regression test-suite.
NetBSD distribution changes
I have enhanced and imported my local MKSANITIZER code that makes whole distribution sanitization possible. Few real bugs were fixed and a number of patches were newly written to reflect the current NetBSD sources state. I have also merged another chunk of the fruits of the GSoC-2018 project with fuzzing the userland (by plusun@).
The following changes were committed to the sources:
ab7de18d0283 Cherry-pick upstream compiler-rt patches for LLVM sanitizers
966c62a34e30 Add LLVM sanitizers in the MKLLVM=yes build
8367b667adb9 telnetd: Stop defining the same variables concurrently in bss and data
fe72740f64bf fsck: Stop defining the same variable concurrently in bss and data
40e89e890d66 Fix build of t_ubsan/t_ubsanxx under MKSANITIZER
b71326fd7b67 Avoid symbol clashes in tests/usr.bin/id under MKSANITIZER
c581f2e39fa5 Avoid symbol clashes in fs/nfs/nfsservice under MKSANITIZER
030a4686a3c6 Avoid symbol clashes in bin/df under MKSANITIZER
fd9679f6e8b1 Avoid symbol clashes in usr.sbin/ypserv/ypserv under MKSANITIZER
5df2d7939ce3 Stop defining _rpcsvcdirty in bss and data
5fafbe8b8f64 Add missing extern declaration of ib_mach_emips in installboot
d134584be69a Add SANITIZER_RENAME_CLASSES in bsd.prog.mk
2d00d9b08eae Adapt tests/kernel/t_subr_prf for MKSANITIZER
ce54363fe452 Ship with sanitizer/lsan_interface.h for GCC 7
7bd5ee95e9a0 Ship with sanitizer/lsan_interface.h for LLVM 7
d8671fba7a78 Set NODEBUG for LLVM sanitizers
242cd44890a2 Add PAXCTL_FLAG rules for MKSANITIZER
5e80ab99d9ce Avoid symbol clashes in test/rump/modautoload/t_modautoload with sanitizers
e7ce7ecd9c2a sysctl: Add indirection of symbols to remove clash with sanitizers
231aea846aba traceroute: Add indirection of symbol to remove clash with sanitizers
8d85053f487c sockstat: Add indirection of symbols to remove clash with sanitizers
81b333ab151a netstat: Add indirection of symbols to remove clash with sanitizers
a472baefefe8 Correct the memset(3)'s third argument in i386 biosdisk.c
7e4e92115bc3 Add ATF c and c++ tests for TSan, MSan, libFuzzer
921ddc9bc97c Set NOSANITIZER in i386 ramdisk image
64361771c78d Enhance MKSANITIZER support
3b5608f80a2b Define target_not_supported_body() in TSan, MSan and libFuzzer tests
c27f4619d513 Avoids signedness bit shift in db_get_value()
680c5b3cc24f Fix LLVM sanitizer build by GCC (HAVE_LLVM=no)
4ecfbbba2f2a Rework the LLVM compiler_rt build rules
748813da5547 Correct the build rules of LLVM sanitizers
20e223156dee Enhance the support of LLVM sanitizers
0bb38eb2f20d Register syms.extra in LLVM sanitizer .syms files
Almost all of the mentioned commits were backported to NetBSD-9 and will land 9.0.
Many myths surround the Ada programming language, but it continues to be used and evolve at the same time. And while the increased adoption of Ada and SPARK, its provable subset, is slow, it’s noticeable. Ada already addresses more of the features found in found in heavily used embedded languages like C+ and C#. It also tackles problems addressed by upcoming languages like Rust.
Chris concludes, “Development technologies have a profound impact on one of the largest and most variable costs associated with embedded-system engineering—labor. At a time when on-time system deployment can not only impact customer satisfaction, but access to services revenue streams, engineering team efficiency is at a premium. Our research showed that programming language choices can have significant influence in this area, leading to shorter projects, better schedules and, ultimately, lower development costs. While a variety of factors can influence and dictate language choice, our research showed that Ada’s evolution has made it an increasingly compelling option for engineering organizations, providing both technically and financially sound solution.”
In general, Ada already makes embedded “programming in the large” much easier by handling issues that aren’t even addressed in other languages. Though these features are often provided by third-party software, it results in inconsistent practices among developers. Ada also supports the gamut of embedded platforms from systems like Arm’s Cortex-M through supercomputers. Learning Ada isn’t as hard as one might think and the benefits can be significant.
The FreeBSD Core Team is the governing body of FreeBSD.
Core approved source commit bits for Doug Moore (dougm), Chuck Silvers (chs), Brandon Bergren (bdragon), and a vendor commit bit for Scott Phillips (scottph).
The annual developer survey closed on 2019-04-02. Of the 397 developers, 243 took the survey with an average completion time of 12 minutes. The public survey closed on 2019-05-13. It was taken by 3637 users and had a 79% completion rate. A presentation of the survey results took place at BSDCan 2019.
The core team voted to appoint a working group to explore transitioning our source code 'source of truth' from Subversion to Git. Core asked Ed Maste to chair the group as Ed has been researching this topic for some time. For example, Ed gave a MeetBSD 2018 talk on the topic.
There is a variety of viewpoints within core regarding where and how to host a Git repository, however core feels that Git is the prudent path forward.