man-pages-6.17 released
Alejandro Colomar
maintainerGidday!
I'm proud to announce:
man-pages-6.17 - manual pages for GNU+Linux
Tarball download:
<https://www.kernel.org/pub/linux/docs/man-pages/>
Git repository:
<https://git.kernel.org/cgit/docs/man-pages/man-pages.git/>
Online PDF book:
<https://www.kernel.org/pub/linux/docs/man-pages/book/>
Thanks to all the contributors to this release (in BCC)! And thanks to our sponsors!
$ cat SPONSORS; Google <https://opensource.google/> Hudson River Trading <https://www.hudsonrivertrading.com/> Meta <https://www.meta.com/>
Regarding sponsorship, please read
<https://lore.kernel.org/linux-man/aYprOnLo5WSP8Ljh@devuan/T/#u>.
Maintenance is guaranteed until 2026-10-31, but we need more money to continue past that date. And that's only counting one maintainer, but I really would like to have a couple of co-maintainers. The bus factor of this project is quite worrying, given the importance of our documentation.
You are receiving this message either because:
a) (BCC) You contributed to this release.
b) You are subscribed to <[email protected]>, <[email protected]>, or <[email protected]>.
c) (BCC) I have information (possibly inaccurate) that you are the maintainer of a translation of the manual pages, or are the maintainer of the manual pages set in a particular distribution, or have expressed interest in helping with man-pages maintenance, or have otherwise expressed interest in being notified about man-pages releases.
If you don't want to receive such messages from me, or you know of some other translator or maintainer who may want to receive such notifications, send me a message. If you want to be added to this list (which I store encrypted), send me a message.
Special shout out to Seth McDonald, who authored a large part (1/5) of the commits in this release!
$ git shortlog -s man-pages-6.16..HEAD | sort | tail -n3 4 Mark Harris 125 Seth McDonald 474 Alejandro Colomar
He's been updating the HISTORY and STANDARDS sections of manual pages, to document with precision conformance to new standards, and also the history of APIs in old standards and historic systems. These sections are now much more useful thanks to his contributions. And we have only started with these improvements.
==================== NEWS =========================================
This release adds several new programs. We recommend that distributions package all of our src/bin/ scripts in a separate binary package, called something like manpages-utils (this happens to be the name I'd suggest specifically for Debian, for consistency with manpages and manpages-dev).
- src/bin/grepc - src/bin/grepc_c - src/bin/grepc_mk - src/bin/mansectf
The grepc(1) program is something that originated in this project, as it helped me find code quickly in glibc and the Linux kernel. However, I've found it incredibly useful outside of this project. I'll take some space to announce it, as it's much more than just a tool for writing manual pages, and I expect it to be useful to most --if not all-- C programmers.
It is a command-line tool that finds C source code (for example, a function definition) in arbitrary projects. It doesn't use any indexing mechanism (unlike ctags and similar tools). This means that it can be used right after cloning some repository, without having to first generate an index.
Moreover, it works as a Unix filter: it reads stdin (or files, if specified) and prints to stdout. This means it can be combined with arbitrary tools.
Here's an example of use that I'm using quite regularly, and which I find very useful. The following command diffs the implementation of creat(2) between two arbitrary version of the Linux kernel (I chose to compare v5.0 with git HEAD):
$ diff -U10 \
<(git show v5.0:fs/open.c | grepc -h -tfld creat) \
<(grepc -h -tfld creat fs/open.c);
--- /dev/fd/63 2026-02-11 18:35:33.069409927 +0100
+++ /dev/fd/62 2026-02-11 18:35:33.073409962 +0100
@@ -1,4 +1,8 @@
SYSCALL_DEFINE2(creat, const char __user *, pathname, umode_t, mode)
{
- return ksys_open(pathname, O_CREAT | O_WRONLY | O_TRUNC, mode);
+ int flags = O_CREAT | O_WRONLY | O_TRUNC;
+
+ if (force_o_largefile())
+ flags |= O_LARGEFILE;
+ return do_sys_open(AT_FDCWD, pathname, flags, mode);
}And the command is quite fast. Within the Linux kernel, it takes just a few seconds to find anything (in this example, the creat(2) function):
$ time grepc -tf creat .
./include/linux/syscalls.h:asmlinkage long sys_creat(const char __user *pathname, umode_t mode);
./fs/open.c:SYSCALL_DEFINE2(creat, const char __user *, pathname, umode_t, mode)
{
int flags = O_CREAT | O_WRONLY | O_TRUNC;if (force_o_largefile()) flags |= O_LARGEFILE; return do_sys_open(AT_FDCWD, pathname, flags, mode); } real 0m10.549s user 0m11.126s sys 0m0.454s
But most projects are much smaller, so it usually takes under a second to search stuff in not-so-huge projects. It's PCRE2-based, so in the end, just a dandified grep(1) --actually, pcre2grep(1)--.
==================== Linux Software Map ===========================
Begin4
Title: Linux man-pages
Version: 6.17
Entered-date: 2026-02-11
Description: Manual pages for GNU+Linux. This package contains
manual pages for sections 2, 3, 4, 5, and 7, and
subsections of those. Only a few pages are provided in
sections 1, 6, and 8, and none in 9.
Keywords: man pages
Maintained-by: Alejandro Colomar <[email protected]>
Primary-site: http://www.kernel.org/pub/linux/docs/man-pages
2.7M man-pages-6.17.tar.gzCopying-policy: several; the pages are all freely distributable as long as
nroff source is provided
End
==================== Changes in man-pages-6.17 ====================
Released: 2026-02-11, Aldaya
New and rewritten pages
-----------------------
man1/
grepc.1 grepc_c.1 mansectf.1
man2const/
F_GETDELEG.2const IPPROTO_IP.2const (previously, ip(7)) IPPROTO_IPV6.2const (previously, ipv6(7)) IPV6_ADDRFORM.2const (previously, ipv6(7)) IPV6_ADD_MEMBERSHIP.2const (previously, ipv6(7)) IPV6_MTU.2const (previously, ipv6(7)) IPV6_MTU_DISCOVER.2const (previously, ipv6(7)) IPV6_MULTICAST_HOPS.2const (previously, ipv6(7)) IPV6_MULTICAST_IF.2const (previously, ipv6(7)) IPV6_MULTICAST_LOOP.2const (previously, ipv6(7)) IPV6_RECVERR.2const (previously, ipv6(7)) IPV6_RECVPKTINFO.2const (previously, ipv6(7)) IPV6_ROUTER_ALERT.2const (previously, ipv6(7)) IPV6_RTHDR.2const (previously, ipv6(7)) IPV6_UNICAST_HOPS.2const (previously, ipv6(7)) IPV6_V6ONLY.2const (previously, ipv6(7)) IP_ADD_MEMBERSHIP.2constA (previously, ip(7)) IP_ADD_SOURCE_MEMBERSHIP.2const (previously, ip(7)) IP_BIND_ADDRESS_NO_PORT.2const (previously, ip(7)) IP_BLOCK_SOURCE.2const (previously, ip(7)) IP_DROP_MEMBERSHIP.2const (previously, ip(7)) IP_DROP_SOURCE_MEMBERSHIP.2const (previously, ip(7)) IP_FREEBIND.2const (previously, ip(7)) IP_HDRINCL.2const (previously, ip(7)) IP_LOCAL_PORT_RANGE.2const (previously, ip(7)) IP_MSFILTER.2const (previously, ip(7)) IP_MTU.2const (previously, ip(7)) IP_MTU_DISCOVER.2const (previously, ip(7)) IP_MULTICAST_ALL.2const (previously, ip(7)) IP_MULTICAST_IF.2const (previously, ip(7)) IP_MULTICAST_LOOP.2const (previously, ip(7)) IP_MULTICAST_TTL.2const (previously, ip(7)) IP_NODEFRAG.2const (previously, ip(7)) IP_OPTIONS.2const (previously, ip(7)) IP_PASSSEC.2const (previously, ip(7)) IP_PKTINFO.2const (previously, ip(7)) IP_RECVERR.2const (previously, ip(7)) IP_RECVOPTS.2const (previously, ip(7)) IP_RECVORIGDSTADDR.2const (previously, ip(7)) IP_RECVTOS.2const (previously, ip(7)) IP_RECVTTL.2const (previously, ip(7)) IP_RETOPTS.2const (previously, ip(7)) IP_ROUTER_ALERT.2const (previously, ip(7)) IP_TOS.2const (previously, ip(7)) IP_TRANSPARENT.2const (previously, ip(7)) IP_TTL.2const (previously, ip(7)) IP_UNBLOCK_SOURCE.2const (previously, ip(7)) SO_PEERSEC.2const (previously, ip(7)) in_pktinfo.2type (previously, ip(7)) ip_mreq_source.2type (previously, ip(7)) ip_mreqn.2type (previously, ip(7))
man3/
_Maxof.3 aligned_alloc.3 (previously, posix_memalign(3)) memalign.3 (previously, posix_memalign(3)) getopt.3 (split into many pages) getopt_long.3 (previously, getopt(3)) getopt_long_only.3 (previously, getopt(3)) snprintf.3 (previously, printf(3)) sprintf.3 (previously, printf(3)) posix_memalign.3 (split into many pages) printf.3 (split into many pages) pvalloc.3 (previously, posix_memalign(3)) valloc.3 (previously, posix_memalign(3))
man3attr/
gnu::warning.3attr
man5/
proc_sys_net_ipv4.5 (previously, ip(7))
man7/
ip.7 (split into many pages) ipv6.7 (split into many pages)
Newly documented interfaces in existing pages
---------------------------------------------
man2/
clone.2 E2BIG madvise.2 PR_THP_DISABLE_EXCEPT_ADVISED mount.2 ENOSPC ptrace.2 PTRACE_SET_SYSCALL_INFO struct ptrace_syscall_info::reserved struct ptrace_syscall_info::flags
man2const/
PR_GET_THP_DISABLE.2const
PR_SET_THP_DISABLE.2const
PR_THP_DISABLE_EXCEPT_ADVISED
man3/
timespec_get.3
TIME_MONOTONIC
TIME_ACTIVE
TIME_THREAD_ACTIVE
man7/
feature_test_macros.7 _ISOC23_SOURCE _ISOC2X_SOURCE operator.7 _Maxof(3) _Minof(3) rtnetlink.7 .ifi_change standards.7 K&R Unix/TS 4 C94, C95, C96, C17, C23 POSIX.1-2004, POSIX.1-2013, POSIX.1-2024 SUSv5
New and changed links
---------------------
man2const/
F_SETDELEG.2const (F_GETDELEG(2const)) IPV6_AUTHHDR.2const (IPV6_RTHDR(2const)) IPV6_DROP_MEMBERSHIP.2const (IPV6_ADD_MEMBERSHIP(2const)) IPV6_DSTOPTS.2const (IPV6_RTHDR(2const)) IPV6_FLOWINFO.2const (IPV6_RTHDR(2const)) IPV6_HOPLIMIT.2const (IPV6_RTHDR(2const)) IPV6_HOPOPTS.2const (IPV6_RTHDR(2const))
man2type/
ip_mreq.2type (ip_mreqn(2type))
man3/
_Countof.3 (countof(3)) _Minof.3 (_Maxof(3)) vsnprintf.3 (snprintf(3)) vsprintf.3 (sprintf(3))
Global changes
--------------
- CONSTRIBUTING.d/
- Add guidelines banning AI for contributing. - Document guidelines about In-Reply-To: header field. - Document guidelines about Fixes: trailed field.
- README.d/
- Document dependencies of the project.
- share/mk/
- Add help-list-* targets.
- man/
- HISTORY, STANDARDS
- Document new and old standards with precision.
- src/bin/
- grepc, grepc_c, grepc_mk
Add new scripts to inspect C source code.
- */
- Restore some old copyright notices.
Changes to individual files
---------------------------
The manual pages and other files in the repository have been improved beyond what this changelog covers. To learn more about changes applied to individual pages, or the authors of changes, use git(1).
Signature · 1 line
<https://www.alejandro-colomar.es>
Alejandro Colomar
maintainerHi,
On 2026-02-11T18:57:19+0100, Alejandro Colomar wrote:
[...]
Quoted 5 lines
Global changes
--------------- CONSTRIBUTING.d/
- Add guidelines banning AI for contributing.
Oh, and possibly overlooked in the release announcement: no AI.
We have a strong policy regarding use of AI in the project. See <CONTRIBUTING.d/ai> for more details, but in short: no AI.
Quoted 2 lines
- Document guidelines about In-Reply-To: header field.
- Document guidelines about Fixes: trailed field.
And this is also interesting to other projects. We "standardized"
a unambiguous machine-parseable format for 'Fixes:' trailer fields that
is resistant to collisions. See <CONTRIBUTING.d/patches/trailer> and <CONTRIBUTING.d/git>, and also the commita8aa0eaf6bad (2026-02-08; "CONTRIBUTING.d/: Document format of 'Fixes:' trailer fields"), which address the concerns from <https://lwn.net/Articles/1003797/>.
Cheers,
Alex
Quoted 23 lines
(quoted diff) +0
-5- README.d/ - Document dependencies of the project. - share/mk/ - Add help-list-* targets. - man/ - HISTORY, STANDARDS - Document new and old standards with precision. - src/bin/ - grepc, grepc_c, grepc_mk Add new scripts to inspect C source code. - */ - Restore some old copyright notices.Changes to individual files
---------------------------The manual pages and other files in the repository have been improved beyond what this changelog covers. To learn more about changes applied to individual pages, or the authors of changes, use git(1).
Signature · 1 line
<https://www.alejandro-colomar.es>
Signature · 1 line
<https://www.alejandro-colomar.es>
Alejandro Colomar
maintainer-utils binary package (was: man-pages-6.17 released)
In reply to Alejandro ColomarHi,
Quoted 5 lines · Alejandro Colomar
Gidday!
I'm proud to announce:
man-pages-6.17 - manual pages for GNU+Linux
[...]
Review
Quoted 12 lines
==================== NEWS =========================================
This release adds several new programs. We recommend that distributions package all of our src/bin/ scripts in a separate binary package, called something like manpages-utils (this happens to be the name I'd suggest specifically for Debian, for consistency with manpages and manpages-dev).
(quoted diff) +0
-4- src/bin/grepc - src/bin/grepc_c - src/bin/grepc_mk - src/bin/mansectf
I have some updates from distros:
- Arch added the package manpages-utils immediately.
- Debian has now added the binary package manpages-utils in 6.17-2.
Have a lovely day!
Alex
Signature · 1 line
<https://www.alejandro-colomar.es>