BSDSec

deadsimple BSD Security Advisories and Announcements

FreeBSD Quarterly Status Report - Third Quarter 2022

FreeBSD Quarterly Status Report Third Quarter 2022

Here is the third quarterly report for year 2022, with 24 reports included,
which is slightly fewer than last quarter.

I notice that in the past we had quarters with many more reports: often more
than 30, sometimes even more than 40. Thus I would like to encourage all of you
to submit reports: reports are useful to share your work, to find help, to have
more eyes reviewing your changes, to have more people testing your software, to
reach a wider audience whenever you need to tell something to all of the
FreeBSD community and in many other cases. Please do not be shy and do not
worry if you are not a native English speaker or if you are not proficient in
AsciiDoc syntax: the quarterly team will be glad to help you in whatever you
need.

On the other hand, if you really do not have anything to report, then maybe you
might like to join one of the interesting projects described below, or you
might be inspired from one of them to do something new, thus having something
to report in the future.

We wish you all a pleasant read.

Lorenzo Salvadore, on behalf of the status report team.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

A rendered version of this report is available here:
https://www.freebsd.org/status/report-2022-07-2022-09/

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Table of Contents

  • FreeBSD Team Reports
      □ FreeBSD Core Team
      □ FreeBSD Foundation
      □ FreeBSD Release Engineering Team
      □ Cluster Administration Team
      □ Continuous Integration
      □ Ports Collection
  • Projects
      □ OpenStack on FreeBSD
      □ FreeBSD as a Tier 1 cloud-init Platform
  • Userland
      □ bhyve debug server enhancements
      □ Rewrite of pjdfstest
      □ Ongoing work on LLDB multiprocess debugging support
      □ DTrace: Instruction-level dynamic tracing
  • Kernel
      □ ENA FreeBSD Driver Update
      □ wtap(4) enhancement
      □ Intel wireless towards 11ac
      □ More wireless updates
      □ Enabling Snapshots on Filesystems Using Journaled Soft Updates
  • Architectures
      □ FreeBSD/Firecracker
  • Documentation
      □ Documentation Engineering Team
  • Ports
      □ Calendar-data: License added
      □ KDE on FreeBSD
      □ GCC: New maintainer, GCC 12.2 and more
      □ sysutils/lsof major upgrade
  • Third Party Projects
      □ Containers and FreeBSD: Pot, Potluck and Potman

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

FreeBSD Team Reports

Entries from the various official and semi-official teams, as found in the
Administration Page.

FreeBSD Core Team

Contact: FreeBSD Core Team <core@FreeBSD.org>

The FreeBSD Core Team is the governing body of FreeBSD.

Completed Items

New Core Team Secretary

All members of the Core Team express publicly their gratitude to Muhammad
Moinur Rahman (bofh) for serving as the Core Team Secretary for the past two
years.

The Core Team approved Sergio Carlavilla (carlavilla) as the new Core Team
secretary.

Procedure to handle GDPR deletion request

The Core Team has reviewed the procedure to handle GDPR deletions requests with
help from Foundation lawysers. The document is currently being written and will
be published after completion.

New Privacy Policy

The Core Team is working closely with the FreeBSD Foundation to update the
Privacy Policy to properly align with current laws and practices found on
similar websites such as ours.

Bruce Evans memorial plaque

The Core Team unanimously votes to allow the memorial plaque for Bruce Evans
mentioning him as co-founder of FreeBSD.

EuroBSDCon core team office hour

On Friday, September 16, the new Core Team presented at EuroBSDcon 2022
Developer Summit. The Core Team introduced themselves and talked a bit about
their plans for this term. There were discussions, Q & A, and suggestions from
the attendees about the details.

Commit bits

Core approved reactivating the source commit bit for Konrad Witaszczyk (def@).
Right now Konrad is working at Cambridge University, where he is responsible
for developing CheriBSD.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

FreeBSD Foundation

Links:
FreeBSD Foundation URL: https://www.FreeBSDFoundation.org
Technology Roadmap URL: https://FreeBSDFoundation.org/blog/technology-roadmap/
Donate URL: https://www.FreeBSDFoundation.org/donate/
Foundation Partnership Program URL: https://www.FreeBSDFoundation.org/
FreeBSD-foundation-partnership-program
FreeBSD Journal URL: https://www.FreeBSDFoundation.org/journal/
Foundation News and Events URL: https://www.FreeBSDFoundation.org/
news-and-events/

Contact: Deb Goodkin <deb@FreeBSDFoundation.org>

The FreeBSD Foundation is a 501(c)(3) non-profit organization dedicated to
supporting and promoting the FreeBSD Project and community worldwide. Donations
from individuals and corporations are used to fund and manage software
development projects, conferences, and developer summits. We also provide
travel grants to FreeBSD contributors, purchase and support hardware to improve
and maintain FreeBSD infrastructure, and provide resources to improve security,
quality assurance, and release engineering efforts. We publish marketing
material to promote, educate, and advocate for the FreeBSD Project, facilitate
collaboration between commercial vendors and FreeBSD developers, and finally,
represent the FreeBSD Project in executing contracts, license agreements, and
other legal arrangements that require a recognized legal entity.

Fundraising Efforts

First, I’d like to send a big thank you to everyone who gave a financial
contribution to our efforts. We are 100% funded by your donations, so every
contribution helps us continue to support FreeBSD in many ways, including some
of the work funded and published in this status report.

We support FreeBSD in five main areas. Software development is the largest area
we fund with through staff developers and contractors who implement new
features, support tier 1 platforms, review patches, and fix issues. You can
find out some of the work we did under OS Improvements in this report. FreeBSD
Advocacy is another area that we support to spread the word about FreeBSD at
conferences, in presentations online and in-person, tutorials and how-to
guides. We purchase and support hardware for the FreeBSD infrastructure that
supports the work going on in the Project. Virtual and in-person events are
organized by the Foundation to help connect and engage community members to
share their knowledge and collaborate on projects. Finally, we provide legal
support to the Project when needed and protect the FreeBSD trademarks.

Our goal this year is to raise at a minimum $1,400,000 towards a spending
budget of around $2,000,000. As we enter the last quarter of 2022, our donation
total sits at $167,348, so we still need your help. If you haven’t made a
donation this year, please consider making one at https://freebsdfoundation.org
/donate/. We also have a Partnership Program for larger commercial donors. You
can find out more at https://freebsdfoundation.org/our-donors/
freebsd-foundation-partnership-program/

OS Improvements

