HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
freebsd
freebsd-src
C2012–2026
freebsd / freebsd-src

freebsd-src

The FreeBSD src tree publish-only repository. Experimenting with 'simple' pull requests....

122Distinct people
189Mentions
1Explicit recommenders
9.5KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

The FreeBSD src tree publish-only repository. Experimenting with 'simple' pull requests....

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

My favorite piece of man trivia is from the source of the tunefs BSD man page, which contains: .\" Take this out and a Unix Daemon will dog your steps from now until .\" the…

beej71 used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 7:02:26 AM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year189 dated mentions

Observed mentions: 2012-05-14 23:44:07 UTC to 2026-10-26 20:08:28 UTC.

01020302012-01-01 00:00:00 UTC to 2013-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20122013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 7 mentions; 0 submissions, 7 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 8 mentions; 0 submissions, 8 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 16 mentions; 1 submissions, 15 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 17 mentions; 0 submissions, 17 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 14 mentions; 1 submissions, 13 comments20192020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 28 mentions; 2 submissions, 26 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 20 mentions; 1 submissions, 19 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 24 mentions; 0 submissions, 24 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 23 mentions; 0 submissions, 23 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 10 mentions; 2 submissions, 8 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 10 mentions; 1 submissions, 9 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20122012-01-01 00:00:00 UTC2013-01-01 00:00:00 UTC101
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC202
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC707
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC808
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC404
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC16115
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC17017
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC14113
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC28226
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC20119
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC24024
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC23023
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC1028
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC1019
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC505

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
FreeBSD Source: This is the top level of the FreeBSD source directory. FreeBSD is an operating system used to power modern servers, desktops, and embedded platforms. A large community has continually developed it for more than thirty years. Its advanced networking, security, and storage features have made FreeBSD the platform of choice for many of the busiest web sites and most pervasive embedded networking and storage devices. For copyright information, please see the file COPYRIGHT in this directory. Additional copyright information also exists for some sources in this tree - please see the specific source directories for more information. The Makefile in this directory supports a number of targets for building components (or all) of the FreeBSD source tree. See build(7), config(8), FreeBSD handbook on building userland, and Handbook for kernels for more information, including setting make(1) variables. For information on the CPU architectures and platforms supported by FreeBSD, see the FreeBSD website's Platforms page. For official FreeBSD bootable images, see the release page. Source Roadmap: Directory Description bin System/user commands. cddl Source code for third-party software under the Common Development and Distribution License. contrib Source code for third-party software. crypto Source code for cryptographic libraries and commands (see crypto/README). etc Template files for /etc. include System include files. kerberos5 Build system for Kerberos 5 (Heimdal). krb5 Build system for Kerberos 5 (MIT). lib System libraries. libexec System commands intended to be executed by other commands or daemons. packages Base system packages. release Makefiles and scripts used for building releases and VM images. rescue Build system for statically linked /rescue commands. sbin System commands. secure Build system for cryptographic libraries and commands (excluding Kerberos). share Shared resources. stand Boot loader sources. sys Kernel sources (see sys/README.md). targets Support for experimental DIRDEPS_BUILD tests Tests which can be run by Kyua. See tests/README for additional information. tools Ancillary utilities and tests (not included in the build). usr.bin User commands. usr.sbin System administration commands. For information on synchronizing your source tree with one or more of the FreeBSD Project's development branches, please see FreeBSD Handbook.
Read the full README on GitHub

What Hacker News says

