Index: head/en_US.ISO8859-1/htdocs/news/status/report-2016-01-2016-03.xml
===================================================================
--- head/en_US.ISO8859-1/htdocs/news/status/report-2016-01-2016-03.xml (revision 48751)
+++ head/en_US.ISO8859-1/htdocs/news/status/report-2016-01-2016-03.xml (revision 48752)
@@ -1,2583 +1,2586 @@
The first quarter of 2016 showed that FreeBSD retains a strong
sense of ipseity. Improvements were pervasive, lending
credence to the concept of meliorism. Panegyrics are relatively scarce, but not for lack of need.
Perhaps this missive might serve that function in some
infinitesimal way. There was propagation, reformation, randomization,
accumulation, emulation, transmogrification, debuggenation, and
metaphrasal during this quarter. In the financioartistic arena, pork snout futures narrowly
edged out pointilism, while parietal art remained fixed. In all, a discomfiture of abundance. View the rubrics below,
and marvel at their profusion and magnitude! Marvel! —Warren Block
Please submit status reports for the second quarter of 2016 by July 7. A thesaurus will be provided for submitters who do not have one of their own. We will need them back afterwards, preferably with no new teeth marks on the covers. Thank you!
In February, Program Verification Systems used their PVS-Studio tool to run a static analysis of the &os; kernel. A Phabricator review was created to allow developers to share comments on the results. A number of bugs ranging from trivial typos to redundant code to important logic errors were found and fixed. Some results were false positives. Several of these were addressed by changing code that misled the static analyzer and could also mislead a human reader.
The cooperation that Program Verification Systems offers to open-source projects like &os; benefits everyone. We thank them for sharing this analysis and their insights with us.
Federico Caminiti created an entirely new Spanish translation of the 31,000-word FAQ with editorial help from Carlos J Puga Medina.
This landmark accomplishment marks the first use of the new PO translation system to translate an entire book!
Ruey-Cherng Yu has begun an ambitious Traditional Chinese (zh_TW) translation of the 64,000-word Porter's Handbook. About half of the strings in the book have been translated so far.
Help add and improve translations of &os; documents into Spanish: start of freebsd-translators thread.
Help add and improve translations of &os; documents into Chinese or other languages.
A new -manage-gids option was added to the nfsuserd daemon. This option tells the NFS server to use the list of groups for a uid on the server and not the list of groups in the NFS RPC request. Use of this option avoids the 16 group limit for NFS RPCs using AUTH_SYS (the default).
Work is ongoing with respect to development of pNFS support for the NFS server using GlusterFS as a back end. This will be a long-term project with the eventual goal of allowing the NFS server to scale beyond a single server system. Hopefully it will be available for testing in late Spring 2016. pNFS allows an NFSv4.1 client to do reads/writes directly to a data server and not the NFS server.
The pNFS server will be in need of testing during development or it will never progress to a near-production status. I hope to have code available in &os;'s Subversion project branch for testing in late spring 2016.
This project aims to enable the use of the Signal Processing Engine found in the NXP/Freescale e500v2 SoC. The SPE uses opcodes overlapping with those of Altivec, so they are mutually exclusive. Additionally, the e500v2 does not have a traditional FPU, and instead uses the SPE for all floating point operations (or emulation, as is currently done). Combined with the fact that the SPE ABI is incompatible with the traditional ABI, a new MACHINE_ARCH has been created to address these incompatibilities.
A project branch has been created for the work. A powerpcspe kernel boots on the RouterBoard RB800, and the base utilities run properly.
Potentially optimizing setjmp/longjmp to not use SPE unless it has already been enabled. This would save the kernel switch for processes that do not otherwise use the SPE. This is a low priority task which may not be completed.
The major news for this quarter is the update of the i915 driver in the kernel! The driver now matches Linux 3.8.13, so it includes initial Haswell support. Linux 3.8 is already three years old, but work continues to upgrade DRM further. In particular, work commenced to move to using the linuxkpi compatibility.
In the Ports tree, Mesa was updated to 11.1.2. The next minor release, 11.2.0, is ready for testing in our development tree. We also updated libclc to 0.2.0.20151006, a library used by Mesa to provide OpenCL support. Upstream patches were added to beignet so all these ports now use the same LLVM version.
We attended FOSDEM 2016 in Brussels. Jean-Sébastien Pédron gave a talk to explain the work of the graphics team and show how people can contribute. It was well received and the presentation was followed by interesting discussions. FOSDEM was also a nice occasion to meet and talk again to the nice upstream developers of the graphics stack.
For the first year, we added two ideas for GSoC 2016: one for a kernel task, one to redesign libdevq. Six students submitted proposals for those ideas; that was unexpected! We now need to decide which one we want to mentor and the choice is difficult.
Our blog has moved to a new location (linked above).
See the "Graphics" wiki page for up-to-date information.
Allwinner SoCs are used in multiple hobbyist devboards and single-board computers. Recently, support for these SoCs has received a lot of updates
Task done during first quarter:
Ongoing tasks:
SPI driver
LCD Support
Any unsupported hardware device that might be of interest.
Two new FreeBSD Mastery books are out:
FreeBSD Mastery: Specialty Filesystems by Michael W. Lucas, and the long-awaited FreeBSD Mastery: Advanced ZFS by Lucas and Allan Jude.
Both books are available in print and ebook formats now.
A bundle containing all the FreeBSD Mastery books is available at a discount from tiltedwindmillpress.com.
Write more books!
Since the last report, &os; support for ThunderX has been significantly improved and stabilized. Semihalf contributions include the following items:
The driver supports all available Ethernet connections (1, 10, 30 Gbps) and the system can saturate a 10 Gbps link (on Tx) using 4 CPU cores.
This work is integrated to &os; HEAD on an on-going basis.
Add support for multi-Queue Set operation in VNIC.
The new thread target that directly uses ptrace(2) was committed upstream and included in GDB 7.11. The port was also updated to GDB 7.11.
Figure out why the powerpc kgdb targets are not able to unwind the stack past the initial frame.
Add support for more platforms (arm, mips, aarch64) to upstream gdb for both userland and kgdb.
Add support for debugging powerpc vector registers.
Add support for catching system calls.
Add support for $_siginfo.
Add support for ELF auxv data via info auxv.
Implement info os commands.
Implement gdbserver for FreeBSD.
A new implementation for support of native PCI-express +
A new implementation of support for native PCI-express hotplug is present at the URL above. Much of the new code lives in the PCI-PCI bridge driver to handle hotplug events and manage the PCI-express slot registers. Additional changes in the branch include adding new rescan and - delete commands to devctl(8) as well as + delete commands to devctl(8), as well as support for rescanning PCI busses.
The current implementation has been tested on systems with - ExpressCard but could use additional testing, especially on + ExpressCard slots but could use additional testing, especially on systems with other PCI-express HotPlug features such as mechanical latches, attention buttons, indicators, and so on.
Split branch into separate logical changes as commit +
Split the branch into separate logical changes as commit candidates.
Additional testing.
The KDE on FreeBSD team focuses on packaging and making sure - that the experience of KDE and Qt on FreeBSD is as good as +
The KDE on &os; team focuses on packaging and making sure + that the experience of KDE and Qt on &os; is as good as possible.
While the list of updates is shorter than that for the previous quarter, the team remained busy and work on KDE Frameworks 5 and Plasma 5 continues.
Tobias Berner, who has been driving our KDE Frameworks 5 and Plasma 5 efforts from the beginning, received a KDE commit bit, and has been putting it to good use by upstreaming FreeBSD across several KDE repositories. Another team highlight in the beginning of this year is the (re)addition of another committer to our experimental repository: Adriaan de Groot, a longtime KDE contributor who also used to work on KDE - and FreeBSD almost a decade ago when our team was first + and &os; almost a decade ago when our team was first formed. Welcome back, Ade!
The following big updates were landed in the ports tree this quarter. In many cases, we have also contributed patches to the upstream projects.
Work on Qt 5.6.0 is under way in our experimental repositories. At - the time of writing, it also contains KDE Frameworks 5.20.0, + the time of this writing, it also contains KDE Frameworks 5.20.0, Plasma 5.6.1, and KDE Applications 16.03.80.
Users interested in testing those ports are encouraged to follow the instructions in our website and report their results to our mailing list. Qt5 5.6.0 is in our qt-5.6 branch, and Plasma 5 and the rest is in the plasma5 branch.
Land the KDE Frameworks 5 and Plasma 5 ports to the tree.
Commit the DigiKam 4.14.0 update currently being worked on in our experimental repository.
POSIX specifies several kinds of pthread locks. For this report, the private and process-shared variants are considered. Private locks can be used only by the threads of - the same process, which share the address space. + the same process, which share a single common address space. Process-shared locks can be used by threads from any process, assuming the process can map the lock memory into its address space.
Our libthr, the library implementing the POSIX threads and locking operations, uses a pointer as the internal representation behind a lock. The pointer contains the address of the actual structure carrying the lock. This has unfortunate consequences for implementing the PTHREAD_PROCESS_SHARED attribute for locks, since - really only the pointer is shared when the lock is mapped into + really only the pointer is shared when a lock is mapped into distinct address spaces.
A common opinion was that we have no choice but to break the libthr Application Binary Interface (ABI) by changing the lock types to be the actual lock structures (and padding for future ABI extension). This is very painful for users, as our previous experience with non-versioned libc and libc_r has shown.
Instead, I proposed and implemented a scheme where process-shared locks can be implemented without breaking the - ABI. The lock memory is used as a key into the system-global - hash of the shared memory objects (off-pages), which carry the - real lock structures.
+ ABI. The lock memory is used as a key into a system-global + hash of shared memory objects (off-pages), which contain the + actual lock structures. -New umtx operations to create or look up the shared - object, by the memory key were added. libthr is +
New umtx operations to create or look up a shared + object by memory key were added. libthr is modified to look up the object and use it for shared locks, instead of using malloc() as for private locks.
The pointer value in the user-visible lock type contains a canary for shared locks. libthr detects the canary and switches into the shared-lock mode.
The proposal of inlining the lock structures, besides the drawbacks of breaking ABI, has its merits. Most important, - the inlining avoids the need of indirection. Another - important advantage over the off-page page approach is that no + the inlining avoids the need for indirection. Another + important advantage over the off-page approach is that no off-page object needs to be maintained, and the lifecycle of the shared lock naturally finishes with the destruction of the - shared memory without explicit cleanup. Right now, off-pages + shared memory, without need for explicit cleanup. Right now, off-pages hook into vm object termination to avoid leakage, but - long-livedness of the vnode vm object prolonges the off-page + long-livedness of the vnode vm object prolonges the off-page's existence for shared locks backed by files, however unlikely they may be.
libthr with inlined locks became informally known as the libthr2 project, since it is better to change the library name than just bumping the library version. rtld should ensure that libthr and libthr2 are not simultaneously loaded into a single address space.
Implement robust mutexes.
Evaluate and implement libthr2.
-
This quarter, we:
+Ruby on Rails is the base for most of the rubygems in the - portstree. Currently version 3.2 and 4.2 coexists, but since - Rails 3.2 runs out of support, the time has come to + Ports Collection. Currently, versions 3.2 and 4.2 coexist, but since + Rails 3.2 is running out of support, the time has come to switch.
There is an ongoing progress to remove Rails 3.2 from the ports tree. While many gems already work with the new - version, there are some exceptions. For example www/redmine - needs a big update (which is currently tested) because it - depends on gems which therefore depends on Rails 3.2.
+ version, there are some exceptions. For example, www/redmine + needs a big update (which is currently being tested) because it + depends on gems that depends on Rails 3.2. -If you want to help porting or testing, feel free to contact +
If you want to help with porting or testing, feel free to contact me or the mailinglist ruby@FreeBSD.org.
After nearly a year of work on this project, GitLab 8.5.5 was committed into the ports tree. A big thanks to the enormous - number of people involved! Since GitLab is a fast moving + number of people involved! Since GitLab is a fast-moving project, there is also ongoing work to stay in sync with upstream. Have fun!
Build improvements for buildworld on head continue. +
Build improvements for buildworld on &os; head continue. Some highlights include:
Opportunistically skipping the bootstrap compiler phase of buildworld.
Skipping the make obj tree walk.
Enabling WITH_META_MODE in buildworld to provide a reliable incremental build using filemon(4) and bmake's .MAKE.MODE=meta. This should not be confused with WITH_DIRDEPS_BUILD which previously was named WITH_META_MODE and is a drastically different build system presented at BSDCan 2014 by Simon Gerraty.
Filemon is a kernel module for tracing which files a command creates, reads, writes, or executes. It allows tracking build dependencies in combination with bmake's meta mode. bmake stores filemon's output in a .meta file along with the build command and later uses this to trigger a rebuild of the target if any of the files referenced - are missing or modified or if the build command changes. It - provides the same functionality as compiler -MF flags + are missing or modified, or if the build command changes. It + provides the same functionality as the compiler's -MF flag, but for everything. It will be critical for buildworld's WITH_META_MODE (which is the normal buildworld but - just using filemon) to provide a reliable incremental build - without even the need of .depend files or compiler + only using filemon) to provide a reliable incremental build + without even the need for .depend files or compiler -MF flags. This allows -DNO_CLEAN to work all of the time.
Filemon on -HEAD was improved for stability and performance over this quarter. It no longer causes every syscall it hooks - into to loop on processes looking for a matching filemon + into to loop over processes looking for a matching filemon struct. It now just attaches directly to the struct proc with its own pointer. This improves performance by reducing lock contention during a build. Much other work went into improving error handling and other stability issues in the module as well.
All of this work was done by Bryan Drewery, sponsored by EMC, but much help and identification of bugs was provided by Mateusz Guzik.
Improving credential handling
+Improve credential handling.
Improving EVENTHANDLER performance
+Improve EVENTHANDLER performance.
Possibly providing a framework for syscallenter/syscallret +
Possibly provide a framework for syscallenter/syscallret hooking to avoid the need to hook syscalls as Filemon does.
A continuation of the Book-E QorIQ support enhancements by - Semihalf dating back to 2012.
+This project is a continuation of the Book-E QorIQ support + enhancements by Semihalf dating back to 2012.
-The AmigaOne X5000 series of AmigaOS compatible systems uses +
The AmigaOne X5000 series of AmigaOS-compatible systems uses the Freescale QorIQ series of SoCs for a desktop-class form factor. The work here entails adding support for the e5500 core itself, in addition to support for the SoC peripherals.
-Currently most code is checked in to enable basic support: - dTSEC (ethernet), core support (e500mc, e5500). As part of +
Currently, most of the code to enable basic support is checked + in: dTSEC (ethernet), core support (e500mc, e5500). As part of this, rman, the kernel resource manager, was enhanced - to use uintmax_t for resources. This allows devices - to be physically above the 4GB boundary on 32-bit systems. - With a statically compiled device tree, it boots to multiuser - mode with nfsroot, and can be used as normal (serial and SSH - logins once configured).
- + to use uintmax_t for resources. This allows devices to + be physically above the 4GB boundary on 32-bit systems. With a + statically compiled device tree, it boots to multiuser mode with + nfsroot, and can be used as normal (serial and SSH logins once + configured).