During the second quarter of 2022, 300 src, 36 ports, and 13 doc tree commits
were made that identified The FreeBSD Foundation as a sponsor. Some of that
work has dedicated report entries.

  • FreeBSD as a Tier I cloud-init Platform

  • Intel wireless towards 11ac

  • LLDB multiprocess debugging support

  • OpenStack on FreeBSD

  • Snapshots on Filesystems Using Journaled Soft Updates

The other sponsored work is challenging to concisely summarize. It varies from
complex new features to various bug fixes spanning the src tree. Here is a
small sample to give a flavor of last quarter’s work.

  • 240afd8 makefs: Add ZFS support

    This allows one to take a staged directory tree and create a file consisting
    of a ZFS pool with one or more datasets that contain the contents of the
    directory tree.  This is useful for creating virtual machine images without
    using the kernel to create a pool; "zpool create" requires root privileges and
    currently is not permitted in jails.  makefs -t zfs also provides reproducible
    images by using a fixed seed for pseudo-random number generation, used for
    generating GUIDs and hash salts.  makefs -t zfs requires relatively little by
    way of machine resources.

  • 36f1526 Add experimental 16k page support on arm64

    Add initial 16k page support on arm64. It is considered experimental, with no
    guarantee of compatibility with userspace or kernel modules built with the
    current 4k page size. Testing has shown good results in kernel workloads that
    allocate and free large amounts of memory as only a quarter of the number of
    calls into the VM subsystem are needed in the best case.

  • 1424f65 vm_pager: Remove the default pager

    It's unused now.  Keep the OBJ_DEFAULT identifier, but make it an alias of
    OBJT_SWAP for the benefit of out-of-tree code.

  • a889a65 eventtimer: Fix several races in the timer reload code

    In handleevents(), lock the timer state before fetching the time for the next
    event.  A concurrent callout_cc_add() call might be changing the next event
    time, and the race can cause handleevents() to program an out-of-date time,
    causing the callout to run later (by an unbounded period, up to the idle
    hardclock period of 1s) than requested.

Bhyve Issue Support

The Foundation contracted John Baldwin to dedicate time to Bhyve as issues
arise, especially security issues. Here is a summary of his 2022q3 work on that
contract.

  • bb31aee bhyve virtio-scsi: Avoid out of bounds accesses to guest requests.

  • 62806a7 bhyve virtio-scsi: Tidy warning and debug prints.

  • 7afe342 bhyve e1000: Sanitize transmit ring indices.

  • c94f30e bhyve: Validate host PAs used to map passthrough BARs.

  • 16bedf5 pci: Add helper routines to iterate over a device’s BARs.

  • baf753c bhyve: Support other schemes for naming pass-through devices.

  • fa46f37 bhyve e1000: Skip packets with a small header.

  • e7439f6 bhyve xhci: Cache the value of MaxPStreams when initializing an
    endpoint.

RISC-V Improvements

At the end of the quarter, the Foundation contracted Mitchell Horne to add and
improve support for RISC-V hardware. Mitchell will also perform general
maintenance such as fixing bugs, handling reports, providing review for new
code changes, and improving source code legibility and documentation.

Continuous Integration and Quality Assurance

The Foundation provides a full-time staff member and funds projects to improve
continuous integration, automated testing, and overall quality assurance
efforts for the FreeBSD project. You can read about CI activities this quarter
in a dedicated entry.

FreeBSD Advocacy and Education

Much of our effort is dedicated to Project advocacy. This may involve
highlighting interesting FreeBSD work, producing literature and video
tutorials, attending events, or giving presentations. The goal of the
literature we produce is to teach people FreeBSD basics and help make their
path to adoption or contribution easier. Other than attending and presenting at
events, we encourage and help community members run their own FreeBSD events,
give presentations, or staff FreeBSD tables.

The FreeBSD Foundation sponsors many conferences, events, and summits around
the globe. These events can be BSD-related, open source, or technology events
geared towards underrepresented groups. We support the FreeBSD-focused events
to help provide a venue for sharing knowledge, working together on projects,
and facilitating collaboration between developers and commercial users. This
all helps provide a healthy ecosystem. We support the non-FreeBSD events to
promote and raise awareness of FreeBSD, to increase the use of FreeBSD in
different applications, and to recruit more contributors to the Project. We are
continuing to attend events both in person and virtual as well as planning the
November Vendor Summit. In addition to attending and planning virtual events,
we are continually working on new training initiatives and updating our
selection of how-to guides to facilitate getting more folks to try out FreeBSD.

Check out some of the advocacy and education work we did last quarter:

  • Held a FreeBSD Workshop and Staffed a booth at Scale 19x in Los Angeles, CA
    on July 28-30. You can read more about our participation in the SCALE19X
    Conference Report

  • Sponsored and attended COSCUP, July 30-31, Taiwan

  • Attended the EuroBSDCon Developer Summit and sponsored and attended
    EuroBSDcon 2022, September 15-18, Vienna, Austria

  • Sponsored and Presented at the Rocky Mountain Celebration of Women in
    Computing, September 29-30, 2022. Slides from Deb’s presentation can be
    found here.

  • Published the FreeBSD Foundation Summer 2022 Update

  • Continued our participation in Google Summer of Code as both an admin and
    mentors. Interviews with some of the Google Summer of Code Students can be
    found here.

  • Introduced a new FreeBSD Resources page that allows for search by type of
    subject, type of content and difficulty level.

  • New Blog Posts:

      □ Guest Post: FreeBSD in Science

      □ Advocating for FreeBSD in 2022 and Beyond

      □ August Foundation Fundraising Update

      □ Sharing Dual-Licensed Drivers between Linux and FreeBSD

  • New and Updated How-To and Quick Guides:

      □ FreeBSD Quick Guide: Video Playback on FreeBSD

      □ Binary Package Management on FreeBSD

We help educate the world about FreeBSD by publishing the professionally
produced FreeBSD Journal. As we mentioned previously, the FreeBSD Journal is
now a free publication. Find out more and access the latest issues at https://
www.FreeBSDfoundation.org/journal/.

You can find out more about events we attended and upcoming events at https://
www.FreeBSDfoundation.org/news-and-events/.

Legal/FreeBSD IP

The Foundation owns the FreeBSD trademarks, and it is our responsibility to
protect them. We also provide legal support for the core team to investigate
questions that arise.

Go to https://www.FreeBSDFoundation.org to find more about how we support
FreeBSD and how we can help you!

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

FreeBSD Release Engineering Team