17 sources
Even putting aside the ambiguity of using ':' as a address:port delimiter, there are differences between platforms in parsing just IPv6 addresses e.g. on Linux/glibc 2.28 [cling]$ #include <arpa/inet.h> [cling]$ ::in6_addr dst; [cling]$ dst (::in6_addr &) @0x7ff318aff010 [cling]$ inet_pton (AF_INET6, "1234:1234:1234:1234:1234::1234:8.8.8.8", &dst) (int) 0 [cling]$ inet_pton (AF_INET6, "1234:1234:1234:1234:1234:1234:8.8.8.8", &dst) (int) 1 Here '::' in this 'full' address is (correctly) rejected. However, although I haven't verified this on FreeBSD (perhaps someone can?), there's a comment in the libc source suggesting that this will be accepted there https://github.com/freebsd/freebsd/blob/1d6e4247415d264485ee... Parsing sucks.
In Potholes to avoid when migrating to IPv6
> But, if you pull up the manual page for something like grep, you will see that it has not been updated since 2010 (at least on MacOS). Well, GNU grep was last released 16 months ago, and the last change to its master branch was 4 weeks ago: http://git.savannah.gnu.org/cgit/grep.git FreeBSD's grep was last updated back in August: https://github.com/freebsd/freebsd/tree/master/usr.bin/grep OpenBSD's grep was last updated 11 months ago: http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/grep/ Oddly, it looks like the Darwin grep was last updated in 2012: https://opensource.apple.com/source/text_cmds/text_cmds-99/g... Strange that Apple would be shipping such an ancient grep.
In The Source History of Cat
> Same with BSD; the userspace programs are not part of the kernel, and developed separately by the same entity. they're part of the same repo and built at the same time than the kernel. Run a big "make universe" here : https://github.com/freebsd/freebsd and see for yourself. That they are different binaries does not matter a lot, it's just a question of user interface. See for instance busybox where all the userspace is in a single binary.
In Goodbye Microservices: From 100s of problem children to 1 superstar
It's used in SIGTRAN/SS7 so just about any phone call, cell session etc is sctp. As an aside rrs, the primary author of spec, book, and reference implementation, still occasionally works on the FreeBSD sctp and has recently rewritten the FreeBSD TCP stack over the past few years. It's called RACK, and there's another extension in the pipe called BBR with incorporates ideas from Google's work. A very amazing person! * https://penturalabs.wordpress.com/2013/11/24/what-is-sigtran... * https://github.com/freebsd/freebsd/blob/master/sys/netinet/t...
In Sequenced Packets Over Ordinary TCP
I say it again: This is a kernel mechanism. Every operating system based upon Linux provides programs with this mechanism. This is not some ioctl() introduced by a Debian patch. This is a mechanism added to Linux by Linus Torvalds on 1993-12-23. * http://repo.or.cz/davej-history.git/commitdiff/9d09486414951... Pete French added it to FreeBSD against his better judgement on 2010-01-04. It might have been in an earlier implementation of the terminal line discipline, too. * https://github.com/freebsd/freebsd/commit/74b0526bbe6326adb7... OpenBSD, which no longer implements the kernel mechanism, had had it since the initial import from NetBSD in 1995. * https://github.com/openbsd/src/blob/df930be708d50e9715f173ca... Illumos has it, and has had since at least the OpenSolaris launch. * https://github.com/illumos/illumos-gate/blob/9a2c4685271c
Read the rest
2f0... It was even in 4.3BSD.
In Ancient “su – hostile” vulnerability in Debian 8 and 9
See the test-case furthest down in the bug report. They were able to get it to reproduce on current linux distributions. The differences between older and newer distributions had to do with coreutils changes to the "cp" implementation between 8.22 and 8.23 Reverting this commit causes the bug to stop reproducing: https://github.com/zfsonlinux/zfs/commit/cc63068e95ee725cce0... [edit] An inspection of the following makes me think this is ZoL specific. https://github.com/freebsd/freebsd/blob/58941b0245fd8d3d5861...
In ZFS on Linux: Unlistable and disappearing files
That didn't sound right to me, but I looked it up, and you're right. The scripts we're discussing were written in 2002 [1], so the time-appropriate version is POSIX-2001 (Issue 6). [1]: https://github.com/freebsd/freebsd/commit/55d0b8395514ae4055... But you don't have to take my word for it: I've paste-bin'ed the entirety of what POSIX-2001 had to say about shell built-ins (in general, I didn't include man-pages for individual built-ins): https://lukeshu.com/dump/posix-2001-builtins.txt As for whether that's still true today, looking at POSIX-2008 (Issue 7), 2013 edition (I don't have a copy of the 2016 edition handy), none of that has changed.
In How does `cd` work?
Not to be negative, but for learning: There are a few "problems" with this snippet of the article: ---- $ which cd /usr/bin/cd $ cat /usr/bin/cd #!/bin/sh # $FreeBSD: src/usr.bin/alias/generic.sh,v 1.2 2005/10/24 22:32:19 cperciva Exp $ # This file is in the public domain. builtin `echo ${0##*/} | tr \[:upper:] \[:lower:]` ${1+"$@"} Oh, bother! Reading shell scripts can be such a hassle sometimes. I know the tr command is used to translate characters. In this particular case, the second half of the command, the part after the pipe symbol, basically converts the command cd dev to CD dev. I have no idea why this is. In any case, this modified command is passed to the builtin command which is handled by the shell (Bourne shell) that we are using. ---- 1. The first mistake is typing `which cd`. `which` is a separ
Read the rest
ate program that looks things up in $PATH, which may not actually be what happens when you run the command. You should have used `type cd`: $ type cd cd is a shell builtin As you discover later in the article, `cd` must be a shell builtin. Which makes it a little mysterious (and interesting!) why the file /usr/bin/cd exists; it won't really do anything, try it: $ pwd /home/lukeshu $ /usr/bin/cd /usr $ pwd /home/lukeshu $ # but it will print error messages $ /usr/bin/cd /bogus /usr/bin/cd: line 4: cd: /bogus: No such file or directory So, why does /usr/bin/cd exist? The comment with the CVS ID gives us a hint: It's a common "src/usr.bin/alias/generic.sh" that is copied (hard-linked) in to /usr/bin for several shell builtins ( https://github.com/freebsd/freebsd/blob/0bc1bed704cc7b7292be... ). For other builtins that don't need to be builtins, it makes sense; let other programs call them with exec. For `cd` it doesn't make much sense though, and I'm not sure why it exists. Is it just for consistency with other builtins, or does it serve a real purpose? IDK. (edit: the short answer is "POSIX says so" https://github.com/freebsd/freebsd/commit/55d0b8395514ae4055... , but why does POSIX say so? See my child comment for further citation.) 2. The second mistake is about what `tr` is doing. You claimed it's converting lowercase to uppercase; but that's backward, it's converting uppercase to lowercase. So, why does it convert to lowercase? Recall that we learned that it's the same script being used for all builtins. If it weren't literally the same file (at the cost of a few more bytes disk space), it could have just done a search/replace within a template, having each be `builtin BUILTIN_NAME ${1+"$@"}`. But they wanted to save a few bytes, and instead the script must detect the appropriate builtin name by translating its program path to a builtin name. If you execvp("cd", ...), it will invoke the script with $0 set to "/usr/bin/cd". If /usr/bin is on a case-insensitive filesystem, and you execvp("CD", ...), that will also call the script, with $0 set to "/usr/bin/CD". How is it going to translate from "/usr/bin/CD" to "cd"? The ##*/ bit trims the leading directories, then the tr bit converts the remainder to lower case. (as an aside: the `${1+"$@"}` is a little interesting too; why not just write `"$@"`? "$@" will expand to the full list of arguments (after argv[0]). The ${1+...} bit says to only do that expansion if the first argument exists (i.e., there are >= 1 arguments). But that should basically be happening anyway; if there are no arguments, "$@" should expand to a zero-length list. IDK, perhaps a weird historical shell?)
In How does `cd` work?

Showing the 15 most recent of 17 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.