Links:
FreeBSD 12.4-RELEASE schedule URL: https://www.freebsd.org/releases/12.4R/
schedule/
FreeBSD 13.2-RELEASE schedule URL: https://www.freebsd.org/releases/13.2R/
schedule/
FreeBSD 14.0-RELEASE schedule URL: https://www.freebsd.org/releases/14.0R/
schedule/
FreeBSD development snapshots URL: https://download.freebsd.org/snapshots/
ISO-IMAGES/

Contact: FreeBSD Release Engineering Team, <re@FreeBSD.org>

The FreeBSD Release Engineering Team is responsible for setting and publishing
release schedules for official project releases of FreeBSD, announcing code
freezes and maintaining the respective branches, among other things.

During the third quarter of 2022, the Release Engineering Team continued
providing weekly development snapshot builds for the main, stable/13, and
stable/12 branches.

Additionally, the schedules for the upcoming 12.4, 13.2, and 14.0 release
cycles were published on the Project website.

Sponsor: Rubicon Communications, LLC ("Netgate") Sponsor: The FreeBSD
Foundation

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Cluster Administration Team

Links:
Cluster Administration Team members URL: https://www.freebsd.org/administration
/#t-clusteradm

Contact: Cluster Administration Team <clusteradm@FreeBSD.org>

FreeBSD Cluster Administration Team members are responsible for managing the
machines the Project relies on to synchronise its distributed work and
communications. In this quarter, the team has worked on the following:

  • Added additional storage to the CI system. It will help store more
    artifacts.

  • VuXML deployed in all official mirrors. It speeds up the pkg audit
    functionality.

  • A new (and additional) monitoring system is in place.

  • A few old and faulty machines were decommissioned.

  • Moved several services to newer hardware.

  • Regular cluster-wide software upgrades

  • Regular support for FreeBSD.org user accounts

  • Regular disk and parts support (and replacement) for all physical hosts and
    mirrors.

Work in progress:

  • git infra: Add --filter support.

  • Work with the PowerPC team to improve the package builders, universal, and
    reference machines.

  • Site audit at our primary site: inventory of spares and other miscellanea
    occupying space in our cabinets.

  • Discussions with Juniper about a donation of new switches for our primary
    site.

  • Plan for a large scale network upgrade at our primary site.

  • Cluster refresh (more extended project). Most cluster machines are running
    FreeBSD 13-STABLE or 14-CURRENT as of 2022-09-30. Only a handful of
    machines are still on FreeBSD 12-STABLE.

We are looking for an additional full mirror site (five servers) in Europe. See
generic mirrored layout for our needs. Offers of additional single-server
mirrors are always welcome too, especially in Europe.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Continuous Integration

Links:
FreeBSD Jenkins Instance URL: https://ci.FreeBSD.org
FreeBSD CI artifact archive URL: https://artifact.ci.FreeBSD.org
FreeBSD Jenkins wiki URL: https://wiki.freebsd.org/Jenkins
Hosted CI wiki URL: https://wiki.freebsd.org/HostedCI
3rd Party Software CI URL: https://wiki.freebsd.org/3rdPartySoftwareCI
Tickets related to freebsd-testing@ URL: https://preview.tinyurl.com/y9maauwg
FreeBSD CI Repository URL: https://github.com/freebsd/freebsd-ci
dev-ci Mailing List URL: https://lists.freebsd.org/subscription/dev-ci

Contact: Jenkins Admin <jenkins-admin@FreeBSD.org>
Contact: Li-Wen Hsu <lwhsu@FreeBSD.org>
Contact: freebsd-testing Mailing List
Contact: IRC #freebsd-ci channel on EFNet

The FreeBSD CI team maintains the continuous integration system of the FreeBSD
project. The CI system checks the committed changes can be successfully built,
then performs various tests and analysis over the newly built results. The
artifacts from those builds are archived in the artifact server for further
testing and debugging needs. The CI team members examine the failing builds and
unstable tests and work with the experts in that area to fix the code or adjust
test infrastructure.

During the third quarter of 2022, we continued working with the contributors
and developers in the project to fulfill their testing needs and also keep
collaborating with external projects and companies to improve their products
and FreeBSD.

Important completed tasks:

  • Expand the artifact storage space for adding more types of artifacts and
    longer retention period.

  • Present Testing/CI Status Update in EuroBSDcon 2022 Developer Summit

  • Add main-powerpc-images and main-powerpcspe-images

Work in progress tasks:

  • Designing and implementing pre-commit CI building and testing (to support
    the workflow working group)

  • Designing and implementing use of CI cluster to build release artifacts as
    release engineering does

  • Testing and merging pull requests in the FreeBSD-ci repo

  • Simplifying CI/test environment setting up for contributors and developers

  • Setting up the CI stage environment and putting the experimental jobs on it

  • Organizing the scripts in freebsd-ci repository to prepare for merging to
    src repository

  • Updating documents on wiki

Open or queued tasks:

  • Collecting and sorting CI tasks and ideas

  • Setting up public network access for the VM guest running tests

  • Implementing use of bare-metal hardware to run test suites

  • Adding drm ports building tests against -CURRENT

  • Planning to run ztest tests

  • Adding more external toolchain related jobs

  • Improving maturity of the hardware lab and adding more hardware for testing

  • Helping more software get FreeBSD support in its CI pipeline (Wiki pages:
    3rdPartySoftwareCI, HostedCI)

  • Working with hosted CI providers to have better FreeBSD support

Please see freebsd-testing@ related tickets for more WIP information, and don’t
hesitate to join the effort!

Sponsor: The FreeBSD Foundation

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Ports Collection

Links:
About FreeBSD Ports URL:https://www.FreeBSD.org/ports/
Contributing to Ports URL: https://docs.freebsd.org/en/articles/contributing/#
ports-contributing
FreeBSD Ports Monitoring URL: http://portsmon.freebsd.org/
Ports Management Team URL: https://www.freebsd.org/portmgr/
Ports Tarball URL: http://ftp.freebsd.org/pub/FreeBSD/ports/ports/

Contact: René Ladan <portmgr-secretary@FreeBSD.org>
Contact: FreeBSD Ports Management Team <portmgr@FreeBSD.org>

The Ports Management Team is responsible for overseeing the overall direction
of the Ports Tree, building packages, and personnel matters. Below is what
happened in the last quarter.

Currently there are just over 30,500 ports in the Ports Tree. There are
currently just under 2,800 open ports PRs of which 750 are unassigned. The last
quarter saw 9,137 commits by 151 committers on the main branch and 589 commits
by 61 committers on the 2022Q3 branch. Compared to two quarters ago, this means
a slight increase in the number of ports, but also a slight increase in the
number of (unassigned) ports PRs and a slight decrease in the number of commits
made.

In the last quarter, we welcomed Felix Palmen (zirias@) as a new ports
committer, welcomed back Akinori MUSHA (knu@), and said goodbye to Olli Hauer
(ohauer@). We also welcomed Luca Pizzamiglio (pizzamig@) as an official member
of portmgr.

Some large changes in the Ports Tree were made during the last quarter:

  • "Created by" lines have been removed from the top of each Makefile, as a
    lot of those were outdated.

  • WWW: has been moved from each pkg-descr into each Makefile as a variable;
    the below write-up is from Stefan Eßer (se@) who did the work:

The description of a port’s functionality should end with the URL of a web page
that provides further information, such as best practices for usage or
configuration. This information can be displayed with pkg query -e for
installed packages or pkg rquery -e for available packages. The URL used to be
appended to the end of the ports' pkg-descr files, with the prefix "WWW: ", so
that tools could extract the URL from the description. Over time, many of these
URLs have become stale, since port updates generally change only the Makefile,
not the pkg-descr file. By moving the definition of these URLs into the
Makefiles, maintainers are more likely to update the URL along with other port
changes, and tools have easier access to them. The URLs are now assigned to the
WWW macro in the Makefile and can be queried with make -V WWW in the port
directory. Tools that process the description contained in the package files
still work because the "WWW: " lines at the end are generated from the WWW
values in the Makefiles.

During EuroBSDCon, portmgr@ had a discussion about improving the situation for
kernel module packages. Various possibilities have been discussed.

The following happened under the hood:

  • one new USES, "vala", was added.

  • The default version of Go got bumped to 1.19

  • CMake is now a meta-port

  • Initial support for Qt 6 was added, at version 6.3.2

  • Vim no longer installs a system-wide vimrc

  • A number of major ports got updated:

      □ pkg 1.18.4

      □ Chromium 106.0.5249.91

      □ Firefox 105.0.1

          ☆ Firefox ESR 102.3.0

      □ KDE Applications 22.8.1

      □ KDE Frameworks 5.98

      □ Rust 1.63.0

      □ SDL 2.24.0

      □ Xorg server 21.1.4 (overhaul)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Projects

Projects that span multiple categories, from the kernel and userspace to the
Ports Collection or external projects.

OpenStack on FreeBSD

Links:
OpenStack URL: https://www.openstack.org/
OpenStack on FreeBSD URL: https://github.com/openstack-on-freebsd

Contact: Chih-Hsin Chang <starbops@hey.com>
Contact: Li-Wen Hsu <lwhsu@FreeBSD.org>

OpenStack is an open-source cloud operating system for different types of
resources like virtual and bare-metal machines. Users can spawn FreeBSD
instances on the open cloud platform, but it is not currently possible to run
OpenStack control plane on FreeBSD hosts. The goal of this project is to port
key OpenStack components so that FreeBSD can function as an OpenStack host.

Academic and industrial research groups have been evaluating CHERI-enabled
Morello boards since mid-2022. A resource orchestration platform like OpenStack
can improve the speed and cost of provisioning, managing, and recycling those
boards.

Starting in January 2022, Chih-Hsin Chang has been working to port several
OpenStack components to run on FreeBSD, including:

  • Keystone (identity service)

  • Glance (image service)

  • Placement (resource tracking and inventory service)

  • Neutron (networking service)

  • Nova (compute service)

Some of the items are still under heavy development. For instance, due to the
design of Neutron, the DHCP servers are placed inside Linux network namespaces.
It is necessary to find an alternative, e.g. vnet, on FreeBSD and adapt it.
Most of the time the porting strategy is to make as small of an impact as
possible by working around obstacles. But something like oslo.privsep deserves
a true porting. oslo.privsep is rooted in Linux capabilities to do the
privilege separation work. Right now we just bypassed any Linux
capabilities-related operation inside oslo.privsep. So there is plenty of
hackish spots in the source code and configurations currently. All of these
along with the building and installation steps will be collected in the project
repositories.

In Q4 Chih-Hsin plans to focus on porting Neutron and Nova in order to complete
the VM lifecycle operations. The highlights include:

  • DHCP integration

  • FreeBSD bridge driver/agent

  • Bhyve + Libvirt integration

Sponsor: The FreeBSD Foundation

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

FreeBSD as a Tier 1 cloud-init Platform

Links:
cloud-init Website URL: https://cloud-init.io/
cloud-init Documentation URL: https://cloudinit.readthedocs.io/en/latest/
cloud-init ongoing refactorization URL: link:https://github.com/canonical/
cloud-init/blob/main/WIP-ONGOING-REFACTORIZATION.rst

Contact: Mina Galić <me+FreeBSD@igalic.co>

cloud-init is the standard way of provisioning servers in the cloud.
Unfortunately, cloud-init support for operating systems other than Linux is
rather poor, and the lack of cloud-init support on FreeBSD is a hindrance to
cloud providers who want to offer FreeBSD as a Tier 1 platform. To remedy the
situation, this project aims to bring FreeBSD cloud-init support on par with
Linux support. The broader plan is to lift support across all BSDs.

The project deliverables include completing an extraction of certain networking
classes, implementing ifconfig(8) and login.conf(5) parsers, implementing IPv6
configuration, creating devd.conf(5) rules for Azure, and FreeBSD Handbook
documentation about productionizing FreeBSD.

On the way there, any BSD-related bugs found in modules and documentation will
also be fixed.

People interested in helping with the project can help with testing new
features and fixes through net/cloud-init-devel, which will be updated on a
weekly basis. Further, people with access to, and experience with, OpenBSD and
NetBSD are also highly welcome to help.

Sponsor: The FreeBSD Foundation

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Userland

Changes affecting the base system and programs in it.

bhyve debug server enhancements

Links:
link: Wiki project page
link: Differential
Contact: Bojan Novković <bojan.novkovic@kset.org>

The goal of this project was to enhance the functionality of bhyve’s debug
server. Several existing features related to single-stepping are tied to
Intel-specific VM mechanisms, which severely impairs bhyve’s debugging
functionality on other x86 platforms. The first goal dealt with extending
single-stepping support to AMD hosts. The second goal was to add support for
hardware watchpoints using the guest OS’s hardware debugging registers.

The project was carried out under Google’s Summer of Code program and was
finished around the end of July. The project’s wiki also contains detailed
documentation regarding several implemented mechanisms.

The changes can be summarized as follows:

  • Support for placing software breakpoints inside virtual machines on AMD
    platforms,

  • Support for single-stepping virtual machines on AMD platforms,

  • Support for placing hardware watchpoints inside virtual machines on Intel
    and AMD platforms.

Any feedback, comments and discussions are welcome and would be greatly
appreciated.

Sponsor: Google Summer of Code

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Rewrite of pjdfstest

Links:
Github URL: https://github.com/musikid/pjdfstest
Blog URL: https://musikid.github.io/blog/rewrite-pjdfstest/
Contact: Alan Somers <asomers@FreeBSD.org>

Back in 2007, Pawel Jakub Dawidek <pjd@FreeBSD.org> wrote pjdfstest, a POSIX
file system conformance test tool. He originally wrote it to validate the port
of ZFS to FreeBSD, but it has subsequently been used for other file systems and
other operating systems.

This year, Sayafdine Said <musikid@outlook.com> rewrote it under Google’s
sponsorship. The new version has several improvements:

  • More configurable, for better use with other file systems.

  • Much faster, largely thanks to said configurability.

  • Better test case isolation, making failure easy to debug.

  • No longer requires root privileges for all test cases.

  • Test cases can be run in a debugger.

  • More maintainable, less duplication.

There are still a couple of lingering PRs to complete, but we expect to wrap
those up and add pjdfstest to the ports collection soon. From there, it will be
used both by /usr/tests for ZFS and UFS, and by external developers for other
file systems.

Sponsor: Google Summer of Code

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Ongoing work on LLDB multiprocess debugging support

Links:
Moritz Systems Project Description URL: https://www.moritz.systems/blog/
multiprocess-support-for-lldb/
Progress Report 1 URL: https://www.moritz.systems/blog/
implementing-non-stop-protocol-compatibility-in-lldb/
Progress Report 2 URL: https://www.moritz.systems/blog/
full-multiprocess-support-in-lldb-server/

Contact: Kamil Rytarowski <kamil@moritz.systems>
Contact: Michał Górny <mgorny@moritz.systems>

According to the upstream description, "LLDB is a next generation,
high-performance debugger. It is built as a set of reusable components which
highly leverage existing libraries in the larger LLVM Project, such as the
Clang expression parser and LLVM disassembler."

FreeBSD includes LLDB in the base system. The previous sponsored projects
improved LLDB, to make it a credible debugger for the base system, although it
still has a few limitations compared to the contemporary versions of GNU GDB.
This project started in April 2022. It aims to implement full support for
debugging multiple processes simultaneously.

At the start of the project, LLDB featured very limited support for
multiprocess debugging. Currently, the server is already able to monitor
multiple processes using the multiprocess extension to the GDB Remote Serial
Protocol. The work on implementing the client-side counterpart for this
protocol is ongoing.

Once the project is finished, LLDB will be able to trace an arbitrary number of
forked processes simultaneously (equivalent to GDB’s detach-on-fork off).

Sponsor: The FreeBSD Foundation

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

DTrace: Instruction-level dynamic tracing

Links:
Wiki article URL: https://wiki.freebsd.org/SummerOfCode2022Projects/
InstructionLevelDynamicTracing
Final code review URL: https://reviews.freebsd.org/D36851

Contact: Christos Margiolis <christos@FreeBSD.org>
Contact: Mark Johnston <markj@FreeBSD.org>

kinst is a new DTrace provider that allows for arbitrary kernel instruction
tracing.

The provider is currently implemented only for amd64, but we plan to port it to
other architectures in the future as well.

kinst probes are created on demand by libdtrace, and a probe can be created for
nearly every instruction in the kernel. Probes take the form of:

kinst:<module>:<function>:<offset>

where "module" is the kernel module containing the named function, "function"
is the kernel function to be traced, and "offset" is the offset to a specific
instruction. Omitting "offset" causes all instructions in the function to be
traced. Omitting "module" causes DTrace to search all kernel modules for the
function.

For example, to trace the second instruction in amd64_syscall(), first
determine the offset of the second instruction:

# kgdb
(kgdb) disas /r amd64_syscall
Dump of assembler code for function amd64_syscall:
   0xffffffff809256c0 <+0>:     55      push   %rbp
   0xffffffff809256c1 <+1>:     48 89 e5        mov    %rsp,%rbp
   0xffffffff809256c4 <+4>:     41 57   push   %r15

The offset is 1. Then, to trace it:

# dtrace -n 'kinst::amd64_syscall:1'

A new "regs" keyword was also added to the D language, providing read-only
access to CPU registers at the point where the probe fired. For example, to
trace the contents of the frame pointer (register %rbp on amd64) when the
kinst::amd64_syscall:1 probe fires:

# dtrace -n 'kinst::amd64_syscall:1 {printf("0x%x", regs[R_RBP]);}'

kinst works similarly to the FBT (function boundary tracing) provider in that
it places a breakpoint on the target instruction and hooks into the kernel’s
breakpoint handler. It is more powerful than FBT since it can be used to create
probes at arbitrary points within a function, rather than at function
boundaries. Because kinst has to be able to trace arbitrary instructions, it
does not emulate most of them in software but rather causes the traced thread
to execute a copy of the instruction before returning to the original code.

Planned future work includes porting kinst to additional platforms, especially
arm64 and riscv, and developing tooling that can use kinst to trace calls to
inline functions using the kernel’s debugging symbols.

Sponsor: Google, Inc. (GSOC 2022)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Kernel

Updates to kernel subsystems/features, driver support, filesystems, and more.

ENA FreeBSD Driver Update

Links:
ENA README URL: https://github.com/amzn/amzn-drivers/blob/master/kernel/fbsd/
ena/README.rst

Contact: Michal Krawczyk <mk@semihalf.com>
Contact: David Arinzon <darinzon@amazon.com>
Contact: Marcin Wojtas <mw@FreeBSD.org>

ENA (Elastic Network Adapter) is the smart NIC available in the virtualized
environment of Amazon Web Services (AWS). The ENA driver supports multiple
transmit and receive queues and can handle up to 100 Gb/s of network traffic,
depending on the instance type on which it is used.

Completed since the last update:

  • Upstream of the ENA driver v2.6.0 and v2.6.1, included:

      □ Fix for the performance degradation after reset issue on 6-gen
        instances,

      □ Fix of the false netmap assertions with KASSERT enabled,

      □ Code cleanup and style fixes,

      □ Logging improvements,

      □ Fix to the retrieval of the ENI metrics.

Sponsor: Amazon.com Inc

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

wtap(4) enhancement

Links:
Add sta, hostap and adhoc mode to wtap wlan simulator

Contact: En-Wei Wu <enweiwu@FreeBSD.org>
Contact: Li-Wen Hsu <lwhsu@FreeBSD.org>
Contact: Bjoern A. Zeeb <bz@FreeBSD.org>

wtap(4) is a net80211(4) Wi-Fi simulator introduced by Monthadar Al Jaberi <
monthadar@gmail.com> and Adrian Chadd <adrian@FreeBSD.org> in 2012. It
originally supported 802.11s mesh mode and was used for verification. During
the 2022 Google Summer of Code, En-Wei had been working on bringing sta,
hostap, adhoc and monitor modes to it. The work also covers adding basic tests
for net80211(4) with wtap(4), written in atf(7).

For more details, please check the project wiki page.

Sponsor: Google Summer of Code Sponsor: The FreeBSD Foundation

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Intel wireless towards 11ac

Links:
Intel iwlwifi status FreeBSD wiki page URL: https://wiki.freebsd.org/WiFi/
Iwlwifi

Contact: Bjoern A. Zeeb <bz@FreeBSD.org>

The ongoing project aims to support the latest Intel wireless chipsets on
FreeBSD using LinuxKPI compat code backed by native net80211 and kernel code.
In addition work is on the way to support 11n and 11ac standards in the
LinuxKPI 802.11 compat code and fill gaps for mostly 11ac in the native
net80211 wireless stack.

For the Intel iwlwifi wireless driver there were no major updates in the last
months. We updated the firmware to the latest publicly available version and
fixed some of the most visible bugs. Work is also on the way to support the D3
power saving code.

LinuxKPI compat code also got some improvements and fixes which at times were
only observable on certain generations of iwlwifi chipsets.

Changes in net80211 and LinuxKPI compat code for 11n and 11ac have little
public visibility so far in order to not break basic support. Updates to
constants based on newer 802.11 standards and other changes without
user-visible effect were merged, and functional changes will follow in the
coming months, initially hidden behind compile-time or runtime options.

Improvements and updates were largely merged back to stable/13 for the benefit
of the users tracking this branch and to help with more testing.

For the latest state of the development, please follow the freebsd-wireless
mailing list and check the wiki pages.

Sponsor: The FreeBSD Foundation

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

More wireless updates

Links:
Bjoern’s Wireless Work In Progress landing page URL: https://people.freebsd.org
/~bz/wireless/
Realtek rtw88 status FreeBSD wiki page URL: https://wiki.freebsd.org/WiFi/Rtw88
Realtek rtw89 status FreeBSD wiki page URL: https://wiki.freebsd.org/WiFi/Rtw89
MediaTek mt76 status FreeBSD wiki page URL: https://wiki.freebsd.org/WiFi/Mt76
QCA ath11k status FreeBSD wiki page URL: https://wiki.freebsd.org/WiFi/Ath11k

Contact: Bjoern A. Zeeb <bz@FreeBSD.org>

Currently development is mostly driven by Intel’s iwlwifi driver again (see
other report). As the saying goes ''each one helps the other'' so has work on
Realtek’s rtw89 driver helped find a bug in LinuxKPI bothering iwlwifi users.
For this status report the topic is mostly more drivers, which do need more
LinuxKPI support.

Various work in progress:

  • Realtek’s rtw88 PCI is in-tree as-is and after a fruitful discussion with
    Hans Petter Selasky at EuroBSDCon work on LinuxKPI USB support for the
    rtw88 USB WiFi dongles will continue.

  • Realtek’s rtw89 driver was committed to main but is not connected to the
    build yet. Scanning already works but packets are not yet passing. Having
    the driver in-tree already eased testing for users having that chipset in
    order to identify more unimplemented LinuxKPI bits (some of which will help
    the other drivers as well) and reduced work for me.

  • The next drivers to probably hit the tree will be based on MediaTek’s mt76
    driver (for 7921 and 7915) which I have compiling and started testing.

  • Based on requests I am also working on ath11k to support STA mode given
    some vendors seem to ship Laptops with those chips.

While some of this clearly benefits from work sponsored by The FreeBSD
Foundation for iwlwifi and newer standard support, a lot of this is just
free-time work. If you are interested in any of these drivers I would greatly
appreciate if some more hands would help with one or the other. This could be
regularly testing updates to main, writing documentation and updating wiki
pages, tracking PRs, trying out patches, helping with work on individual
LinuxKPI bits with or without 802.11 work, or simply debugging problems with
individual drivers and/or chipsets. If you are interested in helping with any
one of the above, please drop me an email.

For the latest state of the development, please follow the freebsd-wireless
mailing list and check the wiki pages (as soon as they exist).

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Enabling Snapshots on Filesystems Using Journaled Soft Updates

Links:
Milestone 1 Core Changes URL: https://reviews.freebsd.org/D36491

Contact: Kirk McKusick <mckusick@FreeBSD.org>

This project will make UFS/FFS filesystem snapshots available when running with
journaled soft updates.

The UFS/FFS filesystem has the ability to take snapshots. Because the taking of
snapshots was added after soft updates were written they were fully integrated
with soft updates. When journaled soft updates were added in 2010, they were
never integrated with snapshots. So snapshots cannot be used on filesystems
running with journaled soft updates.

Snapshots became less important with the support for ZFS on FreeBSD since ZFS
can take snapshots quickly and easily. However there remain two instances where
UFS snapshots are still important. The first is that they allow reliable dumps
of live filesystems which avoids possibly hours of down time. The second is
that they allow the running of background fsck. Similar to the need for scrub
in ZFS, fsck needs to be run periodically to find undetected disk failures.
Snapshots allow fsck to be run on live filesystems rather than needing to
schedule down time to run it.

This project has two milestones:

 1. enable snapshots when running with journaled soft updates and ensure that
    they can be used for doing background dumps on a live filesystem. This
    milestone should be completed by the end of 2022.

 2. extend fsck_ffs to be able to do a background check using a snapshot on a
    filesystem running with journaled soft updates. This milestone is expected
    by Q3 of 2023.

Sponsored by: The FreeBSD Foundation

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Architectures

Updating platform-specific features and bringing in support for the new
hardware platform.

FreeBSD/Firecracker

Links:
Firecracker VM

Contact: Colin Percival <cperciva@FreeBSD.org>

Firecracker is an open source "microVM" developed by Amazon Web Services; it is
designed for the needs of "serverless" compute environments and has a
particular focus on security and minimalism.

Starting in June 2022, Colin Percival has been working to port FreeBSD to run
in the Firecracker environment, with significant assistance from other FreeBSD
developers. As of this quarterly report, a set of patches are pending review
which collectively add the needed support to make FreeBSD functional in a
patched version of Firecracker.

In Q4 Colin intends to finish committing the relevant patches to FreeBSD,
release a kernel and disk image so other FreeBSD users can experiment with
Firecracker, and update and merge Firecracker patches which add PVH boot
support (used by FreeBSD).

This work has already produced "spinoff" benefits in revealing ways to speed up
the FreeBSD boot process; due to its low overhead and minimal environment,
Firecracker is an excellent context to work on this.

This work is supported by Colin’s FreeBSD/EC2 Patreon.

Sponsor: https://www.patreon.com/cperciva

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Documentation

Noteworthy changes in the documentation tree, manual pages, or new external
books/documents.

Documentation Engineering Team

Link: FreeBSD Documentation Project
Link: FreeBSD Documentation Project Primer for New Contributors
Link: Documentation Engineering Team

Contact: FreeBSD Doceng Team <doceng@FreeBSD.org>

The doceng@ team is a body to handle some of the meta-project issues associated
with the FreeBSD Documentation Project; for more information, see FreeBSD
Doceng Team Charter.

During the last quarter:

  • 0mp@ stepped down as Doceng’s Secretary, fernape@ joined as the new
    Secretary. Doceng would like to thank 0mp@ for his service.

  • eadler@'s doc bit was taken in for safekeeping per his request.

  • A git commit message template was added for the doc repository.

Items pending and in the discussion:

  • Remove outdated translations from the Website and Documentation portal.

FreeBSD’s Documentation Project Primer

The FDP was expanded with information on trademark handling.

Porter’s Handbook:

  • The documentation on porting Haskell programs was updated.

  • The move of WWW from pkg-descr to Makefile was documented.

  • Qt 6-related documentation has been added following the import of the
    library in the ports framework.

FreeBSD Translations on Weblate

Link: Translate FreeBSD on Weblate
Link: FreeBSD Weblate Instance

Q3 2022 Status

  • 12 languages

  • 148 registered users

      □ Gasol Wu joined the Chinese translation team.

      □ Alvaro Felipe Calle joined the Spanish translation team.

Languages

  • Chinese (Simplified) (zh-cn) (progress: 8%)

  • Chinese (Traditional) (zh-tw) (progress: 4%)

  • Dutch (nl) (progress: 1%)

  • French (fr) (progress: 1%)

  • German (de) (progress: 1%)

  • Indonesian (id) (progress: 1%)

  • Italian (it) (progress: 4%)

  • Norwegian (nb-no) (progress: 1%)

  • Persian (fa-ir) (progress: 3%)

  • Portuguese (pt-br) (progress: 16%)

  • Spanish (es) (progress: 15%)

  • Turkish (tr) (progress: 2%)

We want to thank everyone who contributed, translating or reviewing documents.

Please, promote this effort in your local user group, we always need more
volunteers.

FreeBSD Manual Pages Portal

Contact: Sergio Carlavilla <carlavilla@FreeBSD.org>

The Manual Pages Portal has been redesigned to use mandoc(1) for rendering. A
portal preview is available. Feedback has been collected and addressed where
possible. There are some remaining non-blocking issues. Doceng@ would like to
move forward with the migration to this new portal.

Thanks to all of those who reviewed it and provided feedback.

FreeBSD Website Revamp - WebApps working group

Contact: Sergio Carlavilla <carlavilla@FreeBSD.org>

Working group in charge of creating the new FreeBSD Documentation Portal and
redesigning the FreeBSD main website and its components. FreeBSD developers can
follow and join the working group on the FreeBSD Slack channel #wg-www21. The
work will be divided into four phases:

 1. Redesign of the Documentation Portal

    Create a new design, responsive and with global search. (Complete)

 2. Redesign of the Manual Pages on web

    Scripts to generate the HTML pages using mandoc. (Complete)

 3. Redesign of the Ports page on web

    Ports scripts to create an applications portal. (Work in progress)

 4. Redesign of the FreeBSD main website

    New design, responsive and dark theme. (Not started)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Ports

Changes affecting the Ports Collection, whether sweeping changes that touch
most of the tree, or individual ports themselves.

Calendar-data: License added

Links
GitHub calendar-data repository URL: https://github.com/freebsd/calendar-data

Contact: Stefan Eßer <se@FreeBSD.org>
Contact: Lorenzo Salvadore <salvadore@FreeBSD.org>
Contact: Warner Losh <imp@FreeBSD.org>

The port deskutils/calendar-data contains calendar files for the BSD calendar
program and is maintained by se@. The data for this port lives in a GitHub
repository, which at the moment is maintained mainly by salvadore@.

About two years ago, the calendar files in the base repository were removed
from there and a new repository was created on GitHub; see also this
Phabricator review about the creation of the associated port. This improvement
allows calendar files to be updated independently from the base system.

Unfortunately, when the repository was created, it was forgotten to add a
license to it. The issue has been solved this quarter with this pull request
submitted by salvadore@ and merged by imp@. Since the data originally came from
the src repository, the same licence applies. If in the past you have
contributed to the calendar files with different licensing assumptions, please
inform us so that we can license your contributions accordingly or remove them.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

KDE on FreeBSD

Links:
KDE FreeBSD URL: https://freebsd.kde.org/
KDE Community FreeBSD URL: https://community.kde.org/FreeBSD

Contact: Adriaan de Groot <kde@FreeBSD.org>

The KDE on FreeBSD project packages the software from the KDE Community, along
with dependencies and related software, for the FreeBSD ports tree. The
software includes a full desktop environment called KDE Plasma (for both X11
and Wayland) and hundreds of applications that can be used on any FreeBSD
machine.

The KDE team (kde@) is part of desktop@ and x11@, building the software stack
to make FreeBSD beautiful and usable as a daily-driver graphics-based desktop
machine. The notes below describe mostly ports for KDE, but also include items
that are important for the entire desktop stack.

Qt6 Landed

The big news in the KDE ports is not directly KDE-related. Qt6 has landed,
which prepares us for the next generation of Qt-based applications.

It is now possible to have USES=qt:6 to select the new Qt version. Some ports
have been flavorized to make use of the new version.

KDE itself is not affected: the upstream work on KDE Frameworks for Qt6 is not
yet completed. Most of the KDE Frameworks will compile with Qt6, but that is
not important for FreeBSD ports yet. With devel/qt6 you get Qt 6.4.0, released
at the end of the quarter.

KDE Stack

KDE Gear releases happen every quarter, KDE Plasma updates once a month, and
KDE Frameworks have a new release every month as well. These (large) updates
land shortly after their upstream release and are not listed separately.

  • KDE Frameworks 5 is now at version 5.98 (latest monthly release from
    September 2022).

  • KDE Gear is now version 22.08.1 (update for September 2022).

  • KDE Plasma is now version 5.24.6 (update for July 2022).

Note that KDE Plasma 5.25 has been released upstream, but is waiting on fixes
before it can land in the ports tree (for example, this KActivityManager bug in
KDE’s bug-tracker).

Related Ports

  • accessibility/qt5-speech now supports multiple backends, as well as
    no-backends, for speech synthesis.

  • devel/cmake was reorganized, so that devel/cmake is now a metaport that
    installs devel/cmake-core and the rest of the CMake suite. (Thanks to
    diizzy@) The CMake ports were also updated to version 3.24, with attendant
    changes in ports all over the tree.

  • net/qt5-network has improved compatibility with libressl.

  • x11/plasma-wayland-protocols was updated in advance of KDE Plasma Desktop
    updates in the next quarter.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

GCC: New maintainer, GCC 12.2 and more

Links:
GCC Project URL: https://gcc.gnu.org
GCC 11 release series URL: https://gcc.gnu.org/gcc-11/
GCC 12 release series URL: https://gcc.gnu.org/gcc-12/

Contact: <toolchain@FreeBSD.org>
Contact: Lorenzo Salvadore <salvadore@FreeBSD.org>

  • salvadore@ adopted all existing ports corresponding to supported versions
    of gcc, namely: lang/gcc10, lang/gcc11, lang/gcc11-devel, lang/gcc12, lang/
    gcc12-devel and lang/gcc13-devel. At the moment -devel ports are updated
    weekly, unless a build failure makes it impossible. Of course, in the
    latter case, the build failure is fixed and/or reported upstream as soon as
    possible.

  • GCC 12.2 has been released. Traditionally, FreeBSD waits for the release of
    the second minor version of GCC to use it as default GCC version, so that
    most of the software needing to be compiled with GCC has already been
    ported to the latest major version. Thus, work has started to update the
    default GCC version to version 12. Thank you very much to antoine@ who has
    already run the first exp-run and to all the contributors, maintainers and
    committers involved in the process. https://bugs.freebsd.org/bugzilla/
    show_bug.cgi?id&59548

  • Discussion about LTO keeps going with many different points of view. If
    interested, you can read the latest contributions to the topic: lang/gcc11:
    Needs build time warning for /tmp consumption and lang/gcc11: build gets
    stuck. Reminder: LTO_BOOTSTRAP is an option enabled by default. If you
    build the port on your machine and its resources consumption is not
    acceptable, disabling this option will get you a lighter compilation.

  • jbeich@ submitted a patch to expose non-default -stdlib=libc++ support,
    which has been successfully committed to all relevant ports (gcc >= 11).
    link: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id&5962

  • diizzy@ refreshed the mirrors list in the MASTER_SITE_GCC variables, also
    removing ftp mirrors. The main GCC site is used as fallback. link: https://
    reviews.freebsd.org/D36372

  • Help is still needed with these three changes to work through with upstream
    GCC (requires expertise with the GCC sources and upstream, not with the
    ports framework):

      □ upstreaming lang/gcc11/patch-gets-no-more

      □ upstreaming lang/gcc11/patch-arm-unwind-cxx-support

      □ https://bugs.freebsd.org/bugzilla/show_bug.cgi?id%6874

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

sysutils/lsof major upgrade

Link:
lsof project repo URL: https://github.com/lsof-org/lsof

Contact:
Larry Rosenman <ler@FreeBSD.org>

sysutils/lsof had a major upgrade to no longer look in /dev/kmem for data, and
to use the userland API. This took a long time to hit the tree, but is finally
done. It fixes lsof(8) to work with ZFS again for the first time since
13.0-RELEASE.

This will make maintenance much easier going forward.

To the kernel folks: if you make changes that break lsof, please submit a
GitHub pull request to https://github.com/lsof-org/lsof. Please test any
changes to the interfaces that lsof uses and make sure they still work. These
all should be userland interfaces now, but please test.

My thanks to Warner Losh <imp@FreeBSD.org>, Mateusz Guzik <mjg@FreeBSD.org>,
and Ed Maste <emaste@FreeBSD.org> for help getting this major change landed.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Third Party Projects

Many projects build upon FreeBSD or incorporate components of FreeBSD into
their project. As these projects may be of interest to the broader FreeBSD
community, we sometimes include brief updates submitted by these projects in
our quarterly report. The FreeBSD project makes no representation as to the
accuracy or veracity of any claims in these submissions.

Containers and FreeBSD: Pot, Potluck and Potman

Links:
Pot organization on github URL: https://github.com/bsdpot

Contact: Luca Pizzamiglio (Pot) <pizzamig@freebsd.org>
Contact: Stephan Lichtenauer (Potluck) <sl@honeyguide.eu>
Contact: Michael Gmelin (Potman) <grembo@freebsd.org>

Pot is a jail management tool that also supports orchestration through Nomad.

During the last quarter, pot 0.15.3 was released. It contains a number of
improvements like mount-out to remove or unmount a previously mount-in folder
or filesystem, signal and exec commands, better jail lifecycle handling, and
many bug fixes.

A new version of the Nomad driver, nomad-pot-driver 0.9.0, was also released
with signal and exec support and stability fixes.

Potluck aims to be to FreeBSD and pot what Dockerhub is to Linux and Docker: a
repository of pot flavours and complete container images for usage with pot and
in many cases Nomad.

Since the last status report, many changes were committed, including many fixes
and improvements to core images like grafana, postgresql-patroni or loki.
Additionally, all images have been rebuilt for FreeBSD 13.1 and 12.3 and to
include the current quarterly versions of the packages being used.

Last not least, Luca held the pot implementation and ecosystem talk How far a
naive FreeBSD container implementation can go at EuroBSDCon 2022.

As always, feedback and patches are welcome.